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.dataentity.utils.StringUtils; import kd.bos.entity.datamodel.events.ChangeData; import kd.bos.entity.datamodel.events.PropertyChangedArgs; import kd.bos.form.events.AfterDoOperationEventArgs; import kd.bos.form.events.BeforeDoOperationEventArgs; import kd.bos.form.operate.FormOperate; 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; if (null != supplier) { //查询已审核未关闭非克隆(上游单据编号为空)数量-到货数量、有优惠有返利含税单价*(数量-到货数量) // 查询正常的采购订单 总额,总数量 QFilter f1 = new QFilter("supplier.id", "=", supplier.getPkValue()); QFilter f2 = new QFilter("billstatus", "=", "C");//已审核 QFilter f3 = new QFilter("closestatus", "=", "A");//关闭状态正常 QFilter f4 = new QFilter("tqq9_sourcebillno", "=", "");//上游单据编号为空 DynamicObject[] pmBillArr = BusinessDataServiceHelper.load("pm_receiptnotice", "id,billno,supplier,billentry.qty,billentry.tqq9_dhsl,billentry.tqq9_yyhyflje,tqq9_sourcebillno", new QFilter[]{f1, f2, f3, f4}); for (DynamicObject bill : pmBillArr) { //String billno = bill.getString("billno"); //String tqq9_sourcebillno = bill.getString("tqq9_sourcebillno"); DynamicObjectCollection entries = bill.getDynamicObjectCollection("billentry"); for (DynamicObject entry : entries) { BigDecimal qty = entry.getBigDecimal("qty") == null ? BigDecimal.ZERO : entry.getBigDecimal("qty");//数量 BigDecimal tqq9_dhsl = entry.getBigDecimal("tqq9_dhsl") == null ? BigDecimal.ZERO : entry.getBigDecimal("tqq9_dhsl");//到货数量 BigDecimal wrkqty = qty.subtract(tqq9_dhsl);//未入库数量 totalCount = totalCount.add(wrkqty); BigDecimal tqq9_disandrefoundprice = entry.getBigDecimal("tqq9_yyhyflje") == null ? BigDecimal.ZERO : entry.getBigDecimal("tqq9_yyhyflje");//有优惠有返利含税单价 BigDecimal wrkAmount = tqq9_disandrefoundprice.multiply(wrkqty); totalAmount = totalAmount.add(wrkAmount); } } this.getModel().setValue("tqq9_lswdhje", totalAmount); this.getModel().setValue("tqq9_lswdhsl", totalCount); } } } @Override public void beforeDoOperation(BeforeDoOperationEventArgs args) { super.beforeDoOperation(args); FormOperate formOperate = (FormOperate) args.getSource(); String operateKey = formOperate.getOperateKey(); if ("save".equals(operateKey) || "submit".equals(operateKey)) { DynamicObject supplier = (DynamicObject) this.getModel().getValue("supplier"); if (null != supplier) { BigDecimal totalAmount = BigDecimal.ZERO; BigDecimal totalCount = BigDecimal.ZERO; //查询已审核未关闭非克隆(上游单据编号为空)数量-到货数量、有优惠有返利含税单价*(数量-到货数量) // 查询正常的采购订单 总额,总数量 QFilter f1 = new QFilter("supplier.id", "=", supplier.getPkValue()); QFilter f2 = new QFilter("billstatus", "=", "C");//已审核 QFilter f3 = new QFilter("closestatus", "=", "A");//关闭状态正常 QFilter f4 = new QFilter("tqq9_sourcebillno", "=", "");//上游单据编号为空 DynamicObject[] pmBillArr = BusinessDataServiceHelper.load("pm_receiptnotice", "id,billno,supplier,billentry.qty,billentry.tqq9_dhsl,billentry.tqq9_yyhyflje,tqq9_sourcebillno", new QFilter[]{f1, f2, f3, f4}); for (DynamicObject bill : pmBillArr) { //String billno = bill.getString("billno"); //String tqq9_sourcebillno = bill.getString("tqq9_sourcebillno"); DynamicObjectCollection entries = bill.getDynamicObjectCollection("billentry"); for (DynamicObject entry : entries) { BigDecimal qty = entry.getBigDecimal("qty") == null ? BigDecimal.ZERO : entry.getBigDecimal("qty");//数量 BigDecimal tqq9_dhsl = entry.getBigDecimal("tqq9_dhsl") == null ? BigDecimal.ZERO : entry.getBigDecimal("tqq9_dhsl");//到货数量 BigDecimal wrkqty = qty.subtract(tqq9_dhsl);//未入库数量 totalCount = totalCount.add(wrkqty); BigDecimal tqq9_disandrefoundprice = entry.getBigDecimal("tqq9_yyhyflje") == null ? BigDecimal.ZERO : entry.getBigDecimal("tqq9_yyhyflje");//有优惠有返利含税单价 BigDecimal wrkAmount = tqq9_disandrefoundprice.multiply(wrkqty); totalAmount = totalAmount.add(wrkAmount); } } this.getModel().setValue("tqq9_lswdhje", totalAmount); this.getModel().setValue("tqq9_lswdhsl", totalCount); } } } @Override public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) { super.afterDoOperation(afterDoOperationEventArgs); } }