获取库存服务货主类型过滤不生效的处理方案
一、【需求问题】
简单生产领料单上配置的获取库存的服务,匹配字段都维护了货主跟货主类型,当VMI简单生产领料时,获取到的库存是即时库存全部的库存,而不是按货主类型【供应商】进行匹配
从即时库存看当前物料货主类型为供应商的库存合计应该为749 + (-20) = 729, 获取库存服务返回的库存为754,将货主类型为业务组织的也一并统计了
二、【功能分析】
获取库存服务,根据服务配置上的维度字段从当前单据明细分录中取得对应值,匹配即时库存,单据字段为空时则不匹配,
但是货主和货主类型,保管者和保管者类型处理比较特殊,当货主为空时,货主类型有值也没法参与到数据过滤,即:货主类型和货主同时不为空才进行字段匹配过滤,导致出现问题
根据系统预留的库存查询插件入口,将匹配返回的库存数据做二次处理,将货主类型和货主,保管者类型和保管者分别进行过滤。
using Kingdee.BOS.Util; using Kingdee.K3.Core.SCM.Args; using Kingdee.K3.SCM.Common.BusinessEntity.STK; using System.Collections.Generic; using System.Data; using System.Linq; namespace Kingdee.K3.SCM.Stock.App.CustomizePlugIn { public class OwnerGetInvStock : AbstractGetInvStockPlugIn { public override IEnumerable<STK_Inventory> ApplyExtFilter(IEnumerable<STK_Inventory> data, GetInvStockDetailArg item) { if (!item.OwnerTypeId.IsNullOrEmptyOrWhiteSpace()) { data = from p in data where p.OwnerTypeId == item.OwnerTypeId select p; } if (item.OwnerId != 0) { data = from p in data where p.OwnerId == item.OwnerId select p; } if (!item.KeeperTypeId.IsNullOrEmptyOrWhiteSpace() ) { data = from p in data where p.KeeperTypeId == item.KeeperTypeId select p; } if (item.KeeperId != 0) { data = from p in data where p.KeeperId == item.KeeperId select p; } return data; } } }
处理步骤:
1、上传组件Kingdee.K3.SCM.Stock.App.CustomizePlugIn.dll到bin目录,重启IIS
2、配置插件:Kingdee.K3.SCM.Stock.App.CustomizePlugIn.OwnerGetInvStock,Kingdee.K3.SCM.Stock.App.CustomizePlugIn
获取效果:
我的怎么不行了,现在用的热启动
获取库存服务货主类型过滤不生效的处理方案
一、【需求问题】简单生产领料单上配置的获取库存的服务,匹配字段都维护了货主跟货主类型,当VMI简单生产领料时,获取到的库存是即时库存...
点击下载文档
本文2024-09-16 19:04:59发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-26279.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章