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

生产用料清单【调拨领料/调拨倒冲】的物料其“仓库”如何取BOM上的“默认发料仓库”

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

生产用料清单【调拨领料/调拨倒冲】的物料其“仓库”如何取BOM上的“默认发料仓库”

【应用场景】

标准逻辑:当用料清单子项物料的发料方式为调拨领料/调拨倒冲时,生产用料清单的发料仓库取车间的WIP仓

实际场景:一张生产订单上对应的用料清单上的需要调拨的物料,可能存放在不同的WIP仓,仅通过生产订单对应车间的WIP仓无法满足诉求,希望用料清单上的发料仓库能优先取物料清单上的默认发料仓库,若为空,再取生产订单对应车间的WIP仓。



【实现思路】

用料清单的生成或更新有以下场景:

一、生产订单保存时自动产生用料清单;

二、计划订单投放产生生产订单及用料清单(直接存数据库,不经过服务插件

三、生产订单计划确认时自动调用BOM展开或手工展开;

四、物料清单同步更新用料清单;


如果以上几种场景都需要优先取物料清单上的默认发料仓库,则处理思路应该如下:若用料清单存在调拨子项、生产订单在计划/计划确认状态、且BOM中存在默认发料发料仓库,则在调用料清单保存逻辑时,自动将BOM的默认发料仓库仓位更新至用料清单的发料仓库仓位。


若保存提交数量超过1000的,可尝试将下方代码语法转临时表处理,SQL中IN的数量仅支持1000数量。



【实现步骤】

编写服务插件,代码如下: 

1)若202309后的版本,可开启投放后调用订单保存(会影响计划投放效率,可在订单提交处挂插件触发即可),触发用料清单保存服务插件,在保存服务插件的afterexecute...事件中若用料清单存在调拨子项、且生产订单在计划、计划确认状态,BOM中存在默认发料仓库,则将BOM默认发料仓库仓位更新至用料清单仓库仓位库存状态数据。

import clr
clr.AddReference('Kingdee.BOS.App')
from Kingdee.BOS.App.Data import *

def AfterExecuteOperationTransaction(e):	
	if e.DataEntitys is None: 
		return
	ids = ''
	for data in e.DataEntitys:
		ids =  ids +','+ str(data["ID"])
	if len(ids)==0: 
		return
	ids = ids[1:]	
	sqlStr = """
MERGE INTO T_PRD_PPBOMENTRY_C A
USING(
SELECT T1.FENTRYID,T3.FSTOCKID,T3.FSTOCKLOCID,(CASE WHEN ISNULL(T4.FDEFSTOCKSTATUSID,0)>0 THEN T4.FDEFSTOCKSTATUSID ELSE 10000 END) AS FDEFSTOCKSTATUSID,T2.FISSUETYPE,T2.FSTOCKID AS OLDSTOCKID,T2.FSTOCKLOCID AS OLDSTOCKLOCID F

生产用料清单【调拨领料/调拨倒冲】的物料其“仓库”如何取BOM上的“默认发料仓库”

【应用场景】标准逻辑:当用料清单子项物料的发料方式为调拨领料/调拨倒冲时,生产用料清单的发料仓库取车间的WIP仓实际场景:一张生产订单...
点击下载文档文档为doc格式

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

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