电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

即时库存明细可用量排除弱预留计算二开案例

来源:金蝶云社区作者:金蝶2024-09-164

即时库存明细可用量排除弱预留计算二开案例

【即时库存明细】查询中,涉及到库存量、可用量、预留量,以及各种单位:基本单位、主单位(库存单位)、库存辅单位,与之对应的数量有:

  • 库存量(基本单位)、库存量(主单位)、库存量(库存辅单位)

  • 可用量(基本单位)、可用量(主单位)、可用量(库存辅单位)

  • 预留量(基本单位)、预留量(主单位)、可用量(库存辅单位)


数量&单位基本单位库存单位库存辅单位
库存量库存量(基本单位)库存量(库存单位)库存量(库存单位)
可用量可用量(基本单位)可用量(库存单位)可用量(库存单位)
预留量预留量(基本单位)预留量(库存单位)预留量(库存单位)


结合即时库存表数据结构、插件处理逻辑以及单位和数量的一些关系需要理解:

1、即时库存表T_STK_INVENTORY,只有基本单位数量以及辅单位数量是能直接使用,其他单位数量以及可用量情况都需要经过单位换算、计算才能得到

2、即时库存中的预留量的计算,取数来源于预留表T_PLN_RESERVELINK、T_PLN_RESERVELINKENTRY,目前展示数据并未区分强预留和弱预留,即:可用量 = 库存量-强预留-弱预留

3、预留关系表头:T_PLN_RESERVELINK,字段FRESERVETYPE:1:弱预留 3:强预留

   预留关系表体:T_PLN_RESERVELINKENTRY, 字段FSUPPLYFORMID: 供给类型

image.webp

4、即时库存明细列表插件中,各单位数据的换算核心逻辑在BeforeGetDataForTempTableAccess方法,该方法中返回一个临时表,该表包含本次查询满足条件的

即时库存数据,以基本单位数量为基础,更新及换算该表的其他数量,最终展示到页面


当前的一个需求:即时库存明细中的可用量是否可以设置为 "库存量-强预留", 而不是"库存量-强预留-弱预留"? 

通过对上述逻辑的理解,通过二开插件,重写取数和换算逻辑即可。


一、反编译标准插件的处理:

image.webp

image.webp


二、二开插件,核心逻辑

sql = '''MERGE INTO {0} IT
USING(SELECT T2.FID,SUM(ISNULL(TKE.FBASEQTY,0)) AS FBASELOCKQTY,SUM(ISNULL(TKE.FSECQTY,0)) AS FSECLOCKQTY 
      FROM T_PLN_RESERVELINKENTRY TKE INNER JOIN T_PLN_RESERVELINK TLKH ON TKE.FID = TLKH.FID RIGHT JOIN {0} T2 
        ON TKE.FSUPPLYINTERID = T2.FID AND TKE.FSUPPLYFORMID = 'STK_Inventory' AND TLKH.FRESERVETYPE = '3'  AND TKE.FBASEQTY > 0  
     GROUP BY T2.FID) IT2
ON (IT.FID = IT2.FID)
WHEN MATCHED THEN 
UPDATE SET 
IT.FBASELOCKQTY = IT2.FBASELOCKQTY;'''.format(str(e.TableName))
    DBUtils.Execute(this.View.Context, sql)
    
    sql = '''UPDATE {0} SET FBASEAVBQTY = FBASEQTY - FBASELOCKQTY'''.format(str(e.TableName))
    DBUtils.Execute(this.View.Context, sql)
    
    # <type 'List[ColumnField]'>
    selCols = this.ListModel.FilterParameter.ColumnInfo
    secQty = selCols.Exists(lambda p: p.Key == "FSecQty") or selCols.Exists(lambda p: p.Key == "FSecLockQty") or selCols.Exists(lambda p: p.Key == "FSecAVBQty")
    if secQty == True:
        sql = '''UPDATE {0} SET FSECAVBQTY = FSECQTY - FSECLOCKQTY'''.format(str(e.TableName))
   

即时库存明细可用量排除弱预留计算二开案例

在【即时库存明细】查询中,涉及到库存量、可用量、预留量,以及各种单位:基本单位、主单位(库存单位)、库存辅单位,与之对应的数量有:库...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信