即时库存显示使用组织下物料的属性字段的实现案例原创
金蝶云社区-邱育华
邱育华
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,扩展文本字段,命名为:规格型号

image.png


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、禁用原标准插件,注册二开插件

image.png


实现效果:

image.png

赞 9