fix: 付款申请预结算行付款金额合计须等于申请付款金额
推送金蝶按付款基本信息中的申请付款金额单条入账,明细行金额合计不一致时, 预付记录建档会按行分摊出与金蝶金额不符的结果。保存时校验行合计必须等于申请付款金额。
This commit is contained in:
+9
-1
@@ -2362,10 +2362,18 @@ public class PaymentApplicationServiceImpl extends BaseServiceImpl<PaymentApplic
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
BigDecimal remainingApplied = money(entity.getAppliedAmount());
|
||||
if (customAmounts) {
|
||||
BigDecimal lineTotal = BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
|
||||
for (PreSettlement settlement : targetSettlements) {
|
||||
BigDecimal payable = payableOfPreSettlement(settlement.getId(), settlement.getSettlementAmount(), entity.getId());
|
||||
BigDecimal applied = this.specifiedAppliedAmount(lines, null, settlement.getId());
|
||||
this.assertAppliedWithinPayable(settlement.getPreSettlementNo(), applied, payable);
|
||||
lineTotal = lineTotal.add(applied);
|
||||
}
|
||||
// 推金蝶按付款基本信息中的申请付款金额,明细行金额合计不等时会导致预付建档分摊与金蝶金额不一致
|
||||
BigDecimal appliedTotal = money(entity.getAppliedAmount()).setScale(2, RoundingMode.HALF_UP);
|
||||
if (lineTotal.compareTo(appliedTotal) != 0) {
|
||||
throw new ServiceException("预结算单付款明细金额合计[" + lineTotal.toPlainString()
|
||||
+ "]必须等于申请付款金额[" + appliedTotal.toPlainString() + "]");
|
||||
}
|
||||
}
|
||||
for (int index = 0; index < targetSettlements.size(); index++) {
|
||||
@@ -2417,7 +2425,7 @@ public class PaymentApplicationServiceImpl extends BaseServiceImpl<PaymentApplic
|
||||
}
|
||||
}
|
||||
|
||||
/** 前端传入结算行付款金额时,按行落库,不再要求合计等于申请付款金额。 */
|
||||
/** 前端传入结算行付款金额时,按行落库(行金额合计须与申请付款金额一致,由调用方校验)。 */
|
||||
private boolean useSpecifiedLineAmounts(List<PaymentApplicationSettlementLineRequest> lines) {
|
||||
return lines != null && !lines.isEmpty();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user