如何实现检验单分录明细存在不合格数量时,对应的检验结果为不合格
需求描述:检验单分录明细存在不合格数量(即使用决策表体存在任意一行的状态为不合格)时,分录明细的检验结果为不合格;
解决方案:由于检验单分录明细修改合格数量、不合格数量或者样本破坏数以及使用决策表体修改数量或者决策状态时都会影响到分录明细的不合格数量,因此可以注册python表单插件,插件中利用上述这些字段的值更新实现该逻辑;
(1)检验单表单插件注册python插件,如下图所示:
(2)python示例代码如下:
import clr
clr.AddReference('System')
clr.AddReference('System.Core')
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Kingdee.BOS.DataEntity')
#clr.AddReference('Kingdee.BOS.App')
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.Bill import*
from System import*
from Kingdee.BOS.Orm.DataEntity import*
from System.Collections import *
from System.Collections.Generic import *
#from Kingdee.BOS.App.Data import *
def DataChanged(e):
fieldkey= str(e.Field.Key)
if (fieldkey=="FQualifiedQty" or fieldkey=="FUnqualifiedQty" or fieldkey=="FSampleDamageQty"):
unquaQty=this.View.Model.GetValue("FUnqualifiedQty",e.Row)
if(unquaQty > 0):
this.View.Model.SetValue("FInspectResult",'2', e.Row)
else:
this.View.Model.SetValue("FInspectResult",'1', e.Row)
this.View.UpdateView("FInspectResult", e.Row)
if(fieldkey=="FPolicyStatus" or fieldkey=="FPolicyQty" ):
policyEntity=this.View.Model.BillBusinessInfo.GetEntity("FPolicyDetail")
policyObjs = this.View.Model.GetEntityDataObject(policyEntity)
entryRow = policyObjs.Parent
rowIndex = entryRow["Seq"] - 1
isQua='1'
unquaQty=entryRow["UnqualifiedQty"]
if(unquaQty > 0):
this.View.Model.SetValue("FInspectResult",'2', rowIndex)
else:
this.View.Model.SetValue("FInspectResult",'1',rowIndex)
this.View.UpdateView("FInspectResult", rowIndex)
说明:(1)由于python对于合格要求比较严格,因此可以使用Tab键按如上截图调整代码缩进,最好不要使用空格键以防缩进不一致;
(2)插件确定保存时如果弹出类似如下的提示信息,则可以忽略直接点击确定即可。
(3)如果是不合格数量答到一定比例时检验结果为不合格,则可以直接在上述代码中进行修改,在获取不合格数量的同时将检验数量一起取出,算出对应的比例,将条件unquaQty > 0 修改为计算出的比例判断条件即可。
如何实现检验单分录明细存在不合格数量时,对应的检验结果为不合格
本文2024-09-23 03:28:12发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-159058.html