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); } } }