diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/config/BfiProperties.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/config/BfiProperties.java index f865fe8f..46748a99 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/config/BfiProperties.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/config/BfiProperties.java @@ -264,6 +264,13 @@ public class BfiProperties { * 回写任务开关,默认关闭(联调稳定后开启) */ private boolean syncEnabled = false; + + /** + * A302-6 指定应付自动补偿开关:pushed 且已认领的收票单是否由本回写任务自动重发指定应付, + * 默认关闭(安全兜底),不自动推送指定应付,pushed 单据由人工入口 + * (发票登记推送 / 认领发票重推按钮)触发指定;置 true 开启自动补偿 + */ + private boolean assignCompensationEnabled = false; } /** 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 2e0d1ab3..8ebc06de 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 @@ -1116,6 +1116,7 @@ public class InvoiceReceiptServiceImpl extends BaseServiceImpl匹配与容错说明: * ① 匹配键为收票登记 id,与 A303-2 落库的 awrp_src_code 同源,按发票号匹配将永远查不到自推单据; @@ -1128,6 +1129,7 @@ public class InvoiceReceiptServiceImpl extends BaseServiceImpl pendingReceipts = list(Wrappers.lambdaQuery() .in(InvoiceReceipt::getKingdeePushStatus, KingdeeBfiConstant.RECEIVED_PUSH_PUSHED, KingdeeBfiConstant.RECEIVED_PUSH_ASSIGNED) @@ -1142,14 +1144,17 @@ public class InvoiceReceiptServiceImpl extends BaseServiceImpl KingdeeBfiConstant.RECEIVED_PUSH_PUSHED.equals(receipt.getKingdeePushStatus())).count(); log.info("金蝶收票单结果回写开始:待回写收票登记{}笔(pushed待指定补偿 {} 笔,assigned待单号补登 {} 笔)", pendingReceipts.size(), pushedCount, pendingReceipts.size() - pushedCount); + if (!assignCompensationEnabled) { + log.info("A302-6 指定应付自动补偿已关闭,pushed 单据由人工入口(发票登记推送/重推按钮)指定"); + } List mirrorIds = pendingReceipts.stream().map(InvoiceReceipt::getKingdeeInvoicePoolId) .filter(Objects::nonNull).distinct().toList(); Map mirrorById = invoicePoolMapper.selectBatchIds(mirrorIds).stream() .collect(Collectors.toMap(KingdeeInvoicePool::getId, Function.identity(), (first, second) -> first)); - // pushed(保存成功后中断、指定未完成)集合:批量预组装应付单防重键供指定补偿 - List pushedIds = pendingReceipts.stream() + // pushed(保存成功后中断、指定未完成)集合:批量预组装应付单防重键供指定补偿(补偿关闭时跳过组装) + List pushedIds = assignCompensationEnabled ? pendingReceipts.stream() .filter(receipt -> KingdeeBfiConstant.RECEIVED_PUSH_PUSHED.equals(receipt.getKingdeePushStatus())) - .map(InvoiceReceipt::getId).toList(); + .map(InvoiceReceipt::getId).toList() : List.of(); Map apSrcCodeByReceiptId = pushedIds.isEmpty() ? Map.of() : resolveApBillSrcCodesForWriteBack(pushedIds); Map> receiptsByBuyer = new LinkedHashMap<>(); @@ -1191,6 +1196,11 @@ public class InvoiceReceiptServiceImpl extends BaseServiceImpl