diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/MaterialInBillPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/MaterialInBillPlugin.java new file mode 100644 index 0000000..7a7b090 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/MaterialInBillPlugin.java @@ -0,0 +1,47 @@ +package zcgj.zcdev.zcdev.pr.plugin.form; + +import kd.bos.bill.AbstractBillPlugIn; +import kd.bos.bill.BillShowParameter; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.form.ShowType; +import kd.bos.form.control.EntryGrid; +import kd.bos.form.events.HyperLinkClickEvent; +import kd.bos.form.events.HyperLinkClickListener; + +import java.util.EventObject; + +/** + * 入库单发票号码超链接点击事件 + */ +public class MaterialInBillPlugin extends AbstractBillPlugIn implements HyperLinkClickListener { + + @Override + public void registerListener(EventObject e) { + super.registerListener(e); + EntryGrid control = this.getControl("zcgj_entryentity"); + control.addHyperClickListener(this); + } + + @Override + public void hyperLinkClick(HyperLinkClickEvent hyperLinkClickEvent) { + EntryGrid entryGrid = getView().getControl("zcgj_entryentity");//合同进项发票信息分录 + int[] selectRows = entryGrid.getSelectRows();//选择行 + if (selectRows != null && selectRows.length == 1) { + DynamicObjectCollection dynamicObjectCollection = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_entryentity");//合同进项发票信息分录具体信息 + DynamicObject dynamicObject = dynamicObjectCollection.get(selectRows[0]); + DynamicObject zcgjInvoice = dynamicObject.getDynamicObject("zcgj_invoice");//发票号码 + long invoiceId = zcgjInvoice.getLong("id"); + if (invoiceId != 0) { + //弹出发票详情 + BillShowParameter showParameter = new BillShowParameter(); + showParameter.setPkId(invoiceId); + showParameter.setFormId("ec_in_invoice"); + showParameter.getOpenStyle().setShowType(ShowType.MainNewTabPage); //打开方式 + getView().showForm(showParameter);//打开界面 + } + } else { + this.getView().showTipNotification("请选择一条发票数据。"); + } + } +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/PaymentApplyFundExtOp.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/PaymentApplyFundExtOp.java index 209d7ff..9dd5f0b 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/PaymentApplyFundExtOp.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/PaymentApplyFundExtOp.java @@ -22,12 +22,13 @@ import java.util.Iterator; import java.util.List; import java.util.Map; +// 付款申请单提交审核操作插件 public class PaymentApplyFundExtOp extends PaymentApplyFundOp { @Override public void onPreparePropertys(PreparePropertysEventArgs e) { super.onPreparePropertys(e); - // e.getFieldKeys().add("zcgj_pricetype"); + // e.getFieldKeys().add("zcgj_pricetype"); } @Override @@ -48,60 +49,61 @@ public class PaymentApplyFundExtOp extends PaymentApplyFundOp { int var4 = dataEntities.length; label50: - for(int var5 = 0; var5 < var4; ++var5) { + for (int var5 = 0; var5 < var4; ++var5) { DynamicObject paymentApply = var3[var5]; - DynamicObjectCollection entryCol = paymentApply.getDynamicObjectCollection("entryentity"); + DynamicObjectCollection entryCol = paymentApply.getDynamicObjectCollection("entryentity");//付款信息分录 Iterator var8 = entryCol.iterator(); - while(true) { - while(true) { + while (true) { + while (true) { if (!var8.hasNext()) { continue label50; } - DynamicObject entry = (DynamicObject)var8.next(); - DynamicObject contract = entry.getDynamicObject("contract"); - if(contract != null){ - BigDecimal thisApplyOfTaxAmt = entry.getBigDecimal("applyoftaxamount"); - BigDecimal deduction = entry.getBigDecimal("thisdeduction"); - BigDecimal contractDeduction = (BigDecimal)contractDeductionMap.getOrDefault(contract.getLong("id"), BigDecimal.ZERO); + DynamicObject entry = (DynamicObject) var8.next(); + DynamicObject contract = entry.getDynamicObject("contract");//合同名称 + if (contract != null) { + BigDecimal thisApplyOfTaxAmt = entry.getBigDecimal("applyoftaxamount");//本次应付金额⑭ + BigDecimal deduction = entry.getBigDecimal("thisdeduction");//本期预付款抵扣⑬ + BigDecimal contractDeduction = (BigDecimal) contractDeductionMap.getOrDefault(contract.getLong("id"), BigDecimal.ZERO); contractDeductionMap.put(contract.getLong("id"), contractDeduction.add(deduction)); - String type = entry.getString("paymenttype"); + String type = entry.getString("paymenttype");//支付类型 QFilter contractFilter = new QFilter("contract", "=", contract.getLong("id")); QFilter typeFilter = new QFilter("type", "=", type); - DynamicObject node = entry.getDynamicObject("paynode"); - String nodeText = entry.getString("paynodetext"); + 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", "totalshowamt,totaldeductionamt", new QFilter[]{contractFilter, typeFilter}); + DynamicObject[] contTypeAmts = BusinessDataServiceHelper.load("ecpf_conttypeamt", + "totalshowamt,totaldeductionamt", new QFilter[]{contractFilter, typeFilter});//合同的收付类型对应金额单 if (contTypeAmts != null && contTypeAmts.length != 0) { DynamicObject[] var28 = contTypeAmts; int var26 = contTypeAmts.length; - for(int var27 = 0; var27 < var26; ++var27) { + for (int var27 = 0; var27 < var26; ++var27) { DynamicObject contTypeAmt = var28[var27]; - BigDecimal totalShowAmt = contTypeAmt.getBigDecimal("totalshowamt"); + BigDecimal totalShowAmt = contTypeAmt.getBigDecimal("totalshowamt");//合同的收付类型对应金额单-累计应付金额 contTypeAmt.set("totalshowamt", totalShowAmt.add(thisApplyOfTaxAmt)); - BigDecimal totalDeduction = contTypeAmt.getBigDecimal("totaldeductionamt"); + BigDecimal totalDeduction = contTypeAmt.getBigDecimal("totaldeductionamt");//合同的收付类型对应金额单-累计申请抵扣金额 contTypeAmt.set("totaldeductionamt", totalDeduction.add(deduction)); } SaveServiceHelper.save(contTypeAmts); } else { - BigDecimal payRate = entry.getBigDecimal("controlrate"); - MainEntityType entityType = EntityMetadataCache.getDataEntityType("ecpf_conttypeamt"); + 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("totalshowamt", thisApplyOfTaxAmt); - newContTypeAmtObj.set("totaldeductionamt", deduction); - newContTypeAmtObj.set("paynode", entry.get("paynode")); - newContTypeAmtObj.set("node", entry.get("paynode") == null ? entry.get("paynodetext") : ""); + newContTypeAmtObj.set("contract", contract);//合同 + newContTypeAmtObj.set("type", type);//收付款类型 + newContTypeAmtObj.set("ratio", payRate);//收付款比例(%) + newContTypeAmtObj.set("totalshowamt", thisApplyOfTaxAmt);//累计应付金额 + newContTypeAmtObj.set("totaldeductionamt", deduction);//累计申请抵扣金额 + newContTypeAmtObj.set("paynode", entry.get("paynode"));//节点(隐藏) + newContTypeAmtObj.set("node", entry.get("paynode") == null ? entry.get("paynodetext") : "");//节点 SaveServiceHelper.save(new DynamicObject[]{newContTypeAmtObj}); } } 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 10dae7d..cd85882 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 @@ -19,6 +19,7 @@ import java.math.BigDecimal; import java.util.HashSet; import java.util.Set; +//付款登记单审核与反审核操作插件 public class PaymentRegisterFundOpExt extends PaymentRegisterFundOp { private static final Log log = LogFactory.getLog(PaymentRegisterFundOpExt.class); @@ -34,185 +35,299 @@ public class PaymentRegisterFundOpExt extends PaymentRegisterFundOp { DynamicObject[] dataEntities = e.getDataEntities(); switch (operationKey) { case "audit": - log.info("执行PaymentRegisterFundOpExt的审核操作,开始更新合同,付款类型实付金额"); - this.updateContTypeAmtTotalRealAmt(dataEntities); - log.info("执行PaymentRegisterFundOpExt的审核操作,完成更新合同,付款类型实付金额"); + 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.updateInApplyRealPayAmt(dataEntities, true); - log.info("执行PaymentRegisterFundOpExt的审核操作,完成更新请款单实付金额"); - break; + log.info("执行PaymentRegisterFundOpExt的审核操作,开始更新请款单实付金额"); + this.updateInApplyRealPayAmt(data, true); + log.info("执行PaymentRegisterFundOpExt的审核操作,完成更新请款单实付金额"); + break; + } else { + //非合同付款申请 + log.info("执行PaymentRegisterFundOpExt的审核操作,开始更新无合同请款单实付金额"); + this.updateInApplyRealPayAmtExt(data, true); + log.info("执行PaymentRegisterFundOpExt的审核操作,完成更新无合同请款单实付金额"); + } + } case "unaudit": - log.info("执行PaymentRegisterFundOpExt的反审核操作,开始更新合同,付款类型实付金额"); - this.updateContTypeAmtTotalRealAmtWhenUnAudit(dataEntities); - log.info("执行PaymentRegisterFundOpExt的反审核操作,完成更新合同,付款类型实付金额"); + 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.updateInApplyRealPayAmt(dataEntities, false); - 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的反审核操作,完成更新无合同请款单实付金额"); + } + } } } - @Override - protected void updateInApplyRealPayAmt(DynamicObject[] dataEntities, boolean isAudit) { - // super.updateInApplyRealPayAmt(dataEntities, isAudit); + protected void updateInApplyRealPayAmt(DynamicObject data, boolean isAudit) { + // super.updateInApplyRealPayAmt(dataEntities, isAudit); BigDecimal ratio = BigDecimal.ONE; if (!isAudit) { ratio = BigDecimal.ZERO.subtract(ratio); } - 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 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 entry : object.getDynamicObjectCollection("entryentity")) { //付款登记单 付款信息 - DynamicObject paymentApplyF7 = entry.getDynamicObject("paymentapply");//付款登记单关联 付款申请单 - DynamicObject contract = entry.getDynamicObject("contract");//付款登记单关联 合同 - BigDecimal thisOfTaxAmt = entry.getBigDecimal("thispaymentoftaxamount"); //付款登记单 本次实付金额 + } + for (DynamicObject entry : data.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; - - 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}); } + + 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);//付款申请单 分录付款完成 + } + } + } + + 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});//保存付款申请单反写数据 } } } - @Override - protected void updateContTypeAmtTotalRealAmt(DynamicObject[] dataEntities) { + protected void updateContTypeAmtTotalRealAmt(DynamicObject data) { //super.updateContTypeAmtTotalRealAmt(dataEntities); - 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); +// 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)); } - 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}); - } + 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}); } } } +// } } - @Override - protected void updateContTypeAmtTotalRealAmtWhenUnAudit(DynamicObject[] dataEntities) { + protected void updateContTypeAmtTotalRealAmtWhenUnAudit(DynamicObject data) { //super.updateContTypeAmtTotalRealAmtWhenUnAudit(dataEntities); - 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); - } +// 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"))}); - } + 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); } + + SaveServiceHelper.save(contTypeAmts); } } +// } } } }