单据转换设置映射,手动录入的批号无法携带问题二开原创
1人赞赏了该文章
292次浏览
编辑于2022年06月23日 10:38:49
示例:计划订单单据头拓展批号字段(批号主档或者手动录入),携带到生产订单分录
实现方式:
1,可以参考https://vip.kingdee.com/article/182351?productLineId=1
2,也可以二开单据转换插件实现,代码如下:
using Kingdee.BOS.Core; using Kingdee.BOS.Orm.DataEntity; using Kingdee.K3.Core.MFG.EntityHelper; using Kingdee.K3.MFG.App.ConvertPlugIn; using System; using System.Collections.Generic; using System.Linq; using System.Text; using Kingdee.K3.MFG.PLN.App.BillConvertServicePlugIn.PlanOrder; namespace test { public class Class1 : BaseBillConvertServicePlugIn { public Dictionary<string, string> dctSourceLot = new Dictionary<string, string>();//储存源单编号与其对应的批号 /// <summary> /// 获取源单信息 /// </summary> /// <param name="e"></param> public override void OnBeforeGroupBy(BOS.Core.Metadata.ConvertElement.PlugIn.Args.BeforeGroupByEventArgs e) { base.OnBeforeGroupBy(e); foreach (var each in e.SourceData) { string billNo = each.GetDynamicValue<string>("FBillNo"); string lotText = each.GetDynamicValue<string>("FLot1_text"); if (!dctSourceLot.Keys.Contains(billNo)) { dctSourceLot.Add(billNo, lotText); } } } /// <summary> /// 目标单赋值 /// </summary> /// <param name="e"></param> public override void AfterConvert(BOS.Core.Metadata.ConvertElement.PlugIn.Args.AfterConvertEventArgs e) { base.AfterConvert(e); ExtendedDataEntity[] heads = e.Result.FindByEntityKey("FBillHead"); foreach (var head in heads) { DynamicObject dataEntity = head.DataEntity as DynamicObject; DynamicObjectCollection poEntry = dataEntity["TreeEntity"] as DynamicObjectCollection; foreach (var each in poEntry) { string sId = each.GetDynamicValue<string>("SrcBillNo"); string lotText; if (dctSourceLot.TryGetValue(sId, out lotText)) { each.SetDynamicObjectItemValue("Lot_Text", lotText); } } } } } }
推荐阅读