diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/MaterialOutBillPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/MaterialOutBillPlugin.java index 87d326d..3292f14 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/MaterialOutBillPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/MaterialOutBillPlugin.java @@ -5,19 +5,25 @@ 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.form.control.events.ItemClickEvent; import kd.bos.form.field.BasedataEdit; +import kd.bos.form.field.TextEdit; import kd.bos.form.field.events.BeforeF7SelectEvent; import kd.bos.form.field.events.BeforeF7SelectListener; import kd.bos.list.ListShowParameter; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import java.util.ArrayList; import java.util.EventObject; +import java.util.List; /** * 出库单表单插件 * 说明:1:核算组织由项目中的财务记账组织携带而来 * 2:使用设备过滤,通过核算组织与使用设备中的使用组织比对而来过滤 + * 3:科目属性过滤和成本分解结构必录逻辑控制 */ public class MaterialOutBillPlugin extends AbstractBillPlugIn implements BeforeF7SelectListener { @@ -28,6 +34,11 @@ public class MaterialOutBillPlugin extends AbstractBillPlugIn implements BeforeF if (zcgj_shebei != null) { zcgj_shebei.addBeforeF7SelectListener(this); } + BasedataEdit zcgj_accounttype = this.getControl("zcgj_accounttype"); //科目属性 + if (zcgj_accounttype != null) { + zcgj_accounttype.addBeforeF7SelectListener(this); + } + this.addItemClickListeners("advcontoolbarap");//出库单明细分录工具栏 } @Override @@ -54,21 +65,99 @@ public class MaterialOutBillPlugin extends AbstractBillPlugIn implements BeforeF entryCollection.clear(); this.getView().updateView("entryentity");//刷新分录 } + } else if ("zcgj_accounttype".equals(key)) { + //科目属性 + DynamicObjectCollection entryEntityCollection = this.getModel().getDataEntity(true).getDynamicObjectCollection("entryentity");//出库单分录 + boolean hasFL001 = false; + for (DynamicObject entryEntity : entryEntityCollection) { + DynamicObject accountType = entryEntity.getDynamicObject("zcgj_accounttype");//科目属性 + if (accountType != null && "FL001".equals(accountType.getString("number"))) { + //科目属性-为生成成本时 + hasFL001 = true; + break; + } + } + BasedataEdit edit = this.getView().getControl("procbs");//工作分解结构 + edit.setMustInput(hasFL001);// 设置必录 + this.getView().updateView("entryentity");//刷新分录 + } else if ("material".equals(key)) { + //资源 + ChangeData[] changeSet = e.getChangeSet(); + ChangeData changeData = changeSet[0]; + Object newValue = changeData.getNewValue();//新值 + Object oldValue = changeData.getOldValue();//旧值 + int rowIndex = changeData.getRowIndex(); //修改行所在行行号 + if (newValue == null || !newValue.equals(oldValue)) { + this.getModel().setValue("zcgj_accounttype", null, rowIndex);//科目属性 + } + } + } + + @Override + public void itemClick(ItemClickEvent evt) { + super.itemClick(evt); + String itemKey = evt.getItemKey(); + if (itemKey.equals("deleteentry")) { + //出库单明细删除按钮 + DynamicObjectCollection entryEntityCollection = this.getModel().getDataEntity(true).getDynamicObjectCollection("entryentity");//出库单分录 + boolean hasFL001 = false; + for (DynamicObject entryEntity : entryEntityCollection) { + DynamicObject accountType = entryEntity.getDynamicObject("zcgj_accounttype");//科目属性 + if (accountType != null && "FL001".equals(accountType.getString("number"))) { + //科目属性-为生成成本时 + hasFL001 = true; + break; + } + } + BasedataEdit edit = this.getView().getControl("procbs");//工作分解结构 + edit.setMustInput(hasFL001);// 设置必录 + this.getView().updateView("entryentity");//刷新分录 } } @Override public void beforeF7Select(BeforeF7SelectEvent beforeF7SelectEvent) { - String name = beforeF7SelectEvent.getProperty().getName(); ListShowParameter formShowParameter = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter(); - Object zcgj_fiorg = this.getModel().getValue("zcgj_fiorg");//核算组织 - if (zcgj_fiorg != null) { - DynamicObject zcgj_fiorg1 = (DynamicObject) zcgj_fiorg; - QFilter qFilter = new QFilter("useorg", QCP.equals, zcgj_fiorg1.getPkValue()); - formShowParameter.getListFilterParameter().getQFilters().add(qFilter); - } else { - this.getView().showErrorNotification("请先填写核算组织!"); - beforeF7SelectEvent.setCancel(true); + String name = beforeF7SelectEvent.getProperty().getName(); + QFilter qFilter = null; + if ("zcgj_shebei".equals(name)) { + //使用设备 + Object zcgj_fiorg = this.getModel().getValue("zcgj_fiorg");//核算组织 + if (zcgj_fiorg != null) { + DynamicObject zcgj_fiorg1 = (DynamicObject) zcgj_fiorg; + qFilter = new QFilter("useorg", QCP.equals, zcgj_fiorg1.getPkValue()); + } else { + this.getView().showErrorNotification("请先填写核算组织!"); + beforeF7SelectEvent.setCancel(true); + } + } else if ("zcgj_accounttype".equals(name)) { + //科目属性 + int row = beforeF7SelectEvent.getRow(); + Object material = this.getModel().getValue("material", row);//资源 + if (material != null) { + DynamicObject material1 = (DynamicObject) material; + DynamicObject resource = material1.getDynamicObject("resource");//资源-清单分类 + List accountTypeIds = new ArrayList<>(); + if (resource != null) { + QFilter qFilter1 = new QFilter("id", QCP.equals, resource.getPkValue()); + DynamicObject ecbd_resource = BusinessDataServiceHelper.loadSingle("ecbd_resource", new QFilter[]{qFilter1});//清单分类 + if (ecbd_resource != null) { + DynamicObjectCollection zcgj_accountTypeCollection = ecbd_resource.getDynamicObjectCollection("zcgj_accounttypes");//清单分类-科目属性 + if (zcgj_accountTypeCollection != null && zcgj_accountTypeCollection.size() > 0) { + for (DynamicObject zcgj_accountType : zcgj_accountTypeCollection) { + DynamicObject basedataObj = (DynamicObject) zcgj_accountType.getDynamicObject("fbasedataid"); + Long zcgj_accountTypeId = (Long) basedataObj.getPkValue(); + accountTypeIds.add(zcgj_accountTypeId); + } + } + } + } + qFilter = new QFilter("id", QCP.in, accountTypeIds.toArray()); + } else { + this.getView().showErrorNotification("请先填写资源!"); + beforeF7SelectEvent.setCancel(true); + } } + formShowParameter.getListFilterParameter().getQFilters().add(qFilter); } }