Qeasy Cloud
Get Started

利用Python脚本实现金蝶ERP单据自动审核功能

Source: Qeasy Cloud986 views

在系统实施过程中,常常需要在单据A审核通过后自动生成并审核单据B。通过BOS平台预置的【服务端服务】中的【自动下推】,可以实现单据间的关联及反写,但无法实现单据自动审核。现在可以通过Python脚本来补充这一功能:

实现方法

  1. 在BOS中打开需要自动生成的下游单据。
  2. 增加【复选框】字段(字段标识:F_IsAutoAudit),只有勾选了这个字段的单据才会执行自动提交审核,以避免对所有单据进行自动审核。(该字段为后台逻辑判断字段,建议加到【其他】页签,避免干扰用户)
  3. 在【操作列表】中找到【保存】,点击【编辑】。
  4. 在【其他控制】-【服务插件】中注册Python脚本。

注意事项

  1. 如果单据启用了审批流,执行该脚本时,会自动跳过审批流直接审核。
  2. 自动提交审核功能在后台执行,如果手工点击保存,也会触发自动审核,但界面不会刷新,仍显示未审核状态,需要关闭并重新打开单据以刷新状态。
## **************************** 保存服务插件 *******************
# 引入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.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

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 # OperateOption.Create()
    submitResult = BusinessDataServiceHelper.Submit(this.Context, meta.BusinessInfo, pkArray, "Submit", submitOption)

    if submitResult.IsSuccess == True:
        auditOption = None # OperateOption.Create()
        auditResult = BusinessDataServiceHelper.Audit(this.Context, meta.BusinessInfo, pkArray, auditOption)

上述代码展示了如何通过Python脚本实现单据A审核后自动生成并审核单据B的功能。

Copyright Notice

The article "利用Python脚本实现金蝶ERP单据自动审核功能" is original content owned by 广东轻亿云软件科技有限公司. Reposting, quoting, copying or mirroring is strictly prohibited without written authorization. Please contact us for authorization and credit the author and source (including the original link) prominently.