生产订单序列号表体二开增加基础资料类型字段值如何携带至生产汇报单序列号表体

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

生产订单序列号表体二开增加基础资料类型字段值如何携带至生产汇报单序列号表体

需求描述:生产订单的序列号表体二开增加了基础资料类型的字段,当生产订单维护序列号后,下推生成生产汇报单携带序列号的同时希望将二开的基础资料字段值一起携带;

解决方案:由于标准产品序列号的携带是在单据转换插件中代码处理的,因为不能通过在单据转化规则中配置该基础资料字段的映射携带下去,否则看到的汇报单序列号表体的数据就会是不正确的。但可以通过在生产订单到生产汇报单单据转换规则插件策略中注册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、保存时可能会弹出类似如下的提示信息,直接点击确定即可

上传图片



生产订单序列号表体二开增加基础资料类型字段值如何携带至生产汇报单序列号表体

需求描述:生产订单的序列号表体二开增加了基础资料类型的字段,当生产订单维护序列号后,下推生成生产汇报单携带序列号的同时希望将二开的...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息