单据保存、反审核等操作,判断是否库存已关账、是否生成凭证校验二开插件

单据在保存、审核、反审核等操作时,有时需要校验单据所在日期是否已经关账、该单据是否已经生成凭证。
插件注册在相应的操作上,如保存操作。
代码示例如下(有源码附件):
import clr
clr.AddReference('System')
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Kingdee.BOS.ServiceHelper')
from System import *
from System import StringComparison
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.Metadata.EntityElement import *
from Kingdee.BOS.Core.Validation import *
from Kingdee.BOS.Log import Logger
from Kingdee.BOS.ServiceHelper import *
def OnAddValidators(e):
#判断是否关账
validator = StockOrgCloseDateValidator()
validator.AlwaysValidate = True
validator.EntityKey = "FBillHead"
e.Validators.Add(validator)
#单据是否生成凭证
validator2 = BillVoucherValidator()
validator2.AlwaysValidate = True
validator2.EntityKey = "FBillHead"
e.Validators.Add(validator2)
#判断是否关账
class StockOrgCloseDateValidator(AbstractValidator):
def Validate(self, dataEntities, validateContext, ctx):
if len(dataEntities) == 0:
return
for bill in dataEntities:
targetOrgId = bill["StockOrgId_Id"] # 单据库存组织
sqlText = "select max(FCLOSEDATE) FCLOSEDATE FROM T_STK_CLOSEPROFILE WHERE FCATEGORY = 'STK' and FORGID = " + str(targetOrgId);
dyObjs = DBServiceHelper.ExecuteDynamicObject(this.Context, sqlText)
if dyObjs.Count == 0:
continue
date = Convert.ToDateTime(bill["Date"]) # 单据业务日期
closeDate = Convert.ToDateTime(dyObjs[0]["FCLOSEDATE"])
if date < closeDate:
errorMsg = "单据日期{0}必单据保存、反审核等操作,判断是否库存已关账、是否生成凭证校验二开插件
单据在保存、审核、反审核等操作时,有时需要校验单据所在日期是否已经关账、该单据是否已经生成凭证。插件注册在相应的操作上,如保存操作...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



