如何实现库存单据在提交时校验序列号必录

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

如何实现库存单据在提交时校验序列号必录

问题描述:目前星空系统中针对启用序列号管理的物料,库存单据保存时针对序列号必录的校验是交互式的,可以选择是跳过这个校验继续保存单据,只有在单据审核的时候才会强制校验序列号必录。但是很多情况下,在企业操作流程上并不想走到审核的时候才提示,需要在审核前也就是提交的时候校验序列号必录;

解决方法:单据的提交操作上注册python插件校验器,针对启用序列号管理的物料分录提交时校验序列号是否全部录入,未全部录入则不允许提交。

此处以生产入库单为例介绍:

1、 生产入库单提交操作上注册python插件,增加校验器,如下图所示:

  2、python插件代码如下(注意格式:通过tab调整,不要使用空格):

import clr
clr.AddReference("System")
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.Metadata.EntityElement import*
from Kingdee.BOS.Core.Validation import*
def OnPreparePropertys(e):
    e.FieldKeys.Add("FSerialNo")
    e.FieldKeys.Add("FSNQty")
def OnAddValidators(e):
    validator=ValidateSN()
    validator.EntityKey="FBillHead"
    validator.AlwaysValidate=True
    e.Validators.Add(validator)
class  ValidateSN(AbstractValidator):
def Validate(self,dataEntities,validateContext,ctx):
    for bill in dataEntities:
        billEntrys=bill.DataEntity["Entity"]
        billId=bill["Id"]
        for entry in billEntrys:
            mseq=(entry["Seq"])
            snQty=(entry["SNQty"])
            material=entry["MaterialId"]
            stocdate = material["MaterialStock"][0]
            snm=stocdate["IsSNManage"]                              
            if (snm==True and  snQty > 0):                                        
                snEntrys=entry["PRD_INSTOCKMTRLSERIAL"]
                snCount=0
                for snentry  in snEntrys:
                    serialNo=(snentry["SerialNo"])                      
                    if (len(serialNo) > 0):
                        snCount=snCount+1                                     
                if(snCount != snQty ):
                    msg="生产入库单第"+str(mseq)+"行分录对应序列号表体序列号未全部录入,不允许提交"                                   
                    info=ValidationErrorInfo("",str(billId),bill.DataEntityIndex,mseq,str(billId),msg,"",ErrorLevel.Error)validateContext.AddError(None,info)


如何实现库存单据在提交时校验序列号必录

问题描述:目前星空系统中针对启用序列号管理的物料,库存单据保存时针对序列号必录的校验是交互式的,可以选择是跳过这个校验继续保存单据...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息