Python快速处理业务单据仓位校验器的添加和移除原创
金蝶云社区-邱育华
邱育华
29人赞赏了该文章 544次浏览 未经作者许可,禁止转载编辑于2022年04月14日 09:32:59

一、【业务需求】

仓库启用了仓位,单据在保存的时候会提示仓位必录,如入库单,但是有些业务场景单据是通过对接第三方系统生成,需要把仓位必录校验转移到提交或者审核的时候进行处理


二、【功能分析】

仓位必录的校验是独立的校验器处理的,在各个单据的保存插件中默认预置了该校验器,如果需要将校验从保存操作转移到提交或者审核进行处理,则可通过Python脚本简单处理


参考文章:

【如何移除通版退货通知单对序列号的校验器】

【客户需求】单据操作如何增加或移除通用校验器(python)


以其他出库单为例:

1、保存操作移除仓位校验

clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
def OnAddValidators(e):
    vdts = e.Validators;
    vdt = list(filter(lambda x: x.__class__.__name__ == 'StockLocValueValidator', vdts));
    j=len(vdt);
    if (j> 0):
        for i in range(0,j):
            e.Validators.Remove(vdt[i]);


image.png


2、审核操作添加仓位校验

clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Kingdee.K3.BD.App.Core')
clr.AddReference('Kingdee.K3.SCM.App')
clr.AddReference('Kingdee.K3.MFG.App')
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.Metadata import *
from Kingdee.K3.BD.App.Core import *
from Kingdee.K3.BD.App.Core.Validator import *
from Kingdee.K3.SCM.App import *
from Kingdee.K3.SCM.App.Validator import StockLocValueValidator
def OnAddValidators(e):
    outLocValueValidator = StockLocValueValidator()
    outLocValueValidator.AlwaysValidate = True
    outLocValueValidator.EntityKey = "FEntity"  # 单据体明细标识
    outLocValueValidator.MaterialName = "MaterialID"  # 物料编码绑定实体属性
    outLocValueValidator.StockName = "StockId"   # 仓库绑定实体属性
    outLocValueValidator.StockLocKey = "FStockLocId" # 仓位标识
    e.Validators.Add(outLocValueValidator)


1.png



image.png

赞 29