二开案例-【Python】实现校验生产订单行号重复不允许保存原创
金蝶云社区-快乐的八宝鱼
快乐的八宝鱼
5人赞赏了该文章 549次浏览 未经作者许可,禁止转载编辑于2022年05月31日 10:23:09

        由于未知原因,客户生产订单数据会有部分行号重复的保存成功,造成下达时,后续成本归集数据异常,因此通过Python插件实现生产订单保存时,出现行号重复时,不允许保存。该Python插件注册在生产订单保存操作上,如图:

Snipaste_2022-05-31_10-22-42.png


代码如下:

import clr
clr.AddReference('System')
clr.AddReference('System.Data')
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')

from System import *
from System.Data import *
from System.Collections.Generic import List
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Log import *
from Kingdee.BOS.Core.Validation import *

def OnAddValidators(e):
   extMoProducTypeValidator=ExtMoProducTypeValidator()
   extMoProducTypeValidator.EntityKey="FBillHead"
   extMoProducTypeValidator.TimingPointString=",Save"
   e.Validators.Add(extMoProducTypeValidator)

class ExtMoProducTypeValidator(AbstractValidator):
   def Validate(self,dataEntities,validateContext,ctx):
      for bill in dataEntities:
         billId=str(bill["Id"]);
         entryData=bill.DataEntity["TreeEntity"];
         list1=[]
         for entryInfo in entryData:
            seq=entryInfo["Seq"];
            if seq in list1:
               errorInfo=ValidationErrorInfo(" ",billId,bill.DataEntityIndex,bill.RowIndex,billId,"明细表体存在分录行号重复,不允许保存","",ErrorLevel.Error)
               validateContext.AddError(None,errorInfo)
            else:
               list1.append(seq);


赞 5