批号拣货插件-根据上游单据头特定字段过滤拣货数据

一、【业务需求】
源单上都扩展事业部字段,并且每个仓库都会加上“所属事业部”字段并维护好,在单据下推领料单时,根据事业部的仓库进行先进先出例如:
原料仓 A 物料 100个 入库时间 2022-01-01 A事业部,
回收仓 A物料 50 个 入库时间 2022-01-05 B事业部,
待利用仓 A 物料 20 个 入库时间 2022-01-15 A事业部
如果源单是A事业部,需要120个A物料,下推单据时,就会自动带出原料仓 A 物料 100个,待利用仓 A物料 20个,回收仓由于属于B事业部,所以不满足拣货仓库条件
这种如何修改批号拣货服务的插件以实现这个需求?
二、【功能分析】
1、拣货相关文章参考
2、二开插件思路
批号捡货插件抽象类:AbstractLotPickPlugIn,重写方法BeforePicking(e)、RegexUseableInvData(e)
在RegexUseableInvData(e)方法中获取FEntity_Link,得到上游单据内码集合,再根据内码获取上游单据的数据,再获取指定字段的值
根据指定字段值结合仓库资料设置,过滤出符合要求的仓库
根据满足拣货条件的仓库集合,筛选待拣货的库存数据
三、【核心代码】
using Kingdee.BOS.App.Core.Query;
using Kingdee.BOS.Core;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.SqlBuilder;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.K3.Core.SCM.STK;
using Kingdee.K3.SCM.App.Core.ConvertBusinessService;
using Kingdee.K3.SCM.App.Core.ConvertBusinessService.LotPickArgs;
using System;
using System.Collections.Generic;
using System.Data;
namespace LotPickDemo
{
public class LotPickTestFilter : AbstractLotPickPlugIn
{
private BOS.Core.ExtendedDataEntity[] _entitys;
public override bool BeforePicking(BeforePickingArgs e)
{
_entitys = e.Entitys;
return true;
}
public override void RegexUseableInvData(Dictionary<long, DataTable> dctinvDatas)
{
base.RegexUseableInvData(dctinvDatas);
List<object> lstBillId = new List<object>();
foreach (ExtendedDataEntity entry in _entitys)
{
var link = entry["FEntity_Link"] as DynamicObjectCollection;
foreach(var linkItem in link)
{
//循环关联数据包,得到上游单据内码集合
var 批号拣货插件-根据上游单据头特定字段过滤拣货数据
一、【业务需求】源单上都扩展事业部字段,并且每个仓库都会加上“所属事业部”字段并维护好,在单据下推领料单时,根据事业部的仓库进行先...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



