解决退货单校验欠款的bug

This commit is contained in:
季圣华
2022-11-21 21:12:18 +08:00
parent dffa557dbc
commit 5f435f06b9
2 changed files with 26 additions and 15 deletions

View File

@@ -363,7 +363,7 @@ public class ExceptionConstants {
public static final String DEPOT_HEAD_MANY_ACCOUNT_FAILED_MSG = "请修改多账户的结算金额"; public static final String DEPOT_HEAD_MANY_ACCOUNT_FAILED_MSG = "请修改多账户的结算金额";
//单据录入-关联单据实际不存在欠款 //单据录入-关联单据实际不存在欠款
public static final int DEPOT_HEAD_BACK_BILL_DEBT_FAILED_CODE = 8500009; public static final int DEPOT_HEAD_BACK_BILL_DEBT_FAILED_CODE = 8500009;
public static final String DEPOT_HEAD_BACK_BILL_DEBT_FAILED_MSG = "抱歉,关联单据实际不存在欠款"; public static final String DEPOT_HEAD_BACK_BILL_DEBT_FAILED_MSG = "抱歉,关联单据为空时不能欠款";
//单据录入-调入仓库与原仓库不能重复 //单据录入-调入仓库与原仓库不能重复
public static final int DEPOT_HEAD_ANOTHER_DEPOT_EQUAL_FAILED_CODE = 8500010; public static final int DEPOT_HEAD_ANOTHER_DEPOT_EQUAL_FAILED_CODE = 8500010;
public static final String DEPOT_HEAD_ANOTHER_DEPOT_EQUAL_FAILED_MSG = "调入仓库与原仓库不能重复"; public static final String DEPOT_HEAD_ANOTHER_DEPOT_EQUAL_FAILED_MSG = "调入仓库与原仓库不能重复";

View File

@@ -814,13 +814,7 @@ public class DepotHeadService {
} }
//欠款校验 //欠款校验
if("采购退货".equals(subType) || "销售退货".equals(subType)) { if("采购退货".equals(subType) || "销售退货".equals(subType)) {
//退货单对应的原单实际欠款(这里面要除去收付款的金额) checkDebtByParam(beanJson, depotHead);
BigDecimal originalRealDebt = getOriginalRealDebt(depotHead.getLinkNumber(), depotHead.getNumber());
JSONObject billObj = JSONObject.parseObject(beanJson);
if(billObj!=null && billObj.get("debt")!=null && originalRealDebt.compareTo(billObj.getBigDecimal("debt"))<0) {
throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_BACK_BILL_DEBT_OVER_CODE,
String.format(ExceptionConstants.DEPOT_HEAD_BACK_BILL_DEBT_OVER_MSG));
}
} }
//判断用户是否已经登录过,登录过不再处理 //判断用户是否已经登录过,登录过不再处理
User userInfo=userService.getCurrentUser(); User userInfo=userService.getCurrentUser();
@@ -912,13 +906,7 @@ public class DepotHeadService {
} }
//欠款校验 //欠款校验
if("采购退货".equals(subType) || "销售退货".equals(subType)) { if("采购退货".equals(subType) || "销售退货".equals(subType)) {
//退货单对应的原单实际欠款(这里面要除去收付款的金额) checkDebtByParam(beanJson, depotHead);
BigDecimal originalRealDebt = getOriginalRealDebt(depotHead.getLinkNumber(), depotHead.getNumber());
JSONObject billObj = JSONObject.parseObject(beanJson);
if(billObj!=null && billObj.get("debt")!=null && originalRealDebt.compareTo(billObj.getBigDecimal("debt"))<0) {
throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_BACK_BILL_DEBT_OVER_CODE,
String.format(ExceptionConstants.DEPOT_HEAD_BACK_BILL_DEBT_OVER_MSG));
}
} }
if(StringUtil.isNotEmpty(depotHead.getAccountIdList())){ if(StringUtil.isNotEmpty(depotHead.getAccountIdList())){
depotHead.setAccountIdList(depotHead.getAccountIdList().replace("[", "").replace("]", "").replaceAll("\"", "")); depotHead.setAccountIdList(depotHead.getAccountIdList().replace("[", "").replace("]", "").replaceAll("\"", ""));
@@ -971,6 +959,29 @@ public class DepotHeadService {
((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest());
} }
/**
* 针对退货单,校验欠款
* @param beanJson
* @param depotHead
* @throws Exception
*/
public void checkDebtByParam(String beanJson, DepotHead depotHead) throws Exception {
JSONObject billObj = JSONObject.parseObject(beanJson);
if(StringUtil.isNotEmpty(depotHead.getLinkNumber())) {
//退货单对应的原单实际欠款(这里面要除去收付款的金额)
BigDecimal originalRealDebt = getOriginalRealDebt(depotHead.getLinkNumber(), depotHead.getNumber());
if(billObj!=null && billObj.get("debt")!=null && originalRealDebt.compareTo(billObj.getBigDecimal("debt"))<0) {
throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_BACK_BILL_DEBT_OVER_CODE,
String.format(ExceptionConstants.DEPOT_HEAD_BACK_BILL_DEBT_OVER_MSG));
}
} else {
if(billObj!=null && billObj.get("debt")!=null && BigDecimal.ZERO.compareTo(billObj.getBigDecimal("debt"))!=0) {
throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_BACK_BILL_DEBT_FAILED_CODE,
String.format(ExceptionConstants.DEPOT_HEAD_BACK_BILL_DEBT_FAILED_MSG));
}
}
}
/** /**
* 退货单对应的原单实际欠款(这里面要除去收付款的金额) * 退货单对应的原单实际欠款(这里面要除去收付款的金额)
* @param linkNumber 原单单号 * @param linkNumber 原单单号