From 4ec6ef1a2d0bbf92c41b9b5d0a80b1f12d1db30a Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Wed, 4 Mar 2026 13:19:25 +0800 Subject: [PATCH] =?UTF-8?q?demand:=20=20=20tms-=E5=AE=A2=E6=88=B7=E8=B4=A6?= =?UTF-8?q?=E5=8D=95=E7=AE=A1=E7=90=86-=E5=AE=A2=E6=88=B7=E8=B4=A6?= =?UTF-8?q?=E5=8D=95=E5=AE=9A=E5=88=B6-=E6=89=B9=E9=87=8F=E7=94=9F?= =?UTF-8?q?=E6=88=90=E8=B4=A6=E5=8D=95=E6=97=B6=E6=9C=80=E5=90=8E=E5=9B=9E?= =?UTF-8?q?=E6=AC=BE=E6=97=A5=E7=AE=97=E6=B3=95=E8=B0=83=E6=95=B4=20tms-?= =?UTF-8?q?=E5=AE=A2=E6=88=B7=E8=B4=A6=E5=8D=95=E7=AE=A1=E7=90=86-?= =?UTF-8?q?=E6=9C=88=E7=BB=93=E8=B4=A6=E5=8D=95=E7=AE=A1=E7=90=86-?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=B4=A6=E5=8D=95=E6=97=B6=E6=9C=80=E5=90=8E?= =?UTF-8?q?=E5=9B=9E=E6=AC=BE=E6=97=A5=E7=AE=97=E6=B3=95=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/EmisSettleBillServiceImpl.java | 34 ++++++++++++++++--- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleBillServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleBillServiceImpl.java index b9d4e09bf..c5cf4adbd 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleBillServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleBillServiceImpl.java @@ -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);