多组织即时库存规格型号及物料属性错误显示为主组织解决办法

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

多组织即时库存规格型号及物料属性错误显示为主组织解决办法

问题:多组织时,即时库存、即时库存明细查询时,规格型号以及基础资料属性都显示成主组织的。

原因:即时库存的数据表:[T_STK_INVENTORY]中,存储的物料id,是物料的masterid,也就是主组织的物料内码。所以最终物料的属性都是显示成主组织的。

解决办法:用列表插件,把相关字段的值重写。

代码实现:

c#

using Kingdee.BOS;

using Kingdee.BOS.App;

using Kingdee.BOS.Core.List.PlugIn.Args;

using Kingdee.BOS.Util;

using Kingdee.K3.SCM.Stock.Business.PlugIn;

using System.ComponentModel;

using System.Data;

using Kingdee.BOS.Orm.DataEntity;

using Kingdee.BOS.App.Data;

using System.Linq;


namespace LCNR.Kingdee.BOS.STK_InvSumQueryListEx

{

    [Description("即时库存列表插件"), HotUpdate]

    public class InvSumQueryListEx : InvSumQueryList

    {

        public override void FormatCellValue(FormatCellValueArgs args)

        {

            base.FormatCellValue(args);

            string sql;

            

            if (args.Header.FieldName.Equals("FModel"))

            {

                string org = args.DataRow["FSTOCKORGID"].ToString();

                //获取主组织下的物料masterid

                string masterid = args.DataRow["FMaterialId_Id"].ToString();

                //根据masterid查到多个组织的物料记录,再根据库存组织id,拿到正确的物料记录

                sql = string.Format(@"/*dialect*/select b.FSPECIFICATION from T_BD_MATERIAL a INNER JOIN T_BD_MATERIAL_L b ON a.FMATERIALID=b.FMATERIALID where a.FMASTERID={0} and a.FUSEORGID={1}", masterid, org);

                DynamicObject dyobj = DBUtils.ExecuteDynamicObject(this.Context, sql).First();

                //这个就是规格型号

                args.FormateValue = dyobj["FSPECIFICATION"];

            }

        }

    }

}


python:

import clr
clr.AddReference('System')
clr.AddReference('System.Data')
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Kingdee.BOS.App')

from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.List import*
from Kingdee.BOS.Core.List.PlugIn import *
from System import *
from System.Data import *
from Kingdee.BOS.App.Data import *

def FormatCellValue(args):
    if (args.Header.FieldName=="FModel"):
         org = args.DataRow["FSTOCKORGID"].ToString();
         masterid = args.DataRow["FMaterialId_Id"].ToString();
        sql = "/*dialect*/select b.FSPECIFICATION from T_BD_MATERIAL a INNER JOIN T_BD_MATERIAL_L b ON a.FMATERIALID=b.FMATERIALID where a.FMASTERID={0} and a.FUSEORGID={1}".format(masterid, org);
         dyobj = DBUtils.ExecuteDynamicObject(this.Context, sql);
        args.FormateValue = dyobj[0]["FSPECIFICATION"];

插件注册后放在原有插件之前,不停用原有插件。


LCNR信息部 2022.12.29

多组织即时库存规格型号及物料属性错误显示为主组织解决办法

问题:多组织时,即时库存、即时库存明细查询时,规格型号以及基础资料属性都显示成主组织的。原因:即时库存的数据表:[T_STK_INVENTORY]...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息