feat: 付款履约记录调整为金蝶实际付款后推送

This commit is contained in:
刘泉佳
2026-10-28 19:30:53 +08:00
parent d928ba6ddf
commit 7c0509392a
2 changed files with 18 additions and 3 deletions
@@ -1012,6 +1012,7 @@ public class PaymentApplicationServiceImpl extends BaseServiceImpl<PaymentApplic
String kingdeeStatus = kingdeeResultStatus(payApply);
entity.setKingdeeStatus(kingdeeStatus);
// 已付金额:A103-2 分录 e_paidamt 汇总;分录缺失且已付款时兜底取申请金额
BigDecimal previousPaid = entity.getPaidAmount();
if (Func.isNotEmpty(payApply.getEntry())) {
BigDecimal paidAmount = payApply.getEntry().stream()
.map(BfiPayApplyEntryVO::getEPaidamt).filter(Objects::nonNull)
@@ -1020,8 +1021,12 @@ public class PaymentApplicationServiceImpl extends BaseServiceImpl<PaymentApplic
} else if (KingdeeBfiConstant.KINGDEE_STATUS_PAID.equals(kingdeeStatus)) {
entity.setPaidAmount(money(entity.getAppliedAmount()).setScale(2, RoundingMode.HALF_UP));
}
// HCS 履约记录推进:实际付款变化后置待同步,扫描任务凭 hcs_perf_fd_id 走 C108-2 更新(D11)
if (entity.getHcsPerfFdId() != null) {
// HCS 履约付款记录推进:金蝶实际付款推进(首次付款或金额变化)后置待同步,扫描任务凭
// hcs_perf_fd_id 判定走向——未建过履约记录走 C108-1 新建,已建走 C108-2 更新实际金额
BigDecimal currentPaid = entity.getPaidAmount();
boolean paidAdvanced = currentPaid != null && currentPaid.signum() > 0
&& (previousPaid == null || previousPaid.signum() <= 0 || previousPaid.compareTo(currentPaid) != 0);
if (paidAdvanced) {
entity.setHcsSyncStatus(HcsSyncConstant.HCS_STATUS_UNSYNCED);
}
updateById(entity);
@@ -112,11 +112,21 @@ public class HcsPaymentSyncSupport {
}
result.append(stageResult);
}
// ③ 履约记录:审批通过新建 C108-1 / 实际付款推进更新 C108-2(一期暂不对接默认关)
// ③ 履约记录:金蝶实际付款后推送(需求口径:金蝶实际付款了再推给合同系统)——
// 首次回写实际付款走 C108-1 新建,分期付款推进(paidAmount 变化置待同步)走 C108-2 更新;
// 未实际付款时跳过(整体状态照常回写,付款回写时重新置待同步触发推送)
if (!hcsProperties.getPerfRecord().isSyncEnabled()) {
markSynced(payment, result.toString());
return result.toString();
}
if (payment.getPaidAmount() == null || payment.getPaidAmount().signum() <= 0) {
if (result.length() > 0) {
result.append(";");
}
result.append("金蝶未实际付款,待付款后推送履约记录");
markSynced(payment, result.toString());
return result.toString();
}
if (result.length() > 0) {
result.append(";");
}