diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/FormalSettlementServiceImpl.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/FormalSettlementServiceImpl.java index cf2759e9..38c417e3 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/FormalSettlementServiceImpl.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/FormalSettlementServiceImpl.java @@ -1229,17 +1229,14 @@ public class FormalSettlementServiceImpl extends BaseServiceImpl invoices = request.getInvoices(); Set invoiceNumbers = new LinkedHashSet<>(); - BigDecimal matchedTotal = BigDecimal.ZERO; for (FormalSettlementSaveRequest.Invoice item : invoices) { String invoiceNo = item == null ? "" : requiredText(item.getInvoiceNo(), "发票号"); if (!invoiceNumbers.add(invoiceNo)) throw new ServiceException("发票号" + invoiceNo + "重复"); - matchedTotal = matchedTotal.add(money(item.getMatchedAmount())); } // 认领闸门:确认前按票号重查金蝶复核可用性,选中到确认之间票被认领/使用/红冲在此拦截 invoiceReceiptService.assertInvoicesClaimable(invoiceNumbers); - if (matchedTotal.compareTo(money(settlement.getSettlementAmount())) > 0) { - throw new ServiceException("发票匹配结算单金额合计不能超过结算金额"); - } + // 先票后款:认领金额=发票全额,发票合计可超过结算金额(发票金额与结算金额本就是两个口径), + // 不再校验"匹配合计不能超过结算金额";收票状态以是否覆盖结算金额判定(invoiceStatus) List existingInvoices = invoiceMapper.selectList( Wrappers.lambdaQuery().eq(FormalSettlementInvoice::getFormalSettlementId, settlement.getId())); Set existingNumbers = existingInvoices.stream().map(FormalSettlementInvoice::getInvoiceNo) @@ -1749,9 +1746,8 @@ public class FormalSettlementServiceImpl extends BaseServiceImpl 0) { - throw new ServiceException("发票匹配结算单金额合计不能超过结算金额"); - } + // 先票后款:认领金额=发票全额,发票合计可超过结算金额(发票金额与结算金额本就是两个口径), + // 不再校验"匹配合计不能超过结算金额";收票状态以是否覆盖结算金额判定(invoiceStatus) invoiceMapper.delete(Wrappers.lambdaQuery() .eq(FormalSettlementInvoice::getFormalSettlementId, settlement.getId())); int lineNo = 1; @@ -2316,7 +2312,8 @@ public class FormalSettlementServiceImpl extends BaseServiceImpl= 0 ? "completed" : "partial"; } private record PaymentSummary(BigDecimal appliedAmount, BigDecimal paidAmount) { diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/InvoiceReceiptServiceImpl.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/InvoiceReceiptServiceImpl.java index ff3b5b79..894f4c64 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/InvoiceReceiptServiceImpl.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/InvoiceReceiptServiceImpl.java @@ -2119,8 +2119,9 @@ public class InvoiceReceiptServiceImpl extends BaseServiceImpl= 0 ? "completed" : "partial"; settlement.setInvoiceAmount(invoiceAmount); settlement.setInvoiceStatus(invoiceStatus); formalSettlementMapper.updateById(settlement);