ソースを参照

修改bug:
bug表903,私有应收 跟单开票界面,选择了2个月份一起开,开票金额只能是合计数,但是点确定提示开不了

jiakai 1 ヶ月 前
親
コミット
bfa6526d98

+ 21 - 6
tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java

@@ -4155,9 +4155,9 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
             // 校验:累计开票金额 <= 对账金额
             // 假设 item.getUninvoiced() 是未开票金额,需要从数据库查历史已开票金额
             // 这里简化逻辑:如果本次开票总额大于对账金额,则报错
-            if (totalInvoiceAmount.compareTo(reconciliationAmount) > 0) {
-                throw new SystemException("开票金额不可大于对账金额[对账金额:" + reconciliationAmount + "]");
-            }
+//            if (totalInvoiceAmount.compareTo(reconciliationAmount) > 0) {
+//                throw new SystemException("开票金额不可大于对账金额[对账金额:" + reconciliationAmount + "]");
+//            }
 
             // 构建跟单订单明细
             InsFeeFollowOrder order = new InsFeeFollowOrder();
@@ -4177,6 +4177,14 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
                 order.setUninvoiced(receivable.subtract(invoicedThisTime));
                 order.setInvoicedAmountTime(invoicedThisTime);
                 order.setInvoiced(invoicedThisTime); // 假设已开票字段需要累加
+            }else if ("1".equals(vo.getSelectFlag())){
+                // 多条处理逻辑
+                BigDecimal reconciliation = item.getReconciliationAmount();
+
+                // 更新未开票金额 = 应收 - 本次开票
+                order.setUninvoiced(BigDecimal.ZERO);
+                order.setInvoicedAmountTime(reconciliation);
+                order.setInvoiced(reconciliation); // 假设已开票字段需要累加
             }
 
             // 设置新增字段 (保存对账信息)
@@ -4924,14 +4932,21 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
                 if (invoiceRecordQueryVo.getInvoiceTypes().contains(InvoiceTypeEnum.FEE_2.getCode())) {
                     LambdaQueryWrapper<InsFeeFollowOrder> insFeeFollowOrderLambdaQueryWrapper = new LambdaQueryWrapper<>();
                     insFeeFollowOrderLambdaQueryWrapper.eq(InsFeeFollowOrder::getYear, action.getYear());
-                    insFeeFollowOrderLambdaQueryWrapper.eq(InsFeeFollowOrder::getMonth, action.getMonth());
+                    List<String> monthList;
+                    String monthStr = action.getMonth();
+                    if (StrUtil.contains(monthStr, ",")) {
+                        monthList = Arrays.asList(monthStr.split(","));
+                    } else {
+                        monthList = Collections.singletonList(monthStr);
+                    }
+                    insFeeFollowOrderLambdaQueryWrapper.in(InsFeeFollowOrder::getMonth, monthList);
                     insFeeFollowOrderLambdaQueryWrapper.eq(InsFeeFollowOrder::getPartnerCompanyId, action.getPartnerCompanyId());
                     insFeeFollowOrderLambdaQueryWrapper.in(InsFeeFollowOrder::getInvoiceType, action.getInvoiceType());
                     List<InsFeeFollowOrder> insFeeFollowOrders = insFeeFollowOrderMapper.selectList(insFeeFollowOrderLambdaQueryWrapper);
                     if (CollUtil.isNotEmpty(insFeeFollowOrders)){
-                        InsFeeFollowOrder insFeeFollowOrder = insFeeFollowOrders.stream().findAny().get();
+                        BigDecimal bigDecimal = insFeeFollowOrders.stream().map(InsFeeFollowOrder::getReceivablePremium).reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
                         // 开票金额
-                        action.setReceivableAmount(insFeeFollowOrder.getReceivablePremium().toString());
+                        action.setReceivableAmount(bigDecimal.toString());
                     }
                 }else if (invoiceRecordQueryVo.getInvoiceTypes().contains(InvoiceTypeEnum.FEE_1.getCode())){
                     action.setReceivableAmount(action.getReceivableSupervisePremium().subtract(action.getOverinflatedAmount()).toString());