From 933fb37de615a2e4685ab68d61c9b2e246ce5a50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B3=89=E4=BD=B3?= <1107186916@qq.com> Date: Sat, 31 Oct 2026 16:52:21 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=85=88=E7=A5=A8=E5=90=8E=E6=AC=BE?= =?UTF-8?q?=E5=85=A8=E9=A2=9D=E8=AE=A4=E9=A2=86=E6=94=BE=E5=BC=80=E5=8C=B9?= =?UTF-8?q?=E9=85=8D=E5=90=88=E8=AE=A1=E4=B8=8A=E9=99=90=E5=B9=B6=E6=8C=89?= =?UTF-8?q?=E8=A6=86=E7=9B=96=E5=88=A4=E5=AE=9A=E6=94=B6=E7=A5=A8=E7=8A=B6?= =?UTF-8?q?=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/FormalSettlementServiceImpl.java | 15 ++++++--------- .../service/impl/InvoiceReceiptServiceImpl.java | 3 ++- 2 files changed, 8 insertions(+), 10 deletions(-) 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);