物料供需状态典型二开方法

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

物料供需状态典型二开方法

【应用场景】

物料供需状态标准系统提供汇总、时段及明细三种数据展示方式。但特定场景下仍无法完全满足客户数据的展示需求,此时就需要对该表单做一些数据加工以展示合适的数据格式。


【注意事项】

本方案主要是加工数据展示格式,不会实现具体逻辑,只是演示实现思路。本方案也不干预物料供需状态标准取数逻辑,实际上物料供需状态的供需数据获取与MRP取数逻辑保持同步,不建议更改。


【案例演示】

特定场景需要将物料供需状态的时段数据表格,将日期列改造成需求、库存、预计入等,并且日期按行展示,这时就适合本方案进行二开实现。


【实现步骤】

<1>编写表单插件,继承标准的物料供需状态汇总表单插件(引用组件Kingdee.K3.MFG.PLN.Business.PlugIn.dll),重写方法BindEntitys(),示例如下:

using Kingdee.BOS.Orm.DataEntity;

using Kingdee.K3.MFG.PLN.Business.PlugIn.DynamicForm.DynamicReport;

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Linq;

using System.Text;


namespace NY230313.CusSch.App.Business.PlugIn

{

    [Description("客户二开供需状态表汇总表单插件")]

    public class Cust_MtrlDSStateEdit : SupplyDemandStateSummary

    {

        protected override void BindEntitys()

        {

            //事先继承标准逻辑,绑定标准数据

            base.BindEntitys();


            //然后做二开逻辑处理,这里特别说明this.allDetailData数据包的含义:

            //this.allDetailData是当前物料供需查询得到的所有明细数据的字典,结构是:Dictionary<string, List<DynamicObject>>;

            //其中该字段的Key是一串字符标识(GUID),与汇总页签的一行,或时段页签的三行(需求、供应、结存)对应;

            //即是说this.allDetailData每一项就对应一个物料的明细供应和库存数据;

            //假设客户二在物料供需状态上增加一个表体,将明细数据加工后展示出来,示例如下:


            foreach (var detailItem in this.allDetailData)

            {

                foreach (DynamicObject data in detailItem.Value)

                {

                    //这里的data就是每一条明细数据,二开可从中获取相信的信息进行归类处理

                    //注意不要更改this.allDetailData数据包里面的值,只从中取数,实在要对数据包赋值,可以克隆出来再赋值

                }

            }


            //留意到this.allDetailData每一项是的Key是一串字符标识(GUID),与汇总页签的一行,或时段页签的三行(需求、供应、结存)对应这句说明,以下示例阐明了如何取明细数据关联上汇总表体或明细表体的数据。

            Entity sEntity = this.View.BusinessInfo.GetEntity("FSSummary");

            DynamicObjectCollection sEntrys = this.View.Model.GetEntityDataObject(sEntity); //获取汇总表体数据

            List<DynamicObject> currDetails = new List<DynamicObject>();

            foreach (DynamicObject entry in sEntrys)

            {

                string rowId = entry.GetDynamicValue<string>("SRowId");

                if (!this.allDetailData.TryGetValue(rowId, out currDetails)) continue; //找到汇总表体行对应的明细数据

                //FSQTY是汇总表体上增加的一个数量字段

                decimal sumRelaQty = entry.GetDynamicValue<decimal>("FSQTY");

                foreach (DynamicObject currDetail in currDetails)

                {

                    //FQTY是明细表体上增加的一个数量字段,这里示例的逻辑是将明细的FQTY累加到汇总表体的FSQTY

                    decimal tmpQty = currDetail.GetDynamicValue<decimal>("FQTY");

                    sumRelaQty += tmpQty;

                }

                entry.SetDynamicObjectItemValue("FSQTY", sumRelaQty);

            }

            //更新了数据包,需要执行一下面这行更新界面

            this.View.UpdateView("FSSummary");

        }

    }

}



<2>拷贝插件组件到应用站点的..\WebSite\Bin目录下,重启IIS。


<3>BOSIDE扩展(生产制造》计划管理》动态表单》普通动态表单)物料供需状态汇总,注册并启用二开表单插件,同时取消标准的表单插件,保存元数据,开发完毕。


【功能验证】

<1>具体功能验证取决于二开的实现逻辑。对于本方案有疑问的地方,欢迎跟帖跟进。


物料供需状态典型二开方法

【应用场景】物料供需状态标准系统提供汇总、时段及明细三种数据展示方式。但特定场景下仍无法完全满足客户数据的展示需求,此时就需要对该...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息