diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisWriteoffApplyDetailMapper.java b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisWriteoffApplyDetailMapper.java
index 53f90239d..6dcff46cd 100644
--- a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisWriteoffApplyDetailMapper.java
+++ b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisWriteoffApplyDetailMapper.java
@@ -10,9 +10,11 @@
*/
package com.xdadan.erp.emis.mapper;
+import java.math.BigDecimal;
import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xdadan.erp.emis.domain.EmisWriteoffApplyDetail;
+import org.apache.ibatis.annotations.Param;
/**
* @ClassName EmisWriteoffApplyDetailMapper
@@ -104,4 +106,14 @@ public interface EmisWriteoffApplyDetailMapper extends BaseMapper
+ * - 来自 auditCenterPass:申请金额 + 已收金额 <= 账单应收金额
+ * - 非 auditCenterPass:申请金额 + 该运单历史申请金额(所有 bl_center_confirmed != 1 的申请明细之和) + 已收金额 <= 账单应收金额
+ *
+ *
+ * @param fromAuditCenterPass 是否来自财务中心审核通过(auditCenterPass)
+ */
+ private void validateWriteoffAmount(EmisWriteoffApply emisWriteoffApply, boolean fromAuditCenterPass)
+ throws EmisBizError {
if (CollectionUtils.isEmpty(emisWriteoffApply.getDetailList())) {
throw new EmisBizError("销账申请明细不能为空");
}
@@ -170,7 +185,14 @@ public class EmisWriteoffApplyServiceImpl extends EmisBaseService implements IEm
}
// 验证:申请金额 + 已收金额 <= 账单应收金额
- BigDecimal totalAmount = detail.getApplyMoney().add(receivedAmount);
+ BigDecimal historyApplyAmount = BigDecimal.ZERO;
+ if (!fromAuditCenterPass) {
+ BigDecimal dbSum = emisWriteoffApplyDetailMapper.sumHistoryApplyMoneyByBillCode(detail.getBillCode(),
+ emisWriteoffApply.getId());
+ historyApplyAmount = dbSum != null ? dbSum : BigDecimal.ZERO;
+ }
+
+ BigDecimal totalAmount = detail.getApplyMoney().add(historyApplyAmount).add(receivedAmount);
if (totalAmount.compareTo(recMoney) > 0) {
throw new EmisBizError("运单号 " + detail.getBillCode() + " 的申请金额(" + detail.getApplyMoney()
+ ") + 已收金额(" + receivedAmount + ") = " + totalAmount + " 超过运单应收金额("
@@ -431,8 +453,8 @@ public class EmisWriteoffApplyServiceImpl extends EmisBaseService implements IEm
.selectEmisWriteoffApplyDetailListByApplyIdWithDetails(existingApply.getId());
existingApply.setDetailList(detailList);
- // 验证销账金额
- validateWriteoffAmount(existingApply);
+ // 验证销账金额(财务中心审核通过场景不纳入“历史申请金额”)
+ validateWriteoffAmount(existingApply, true);
// 先更新相关业务数据(在更新审核状态之前进行验证和更新)
detailList = updateRelatedBusinessData(existingApply, true);
diff --git a/emis-biz/src/main/resources/mapper/EmisWriteoffApplyDetailMapper.xml b/emis-biz/src/main/resources/mapper/EmisWriteoffApplyDetailMapper.xml
index c1c653a36..15d419ffb 100644
--- a/emis-biz/src/main/resources/mapper/EmisWriteoffApplyDetailMapper.xml
+++ b/emis-biz/src/main/resources/mapper/EmisWriteoffApplyDetailMapper.xml
@@ -252,6 +252,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
left join emis_site dest_site on w.dispatch_underling_site_code = dest_site.site_code and dest_site.del_flag = '0'
+
+
+