即时库存按使用组织的字段进行过滤的实现案例

即时库存按使用组织的字段进行过滤的实现案例
一、【业务需求】
即时库存明细里面新增了物料自定义字段,可以显示使用组织下的对应字段,但是无法按使用组织的字段进行过滤。创建组织下该字段为空,过滤出来的数据也是空
二、【分析实现】
由于跨组织查询的需要,即时库存表中物料的ID都是保存的创建组织下的ID,即FMASTERID,列表无法获取分配后使用组织下修改后的属性
关于即时库存显示使用组织下的物料属性,实现参考:
| 系统查询入口 | 业务对象 | FormId | 物理表 |
| 即时库存 | 即时库存汇总数据查询 | STK_InvSumQuery | T_STK_INVSUMQUERY |
| 即时库存明细 | 即时库存 | STK_Inventory | T_STK_INVENTORY |
通过上面两个帖子配置实现了显示效果,但是还是无法支持使用字段过滤数据,这里采用二开变通实现方案:
以物料档案上"规格型号"为例,
1、"即时库存"和"即时库存明细"分别扩展文本字段(字段名必须相同),命名为"规格型号"

2、二开即时库存明细列表插件,更新规格型号字段数据到即时库存表T_STK_INVENTORY
新增列表插件,继承列表插件抽象类AbstractListPlugIn,重写 BeforeGetDataForTempTableAccess方法,添加注册新插件,原插件继续保留
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Core.List.PlugIn;
using Kingdee.BOS.ServiceHelper;
using Kingdee.K3.SCM.ServiceHelper;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
namespace Kingdee.K3.InventoryDemo
{
public class InventoryListExt : AbstractListPlugIn
{
public override void BeforeGetDataForTempTableAccess(BOS.Core.List.PlugIn.Args.BeforeGetDataForTempTableAccessArgs e)
{
string sqlText = string.Format(@"MERGE INTO T_STK_INVENTORY IT
USING(SELECT T1.FID,T2.FMATERIALID, T1.FMATERIALID FMASTERID, T3.FSPECIFICATION FROM {0} 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 AND T3.FLocaleID = 2052 where T3.FSPECIFICATION != '') IT1
ON (IT.FID = IT1.FID)
WHEN MATCHED THEN UPDATE
SET IT.FModelText= IT1.FSPECIFICATION;", e.TableName);
DBUtils.Execute(this.Context, sqlText);
}
}
}3、二开即时库存列表插件,更新表T_STK_INVSUMQUERY中"规格型号"字段。新增列表插件,继承原插件类InvSumQ
即时库存按使用组织的字段进行过滤的实现案例
即时库存按使用组织的字段进行过滤的实现案例一、【业务需求】即时库存明细里面新增了物料自定义字段,可以显示使用组织下的对应字段,但是...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



