工序转移单中新增的数量字段,反写到工序计划数量的二开方案

【应用场景】
工序转移单中需要记录损耗数量,因此二开新增了该数量字段,需要反写到工序计划的合格数量,作为完工数量的一部分。
【实现步骤】
由于上游单据工序计划是“单据头-单据体-子单据体”结构,而BOS不支持对子单据体的反写规则配置,因此需要通过操作服务插件来反写。在审核操作中用插件实现数量的累加反写,并在反审核操作中用插件实现数量的累减反写,审核与反审核操作一定要成对配置。
<1>在审核操作中注册服务插件Python脚本,累加反写到工序计划的合格数量中。
由于审核是批量操作,因此需要将批量的工序转移单以来源的工序计划子分录内码为主键进行数量合并,以便一次性反写;同时,由于界面显示的字段为工序单位数量,因此需要分别计算出生产单位数量和基本单位数量,累加反写到工序计划的相应数量上;
此处假定工序转移单中二开的损耗数量字段标识为FWasteQty,绑定实体属性为WasteQty,关联单位为工序单位数量。
参考Python如下:
clr.AddReference("Kingdee.K3.MFG.App")
clr.AddReference("Kingdee.K3.MFG.Contracts")
clr.AddReference("Kingdee.BOS.App")
from Kingdee.K3.MFG.App import *
from Kingdee.K3.MFG.Contracts import *
from Kingdee.BOS.App import *
from Kingdee.BOS.App.Data import *
def OnPreparePropertys(e):
e.FieldKeys.Add("FSrcOptPlanOptId")
e.FieldKeys.Add("FProductId")
e.FieldKeys.Add("FProUnitID")
e.FieldKeys.Add("FBaseUnitID")
e.FieldKeys.Add("FUnitTransHeadQty")
e.FieldKeys.Add("FUnitTransOperQty")
e.FieldKeys.Add("FWasteQty")
def EndOperationTransaction(e):
sqlStrs = []
wasteQtyDic={}
materialIdDic={}
unitDic={}
baseUnitDic={}
transHeadQtyDic={}
transOperQtyDic={}
for dataEntity in e.DataEntitys:
detailId = dataEntity["SrcOptPlanOptId"]
if (wasteQtyDic.has_key(detailId)):
wasteQtyDic[detailId]=wasteQtyDic[detailId]+dataEntry["WasteQty"]
else:
wasteQtyDic[detailId]=dataEntity["WasteQty"]
materialIdDic[detailId]=dataEntity["ProductId_Id"]
unitDic[detailId]=dataEntity["ProUnitID"]
baseUnitDic[detailId]=dataEntity["BaseUnitID"]
transHeadQtyDic[detailId]=dataEntity["UnitTransHeadQty"]
transOperQtyDic[detailId]=dataEntity["UnitTransOperQty"]
if(wasteQtyDic!=None and wasteQtyDic.Count>0):
for detailId in wasteQtyDic.keys():
wasteQty = wasteQtyDic[detailId]
materialId = materialIdDic[de工序转移单中新增的数量字段,反写到工序计划数量的二开方案
【应用场景】工序转移单中需要记录损耗数量,因此二开新增了该数量字段,需要反写到工序计划的合格数量,作为完工数量的一部分。【实现步骤...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



