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.control.EntryGrid; import kd.bos.form.events.AfterDoOperationEventArgs; import kd.bos.form.events.BeforeDoOperationEventArgs; import kd.bos.form.field.BasedataEdit; import kd.bos.form.field.events.BeforeF7SelectEvent; import kd.bos.form.field.events.BeforeF7SelectListener; import kd.bos.form.operate.FormOperate; import kd.bos.list.ListShowParameter; import kd.bos.logging.Log; import kd.bos.logging.LogFactory; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import java.math.BigDecimal; import java.util.EventObject; import java.util.Objects; /** * 采购退货界面插件 异地退货 */ public class PurRefundApplyFormPlugin extends AbstractBillPlugIn implements BeforeF7SelectListener { private final static Log logger = LogFactory.getLog(PurorderEntryIntroPaybillPlugin.class); @Override public void registerListener(EventObject e) { super.registerListener(e); this.addItemClickListeners("tbmain"); BasedataEdit tqq9_thck_ydth = this.getControl("tqq9_thck_ydth"); tqq9_thck_ydth.addBeforeF7SelectListener(this); } @Override public void beforeDoOperation(BeforeDoOperationEventArgs args) { super.beforeDoOperation(args); FormOperate operate = (FormOperate) args.getSource(); String operateKey = operate.getOperateKey(); if ("tqq9_newentry_ydth".equals(operateKey)) { String entry = "billentry"; EntryGrid control = getControl(entry); int[] selectRows = control.getSelectRows(); if (selectRows.length == 0) { this.getView().showTipNotification("请选择要执行的数据。"); return; } else if (selectRows.length > 1) { this.getView().showTipNotification("请选择一行数据。"); return; } int index = selectRows[0]; DynamicObjectCollection billentry = this.getModel().getEntryEntity("billentry"); if (billentry.size() > index) { DynamicObject dynamicObject = billentry.get(index); DynamicObjectCollection tqq9_entryentity = this.getModel().getEntryEntity("tqq9_entryentity"); DynamicObject addNew = tqq9_entryentity.addNew(); addNew.set("tqq9_material_ydth", dynamicObject.get("material")); addNew.set("tqq9_materialname_ydth", dynamicObject.get("materialname")); addNew.set("tqq9_goods_ydth", dynamicObject.get("tqq9_goods")); addNew.set("tqq9_brand_ydth", dynamicObject.get("tqq9_brand")); addNew.set("tqq9_unit_ydth", dynamicObject.get("unit")); addNew.set("tqq9_registration_ydth", dynamicObject.get("tqq9_registration")); addNew.set("tqq9_licenseno_ydth", dynamicObject.get("tqq9_licenseno")); addNew.set("tqq9_priceandtax_ydth", dynamicObject.get("priceandtax")); addNew.set("tqq9_amountandtax_ydth", dynamicObject.get("amountandtax")); addNew.set("tqq9_ph_ydth", dynamicObject.get("tqq9_ph")); addNew.set("tqq9_productdate_ydth", dynamicObject.get("tqq9_productdate")); addNew.set("tqq9_expiredate_ydth", dynamicObject.get("tqq9_expiredate")); addNew.set("tqq9_cgthflid", dynamicObject.get("id")); this.getModel().updateEntryCache(tqq9_entryentity); this.getView().updateView("tqq9_entryentity"); } } } @Override public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) { super.afterDoOperation(afterDoOperationEventArgs); } @Override public void beforeF7Select(BeforeF7SelectEvent beforeF7SelectEvent) { String name = beforeF7SelectEvent.getProperty().getName(); if (StringUtils.equals("tqq9_thck_ydth", name)) { QFilter qFilter = null; DynamicObject tqq9_basedatafield = (DynamicObject) this.getModel().getValue("tqq9_basedatafield"); if (null != tqq9_basedatafield) { qFilter = new QFilter("id", QCP.not_equals, tqq9_basedatafield.getLong("id")); } ListShowParameter param = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter(); param.getListFilterParameter().getQFilters().add(qFilter); } } @Override public void propertyChanged(PropertyChangedArgs e) { super.propertyChanged(e); String name = e.getProperty().getName(); if ("tqq9_qty_ydth".equals(name)) { ChangeData changeData = e.getChangeSet()[0]; int rowIndex = changeData.getRowIndex(); DynamicObject tqq9_material_ydth = (DynamicObject) this.getModel().getValue("tqq9_material_ydth", rowIndex); if (null != tqq9_material_ydth) { DynamicObjectCollection billentry = this.getModel().getEntryEntity("billentry"); BigDecimal billentry_qty = BigDecimal.ZERO;//物料明细数量 for (DynamicObject dynamicObject : billentry) { DynamicObject material = dynamicObject.getDynamicObject("material"); if (Objects.equals(tqq9_material_ydth, material)) { BigDecimal qty = dynamicObject.getBigDecimal("qty") == null ? BigDecimal.ZERO : dynamicObject.getBigDecimal("qty"); billentry_qty = billentry_qty.add(qty); break; } } DynamicObjectCollection tqq9_entryentity = this.getModel().getEntryEntity("tqq9_entryentity"); BigDecimal ydth_qty = BigDecimal.ZERO;//异地退货数量 for (DynamicObject dynamicObject : tqq9_entryentity) { DynamicObject ydth_material = dynamicObject.getDynamicObject("tqq9_material_ydth"); if (Objects.equals(tqq9_material_ydth, ydth_material)) { BigDecimal tqq9_qty_ydth = dynamicObject.getBigDecimal("tqq9_qty_ydth") == null ? BigDecimal.ZERO : dynamicObject.getBigDecimal("tqq9_qty_ydth"); ydth_qty = ydth_qty.add(tqq9_qty_ydth); } } if (ydth_qty.compareTo(billentry_qty) > 0) { this.getModel().setValue("tqq9_qty_ydth", null, rowIndex); this.getView().showMessage("异地退货明细中物料为:" + tqq9_material_ydth.getDynamicObject("masterid").getString("name") + "的数量不能超过物料明细对应的数量"); } else { for (int i = 0; i < billentry.size(); i++) { DynamicObject dynamicObject = billentry.get(i); DynamicObject material = dynamicObject.getDynamicObject("material"); if (Objects.equals(tqq9_material_ydth, material)) { this.getModel().setValue("tqq9_stsl", billentry_qty.subtract(ydth_qty), i); break; } } } } } } }