dongke 1 год назад
Родитель
Сommit
fc263af67d

+ 20 - 7
src/main/java/com/dk/mdm/service/ivt/outbound/OutboundSaleOrderService.java

@@ -409,7 +409,12 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
         BigDecimal sumIntoPriceAmt = BigDecimal.ZERO;
         if (orderTransmitFlag) {
             sumIntoQty = outboundVO.getItemList().stream().map(OutboundItemVO::getOutingQty).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, BigDecimal.ROUND_HALF_UP);
-            sumIntoPriceAmt = outboundVO.getItemList().stream().map(OutboundItemVO::getPriceOut).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, BigDecimal.ROUND_HALF_UP);
+//            sumIntoPriceAmt = outboundVO.getItemList().stream().map(OutboundItemVO::getPriceOut).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, BigDecimal.ROUND_HALF_UP);
+
+            for (OutboundItemVO outboundItemVO : outboundVO.getItemList()){
+                sumIntoPriceAmt = sumIntoPriceAmt.add( outboundItemVO.getOutingQty().multiply(outboundItemVO.getPriceOut())) ;
+            }
+
         }
         //获取 id/单号
         Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.SALEORDER.getName(), false);
@@ -429,7 +434,7 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
         if (Constant.OutStatus.YICHUKU.getName().equals(outboundVO.getOutStatus())) {
             outboundVO
                     .setOutQty(orderTransmitFlag ? sumIntoQty : outboundVO.getOutingQty())
-                    .setOutAmt(orderTransmitFlag ? sumIntoQty.multiply(sumIntoPriceAmt) : outboundVO.getOutingAmt())
+                    .setOutAmt(orderTransmitFlag ? sumIntoPriceAmt : outboundVO.getOutingAmt())
                     .setOutingQty(BigDecimal.ZERO)
                     .setOutingAmt(BigDecimal.ZERO)
             ;
@@ -439,7 +444,7 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
                     .setOutAmt(BigDecimal.ZERO)
                     //用于销售订单自动创建出库单
                     .setOutingQty(orderTransmitFlag ? sumIntoQty : outboundVO.getOutingQty())
-                    .setOutingAmt(orderTransmitFlag ? sumIntoQty.multiply(sumIntoPriceAmt) : outboundVO.getOutingAmt())
+                    .setOutingAmt(orderTransmitFlag ? sumIntoPriceAmt : outboundVO.getOutingAmt())
             ;
         }
 
@@ -485,13 +490,14 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
             }
         }
         //endregion
-
+        BigDecimal factAmt = BigDecimal.ZERO; //总单的实际金额
         //region 明细
         //校验明细
         if (outboundVO.getItemList().size() == 0) {
             throw new BaseBusinessException(ErrorCodeEnum.OUTBOUND_ITEM_NOT_EXIST.getCode(),
                     ErrorCodeEnum.OUTBOUND_ITEM_NOT_EXIST.getMessage());
         }
+
         for (OutboundItemVO outboundItemVO : outboundVO.getItemList()) {
             outboundItemVO.setItemId(null);
             //region 将库存需要的参数赋值
@@ -512,13 +518,13 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
                         .setOutingQty(BigDecimal.ZERO)
                         .setOutingAmt(BigDecimal.ZERO)
                         .setCostPrice(outboundItemVO.getPriceOut())
-                        .setCostAmt(outboundItemVO.getOutQty().multiply(outboundItemVO.getPriceOut()).setScale(2, BigDecimal.ROUND_HALF_UP))
-                ;
+                        .setCostAmt(outboundItemVO.getOutQty().multiply(outboundItemVO.getPriceOut()).setScale(2, BigDecimal.ROUND_HALF_UP)) ;
             } else {
                 outboundItemVO
                         .setOutQty(BigDecimal.ZERO)
                         .setOutAmt(BigDecimal.ZERO);
             }
+            factAmt = factAmt.add(outboundItemVO.getFactAmt()); //把明细的 实际金额相加就是总单的
             //出库状态
             outboundItemVO.setOutStatus(outboundVO.getOutStatus());
             //实体转换
@@ -549,6 +555,7 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
                     orderItem.setOutQty(BigDecimal.ZERO);
                     orderItem.setOutAmt(BigDecimal.ZERO);
                 }
+
                 //出库状态
                 String outStatus = this.setOutStatus(orderItemResponse.getOutingQty().add(orderItem.getOutingQty()),
                         orderItemResponse.getOutQty().add(orderItem.getOutQty()), orderItemResponse.getItemQty());
@@ -564,7 +571,13 @@ public class OutboundSaleOrderService extends BaseService<Outbound> {
 
         }
         //endregion
-
+        Outbound outboundup = new Outbound();
+        outboundup.setOutId(outbound.getOutId()).setFactAmt(factAmt);
+        //反写总单实际金额
+        outboundMapper.update(outboundup,
+                new UpdateWrapper<Outbound>().lambda()
+                        .eq(Outbound::getOutId, UUID.fromString(outbound.getOutId()))
+        );
         //region  已出库  应收记账
         if (Constant.OutStatus.YICHUKU.getName().equals(outboundVO.getOutStatus())) {
             accountService.accReceivable(outboundVO.getOutId(), Constant.InventoryDocCode.OUTBOUND.getTableName());