fix: 修复预结算转正式后付款申请未扣减预付款
This commit is contained in:
+21
-3
@@ -321,11 +321,14 @@ public class PaymentApplicationServiceImpl extends BaseServiceImpl<PaymentApplic
|
|||||||
BigDecimal writeOffAmount = preSettlementReference
|
BigDecimal writeOffAmount = preSettlementReference
|
||||||
? projectAdvanceWriteOffService.sumBySettlement(TransportBusiConstant.SETTLEMENT_BILL_PRE, referenceId)
|
? projectAdvanceWriteOffService.sumBySettlement(TransportBusiConstant.SETTLEMENT_BILL_PRE, referenceId)
|
||||||
: projectAdvanceWriteOffService.sumBySettlement(TransportBusiConstant.SETTLEMENT_BILL_FORMAL, referenceId);
|
: projectAdvanceWriteOffService.sumBySettlement(TransportBusiConstant.SETTLEMENT_BILL_FORMAL, referenceId);
|
||||||
|
// 预结算转正式时,来源预结算的已付预付款已计入正式结算单已付,尾款可付金额需同步扣减
|
||||||
|
BigDecimal advancePaidAmount = preSettlementReference ? BigDecimal.ZERO
|
||||||
|
: this.formalSettlementAdvancePaid(referenceId);
|
||||||
PaymentApplicationReferenceAmountVO amount = new PaymentApplicationReferenceAmountVO();
|
PaymentApplicationReferenceAmountVO amount = new PaymentApplicationReferenceAmountVO();
|
||||||
amount.setSettlementAmount(settlementAmount);
|
amount.setSettlementAmount(settlementAmount);
|
||||||
amount.setCumulativeAppliedAmount(cumulativeAppliedAmount.add(writeOffAmount));
|
amount.setCumulativeAppliedAmount(cumulativeAppliedAmount.add(writeOffAmount).add(advancePaidAmount));
|
||||||
amount.setPayableAmount(settlementAmount.subtract(cumulativeAppliedAmount).subtract(writeOffAmount)
|
amount.setPayableAmount(settlementAmount.subtract(cumulativeAppliedAmount).subtract(writeOffAmount)
|
||||||
.max(BigDecimal.ZERO));
|
.subtract(advancePaidAmount).max(BigDecimal.ZERO));
|
||||||
amount.setPaymentSequence(resolvePaymentSequence(preSettlementReference, referenceId, excludeId));
|
amount.setPaymentSequence(resolvePaymentSequence(preSettlementReference, referenceId, excludeId));
|
||||||
return amount;
|
return amount;
|
||||||
}
|
}
|
||||||
@@ -2358,15 +2361,30 @@ public class PaymentApplicationServiceImpl extends BaseServiceImpl<PaymentApplic
|
|||||||
return relationAmount.add(legacyAmount);
|
return relationAmount.add(legacyAmount);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 正式结算可付款 = 结算金额 − 已申请付款 − 项目预付核销 */
|
/** 正式结算可付款 = 结算金额 − 已申请付款 − 项目预付核销 − 来源预结算已付预付款 */
|
||||||
private BigDecimal payableOfFormalSettlement(Long settlementId, BigDecimal settlementAmount, Long excludeId) {
|
private BigDecimal payableOfFormalSettlement(Long settlementId, BigDecimal settlementAmount, Long excludeId) {
|
||||||
return money(settlementAmount)
|
return money(settlementAmount)
|
||||||
.subtract(cumulativeFormalSettlementApplied(settlementId, excludeId))
|
.subtract(cumulativeFormalSettlementApplied(settlementId, excludeId))
|
||||||
.subtract(projectAdvanceWriteOffService.sumBySettlement(
|
.subtract(projectAdvanceWriteOffService.sumBySettlement(
|
||||||
TransportBusiConstant.SETTLEMENT_BILL_FORMAL, settlementId))
|
TransportBusiConstant.SETTLEMENT_BILL_FORMAL, settlementId))
|
||||||
|
.subtract(this.formalSettlementAdvancePaid(settlementId))
|
||||||
.max(BigDecimal.ZERO);
|
.max(BigDecimal.ZERO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 正式结算单来源预结算的已付预付款合计(转正式时已计入结算单已付) */
|
||||||
|
private BigDecimal formalSettlementAdvancePaid(Long formalSettlementId) {
|
||||||
|
if (formalSettlementId == null) {
|
||||||
|
return BigDecimal.ZERO;
|
||||||
|
}
|
||||||
|
return formalSettlementSourceMapper.selectList(Wrappers.<FormalSettlementSource>lambdaQuery()
|
||||||
|
.select(FormalSettlementSource::getAdvancePaidAmount)
|
||||||
|
.eq(FormalSettlementSource::getFormalSettlementId, formalSettlementId)
|
||||||
|
.eq(FormalSettlementSource::getIsDeleted, 0)).stream()
|
||||||
|
.map(FormalSettlementSource::getAdvancePaidAmount)
|
||||||
|
.map(this::money)
|
||||||
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||||
|
}
|
||||||
|
|
||||||
/** 预结算可付款 = 结算金额 − 已申请付款 − 项目预付核销 */
|
/** 预结算可付款 = 结算金额 − 已申请付款 − 项目预付核销 */
|
||||||
private BigDecimal payableOfPreSettlement(Long preSettlementId, BigDecimal settlementAmount, Long excludeId) {
|
private BigDecimal payableOfPreSettlement(Long preSettlementId, BigDecimal settlementAmount, Long excludeId) {
|
||||||
return money(settlementAmount)
|
return money(settlementAmount)
|
||||||
|
|||||||
Reference in New Issue
Block a user