diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/OutContractFinaceConfirmePlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/OutContractFinaceConfirmePlugin.java index a91fe9b..780a9b4 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/OutContractFinaceConfirmePlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/OutContractFinaceConfirmePlugin.java @@ -1,5 +1,7 @@ package zcgj.zcdev.zcdev.pr.plugin.form; +import kd.bos.algo.DataSet; +import kd.bos.algo.Row; import kd.bos.bill.AbstractBillPlugIn; import kd.bos.bill.BillShowParameter; import kd.bos.bill.OperationStatus; @@ -16,12 +18,15 @@ import kd.bos.form.events.HyperLinkClickListener; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.QueryServiceHelper; import kd.ec.contract.common.enums.DirectionEnum; import kd.sdk.plugin.Plugin; import java.math.BigDecimal; import java.math.RoundingMode; +import java.util.ArrayList; import java.util.EventObject; +import java.util.List; /** * 支出合同确认单插件 @@ -45,7 +50,9 @@ public class OutContractFinaceConfirmePlugin extends AbstractBillPlugIn impleme initData(contractSettleIdObj); this.getView().invokeOperation("save"); } + //calBcCxAmt(); } + } } @@ -56,7 +63,8 @@ public class OutContractFinaceConfirmePlugin extends AbstractBillPlugIn impleme getModel().setValue("zcgj_ec_out_contract_name",ecoutcontractsettle.getString("billname")); getModel().setValue("zcgj_ec_out_contractid", ecoutcontractsettle.getLong("id")); //id文本,冗余 getModel().setValue("zcgj_billname",ecoutcontractsettle.getString("billname")); - getModel().setValue("zcgj_contract",ecoutcontractsettle.getDynamicObject("contract")); + DynamicObject contract = ecoutcontractsettle.getDynamicObject("contract"); + getModel().setValue("zcgj_contract",contract); getModel().setValue("zcgj_contattr",ecoutcontractsettle.getDynamicObject("contattr")); getModel().setValue("zcgj_project",ecoutcontractsettle.getDynamicObject("project")); getModel().setValue("zcgj_period",ecoutcontractsettle.getDynamicObject("period")); @@ -72,6 +80,9 @@ public class OutContractFinaceConfirmePlugin extends AbstractBillPlugIn impleme //DynamicObjectCollection entryEntity = this.getModel().getEntryEntity("zcgj_itementry"); DynamicObjectCollection entryEntity1 = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_itementry"); entryEntity1.clear(); + BigDecimal contractPayAmt = getContractPayAmt(contract); + BigDecimal finaceConfirmeAmt = getFinaceConfirmeAmt(contract); + BigDecimal amt = contractPayAmt.subtract(finaceConfirmeAmt); for (DynamicObject dynamicObject : itementry) { DynamicObject item = entryEntity1.addNew(); item.set("zcgj_payitem",dynamicObject.getDynamicObject("payitem")); @@ -80,6 +91,7 @@ public class OutContractFinaceConfirmePlugin extends AbstractBillPlugIn impleme item.set("zcgj_rate",dynamicObject.getBigDecimal("rate")); item.set("zcgj_taxamt",dynamicObject.getBigDecimal("taxamt")); item.set("zcgj_remark",dynamicObject.getString("remark")); + item.set("zcgj_ljwcxamt",amt); } this.getView().updateView("zcgj_itementry"); } @@ -91,9 +103,12 @@ public class OutContractFinaceConfirmePlugin extends AbstractBillPlugIn impleme this.ofTaxAmountChanged(changeData); //计算税额和不含税金额 }else if(StringUtils.equals(name, "zcgj_ec_out_contract_sett")){ DynamicObject newValue = (DynamicObject)changeData.getNewValue(); - initData(newValue.getLong("id")); + if(newValue!=null){ + initData(newValue.getLong("id")); + } } + } protected void ofTaxAmountChanged(ChangeData changeData) { @@ -156,4 +171,83 @@ public class OutContractFinaceConfirmePlugin extends AbstractBillPlugIn impleme } } + + /** + * 获取累计未冲销预付金额 + * @return 累计未冲销预付金额 + */ + /*private BigDecimal calBcCxAmt(){ + BigDecimal contractPayAmt = getContractPayAmt(); + BigDecimal finaceConfirmeAmt = getFinaceConfirmeAmt(); + BigDecimal amt = contractPayAmt.subtract(finaceConfirmeAmt); + // this.getModel().setValue("zcgj_ljwcxamt", amt, rowIndex); + DynamicObjectCollection dynamicObjectCollection = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_itementry"); + DynamicObjectCollection dynamicObjectCollection1 = this.getModel().getDataEntity().getDynamicObjectCollection("zcgj_itementry"); + DynamicObjectCollection zcgjItementry = this.getModel().getEntryEntity("zcgj_itementry"); + for (int i = 0; i < dynamicObjectCollection.size(); i++) { + this.getModel().setValue("zcgj_ljwcxamt", amt, i); + } + this.getView().updateView("zcgj_itementry"); + return amt; + }*/ + + /** + * 获取合同下所有付款申请的预付金额和 + * 累计实付金额(分) + */ + private BigDecimal getContractPayAmt(DynamicObject contract){ + List searchFilterList = new ArrayList<>(); + searchFilterList.add(new QFilter("entryentity.contract", QCP.equals,contract.getLong("id") )); + searchFilterList.add(new QFilter("entryentity.paymenttype", QCP.equals,"PREPAYMENT" )); + searchFilterList.add( new QFilter("billstatus", QCP.equals,"C" )); + DynamicObject[] outcontractmeasures = BusinessDataServiceHelper.load("ec_paymentapply", "entryentity.totalrealoftaxamount",searchFilterList.toArray(new QFilter [] {})); + if(outcontractmeasures!=null && outcontractmeasures.length>0){ + BigDecimal totalrealoftaxamountAll = BigDecimal.ZERO; + for (DynamicObject outcontractmeasure : outcontractmeasures) { + for (DynamicObject dynamicObject : outcontractmeasure.getDynamicObjectCollection("entryentity")) { + totalrealoftaxamountAll =totalrealoftaxamountAll.add(dynamicObject.getBigDecimal("totalrealoftaxamount")); + } + } + return totalrealoftaxamountAll; + } + return BigDecimal.ZERO; + } + + /** + * 获取合同下所有财务确认单的本次冲销预付金额 + */ + private BigDecimal getFinaceConfirmeAmt(DynamicObject contract){ + List searchFilterList = new ArrayList<>(); + searchFilterList.add(new QFilter("zcgj_contract", QCP.equals,contract.getLong("id") )); + searchFilterList.add(new QFilter("billstatus", QCP.equals,"C" )); + DynamicObject[] outcontractmeasures = BusinessDataServiceHelper.load("zcgj_ec_out_finaceconfirm", "zcgj_contract,zcgj_itementry.zcgj_bccxamt", searchFilterList.toArray(new QFilter [] {})); + if(outcontractmeasures!=null && outcontractmeasures.length>0){ + BigDecimal bccxamtAll = BigDecimal.ZERO; + for (DynamicObject outcontractmeasure : outcontractmeasures) { + for (DynamicObject dynamicObject : outcontractmeasure.getDynamicObjectCollection("zcgj_itementry")) { + bccxamtAll =bccxamtAll.add(dynamicObject.getBigDecimal("zcgj_bccxamt")); + } + } + return bccxamtAll; + } + return BigDecimal.ZERO; + /*BigDecimal bccxamtAll = BigDecimal.ZERO; + List searchFilterList = new ArrayList<>(); + searchFilterList.add(new QFilter("zcgj_contract", QCP.equals,contract.getLong("id") )); + searchFilterList.add(new QFilter("billstatus", QCP.equals,"C" )); + DataSet finaceconfirmDataSet = QueryServiceHelper.queryDataSet( + this.getClass().getName(), + "zcgj_ec_out_finaceconfirm", + "zcgj_contract,zcgj_itementry.zcgj_bccxamt as zcgj_bccxamt" , + searchFilterList.toArray(new QFilter [] {}), null + ); + if(finaceconfirmDataSet == null || finaceconfirmDataSet.isEmpty()){ + return bccxamtAll; + } + for (Row itemRow : finaceconfirmDataSet) { + BigDecimal bccxamt = itemRow.getBigDecimal("zcgj_bccxamt"); + bccxamtAll =bccxamtAll.add(bccxamt); + } + return bccxamtAll;*/ + } }