二开案例-【Python】实现计划订单配置批号投放生成生产订单,批号无法携带到下游单据原创
9人赞赏了该文章
642次浏览
编辑于2022年04月08日 15:04:37
一、背景描述
物料启用批号管理, 计划订单投放生产订单,在单据转换增加批号规则应用的表单服务策略,现投放的生产订单上可以显示批号,但是当生产订单启用批号校验时,投放的生产订单直接提交审核,再下推生产汇报单没有携带批号,但是保存下生产订单再下推就能携带过去,如果不启用批号检验是可以携带过去的。
出现上述问题的原因,主要是计划订单投放生成生产订单时,采用的是数据包直接保存生产订单,此时投放后,只携带了批号的数据包,并未更新批号主档生成内码,而生产订单保存更新批号主档服务是配置在保存操作,数据包保存的方式无法执行到。
二、解决办法
可以二开Python脚本配置在提交操作上,在提交时,将生产订单进行保存一次即可,具体操作如下:
代码示例如下:
import clr clr.AddReference('System') clr.AddReference('System.Data') clr.AddReference('Kingdee.BOS') clr.AddReference('Kingdee.BOS.Core') clr.AddReference('Kingdee.BOS.App') clr.AddReference('Kingdee.BOS.DataEntity') clr.AddReference('Kingdee.BOS.Contracts') clr.AddReference('Kingdee.BOS.ServiceHelper') from Kingdee.BOS import * from Kingdee.BOS.Core import * from Kingdee.BOS.Contracts import * from Kingdee.BOS.Orm.DataEntity import * from Kingdee.BOS.DataEntity import * from Kingdee.BOS.Core.Bill import * from Kingdee.BOS.Core.DynamicForm.PlugIn import * from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import * from System import * from System.Data import * from Kingdee.BOS.App.Data import * from System.Collections.Generic import List from Kingdee.BOS.ServiceHelper import * from Kingdee.BOS.Log import * def BeforeExecuteOperationTransaction(e): idList=List[object](); for billObj in e.SelectedRows: BillId=billObj.DataEntity["Id"]; idList.Add(BillId) if(idList.Count <= 0): return; meta=MetaDataServiceHelper.Load(this.Context,"PRD_MO"); billDatas=BusinessDataServiceHelper.Load(this.Context,idList.ToArray(),meta.BusinessInfo.GetDynamicObjectType()); saveRslt=BusinessDataServiceHelper.Save(this.Context,meta.BusinessInfo,billDatas,None,"Save");
注意,出现下图报错无需在意,确认即可
推荐阅读