demand: tms-客户账单管理-客户账单定制-批量生成账单时最后回款日算法调整 tms-客户账单管理-月结账单管理-修改账单时最后回款日算法调整

This commit is contained in:
aike 2026-03-04 13:19:25 +08:00
parent 7900b8a314
commit 4ec6ef1a2d

View File

@ -394,8 +394,21 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS
}
else{
Date billMonthDate = DateUtils.parseDate(emisSettleBill.getBillMonth() + "-"+settleDay);
paymentDueDate = DateUtils.addMonths(billMonthDate,1);
paymentDueDate= DateUtils.addDays(paymentDueDate,creditPeriod.intValue());
// credit_period 为 30/60/90 且结算日为每月 1 号时,按对应月份月末作为最后付款日
if ((creditPeriod.intValue() == 30 || creditPeriod.intValue() == 60 || creditPeriod.intValue() == 90)
&& monthUser.getSettleDay() == 1) {
Calendar cal = Calendar.getInstance();
cal.setTime(billMonthDate);
// 30 -> 加 1 个月,60 -> 加 2 个月,90 -> 加 3 个月
cal.add(Calendar.MONTH, creditPeriod.intValue() / 30);
// 设置为该月的最后一天
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
paymentDueDate = cal.getTime();
} else {
paymentDueDate = DateUtils.addMonths(billMonthDate,1);
paymentDueDate= DateUtils.addDays(paymentDueDate,creditPeriod.intValue());
}
}
// 最后付款时间
@ -441,10 +454,21 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS
updBill.setCreditPeriod(creditPeriod);
updBill.setSettleDay(settleDay);
// 现金账期从寄件开始10天
// 根据账期与结算日计算最后付款时间
Date billMonthDate = DateUtils.parseDate(oldEmisSettleBill.getBillMonth() + "-" + settleDay);
Date paymentDueDate = DateUtils.addMonths(billMonthDate, 1);
paymentDueDate = DateUtils.addDays(paymentDueDate, creditPeriod.intValue());
Date paymentDueDate;
if ((creditPeriod.intValue() == 30 || creditPeriod.intValue() == 60 || creditPeriod.intValue() == 90)
&& settleDay == 1) {
Calendar cal = Calendar.getInstance();
cal.setTime(billMonthDate);
cal.add(Calendar.MONTH, creditPeriod.intValue() / 30);
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
paymentDueDate = cal.getTime();
} else {
paymentDueDate = DateUtils.addMonths(billMonthDate, 1);
paymentDueDate = DateUtils.addDays(paymentDueDate, creditPeriod.intValue());
}
// 最后付款时间
updBill.setPaymentDueDate(paymentDueDate);