生产订单序列号表体二开增加基础资料类型字段值如何携带至生产汇报单序列号表体
需求描述:生产订单的序列号表体二开增加了基础资料类型的字段,当生产订单维护序列号后,下推生成生产汇报单携带序列号的同时希望将二开的基础资料字段值一起携带;
解决方案:由于标准产品序列号的携带是在单据转换插件中代码处理的,因为不能通过在单据转化规则中配置该基础资料字段的映射携带下去,否则看到的汇报单序列号表体的数据就会是不正确的。但可以通过在生产订单到生产汇报单单据转换规则插件策略中注册python插件实现,如下图所示:
示例代码如下:
import clr
clr.AddReference("System")
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Kingdee.BOS.App')
clr.AddReference('Kingdee.BOS.DataEntity')
clr.AddReference('Kingdee.BOS.BusinessEntity')
clr.AddReference('Kingdee.BOS.Contracts')
clr.AddReference('Kingdee.BOS.ServiceHelper')
clr.AddReference('Kingdee.BOS.App.Core')
from System import*
from System import StringComparison
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.Bill import *
from Kingdee.BOS.Orm.DataEntity import *
from Kingdee.BOS.App import *
from Kingdee.BOS.App.Core import *
from Kingdee.BOS.App.Data import *
from Kingdee.BOS.Contracts import *
from Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn import*
from Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn.Args import*
from Kingdee.BOS.ServiceHelper import *
from System.Collections.Generic import *
def AfterConvert(e):
entryEntity = e.Result.FindByEntityKey("FEntity");
viewService=ViewService()
field= e.TargetBusinessInfo.GetField("FBase")
for entity in entryEntity:#循环处理
billObj=entity.DataEntity
srcEntryId=billObj["MoEntryId"]
serialDatas =billObj["SerialSubEntity"]
sql=str.Format(" select FENTRYID,FSERIALID,FBASE1,FSERIALNO from T_PRD_MOSNDETAIL WHERE FENTRYID={0} ",srcEntryId)
srcInfos=DBUtils.ExecuteDynamicObject(this.Context, sql)
for serialData in serialDatas:
serialId=(serialData["SerialId_Id"])
#serialNo=serialData["SerialNo"]
srcOtherId=0;#上游单据序列号表体二开基础资料字段内码
for srcInfo in srcInfos:
srcserialId=(srcInfo["FSERIALID"])
#srcserialNo=srcInfo["FSERIALNO"]
if(srcserialId == serialId ):
srcOtherId=srcInfo["FBASE1"]
break;
if(srcOtherId==0):
continue;
vendor = viewService.LoadSingle(this.Context,srcOtherId, field.RefFormDynamicObjectType)
serialData["FBase_Id"] = srcOtherId
serialData["FBase"] = vendor
说明:由于python对于格式要求比较严格,因此可以使用Tab键按上图中截图调整代码缩进,不要使用空格键以防缩进不一致;
补充说明:1、代码中相关二开字段标识说明如下图所示:
2、保存时可能会弹出类似如下的提示信息,直接点击确定即可。
生产订单序列号表体二开增加基础资料类型字段值如何携带至生产汇报单序列号表体
本文2024-09-23 03:22:17发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-158426.html