From bf874af17b17eae44b7284e39f0468de5137c883 Mon Sep 17 00:00:00 2001 From: zhangzhiguo Date: Thu, 3 Apr 2025 18:54:11 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=94=AF=E5=87=BA=E5=90=88=E5=90=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=B7=A5=E5=BA=8F=E5=88=86=E6=91=8A=E5=BC=80=E5=8F=91?= =?UTF-8?q?=202.=E5=90=88=E5=90=8C=E4=BB=98=E6=AC=BE=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=E5=8D=95=E4=BB=98=E6=AC=BE=E9=87=91=E9=A2=9D=E5=85=B3=E8=81=94?= =?UTF-8?q?=E5=8F=91=E7=A5=A8=E5=90=8E=E6=9C=AA=E9=94=81=E5=AE=9A=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E5=BC=80=E5=8F=91=203.=E5=90=88=E5=90=8C=E4=BB=98?= =?UTF-8?q?=E6=AC=BE=E7=94=B3=E8=AF=B7=E5=8D=95=E5=AE=9E=E9=99=85=E4=BB=98?= =?UTF-8?q?=E6=AC=BE=E9=87=91=E9=A2=9D=E9=87=8D=E5=A4=8D=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ContractProcessRevisionFilterPlugin.java | 1 - .../OutContractSettleProcessFilterPlugin.java | 45 +++++++++++++ .../form/PaymentApplyEditUIExtPlugin.java | 65 +++++++++++++++++++ .../plugin/form/PaymentapplyCopyPlugin.java | 9 +++ .../OutContractSettleProcessCheckOp.java | 55 ++++++++++++++++ 5 files changed, 174 insertions(+), 1 deletion(-) create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/OutContractSettleProcessFilterPlugin.java create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/PaymentApplyEditUIExtPlugin.java create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/OutContractSettleProcessCheckOp.java diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/ContractProcessRevisionFilterPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/ContractProcessRevisionFilterPlugin.java index ecf2bf3..f390357 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/ContractProcessRevisionFilterPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/ContractProcessRevisionFilterPlugin.java @@ -53,5 +53,4 @@ public class ContractProcessRevisionFilterPlugin extends AbstractBillPlugIn impl } } -// } } \ No newline at end of file diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/OutContractSettleProcessFilterPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/OutContractSettleProcessFilterPlugin.java new file mode 100644 index 0000000..33133bb --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/OutContractSettleProcessFilterPlugin.java @@ -0,0 +1,45 @@ +package zcgj.zcdev.zcdev.pr.plugin.form; + +import kd.bos.bill.AbstractBillPlugIn; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.form.field.BasedataEdit; +import kd.bos.form.field.events.BeforeF7SelectEvent; +import kd.bos.form.field.events.BeforeF7SelectListener; +import kd.bos.list.ListShowParameter; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.sdk.plugin.Plugin; + +import java.util.EventObject; + +public class OutContractSettleProcessFilterPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener { + + + @Override + public void registerListener(EventObject e) { + super.registerListener(e); + BasedataEdit contractprocess = this.getControl("zcgj_pa_process"); + if(contractprocess != null) { + contractprocess.addBeforeF7SelectListener(this); + } + } + + @Override + public void beforeF7Select(BeforeF7SelectEvent beforeF7SelectEvent) { + String name1 = beforeF7SelectEvent.getProperty().getName(); + if(name1.equals("zcgj_pa_process")) { + String name = this.getModel().getDataEntity().getDataEntityType().getName(); + Object projectObj = this.getModel().getValue("project"); + if(projectObj instanceof DynamicObject) { + DynamicObject project = (DynamicObject) projectObj; + QFilter qFilter = new QFilter("project.id", QCP.equals, project.getLong("id")); + QFilter treeFilter = new QFilter("number", QCP.equals, project.getString("number")); + ListShowParameter showParameter = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter(); + showParameter.getListFilterParameter().getQFilters().add(qFilter); + showParameter.getTreeFilterParameter().getQFilters().add(treeFilter); + } + + } + } + +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/PaymentApplyEditUIExtPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/PaymentApplyEditUIExtPlugin.java new file mode 100644 index 0000000..4bf9c6d --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/PaymentApplyEditUIExtPlugin.java @@ -0,0 +1,65 @@ +package zcgj.zcdev.zcdev.pr.plugin.form; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.entity.datamodel.events.ChangeData; +import kd.bos.entity.datamodel.events.LoadDataEventArgs; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.operation.SaveServiceHelper; +import kd.ec.contract.formplugin.PaymentApplyEditUI; + +import java.math.BigDecimal; +import java.util.EventObject; +import java.util.HashSet; +import java.util.Set; + +public class PaymentApplyEditUIExtPlugin extends PaymentApplyEditUI { + + @Override + protected void thisApplyOfTaxChanged(ChangeData changeData) { + this.sumApplyOfTax(); + //this.setRealPayAmt(); + if (this.getPageCache().get("thisApplyAmountCache") != null) { + this.getPageCache().remove("thisApplyAmountCache"); + } else { + int rowIndex = changeData.getRowIndex(); + if (!this.hasInvoice(rowIndex)) { + this.setShouldPayOfTax(rowIndex); + BigDecimal applyOfTaxAmount = (BigDecimal)changeData.getNewValue(); + BigDecimal taxRate = (BigDecimal)this.getModel().getValue("conttaxrate", rowIndex); + BigDecimal applyAmount = applyOfTaxAmount.divide(BigDecimal.ONE.add(taxRate.divide(BigDecimal.valueOf(100L), 4)), 10, 5); + this.getPageCache().put("thisApplyOfTaxCache", "1"); + this.getModel().setValue("thisapplyamount", applyAmount, rowIndex); + } + } + } + + private void setRealPayAmt() { + DynamicObjectCollection dynamicObjectCollection = this.getModel().getDataEntity().getDynamicObjectCollection("entryentity"); + BigDecimal totalAmount = BigDecimal.ZERO; + Set contractNo = new HashSet<>(); + for (DynamicObject dynamicObject : dynamicObjectCollection) { + DynamicObject contract = dynamicObject.getDynamicObject("contract"); + if(contract != null) { + String billno = contract.getString("id"); + if(!contractNo.contains(billno)) { + totalAmount = dynamicObject.getBigDecimal("thisrealpayamt"); + contractNo.add(billno); + } + } + } + this.getModel().setValue("realpayamt", totalAmount); + //Object id = this.getModel().getValue("id"); + //DynamicObject paymentapply = BusinessDataServiceHelper.loadSingle(id, "ec_paymentapply", "realpayamt"); + //paymentapply.set("realpayamt", 99999); + //SaveServiceHelper.update(new DynamicObject[]{paymentapply}); + this.getView().updateView("realpayamt"); + } + + @Override + public void afterLoadData(EventObject e) { + this.setRealPayAmt(); + super.afterLoadData(e); + } + +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/PaymentapplyCopyPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/PaymentapplyCopyPlugin.java index 636f920..7dfbcc0 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/PaymentapplyCopyPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/PaymentapplyCopyPlugin.java @@ -41,6 +41,15 @@ public class PaymentapplyCopyPlugin extends AbstractBillPlugIn implements Plugi this.getModel().setValue("totalshouldpay", this.getSum("entryentity", "applyoftaxamount")); this.getView().updateView(ENTITY_KEY); this.getView().updateView("totalshouldpay"); + + //判断是否有发票,有发票则锁定本次申请金额 + for (int i = 0; i < entity.size(); i++) { + DynamicObject dynamicObject = entity.get(i); + DynamicObjectCollection dynamicObjectCollection = dynamicObject.getDynamicObjectCollection("subentryentity"); + if(dynamicObjectCollection == null || dynamicObjectCollection.isEmpty()){ + this.getView().setEnable(false,i,"thisapplyoftax"); + } + } } } diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/OutContractSettleProcessCheckOp.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/OutContractSettleProcessCheckOp.java new file mode 100644 index 0000000..bb73c0d --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/OutContractSettleProcessCheckOp.java @@ -0,0 +1,55 @@ +package zcgj.zcdev.zcdev.pr.plugin.operate; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.entity.ExtendedDataEntity; +import kd.bos.entity.plugin.AbstractOperationServicePlugIn; +import kd.bos.entity.plugin.AddValidatorsEventArgs; +import kd.bos.entity.plugin.PreparePropertysEventArgs; +import kd.bos.entity.validate.AbstractValidator; + +import java.math.BigDecimal; + +/** + * 工序分摊金额校验 + */ +public class OutContractSettleProcessCheckOp extends AbstractOperationServicePlugIn { + + @Override + public void onPreparePropertys(PreparePropertysEventArgs e) { + super.onPreparePropertys(e); + e.getFieldKeys().add("itementry"); + e.getFieldKeys().add("zcgj_processallocatentity"); + } + + @Override + public void onAddValidators(AddValidatorsEventArgs e) { + super.onAddValidators(e); + //当前所在的组织是属于矿山下的 + e.getValidators().add(new ValidatorExt()); + } + + class ValidatorExt extends AbstractValidator { + @Override + public void validate() { + ExtendedDataEntity[] extendedDataEntities = this.getDataEntities(); + for (ExtendedDataEntity extendedDataEntity : extendedDataEntities) { + DynamicObject dataEntity = extendedDataEntity.getDataEntity(); + DynamicObjectCollection itementryCollection = dataEntity.getDynamicObjectCollection("itementry"); + int i=1; + for (DynamicObject itementry : itementryCollection) { + BigDecimal oftaxamount = itementry.getBigDecimal("oftaxamount"); + DynamicObjectCollection processallocatentityCollection = itementry.getDynamicObjectCollection("zcgj_processallocatentity"); + BigDecimal totalPaAmount = BigDecimal.ZERO; + for (DynamicObject dynamicObject : processallocatentityCollection) { + totalPaAmount = totalPaAmount.add(dynamicObject.getBigDecimal("zcgj_pa_amount")); + } + if(totalPaAmount.compareTo(oftaxamount)!=0){ + this.addFatalErrorMessage(extendedDataEntity, "合同支付项第"+i+"条,价税合计金额与工序分摊金额不一致,请重新核对并调整分摊金额,以确保两者相等。"); + } + i++; + } + } + } + } +}