From 3a4ee08feabb9bd938ff92dfeb0e37fc98c3874f Mon Sep 17 00:00:00 2001 From: xuhaihui <2098865055@qq.com> Date: Thu, 24 Jul 2025 11:11:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E5=87=BA=E8=B4=A2=E5=8A=A1=E7=A1=AE?= =?UTF-8?q?=E8=AE=A4=E5=8D=95:=E5=AE=A1=E6=A0=B8=E5=8F=8D=E5=AE=A1?= =?UTF-8?q?=E6=A0=B8=E6=93=8D=E4=BD=9C=E6=8F=92=E4=BB=B6=EF=BC=9B=E5=B0=86?= =?UTF-8?q?=E5=90=88=E5=90=8C=E8=BF=9B=E9=A1=B9=E5=8F=91=E7=A5=A8=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E5=88=86=E5=BD=95=E4=B8=AD=E7=9A=84=E4=BB=B7=E7=A8=8E?= =?UTF-8?q?=E5=90=88=E5=8A=A0=E5=87=8F=E8=B5=8B=E7=BB=99=E2=86=92=E6=94=AF?= =?UTF-8?q?=E5=87=BA=E5=90=88=E5=90=8C=E7=9A=84=E7=B4=AF=E8=AE=A1=E5=BC=80?= =?UTF-8?q?=E7=A5=A8=E4=BB=B7=E7=A8=8E=E5=90=88=E8=AE=A1=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/operate/FinanceConfirmAuditOp.java | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/FinanceConfirmAuditOp.java diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/FinanceConfirmAuditOp.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/FinanceConfirmAuditOp.java new file mode 100644 index 0000000..dabf11c --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/FinanceConfirmAuditOp.java @@ -0,0 +1,60 @@ +package zcgj.zcdev.zcdev.pr.plugin.operate; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.entity.plugin.AbstractOperationServicePlugIn; +import kd.bos.entity.plugin.args.AfterOperationArgs; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.operation.SaveServiceHelper; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +/** + * 支出财务确认单:审核反审核操作插件;将合同进项发票信息分录中的价税合加减赋给→支出合同的累计开票价税合计中 + */ +public class FinanceConfirmAuditOp extends AbstractOperationServicePlugIn { + + @Override + public void afterExecuteOperationTransaction(AfterOperationArgs e) { + super.afterExecuteOperationTransaction(e); + + String operationKey = e.getOperationKey();//操作标识 + DynamicObject[] dataEntities = e.getDataEntities(); + List modifiedEntities = new ArrayList<>(); + + for (DynamicObject model : dataEntities) { + long id = model.getLong("id"); + QFilter f1 = new QFilter("id", "=", id); + DynamicObject FinanceConfirm = BusinessDataServiceHelper.loadSingle("zcgj_ec_out_finaceconfirm", + "zcgj_contract,zcgj_entryentity,zcgj_entryentity.zcgj_oftaxinvoiceamount", new QFilter[]{f1});//支出财务确认单 + DynamicObjectCollection entryEntityCollection = FinanceConfirm.getDynamicObjectCollection("zcgj_entryentity");//合同进项发票信息分录 + BigDecimal totalTaxInvoiceAmount = BigDecimal.ZERO; + for (DynamicObject entryEntity : entryEntityCollection) { + BigDecimal ofTaxInvoiceAmount = entryEntity.getBigDecimal("zcgj_oftaxinvoiceamount");//价税合计 + totalTaxInvoiceAmount = totalTaxInvoiceAmount.add(ofTaxInvoiceAmount); + } + DynamicObject contract = FinanceConfirm.getDynamicObject("zcgj_contract");//合同名称 + QFilter filter = new QFilter("billno", QCP.equals, contract.getString("number")); + DynamicObject ec_out_contract = BusinessDataServiceHelper.loadSingle("ec_out_contract", new QFilter[]{filter});//支出合同 + BigDecimal totalInvoiceofTaxAmount = ec_out_contract.getBigDecimal("totalinvoiceoftaxamount");//累计开票价税合计 + if (operationKey.equals("audit")) { + ec_out_contract.set("totalinvoiceoftaxamount", totalInvoiceofTaxAmount.add(totalTaxInvoiceAmount));//支出合同-累计开票价税合计 + } else if (operationKey.equals("unaudit")) { + ec_out_contract.set("totalinvoiceoftaxamount", totalInvoiceofTaxAmount.subtract(totalTaxInvoiceAmount));//支出合同-累计开票价税合计 + } + modifiedEntities.add(ec_out_contract); + } + + if (!modifiedEntities.isEmpty()) { + try { + SaveServiceHelper.save(modifiedEntities.toArray(new DynamicObject[0])); + } catch (Exception ex) { + throw new RuntimeException(ex); + } + } + } +}