获取库存服务如何设置排除指定仓库库存实现案例

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

获取库存服务如何设置排除指定仓库库存实现案例

一、【业务需求】

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


二、【场景分析】

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


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


三、【实现】

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

image.webp


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.webp


实现效果:

image.webp

image.webp


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

代码示例.rar

获取库存服务如何设置排除指定仓库库存实现案例

一、【业务需求】获取库存服务希望可以设置不包含某一个仓库的库存,进行获取。目前只能实现服务里绑定仓库字段之后,获取某一个仓库的库存...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息