出库单科目属性过滤和成本分解结构必录逻辑添加
This commit is contained in:
		
							parent
							
								
									9614b86ae4
								
							
						
					
					
						commit
						e1fedec632
					
				| 
						 | 
				
			
			@ -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<Long> 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);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue