From b1ff0ea6e869a4f95ddfd32996697f21a7a935fd Mon Sep 17 00:00:00 2001 From: "tanfengling@x-ri.com" <123456> Date: Sat, 18 Oct 2025 14:21:01 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E9=87=87=E8=B4=AD=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E8=A1=A8=E5=8D=95=E6=8F=92=E4=BB=B6=E3=80=91=E4=BE=9B=E5=BA=94?= =?UTF-8?q?=E5=95=86=E6=94=B9=E5=8F=98=E6=97=B6=20=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=E5=8E=86=E5=8F=B2=E6=9C=AA=E5=88=B0=E8=B4=A7=E6=95=B0=E9=87=8F?= =?UTF-8?q?=E5=92=8C=E5=8E=86=E5=8F=B2=E6=9C=AA=E5=88=B0=E8=B4=A7=E9=87=91?= =?UTF-8?q?=E9=A2=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form/pm/PurorderCalculateBillPlugin.java | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 lc123/cloud/app/plugin/form/pm/PurorderCalculateBillPlugin.java diff --git a/lc123/cloud/app/plugin/form/pm/PurorderCalculateBillPlugin.java b/lc123/cloud/app/plugin/form/pm/PurorderCalculateBillPlugin.java new file mode 100644 index 0000000..95a37f1 --- /dev/null +++ b/lc123/cloud/app/plugin/form/pm/PurorderCalculateBillPlugin.java @@ -0,0 +1,61 @@ +package tqq9.lc123.cloud.app.plugin.form.pm; + +import kd.bos.bill.AbstractBillPlugIn; +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.PropertyChangedArgs; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; + +import java.math.BigDecimal; + +/** + * 采购订单计算 + * 供应商发生改变,历史未到账余额,历史未到账数量 + */ +public class PurorderCalculateBillPlugin extends AbstractBillPlugIn { + + + @Override + public void propertyChanged(PropertyChangedArgs e) { + super.propertyChanged(e); + String name = e.getProperty().getName(); + ChangeData[] changeSet = e.getChangeSet(); + Object newValue = changeSet[0].getNewValue(); + if("supplier".equals(name)){ + BigDecimal totalAmount = BigDecimal.ZERO; + BigDecimal totalCount = BigDecimal.ZERO; + DynamicObject supplier = (DynamicObject) newValue; + // 查询正常的采购订单 总额,总数量 + QFilter f1 = new QFilter("supplier.id", "=", supplier.getPkValue()); + QFilter f2 = new QFilter("billstatus", "=", "C");//已审核的订单 + QFilter f3 = new QFilter("closestatus", "=", "A");//排除已关闭的订单 + DynamicObject[] pmBillArr = BusinessDataServiceHelper.load("pm_purorderbill", + "id,billno,totalamount,billentry.qty", + new QFilter[]{f1, f2, f3}); + for (DynamicObject bill : pmBillArr) { + totalAmount = totalAmount.add(bill.getBigDecimal("totalamount")); + DynamicObjectCollection entries = bill.getDynamicObjectCollection("billentry"); + for (DynamicObject entry : entries) { + totalCount = totalCount.add(entry.getBigDecimal("qty")); + } + } + //查询采购入库单的总金额,总数量 + QFilter qf1 = new QFilter("supplier.id", "=", supplier.getPkValue()); + QFilter qf2 = new QFilter("billstatus", "=", "C"); + DynamicObject[] imBillArr = BusinessDataServiceHelper.load("im_purinbill", + "id,billno,billentry.qty,billentry.amountandtax", + new QFilter[]{qf1, qf2}); + for (DynamicObject bill : imBillArr) { + DynamicObjectCollection entries = bill.getDynamicObjectCollection("billentry"); + for (DynamicObject entry : entries) { + totalAmount = totalAmount.subtract(entry.getBigDecimal("amountandtax")); + totalCount = totalCount.subtract(entry.getBigDecimal("qty")); + } + } + this.getModel().setValue("tqq9_lswdhje", totalAmount); + this.getModel().setValue("tqq9_lswdhsl", totalCount); + } + } +}