即时库存显示使用组织下物料的属性字段的实现案例原创
9人赞赏了该文章
1,051次浏览
编辑于2022年11月23日 15:52:29
一、【业务需求】
即时库存下的规格型号字段,是物料基础资料属性,关联物料编码取的,取出来的字段值都是物料的创建组织的,需要显示取各物料使用组织中的属性。
二、【分析实现】
由于跨组织查询的需要,即时库存表中物料的ID都是保存的创建组织下的ID,列表无法获取分配后使用组织下修改后的属性
关于系统使用物料的内码FMATERIALID,物料创建组织的内码FMASTERID,几个使用特殊的点:
1、业务单据上,使用物料的FMATERIALID
2、库存余额表T_STK_INVBAL,即时库存表T_STK_INVENTORY,使用物料的FMASTERID
3、批号主档信息T_BD_LOTMASTER和序列号主档信息T_BD_SERIALMASTER,使用物料的FMASTERID
二开变通实现方案:
1、即时库存汇总数据查询STK_InvSumQuery,扩展文本字段,命名为:规格型号
2、二开列表插件,通过物料和即时库存数据的关联关系,更新扩展的"规格型号"数据
using Kingdee.BOS.App.Data; using Kingdee.BOS.Core.List.PlugIn.Args; using Kingdee.K3.SCM.Stock.Business.PlugIn; namespace K3Cloud.STKDemo { public class InvSumQueryListEx : InvSumQueryList { public override void PrepareFilterParameter(FilterArgs e) { base.PrepareFilterParameter(e); var tranId = this.TransactionID; string sql = string.Format(@" MERGE INTO T_STK_INVSUMQUERY IT USING(SELECT T1.FID,T2.FMATERIALID, T1.FMATERIALID FMASTERID, T3.FSPECIFICATION FROM T_STK_INVSUMQUERY T1 INNER JOIN T_BD_MATERIAL T2 ON T1.FMATERIALID = T2.FMASTERID AND T1.FSTOCKORGID = T2.FUSEORGID INNER JOIN T_BD_MATERIAL_L T3 ON T3.FMATERIALID = T2.FMATERIALID WHERE T1.FTRANSID = '{0}') IT1 ON (IT.FID = IT1.FID) WHEN MATCHED THEN UPDATE SET IT.FModelText= IT1.FSPECIFICATION;", tranId); DBUtils.Execute(this.Context, sql); } } }
3、禁用原标准插件,注册二开插件
实现效果:
推荐阅读