计划方案

您所在的位置:网站首页 如何写dll 计划方案

计划方案

2023-02-14 22:29| 来源: 网络整理| 查看: 265

计划方案运算范围参数业务规则比较复杂,各独立需求单据并非可无差别勾选,系统内置有复杂的联动逻辑。具体可参照相关的微课件等。如:计划七天课程—计划方案(1)组织参数,运算范围,需求参数,供给参数 (kingdee.com)

但实际上存在一些特殊的业务场景,确实是需要在计划方案运算范围参数同时勾选MPS计划订单和销售订单和预测单,请在明确实际业务确定有需求的前提下,参照本贴介绍的以下步骤来实现:

一、编写二开表单插件,继承自标准的计划方案表单插件Kingdee.K3.MFG.PLN.Business.PlugIn.Base.PlanSchemaEdit(须引用组件Kingdee.K3.MFG.PLN.Business.PlugIn.dll才能继承到该插件),示例代码如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using Kingdee.BOS.Util;

using Kingdee.BOS.Core.Metadata.EntityElement;

using Kingdee.BOS.Orm.DataEntity;

using Kingdee.K3.Core.MFG.EntityHelper;

namespace Test_Cust_220718.K3.MFG.PLN.Business.PlugIn.Base

{

    public class Test_PlanSchemaEdit : Kingdee.K3.MFG.PLN.Business.PlugIn.Base.PlanSchemaEdit

    {

        public override void DataChanged(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.DataChangedEventArgs e)

        {

            if (e.Field.Key.EqualsIgnoreCase("FDSIsSelect"))

            {

                EntryEntity dsEntity = this.View.BusinessInfo.GetEntryEntity("FDSEntity");

                DynamicObjectCollection dsEntrys = this.View.Model.GetEntityDataObject(dsEntity);

                DynamicObject dsEntry = dsEntrys[e.Row];

                string formType = dsEntry.GetDynamicValue("FormType");

                List oldEntrys = new List();

                if (formType.Equals("5"))

                { //当前选MPS计划订单

                    foreach (DynamicObject item in dsEntrys)

                    {

                        string tmpFormType = item.GetDynamicValue("FormType");

                        if (tmpFormType.Equals("1") || tmpFormType.Equals("2"))

                        {

                            bool oldSelect = item.GetDynamicValue("IsSelect");

                            oldEntrys.Add(new Tuple(item, oldSelect));

                        }

                    }

                    base.DataChanged(e);

                }

                else if (formType.Equals("1") || formType.Equals("2"))

                { //当前选择预测单或销售订单

                    foreach (DynamicObject item in dsEntrys)

                    {

                        string tmpFormType = item.GetDynamicValue("FormType");

                        if (tmpFormType.Equals("5"))

                        {

                            bool oldSelect = item.GetDynamicValue("IsSelect");

                            oldEntrys.Add(new Tuple(item, oldSelect));

                        }

                    }

                    base.DataChanged(e);

                }

                else

                {

                    base.DataChanged(e);

                }

                if (!oldEntrys.IsEmpty())

                {

                    foreach (var oldEntry in oldEntrys)

                    {

                        oldEntry.Item1["IsSelect"] = oldEntry.Item2;

                    }

                    this.View.UpdateView("FDSEntity");

                }

            }

            else

            {

                base.DataChanged(e);

            }

        }

    }

}

二、BOS元数据上找到:生产制造》计划管理》基础资料》计划方案,扩展并注册二开的表单插件,同时取消标准的表单插件,如下图:

三、清除缓存,在前端编辑计划方案,可实现运算范围参数MPS计划订单和销售订单/预测单同时勾选:

最后,须再次明确,实现本贴方案一定是在明确实际业务确定有需求为前提,因为本方案会扩展运算范围。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3