Python继承AbstractValidator实现校验器案例

【业务背景】
组装拆卸单成品跟子件物料编码相同时,设置相同仓库,批次不能相同才能保存,或者批次相同,但是不允许仓库相同
【需求分析】
从业务背景中分析得出,只有满足以下3种条件的任意一种,才允许保存
1、成品子件:仓库相同,批号不同
2、成品子件:批号相同,仓库不同
3、成品子件:仓库批号均不同
通常的做法,保存的服务端校验一般有两种方式:
1、使用BOS提供的校验规则
2、使用校验器进行校验
【插件实现】
import clr
clr.AddReference('System')
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
from System import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.Validation import *
from Kingdee.BOS.Log import Logger
def OnAddValidators(e):
validator = AssemblyStockLotExValidator()
validator.EntityKey = "FBillHead"
validator.AlwaysValidate = True
e.Validators.Add(validator)
class AssemblyStockLotExValidator(AbstractValidator):
def Validate(self, dataEntities, validateContext,ctx):
for bill in dataEntities:
products = bill["ProductEntity"]
for product in products:
productSeq = Convert.ToInt32(product["Seq"])
subs = product["STK_ASSEMBLYSUBITEM"]
stock = product["StockID"]
lot = product["Lot"]
material = product["MaterialID"]
for sub in subs:
destStock = sub["FStockIDSETY"]
destLot = sub["LotSETY"]
destMaterial = sub["MaterialIDSETY"]
if str(material["Id"]) == str(destMaterial["Id"]): # and Convert.ToString(material["Number"]).StartsWith("03"):
if product["Lot_TextPython继承AbstractValidator实现校验器案例
【业务背景】组装拆卸单成品跟子件物料编码相同时,设置相同仓库,批次不能相同才能保存,或者批次相同,但是不允许仓库相同【需求分析】从...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



