根据单据类型校验创建人和审核人要求不一致

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

根据单据类型校验创建人和审核人要求不一致

一、【业务需求】

直接调拨单想要根据单据类型设置创建人跟审核人不为同一人。


二、【功能分析】

当前系统参数只能按整个单据进行设置,无法按单据类型设置

administrator角色登录,【基础管理】→【公共设置】→【单据参数设置】

image.webp


二、【实现】

import clr
clr.AddReference("mscorlib")
clr.AddReference('System')
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Kingdee.BOS.ServiceHelper')

from System import *
from Kingdee.BOS.ServiceHelper import * 
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.Metadata.EntityElement import *
from Kingdee.BOS.Core.Validation import *
from Kingdee.BOS.Log import Logger

def OnPreparePropertys(e):
    e.FieldKeys.Add("FBillTypeID");
    e.FieldKeys.Add("FCreatorId");
    
def OnAddValidators(e):
    validator = ValidateAuditUserByBillType()
    validator.EntityKey = "FBillHead"
    validator.AlwaysValidate = True
    e.Validators.Add(validator)
    
class ValidateAuditUserByBillType(AbstractValidator):
    def Validate(self, dataEntities, validateContext,ctx):
        for bill in dataEntities:
            billId = Convert.ToString(bill["Id"])
            billType = bill.DataEntity["BillTypeID"]
            billTypeNumber = Convert.ToString(billType["Number"]) # 单据类型编码
            billTypeName = Convert.ToString(billType["Name"]) # 单据类型名称
            creatorId = Convert.ToInt64(bill.DataEntity["CreatorId_Id"])
            userId = this.Context.UserId
            if creatorId == userId and billTypeNumber == "ZJDB01_SYS": 
                msg = '''当前用户与创建人相同,单据类型为【{0}-{1}】的直接调拨单,审核校验不通过'''.format(billTypeNumber, billTypeName)
                info = ValidationErrorInfo("AuditUserByBillType",billId, bill.DataEntityIndex,bill.RowIndex,billId, msg, "单据创建人与审核人校验", ErrorLevel.Error)
                validateContext.AddError(None,info)


image.webp


image.webp

代码示例.rar

根据单据类型校验创建人和审核人要求不一致

一、【业务需求】直接调拨单想要根据单据类型设置创建人跟审核人不为同一人。二、【功能分析】当前系统参数只能按整个单据进行设置,无法按...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息