From 5f435f06b97e8b5e449ad68f6ef0fdd84f320b70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A3=E5=9C=A3=E5=8D=8E?= <752718920@qq.com> Date: Mon, 21 Nov 2022 21:12:18 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E9=80=80=E8=B4=A7=E5=8D=95?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E6=AC=A0=E6=AC=BE=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jsh/erp/constants/ExceptionConstants.java | 2 +- .../service/depotHead/DepotHeadService.java | 39 ++++++++++++------- 2 files changed, 26 insertions(+), 15 deletions(-) diff --git a/jshERP-boot/src/main/java/com/jsh/erp/constants/ExceptionConstants.java b/jshERP-boot/src/main/java/com/jsh/erp/constants/ExceptionConstants.java index 34582d10..2163e799 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/constants/ExceptionConstants.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/constants/ExceptionConstants.java @@ -363,7 +363,7 @@ public class ExceptionConstants { 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 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 String DEPOT_HEAD_ANOTHER_DEPOT_EQUAL_FAILED_MSG = "调入仓库与原仓库不能重复"; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/depotHead/DepotHeadService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/depotHead/DepotHeadService.java index 66255d51..31e9349b 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/depotHead/DepotHeadService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/depotHead/DepotHeadService.java @@ -814,13 +814,7 @@ public class DepotHeadService { } //欠款校验 if("采购退货".equals(subType) || "销售退货".equals(subType)) { - //退货单对应的原单实际欠款(这里面要除去收付款的金额) - 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)); - } + checkDebtByParam(beanJson, depotHead); } //判断用户是否已经登录过,登录过不再处理 User userInfo=userService.getCurrentUser(); @@ -912,13 +906,7 @@ public class DepotHeadService { } //欠款校验 if("采购退货".equals(subType) || "销售退货".equals(subType)) { - //退货单对应的原单实际欠款(这里面要除去收付款的金额) - 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)); - } + checkDebtByParam(beanJson, depotHead); } if(StringUtil.isNotEmpty(depotHead.getAccountIdList())){ depotHead.setAccountIdList(depotHead.getAccountIdList().replace("[", "").replace("]", "").replaceAll("\"", "")); @@ -971,6 +959,29 @@ public class DepotHeadService { ((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 原单单号