From a4fd743f930f23603259ea79043e1907f0513a3d Mon Sep 17 00:00:00 2001 From: zengweihai Date: Sat, 28 Sep 2024 15:29:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=B9=E5=85=AC=E6=8A=A5=E9=94=80=E5=86=B2?= =?UTF-8?q?=E9=94=80=E6=95=B0=E6=8D=AE=E7=BC=BA=E5=A4=B1=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../formplugin/GenerateSKClickPlugln.java | 46 ++++++++++++------- 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/shkd-cosmic-debug/src/main/java/shkd/fi/er/plugin/formplugin/GenerateSKClickPlugln.java b/shkd-cosmic-debug/src/main/java/shkd/fi/er/plugin/formplugin/GenerateSKClickPlugln.java index b0cd9c6..73e84b6 100644 --- a/shkd-cosmic-debug/src/main/java/shkd/fi/er/plugin/formplugin/GenerateSKClickPlugln.java +++ b/shkd-cosmic-debug/src/main/java/shkd/fi/er/plugin/formplugin/GenerateSKClickPlugln.java @@ -107,30 +107,44 @@ public class GenerateSKClickPlugln extends AbstractBillPlugIn implements Plugin DynamicObject std_entrycostcenter = expenseentry.getDynamicObject("std_entrycostcenter");//获取成本中心 DynamicObject expenseitem = expenseentry.getDynamicObject("expenseitem");//获取费用项目 BigDecimal expenseamount = expenseentry.getBigDecimal("expenseamount");//获取报销金额 - if (std_entrycostcenter != null && expenseitem != null){//当费用项目和成本中心不为空时 + if (std_entrycostcenter != null && expenseitem != null){//当费用明细的费用项目和成本中心不为空时 long ex_centerId = std_entrycostcenter.getLong("id");//成本中心id long ex_itemId = expenseitem.getLong("id");//费用项目id boolean isSelf = true;//判断该明细是否不存在匹配预付 DynamicObjectCollection writeoffmoney = this.getModel().getEntryEntity("writeoffmoney");//获取冲借款分录 for (DynamicObject prepay : writeoffmoney) {//冲借款分录遍历 - long wr_centerId = prepay.getDynamicObject("std_srcentrycostcenter").getLong("id"); - long wr_itemId = prepay.getDynamicObject("sourceexpenseitem").getLong("id"); - if (Objects.equals(wr_centerId,ex_centerId) && Objects.equals(wr_itemId,ex_itemId)){//当成本中心和费用项目一致时。计算冲销后金额 - BigDecimal loanamount = prepay.getBigDecimal("loanamount");//获取冲销金额 - if (loanamount != null){ - int i = loanamount.compareTo(expenseamount); - if (i > 0){//若预付明细的借款余额大于报销金额,则冲销后金额为0 - expenseentry.set("shkd_verification",BigDecimal.ZERO); - }else {//冲销后金额 = 报销金额 - 借款金额 - BigDecimal subtract = expenseamount.subtract(loanamount); - expenseentry.set("shkd_verification",subtract); + DynamicObject wr_center = prepay.getDynamicObject("std_srcentrycostcenter");//预付成本中心 + DynamicObject wr_item = prepay.getDynamicObject("sourceexpenseitem");//预付费用项目 + if(wr_center != null && wr_item != null){ + long wr_centerId = prepay.getDynamicObject("std_srcentrycostcenter").getLong("id"); + long wr_itemId = prepay.getDynamicObject("sourceexpenseitem").getLong("id"); + if (Objects.equals(wr_centerId,ex_centerId) && Objects.equals(wr_itemId,ex_itemId)){//当成本中心和费用项目一致时。计算冲销后金额 + BigDecimal loanamount = prepay.getBigDecimal("loanamount");//获取冲销金额 + if (loanamount != null){ + int i = loanamount.compareTo(expenseamount); + if (i > 0){//若预付明细的借款余额大于报销金额,则冲销后金额为0 + expenseentry.set("shkd_verification",BigDecimal.ZERO); + }else {//冲销后金额 = 报销金额 - 借款金额 + BigDecimal subtract = expenseamount.subtract(loanamount); + expenseentry.set("shkd_verification",subtract); + } + }else {//若预付明细的借款余额为空则,冲销后金额为费用明细报销金额本身 + expenseentry.set("shkd_verification",expenseamount); } - }else {//若预付明细的借款余额为空则,冲销后金额为费用明细报销金额本身 - expenseentry.set("shkd_verification",expenseamount); + isSelf = false;//找到匹配预付 + break; } - isSelf = false;//找到匹配预付 - break; + }else { + if(wr_center == null && wr_item == null){ + this.getView().showTipNotification("冲预付分录成本中心和费用项目不能为空!"); + }else if (wr_center == null){ + this.getView().showTipNotification("冲预付分录成本中心不能为空!"); + }else { + this.getView().showTipNotification("冲预付分录费用项目不能为空!"); + } + } + } if (isSelf){//找不到匹配预付,则冲销后金额为费用明细报销金额本身 expenseentry.set("shkd_verification",expenseamount);