开发案例分享-单据转换之生产入库单只下推合格产品原创
金蝶云社区-Dave身份
Dave
12人赞赏了该文章 1577次浏览 未经作者许可,禁止转载编辑于2021年11月24日 15:58:39

一、问题描述:

如下图,标准系统如果检验单有不合格产品时,生产订单下推生产入库单会拆单成两行,一行为合格品一行为不合格品

9.png


10.png

二、解决方法:如果想实现只下推合格产品可通过单据转换插件进行处理


2.1、插件代码如下:

using Kingdee.BOS.Core;

using Kingdee.BOS.Orm.DataEntity;

using Kingdee.K3.MFG.App.ConvertPlugIn;

using Kingdee.K3.Core.MFG.EntityHelper;

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using Kingdee.K3.Core.MFG.EnumConst;

using System.ComponentModel;

using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn.Args;

 

namespace Dave.ConvertDemo.ServicePlugIn

{

    /// <summary>

    /// 按顺序输出单据转换-下推过程的插件事件

    /// </summary>

    [Kingdee.BOS.Util.HotUpdate]

    [Description("生产入库单只下推合格的数据行插件")]

    public class Mo2InstockConvert : BaseBillConvertServicePlugIn

    {

 

 

        public override void AfterConvert(AfterConvertEventArgs e)

        {

            base.AfterConvert(e);

 

            ExtendedDataEntity[] objs = e.Result.FindByEntityKey("FBillHead"); //获取单据数据包 FBillHead是单据头标知

            foreach (ExtendedDataEntity obj in objs)

            {

                //找到生产入库单的表体数据

                DynamicObjectCollection entryDatas = obj.DataEntity.GetDynamicValue<DynamicObjectCollection>(CONST_PRD_INSTOCK.CONST_FEntity.ENTITY_ORM_Entity);

                List<DynamicObject> wEntryDatas = entryDatas.Where(w => w.GetDynamicValue<string>(CONST_PRD_INSTOCK.CONST_FEntity.ORM_InStockType) != "1").ToList();//找到入库单表体分录入库类型不是合格品入库数据

                foreach (DynamicObject entryData in wEntryDatas)

                {

                    //循环移除掉

                    entryDatas.Remove(entryData);

                }

 

            }

 

        }

 

 

    }

}

2.2、将插件注册到单据转换中:

1.png

2.3、启用单据转换规则:

2.png

2.4、实现效果:

3.png

4.png


发布于 金蝶云星空BOS开发交流圈 社群

赞 12