二开案例-【Python】实现计划订单配置批号投放生成生产订单,批号无法携带到下游单据原创
金蝶云社区-快乐的八宝鱼
快乐的八宝鱼
9人赞赏了该文章 642次浏览 未经作者许可,禁止转载编辑于2022年04月08日 15:04:37

一、背景描述

      物料启用批号管理, 计划订单投放生产订单,在单据转换增加批号规则应用的表单服务策略,现投放的生产订单上可以显示批号,但是当生产订单启用批号校验时,投放的生产订单直接提交审核,再下推生产汇报单没有携带批号,但是保存下生产订单再下推就能携带过去,如果不启用批号检验是可以携带过去的。

        出现上述问题的原因,主要是计划订单投放生成生产订单时,采用的是数据包直接保存生产订单,此时投放后,只携带了批号的数据包,并未更新批号主档生成内码,而生产订单保存更新批号主档服务是配置在保存操作,数据包保存的方式无法执行到。

二、解决办法

        可以二开Python脚本配置在提交操作上,在提交时,将生产订单进行保存一次即可,具体操作如下:

        

Snipaste_2022-04-08_14-37-34.png

代码示例如下:

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");

注意,出现下图报错无需在意,确认即可

Snipaste_2022-04-08_15-03-37.png


赞 9