如何利用python插件实现自动下推服务下推单据自动提交审核原创
金蝶云社区-我在终点等你
我在终点等你
19人赞赏了该文章 73次浏览 未经作者许可,禁止转载编辑于2024年07月26日 17:27:02

一、业务背景

系统中的操作服务中有预置的单据自动下推服务,但是下推的下游单据都是创建状态,需要人工去手动提交然后审核,比较不灵活。

以采购入库单自动下推应付单为例:

1、首先需要在采购入库单的审核操作中配置自动下推服务。

image.png

image.png

image.png

案例中没有设置条件,就是默认所有采购入库的单据类型审核后都会自动下推应付单。此时下推到下游应付单的单据是创建状态。

2、如果需要自动提交审核,需要注册python插件。

3、首先,可以在应付单上面添加一个复选框,用来区分是采购入库单下推的,下推下来的自动提交审核,还有手工新增的应付单不自动提交审核。

image.png

4、然后在采购入库单到应付单的单据转换规则,表单服务策略,设置复选框默认勾选。这样采购入库下推的应付此复选框就默认勾选。

image.png

image.png




5、然后在应付单上的保存操作上注册此python脚本。

image.png

python脚本:

#引入clr运行库
import clr
#添加对cloud插件开发的常用组件的引用
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.Contracts')
clr.AddReference('Kingdee.BOS.ServiceHelper')
#导入cloud基础库中的常用实体对象(分命名空间导入,不会递归导入)
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.Bill import *
#from Kingdee.BOS.Orm import *
from Kingdee.BOS.Contracts import *
from Kingdee.BOS.App import *
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
from System import *
from System.Data import *
from System.Text import *
from System.Collections import *
from Kingdee.BOS.App.Data import *
from System.Collections.Generic import List
from Kingdee.BOS.ServiceHelper import *

def OnPreparePropertys(e):
    e.FieldKeys.Add("F_IsAutoAudit");#复选框字段标识
def EndOperationTransaction(e):
    idList =List[object]();
    for billObj in e.DataEntitys:
        BillId = str(billObj["Id"]);
        F_IsAutoAudit = str(billObj["F_IsAutoAudit"]);
        if (F_IsAutoAudit == "1" or F_IsAutoAudit == "True"):
            idList.Add(BillId);
    if(idList.Count <= 0):
        return;
    pkArray = idList.ToArray();

    formID=this.BusinessInfo.GetForm().Id;

    meta = MetaDataServiceHelper.Load(this.Context, formID);

    submitOption = None;

    subResult =BusinessDataServiceHelper.Submit(this.Context,meta.BusinessInfo,pkArray,"Submit",submitOption);
    if (subResult .IsSuccess == True):
        auditOption = None;
        auditResult = BusinessDataServiceHelper.Audit(this.Context,meta.BusinessInfo,pkArray,auditOption);

脚本来源参考周老师的帖子:https://vip.kingdee.com/article/157179291166940672?productLineId=1&lang=zh-CN

6、然后就可以做一个采购入库单,就会自动生成应付单并审核了。

image.png

赞 19