电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

二开案例-【C#】生产订单拆分行自定义字段携带至拆分后分录行

来源:金蝶云社区作者:金蝶2024-09-2311

二开案例-【C#】生产订单拆分行自定义字段携带至拆分后分录行

【应用场景】

生产订单单据界面-明细页签-业务操作-拆分行-生产订单拆分行界面自定义字段携带至新的分录上。


【注意事项】

该实现方案涉及到修改保存后的生产订单数据,仅限于特殊场景下的特殊应用。(如发现问题,欢迎评论指证)


【案例演示】

生产订单,生产订单拆分行单据都要编写插件,实现效果如下:



【实现步骤】

<1>分别在生产订单和生产订单拆分行上添加自定义字段,注意需要字段类型保持一致。

<2>分别在生产订单和生产订单拆分行上添加表单插件。

  • 生产订单拆分行表单插件

  • 生产订单表单插件

插件代码如下:

  •  引用组件


  • Kingdee.BOS.Core.dll
  • Kingdee.BOS.dll
  • Kingdee.K3.Core.dll
  • Kingdee.BOS.DataEntity.dll
  • Kingdee.K3.MFG.App.dll
  • 生产订单表单插件


  • using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.IO.Pipes;
    using System.Linq;
    using Kingdee.BOS.Core.Bill.PlugIn;
    using Kingdee.BOS.Core.DependencyRules;
    using Kingdee.BOS.Core.DynamicForm;
    using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
    using Kingdee.BOS.Orm.DataEntity;
    using Kingdee.BOS.Util;
    using Kingdee.K3.Core.MFG.EntityHelper;
    using Kingdee.K3.MFG.App;
    
    namespace ITIBB.App.ServicePlugIn
    {
        [Description("生产订单表单插件二开")]
        public class Ext_MoEdit : AbstractBillPlugIn
        {
            public override void CustomEvents(CustomEventsArgs e)
            {
                base.CustomEvents(e);
                IDynamicFormView childView = this.View.GetView(e.Key);
                if (childView.IsNullOrEmpty())
                {
                    return;
                }
                if (childView.BusinessInfo.GetForm().Id == "PRD_MOBILL_SPLITROW" && e.EventName == "SetExtFieldValus")
                {
                    //拆分行界面数据包
                    DynamicObject splitData = childView.Model.DataObject;
                    List<DynamicObject> splitDataEntrys = splitData.GetDynamicValue<DynamicObjectCollection>("Entity").ToList();
                    long splitMtrlId = splitData.GetDynamicValue<long>("PrdMoMaterialId_Id");
                    long srcMoEntryId = Convert.ToInt64(e.EventArgs);
                    //拆分后生产订单数据包
                    DynamicObject billData = this.View.Model.DataObject;
                    List<DynamicObject> billEntryDatas = billData.GetDynamicValue<DynamicObjectCollection>("TreeEntity").ToList();
                    //用来记录已赋值的分录
                    HashSet<long> hsMoEntryId = new HashSet<long>();
                    foreach (var splitDataEntry in splitDataEntrys)
                    {
                        decimal splitQty = splitDataEntry.GetDynamicValue<decimal>("SplitQty");
                        string extField = splitDataEntry.GetDynamicValue<string>("FText_qtr");
                        foreach (var billEntryData in billEntryDatas)
                        {
                            long moEntryId = billEntryData.GetDynamicValue<long>("Id");
                            //匹配上了就不需要再匹配了
                            if (hsMoEntryId.Contains(moEntryId)) continue;
                            //生产订单分录内码等于拆分行界面生产订单分录内码,需要排除
                            if (moEntryId == srcMoEntryId) continue;
                            decimal decQty = billEntryData.GetDynamicValue<decimal>("Qty");
                            //如果数量不一致也不能赋值
                            if (splitQty != decQty) continue;
                            string createType = billEntryData.GetDynamicValue<string>("CreateType");
                            //如果生成方式不是拆分,则不是拆分行生成
                            if (!createType.EqualsIgnoreCase("6")) continue;
                            long mtrlID = billEntryData.GetDynamicValue<long>("MaterialId_Id");
                            //如果分录行物料内码不等于拆分界面内也不需要赋值
                            if (splitMtrlId != mtrlID) continue;
                            billEntryData.SetDynamicObjectItemValue("FText_qtr", extField);
                            hsMoEntryId.Add(moEntryId);
                        }
                    }
                    //最后调用一遍保存,然后刷新表体数据
                    this.View.Model.Save();
             

二开案例-【C#】生产订单拆分行自定义字段携带至拆分后分录行

【应用场景】生产订单单据界面-明细页签-业务操作-拆分行-生产订单拆分行界面自定义字段携带至新的分录上。【注意事项】该实现方案涉及到修...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信