根据单据类型校验创建人和审核人要求不一致原创
6人赞赏了该文章
805次浏览
编辑于2022年06月30日 14:26:42
一、【业务需求】
直接调拨单想要根据单据类型设置创建人跟审核人不为同一人。
二、【功能分析】
当前系统参数只能按整个单据进行设置,无法按单据类型设置
administrator角色登录,【基础管理】→【公共设置】→【单据参数设置】
二、【实现】
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)
代码示例.rar(0.80KB)
赞 6
6人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读