计划方案-运算范围如何能同时勾选“MPS计划订单”和“销售订单/预测单”?

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:2

计划方案-运算范围如何能同时勾选“MPS计划订单”和“销售订单/预测单”?

计划方案运算范围参数业务规则比较复杂,各独立需求单据并非可无差别勾选,系统内置有复杂的联动逻辑。具体可参照相关的微课件等。如:计划七天课程—计划方案(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<string>("FormType");

                List<Tuple<DynamicObject, bool>> oldEntrys = new List<Tuple<DynamicObject, bool>>();

                if (formType.Equals("5"))

                { //当前选MPS计划订单

                    foreach (DynamicObject item in dsEntrys)

                    {

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

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

                        {

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

                            oldEntrys.Add(new Tuple<DynamicObject, bool>(item, oldSelect));

                        }

                    }

                    base.DataChanged(e);

                }

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

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

                    foreach (DynamicObject item in dsEntrys)

                    {

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

                        if (tmpFormType.Equals("5"))

                        {

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

                            oldEntrys.Add(new Tuple<DynamicObject, bool>(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计划订单和销售订单/预测单同时勾选:


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

计划方案-运算范围如何能同时勾选“MPS计划订单”和“销售订单/预测单”?

计划方案运算范围参数业务规则比较复杂,各独立需求单据并非可无差别勾选,系统内置有复杂的联动逻辑。具体可参照相关的微课件等。如:计划...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息