From 89a3b836fd0ac13b14d65f08e6e7dbf1ed3b663e Mon Sep 17 00:00:00 2001 From: xuhaihui <2098865055@qq.com> Date: Wed, 18 Jun 2025 16:08:21 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=98=E5=8E=9F=E4=BB=98=E6=AC=BE=E7=99=BB?= =?UTF-8?q?=E8=AE=B0=E5=8D=95=E5=AE=A1=E6=A0=B8=E5=8F=8D=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E6=8F=92=E4=BB=B6=EF=BC=8C=E8=BF=98=E5=8E=9F?= =?UTF-8?q?=E8=87=B32025/6/13?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../operate/PaymentRegisterFundOpExt.java | 390 +++++++----------- 1 file changed, 138 insertions(+), 252 deletions(-) diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/PaymentRegisterFundOpExt.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/PaymentRegisterFundOpExt.java index cd85882..d61a23f 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/PaymentRegisterFundOpExt.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/PaymentRegisterFundOpExt.java @@ -35,299 +35,185 @@ public class PaymentRegisterFundOpExt extends PaymentRegisterFundOp { DynamicObject[] dataEntities = e.getDataEntities(); switch (operationKey) { case "audit": - int a = 0; - for (DynamicObject data : dataEntities) { - for (DynamicObject entry : data.getDynamicObjectCollection("entryentity")) { //付款登记单 付款信息分录 - DynamicObject contract = entry.getDynamicObject("contract");//付款登记单关联 合同 - if (contract != null) { - //合同付款申请 - a++; - break; - } - } - if (a > 0) { - //合同付申请 - log.info("执行PaymentRegisterFundOpExt的审核操作,开始更新合同,付款类型实付金额"); - this.updateContTypeAmtTotalRealAmt(data); - log.info("执行PaymentRegisterFundOpExt的审核操作,完成更新合同,付款类型实付金额"); + log.info("执行PaymentRegisterFundOpExt的审核操作,开始更新合同,付款类型实付金额"); + this.updateContTypeAmtTotalRealAmt(dataEntities); + log.info("执行PaymentRegisterFundOpExt的审核操作,完成更新合同,付款类型实付金额"); - log.info("执行PaymentRegisterFundOpExt的审核操作,开始更新请款单实付金额"); - this.updateInApplyRealPayAmt(data, true); - log.info("执行PaymentRegisterFundOpExt的审核操作,完成更新请款单实付金额"); - break; - } else { - //非合同付款申请 - log.info("执行PaymentRegisterFundOpExt的审核操作,开始更新无合同请款单实付金额"); - this.updateInApplyRealPayAmtExt(data, true); - log.info("执行PaymentRegisterFundOpExt的审核操作,完成更新无合同请款单实付金额"); - } - } + log.info("执行PaymentRegisterFundOpExt的审核操作,开始更新请款单实付金额"); + this.updateInApplyRealPayAmt(dataEntities, true); + log.info("执行PaymentRegisterFundOpExt的审核操作,完成更新请款单实付金额"); + break; case "unaudit": - int b = 0; - for (DynamicObject data : dataEntities) { - for (DynamicObject entry : data.getDynamicObjectCollection("entryentity")) { //付款登记单 付款信息分录 - DynamicObject contract = entry.getDynamicObject("contract");//付款登记单关联 合同 - if (contract != null) { - //合同付款申请 - b++; - break; - } - } - if (b > 0) { - //合同付款申请 - log.info("执行PaymentRegisterFundOpExt的反审核操作,开始更新合同,付款类型实付金额"); - this.updateContTypeAmtTotalRealAmtWhenUnAudit(data); - log.info("执行PaymentRegisterFundOpExt的反审核操作,完成更新合同,付款类型实付金额"); + log.info("执行PaymentRegisterFundOpExt的反审核操作,开始更新合同,付款类型实付金额"); + this.updateContTypeAmtTotalRealAmtWhenUnAudit(dataEntities); + log.info("执行PaymentRegisterFundOpExt的反审核操作,完成更新合同,付款类型实付金额"); - log.info("执行PaymentRegisterFundOpExt的反审核操作,开始更新请款单实付金额"); - this.updateInApplyRealPayAmt(data, false); - log.info("执行PaymentRegisterFundOpExt的反审核操作,完成更新请款单实付金额"); - break; - } else { - //非合同付款申请 - log.info("执行PaymentRegisterFundOpExt的反审核操作,开始更新无合同请款单实付金额"); - this.updateInApplyRealPayAmtExt(data, false); - log.info("执行PaymentRegisterFundOpExt的反审核操作,完成更新无合同请款单实付金额"); - } - } + log.info("执行PaymentRegisterFundOpExt的反审核操作,开始更新请款单实付金额"); + this.updateInApplyRealPayAmt(dataEntities, false); + log.info("执行PaymentRegisterFundOpExt的反审核操作,完成更新请款单实付金额"); } } - protected void updateInApplyRealPayAmt(DynamicObject data, boolean isAudit) { + @Override + protected void updateInApplyRealPayAmt(DynamicObject[] dataEntities, boolean isAudit) { // super.updateInApplyRealPayAmt(dataEntities, isAudit); BigDecimal ratio = BigDecimal.ONE; if (!isAudit) { ratio = BigDecimal.ZERO.subtract(ratio); } -// for (DynamicObject object : dataEntities) { - Long referregisterid = data.getLong("referregisterid");//关联登记单id(付款处理单Id) - QFilter paybillFilter = new QFilter("id", "=", referregisterid); - //付款处理单 - DynamicObject paybill = BusinessDataServiceHelper.loadSingle("cas_paybill", "entry,entry.e_corebillentryseq", new QFilter[]{paybillFilter}); - Set payBillSer = new HashSet<>(); - if (paybill != null) { - for (DynamicObject dynamicObject : paybill.getDynamicObjectCollection("entry")) { - int corebillentryseq = dynamicObject.getInt("e_corebillentryseq");//核心单据行号 - payBillSer.add(corebillentryseq); - log.info("执行PaymentRegisterFundOpExt:付款处理单涉及核心单据行号:" + corebillentryseq); + for(DynamicObject object : dataEntities) { + Long referregisterid = object.getLong("referregisterid");//关联登记单id(付款处理单Id) + QFilter paybillFilter = new QFilter("id", "=", referregisterid); + //付款处理单 + DynamicObject paybill = BusinessDataServiceHelper.loadSingle("cas_paybill", "entry,entry.e_corebillentryseq", new QFilter[]{paybillFilter}); + Set payBillSer = new HashSet<>(); + if(paybill!=null){ + for (DynamicObject dynamicObject : paybill.getDynamicObjectCollection("entry")) { + int corebillentryseq = dynamicObject.getInt("e_corebillentryseq");//核心单据行号 + payBillSer.add(corebillentryseq); + log.info("执行PaymentRegisterFundOpExt:付款处理单涉及核心单据行号:"+corebillentryseq); + } } - } - for (DynamicObject entry : data.getDynamicObjectCollection("entryentity")) { //付款登记单 付款信息 - DynamicObject paymentApplyF7 = entry.getDynamicObject("paymentapply");//付款登记单关联 付款申请单 - DynamicObject contract = entry.getDynamicObject("contract");//付款登记单关联 合同 - BigDecimal thisOfTaxAmt = entry.getBigDecimal("thispaymentoftaxamount"); //付款登记单 本次实付金额 + for(DynamicObject entry : object.getDynamicObjectCollection("entryentity")) { //付款登记单 付款信息 + DynamicObject paymentApplyF7 = entry.getDynamicObject("paymentapply");//付款登记单关联 付款申请单 + DynamicObject contract = entry.getDynamicObject("contract");//付款登记单关联 合同 + BigDecimal thisOfTaxAmt = entry.getBigDecimal("thispaymentoftaxamount"); //付款登记单 本次实付金额 - thisOfTaxAmt = thisOfTaxAmt.multiply(ratio); - String payType = entry.getString("paytype"); //支付类型 - if (paymentApplyF7 != null) { - QFilter paymentApplyFilter = new QFilter("id", "=", paymentApplyF7.getLong("id")); - DynamicObject paymentApply = BusinessDataServiceHelper.loadSingle("ec_paymentapply", "realpayamt,billcompletepay,ismulticurrency,exchangerate,stdrealpayamt,entryentity,entryentity.seq,contract,paymenttype,applyoftaxamount,thisrealpayamt,thiswaitpayamt,completepay", new QFilter[]{paymentApplyFilter}); - DynamicObjectCollection paymentEntryCol = paymentApply.getDynamicObjectCollection("entryentity");//付款申请单分录 - boolean billcompletepay = true; + thisOfTaxAmt = thisOfTaxAmt.multiply(ratio); + String payType = entry.getString("paytype"); //支付类型 + if (paymentApplyF7 != null) { + QFilter paymentApplyFilter = new QFilter("id", "=", paymentApplyF7.getLong("id")); + DynamicObject paymentApply = BusinessDataServiceHelper.loadSingle("ec_paymentapply", "realpayamt,billcompletepay,ismulticurrency,exchangerate,stdrealpayamt,entryentity,entryentity.seq,contract,paymenttype,applyoftaxamount,thisrealpayamt,thiswaitpayamt,completepay", new QFilter[]{paymentApplyFilter}); + DynamicObjectCollection paymentEntryCol = paymentApply.getDynamicObjectCollection("entryentity");//付款申请单分录 + boolean billcompletepay = true; - for (DynamicObject paymentEntry : paymentEntryCol) { - String applyPayType = paymentEntry.getString("paymenttype"); - DynamicObject applyContract = paymentEntry.getDynamicObject("contract"); - int seq = paymentEntry.getInt("seq"); //付款申请单分录行号 - if (contract != null && applyContract != null - && StringUtils.equals(contract.getString("id"), applyContract.getString("id")) - && StringUtils.equals(payType, applyPayType) - && payBillSer.contains(seq) - ) { - log.info("执行PaymentRegisterFundOpExt:付款申请单分录行号和付款处理单核心单据分录行号匹配成功"); - BigDecimal oldRealPayAmt = paymentEntry.getBigDecimal("thisrealpayamt"); - BigDecimal applyOfTaxAmount = paymentEntry.getBigDecimal("applyoftaxamount"); - BigDecimal thisRealPayAmt = oldRealPayAmt.add(thisOfTaxAmt); - BigDecimal thisWaitPayAmt = applyOfTaxAmount.subtract(thisRealPayAmt); - paymentEntry.set("thisrealpayamt", thisRealPayAmt); - paymentEntry.set("thiswaitpayamt", thisWaitPayAmt); - if (thisRealPayAmt.compareTo(applyOfTaxAmount) >= 0) { - paymentEntry.set("completepay", true); - } else { - paymentEntry.set("completepay", false); + for(DynamicObject paymentEntry : paymentEntryCol) { + String applyPayType = paymentEntry.getString("paymenttype"); + DynamicObject applyContract = paymentEntry.getDynamicObject("contract"); + int seq = paymentEntry.getInt("seq"); //付款申请单分录行号 + if (contract != null && applyContract != null + && StringUtils.equals(contract.getString("id"), applyContract.getString("id")) + && StringUtils.equals(payType, applyPayType) + && payBillSer.contains(seq) + ) { + log.info("执行PaymentRegisterFundOpExt:付款申请单分录行号和付款处理单核心单据分录行号匹配成功"); + BigDecimal oldRealPayAmt = paymentEntry.getBigDecimal("thisrealpayamt"); + BigDecimal applyOfTaxAmount = paymentEntry.getBigDecimal("applyoftaxamount"); + BigDecimal thisRealPayAmt = oldRealPayAmt.add(thisOfTaxAmt); + BigDecimal thisWaitPayAmt = applyOfTaxAmount.subtract(thisRealPayAmt); + paymentEntry.set("thisrealpayamt", thisRealPayAmt); + paymentEntry.set("thiswaitpayamt", thisWaitPayAmt); + if (thisRealPayAmt.compareTo(applyOfTaxAmount) >= 0) { + paymentEntry.set("completepay", true); + } else { + paymentEntry.set("completepay", false); + } } } - } - BigDecimal totalRealpayAmt = BigDecimal.ZERO; + BigDecimal totalRealpayAmt = BigDecimal.ZERO; - for (DynamicObject inComeEntry : paymentEntryCol) { - if (!inComeEntry.getBoolean("completepay")) { - billcompletepay = false; - } - - totalRealpayAmt = totalRealpayAmt.add(inComeEntry.getBigDecimal("thisrealpayamt")); - } - - if (paymentApply.getBoolean("ismulticurrency")) { - BigDecimal exchangerate = paymentApply.getBigDecimal("exchangerate"); - BigDecimal stdRealPayAmt = totalRealpayAmt.multiply(exchangerate); - paymentApply.set("stdrealpayamt", stdRealPayAmt); - } - - paymentApply.set("realpayamt", totalRealpayAmt); - paymentApply.set("billcompletepay", billcompletepay); - SaveServiceHelper.save(new DynamicObject[]{paymentApply}); - } - } -// } - } - - protected void updateInApplyRealPayAmtExt(DynamicObject data, boolean isAudit) { - - BigDecimal ratio = BigDecimal.ONE; - if (!isAudit) { - //反审核操作时,减去付款金额 - ratio = BigDecimal.ZERO.subtract(ratio); - } - - Long referRegisterId = data.getLong("referregisterid");//关联登记单id(付款处理单Id) - QFilter payBillFilter = new QFilter("id", "=", referRegisterId); - DynamicObject payBill = BusinessDataServiceHelper.loadSingle("cas_paybill", - "entry,entry.e_corebillentryseq", new QFilter[]{payBillFilter});//付款处理单 - Set payBillSer = new HashSet<>(); - if (payBill != null) { - DynamicObjectCollection entryCollection = payBill.getDynamicObjectCollection("entry");//付款处理单 付款明细分录 - for (DynamicObject entry : entryCollection) { - int coreBillEntrySeq = entry.getInt("e_corebillentryseq");//付款处理单 核心单据行号 - payBillSer.add(coreBillEntrySeq); - log.info("执行PaymentRegisterFundOpExt:付款处理单涉及核心单据行号:" + coreBillEntrySeq); - } - } - - DynamicObjectCollection entryEntityCollection = data.getDynamicObjectCollection("entryentity");//付款登记单 付款信息分录 - for (DynamicObject entry : entryEntityCollection) { - DynamicObject paymentApplyF7 = entry.getDynamicObject("paymentapply");//付款登记单 付款申请单号 - BigDecimal thisOfTaxAmt = entry.getBigDecimal("thispaymentoftaxamount"); //付款登记单 本次实付金额 - thisOfTaxAmt = thisOfTaxAmt.multiply(ratio); - String payType = entry.getString("paytype"); //付款登记单 支付类型 - - if (paymentApplyF7 != null) { - QFilter paymentApplyFilter = new QFilter("id", "=", paymentApplyF7.getLong("id")); - DynamicObject paymentApply = BusinessDataServiceHelper.loadSingle("ec_paymentapply", - "realpayamt,billcompletepay,ismulticurrency,exchangerate,stdrealpayamt," + - "entryentity,entryentity.seq,contract,paymenttype,applyoftaxamount,thisrealpayamt,thiswaitpayamt,completepay", - new QFilter[]{paymentApplyFilter});//付款申请单 - DynamicObjectCollection paymentEntryCol = paymentApply.getDynamicObjectCollection("entryentity");//付款申请单 付款信息分录 - boolean billCompletePay = true;//付款申请单 表头付款完成 - for (DynamicObject paymentEntry : paymentEntryCol) { - String applyPayType = paymentEntry.getString("paymenttype");//付款申请单 支付类型 - int seq = paymentEntry.getInt("seq"); //付款申请单分录行号 - if (StringUtils.equals(payType, applyPayType) && payBillSer.contains(seq)) { - log.info("执行PaymentRegisterFundOpExt:付款申请单分录行号和付款处理单核心单据分录行号匹配成功"); - BigDecimal oldRealPayAmt = paymentEntry.getBigDecimal("thisrealpayamt");//付款申请单 本次实付金额 - BigDecimal applyOfTaxAmount = paymentEntry.getBigDecimal("applyoftaxamount");//付款申请单 本次应付金额⑭ - BigDecimal thisRealPayAmt = oldRealPayAmt.add(thisOfTaxAmt); - BigDecimal thisWaitPayAmt = applyOfTaxAmount.subtract(thisRealPayAmt); - paymentEntry.set("thisrealpayamt", thisRealPayAmt);//付款申请单 本次实付金额 - paymentEntry.set("thiswaitpayamt", thisWaitPayAmt);//付款申请单 本次应付金额⑭ - if (thisRealPayAmt.compareTo(applyOfTaxAmount) >= 0) { - paymentEntry.set("completepay", true);//付款申请单 分录付款完成 - } else { - paymentEntry.set("completepay", false);//付款申请单 分录付款完成 + for(DynamicObject inComeEntry : paymentEntryCol) { + if (!inComeEntry.getBoolean("completepay")) { + billcompletepay = false; } + + totalRealpayAmt = totalRealpayAmt.add(inComeEntry.getBigDecimal("thisrealpayamt")); } - } - BigDecimal totalRealpayAmt = BigDecimal.ZERO; - for (DynamicObject inComeEntry : paymentEntryCol) { - if (!inComeEntry.getBoolean("completepay")) {//付款申请单 分录付款完成 - billCompletePay = false;//付款申请单 表头付款完成 + if (paymentApply.getBoolean("ismulticurrency")) { + BigDecimal exchangerate = paymentApply.getBigDecimal("exchangerate"); + BigDecimal stdRealPayAmt = totalRealpayAmt.multiply(exchangerate); + paymentApply.set("stdrealpayamt", stdRealPayAmt); } - totalRealpayAmt = totalRealpayAmt.add(inComeEntry.getBigDecimal("thisrealpayamt"));//付款申请单 本次实付金额 + + paymentApply.set("realpayamt", totalRealpayAmt); + paymentApply.set("billcompletepay", billcompletepay); + SaveServiceHelper.save(new DynamicObject[]{paymentApply}); } - - if (paymentApply.getBoolean("ismulticurrency")) {//付款申请单 是否多币种 - BigDecimal exchangeRate = paymentApply.getBigDecimal("exchangerate");//付款申请单 汇率 - BigDecimal stdRealPayAmt = totalRealpayAmt.multiply(exchangeRate); - paymentApply.set("stdrealpayamt", stdRealPayAmt);//付款申请单 实际付款金额(本位币) - } - - paymentApply.set("realpayamt", totalRealpayAmt);//付款申请单 本次实付金额 - paymentApply.set("billcompletepay", billCompletePay);//付款申请单 表头付款完成 - - SaveServiceHelper.save(new DynamicObject[]{paymentApply});//保存付款申请单反写数据 } } } - protected void updateContTypeAmtTotalRealAmt(DynamicObject data) { + @Override + protected void updateContTypeAmtTotalRealAmt(DynamicObject[] dataEntities) { //super.updateContTypeAmtTotalRealAmt(dataEntities); -// for (DynamicObject object : dataEntities) { - for (DynamicObject entry : data.getDynamicObjectCollection("entryentity")) { - DynamicObject contract = entry.getDynamicObject("contract"); - if (contract != null) { - BigDecimal thisOfTaxAmt = entry.getBigDecimal("thispaymentoftaxamount"); - String type = entry.getString("paytype"); - QFilter contractFilter = new QFilter("contract", "=", contract.getLong("id")); - QFilter typeFilter = new QFilter("type", "=", type); - DynamicObject node = entry.getDynamicObject("paynode"); - String nodeText = entry.getString("paynodetext"); - if (node != null) { - typeFilter.and("paynode", "=", node.getPkValue()); - } else if (StringUtils.isNotEmpty(nodeText)) { - typeFilter.and("node", "=", nodeText); - } - - DynamicObject[] contTypeAmts = BusinessDataServiceHelper.load("ecpf_conttypeamt", "totalrealamt", new QFilter[]{contractFilter, typeFilter}); - if (contTypeAmts != null && contTypeAmts.length != 0) { - for (DynamicObject contTypeAmt : contTypeAmts) { - BigDecimal totalRealAmt = contTypeAmt.getBigDecimal("totalrealamt"); - contTypeAmt.set("totalrealamt", totalRealAmt.add(thisOfTaxAmt)); + for(DynamicObject object : dataEntities) { + for(DynamicObject entry : object.getDynamicObjectCollection("entryentity")) { + DynamicObject contract = entry.getDynamicObject("contract"); + if(contract!=null){ + BigDecimal thisOfTaxAmt = entry.getBigDecimal("thispaymentoftaxamount"); + String type = entry.getString("paytype"); + QFilter contractFilter = new QFilter("contract", "=", contract.getLong("id")); + QFilter typeFilter = new QFilter("type", "=", type); + DynamicObject node = entry.getDynamicObject("paynode"); + String nodeText = entry.getString("paynodetext"); + if (node != null) { + typeFilter.and("paynode", "=", node.getPkValue()); + } else if (StringUtils.isNotEmpty(nodeText)) { + typeFilter.and("node", "=", nodeText); } - SaveServiceHelper.save(contTypeAmts); - } else { - BigDecimal payRate = entry.getBigDecimal("controlrate"); - MainEntityType entityType = EntityMetadataCache.getDataEntityType("ecpf_conttypeamt"); - DynamicObject newContTypeAmtObj = new DynamicObject(entityType); - newContTypeAmtObj.set("contract", contract); - newContTypeAmtObj.set("type", type); - newContTypeAmtObj.set("ratio", payRate); - newContTypeAmtObj.set("totalrealamt", thisOfTaxAmt); - newContTypeAmtObj.set("paynode", entry.get("paynode")); - newContTypeAmtObj.set("node", entry.get("paynode") == null ? entry.get("paynodetext") : ""); - SaveServiceHelper.save(new DynamicObject[]{newContTypeAmtObj}); + DynamicObject[] contTypeAmts = BusinessDataServiceHelper.load("ecpf_conttypeamt", "totalrealamt", new QFilter[]{contractFilter, typeFilter}); + if (contTypeAmts != null && contTypeAmts.length != 0) { + for(DynamicObject contTypeAmt : contTypeAmts) { + BigDecimal totalRealAmt = contTypeAmt.getBigDecimal("totalrealamt"); + contTypeAmt.set("totalrealamt", totalRealAmt.add(thisOfTaxAmt)); + } + + SaveServiceHelper.save(contTypeAmts); + } else { + BigDecimal payRate = entry.getBigDecimal("controlrate"); + MainEntityType entityType = EntityMetadataCache.getDataEntityType("ecpf_conttypeamt"); + DynamicObject newContTypeAmtObj = new DynamicObject(entityType); + newContTypeAmtObj.set("contract", contract); + newContTypeAmtObj.set("type", type); + newContTypeAmtObj.set("ratio", payRate); + newContTypeAmtObj.set("totalrealamt", thisOfTaxAmt); + newContTypeAmtObj.set("paynode", entry.get("paynode")); + newContTypeAmtObj.set("node", entry.get("paynode") == null ? entry.get("paynodetext") : ""); + SaveServiceHelper.save(new DynamicObject[]{newContTypeAmtObj}); + } } } } -// } } - protected void updateContTypeAmtTotalRealAmtWhenUnAudit(DynamicObject data) { + @Override + protected void updateContTypeAmtTotalRealAmtWhenUnAudit(DynamicObject[] dataEntities) { //super.updateContTypeAmtTotalRealAmtWhenUnAudit(dataEntities); -// for (DynamicObject object : dataEntities) { - for (DynamicObject entry : data.getDynamicObjectCollection("entryentity")) { - DynamicObject contract = entry.getDynamicObject("contract"); - if (contract != null) { - BigDecimal thisOfTaxAmt = entry.getBigDecimal("thispaymentoftaxamount"); - String type = entry.getString("paytype"); - QFilter contractFilter = new QFilter("contract", "=", contract.getLong("id")); - QFilter typeFilter = new QFilter("type", "=", type); - DynamicObject node = entry.getDynamicObject("paynode"); - String nodeText = entry.getString("paynodetext"); - if (node != null) { - typeFilter.and("paynode", "=", node.getPkValue()); - } else if (StringUtils.isNotEmpty(nodeText)) { - typeFilter.and("node", "=", nodeText); - } - - DynamicObject[] contTypeAmts = BusinessDataServiceHelper.load("ecpf_conttypeamt", "totalrealamt,totalshowamt,ratio,source", new QFilter[]{contractFilter, typeFilter}); - if (contTypeAmts != null && contTypeAmts.length != 0) { - for (DynamicObject contTypeAmt : contTypeAmts) { - BigDecimal totalRealAmt = contTypeAmt.getBigDecimal("totalrealamt"); - String source = contTypeAmt.getString("source"); - contTypeAmt.set("totalrealamt", totalRealAmt.subtract(thisOfTaxAmt)); - if (StringUtils.isBlank(source) && BigDecimal.ZERO.compareTo(contTypeAmt.getBigDecimal("totalshowamt")) == 0 && BigDecimal.ZERO.compareTo(contTypeAmt.getBigDecimal("totalrealamt")) == 0) { - DeleteServiceHelper.delete("ecpf_conttypeamt", new QFilter[]{new QFilter("id", "=", contTypeAmt.getLong("id"))}); - } + for(DynamicObject object : dataEntities) { + for(DynamicObject entry : object.getDynamicObjectCollection("entryentity")) { + DynamicObject contract = entry.getDynamicObject("contract"); + if(contract!=null){ + BigDecimal thisOfTaxAmt = entry.getBigDecimal("thispaymentoftaxamount"); + String type = entry.getString("paytype"); + QFilter contractFilter = new QFilter("contract", "=", contract.getLong("id")); + QFilter typeFilter = new QFilter("type", "=", type); + DynamicObject node = entry.getDynamicObject("paynode"); + String nodeText = entry.getString("paynodetext"); + if (node != null) { + typeFilter.and("paynode", "=", node.getPkValue()); + } else if (StringUtils.isNotEmpty(nodeText)) { + typeFilter.and("node", "=", nodeText); } - SaveServiceHelper.save(contTypeAmts); + DynamicObject[] contTypeAmts = BusinessDataServiceHelper.load("ecpf_conttypeamt", "totalrealamt,totalshowamt,ratio,source", new QFilter[]{contractFilter, typeFilter}); + if (contTypeAmts != null && contTypeAmts.length != 0) { + for(DynamicObject contTypeAmt : contTypeAmts) { + BigDecimal totalRealAmt = contTypeAmt.getBigDecimal("totalrealamt"); + String source = contTypeAmt.getString("source"); + contTypeAmt.set("totalrealamt", totalRealAmt.subtract(thisOfTaxAmt)); + if (StringUtils.isBlank(source) && BigDecimal.ZERO.compareTo(contTypeAmt.getBigDecimal("totalshowamt")) == 0 && BigDecimal.ZERO.compareTo(contTypeAmt.getBigDecimal("totalrealamt")) == 0) { + DeleteServiceHelper.delete("ecpf_conttypeamt", new QFilter[]{new QFilter("id", "=", contTypeAmt.getLong("id"))}); + } + } + + SaveServiceHelper.save(contTypeAmts); + } } } -// } } } }