获取库存服务如何设置排除指定仓库库存实现案例原创
8人赞赏了该文章
1,495次浏览
编辑于2022年06月10日 20:15:10
一、【业务需求】
获取库存服务希望可以设置不包含某一个仓库的库存,进行获取。目前只能实现服务里绑定仓库字段之后,获取某一个仓库的库存;或者不绑定仓库,就获取所有仓库的库存。
二、【场景分析】
社区文章【获取库存服务如何设置获取指定仓库的库存】, 提供一种二开案例,但是这个案例实现是在仓库基础资料上扩展,标识该仓库是否进行库存获取,相当于全局参数,如果需要更精细的控制到单据级别,不同的单据控制不同的仓库库存获取,就无法满足需求。
本帖子完善一个场景,在单据层面扩展设置个别仓库不参与库存获取,结合二开插件实现
三、【实现】
1、单据头扩展多选基础资料,绑定仓库
2、代码示例
using Kingdee.BOS; using Kingdee.BOS.Orm.DataEntity; using Kingdee.K3.Core.SCM.Args; using Kingdee.K3.SCM.App.Core; using Kingdee.K3.SCM.Common.BusinessEntity.STK; using System; using System.Collections.Generic; using System.Linq; namespace Kingdee.K3.SCM.App.Stock.ServicePlugIn { public class CustomizeReqGetInvStock : AbstractGetInvStockPlugIn { public override IEnumerable<STK_Inventory> ApplyExtFilter(IEnumerable<STK_Inventory> data, GetInvStockDetailArg item) { //不获取即时库存的仓库 List<long> avStockId = new List<long>(); DynamicObject obj = this.BillEntity; string formId = this.BillFormId; var mulStock = obj["MulDonotGetInvStock"] as DynamicObjectCollection; if (mulStock.Count == 0) return data; foreach(var stock in mulStock) { avStockId.Add(Convert.ToInt64(stock["MulDonotGetInvStock_Id"])); } data = data.Where(p => !avStockId.Contains(p.StockId)); return data; } } }
实现效果:
以上分析及处理方案供参考,如有错误,还请指正。
代码示例.rar(0.63KB)
赞 8
8人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读