电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

Python继承AbstractValidator实现校验器案例

来源:金蝶云社区作者:金蝶2024-09-162

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_Text

Python继承AbstractValidator实现校验器案例

【业务背景】组装拆卸单成品跟子件物料编码相同时,设置相同仓库,批次不能相同才能保存,或者批次相同,但是不允许仓库相同【需求分析】从...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信