获取库存服务如何设置排除指定仓库库存实现案例原创
金蝶云社区-邱育华
邱育华
8人赞赏了该文章 1,495次浏览 未经作者许可,禁止转载编辑于2022年06月10日 20:15:10

一、【业务需求】

获取库存服务希望可以设置不包含某一个仓库的库存,进行获取。目前只能实现服务里绑定仓库字段之后,获取某一个仓库的库存;或者不绑定仓库,就获取所有仓库的库存。


二、【场景分析】

社区文章【获取库存服务如何设置获取指定仓库的库存】, 提供一种二开案例,但是这个案例实现是在仓库基础资料上扩展,标识该仓库是否进行库存获取,相当于全局参数,如果需要更精细的控制到单据级别,不同的单据控制不同的仓库库存获取,就无法满足需求。


本帖子完善一个场景,在单据层面扩展设置个别仓库不参与库存获取,结合二开插件实现


三、【实现】

1、单据头扩展多选基础资料,绑定仓库

image.png


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;
        }
    }
}

image.png


实现效果:

image.png

image.png


以上分析及处理方案供参考,如有错误,还请指正。

图标赞 8
8人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!