K3Cloud BOS 设计 Python 单据转换插件 自动提交审核
C#插件参考
Python 插件
依次 保存 提交 审核
ids = List[DynamicObject]()
注意定义类型,与保存时类型统一 需要引用System.Collections.Generic
完整代码
def AfterConvert(e):
key = e.TargetBusinessInfo.GetEntity(0).Key
ls = e.Result.FindByEntityKey(key)
ids = List[DynamicObject]()
for billObj in ls:
ob = billObj.DataEntity
ids.Add(ob)
pkArray = ids.ToArray()
formMetadata = MetaDataServiceHelper.Load(this.Context, "SAL_SaleOrder")
operationResult = BusinessDataServiceHelper.Save(this.Context, formMetadata.BusinessInfo, pkArray, None, "")
if (operationResult.IsSuccess):
ids = operationResult.SuccessDataEnity
keys = List[object]()
for ob in ids:
keys.Add(ob[0])
pkArray = keys.ToArray()
operationResult = BusinessDataServiceHelper.Submit(this.Context, formMetadata.BusinessInfo, pkArray,"Submit", None)
if operationResult.IsSuccess:
operationResult = BusinessDataServiceHelper.Audit(this.Context, formMetadata.BusinessInfo, pkArray, None)
this.OperationResult.OperateResult = operationResult.OperateResult
this.OperationResult.IsSuccess = operationResult.IsSuccess
this.OperationResult.ValidationErrors = operationResult.ValidationErrors
this.OperationResult.OperateResult = operationResult.OperateResult
自动提交审核
自动提交审核,不会提示 单据校验详细信息,
会提示“此操作对该事务的状态无效。”
def AfterConvert(e):
key = e.TargetBusinessInfo.GetEntity(0).Key
ls = e.Result.FindByEntityKey(key)
ids = List[DynamicObject]()
for billObj in ls:
ob = billObj.DataEntity
ids.Add(ob)
pkArray = ids.ToArray()
formMetadata = MetaDataServiceHelper.Load(this.Context, "SAL_SaleOrder")
option = OperateOption.Create()
option.SetVariableValue("IsAutoSubmitAndAudit", True)
operationResult = BusinessDataServiceHelper.Save(this.Context, formMetadata.BusinessInfo, pkArray, option, "")
if (operationResult.IsSuccess == False):
raise Exception("自动提交审核:失败");
返回错误、提示信息
直接抛出异常
raise Exception("提示信息:失败");
操作返回结果赋值 可以显示系统返回的明细信息
this.OperationResult.OperateResult = operationResult.OperateResult;
this.OperationResult.ValidationErrors = operationResult.ValidationErrors;
this.OperationResult.IsSuccess = operationResult.IsSuccess;