生产订单下推生产汇报单完成数量为零(即仅汇报工时)时,不携带生产订单序列号到生产汇报单二开方案
需求描述:生产订单单据类型勾选生产订单指定序列号且生产订单上维护好序列号后,生产订单下推生产汇报单:(1)二开增加单据转换规则设置汇报单完成数量为0(即不携带生产订单数量仅汇报工时)时,不携带生产订单的序列号到生产汇报单;(2)正常下推携带生产订单数量到汇报单完成数量时,又可以正常携带生产订单的序列号。
解决方案:单据转换规则注册python插件实现,具体如下:
(1)二开新增加的单据转换规则中不要配置序列号单位数量字段的映射(或者增加表单服务策略将序列号单位数量设置为0);
(2)按截图方式在单据转换规则插件策略中注册如下python插件实现当序列号单位数量为0(即完成数量为0)时,如果序列号表体存在数据,则清空序列号表体:
python示例代码如下:
import clr
clr.AddReference("System")
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Kingdee.BOS.App')
clr.AddReference('Kingdee.BOS.DataEntity')
clr.AddReference('Kingdee.BOS.BusinessEntity')
clr.AddReference('Kingdee.BOS.Contracts')
clr.AddReference('Kingdee.BOS.ServiceHelper')
clr.AddReference('Kingdee.BOS.App.Core')
from System import*
from System import StringComparison
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.Bill import *
from Kingdee.BOS.Orm.DataEntity import *
from Kingdee.BOS.App import *
from Kingdee.BOS.App.Core import *
from Kingdee.BOS.App.Data import *
from Kingdee.BOS.Contracts import *
from Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn import*
from Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn.Args import*
from Kingdee.BOS.ServiceHelper import *
from System.Collections.Generic import *
def AfterConvert(e):
entryEntity = e.Result.FindByEntityKey("FEntity");
for entity in entryEntity:#循环处理
billObj=entity.DataEntity
snQty=billObj["SNQty"]
if(snQty > 0):
continue
serialDatas =billObj["SerialSubEntity"]
serialEntrys=0;
for serialData in serialDatas:
serialEntrys=serialEntrys+1
if(serialEntrys > 0):#存在携带下来的序列号时则清空
serialDatas.Clear()
说明:(1)由于python对于合格要求比较严格,因此可以使用Tab键按如上截图调整代码缩进,最好不要使用空格键以防缩进不一致;
(2)插件确定保存时如果弹出如下提示信息,则可以忽略直接点击确定即可。
(3)如果任何情况下都不需要携带生产订单的序列号到生产汇报单(即可能存在分批汇报在汇报单扫描录入序列号的情况),此时不需要二开插件,在生产管理参数中勾选“汇报单不携带源单序列号”即可。
生产订单下推生产汇报单完成数量为零(即仅汇报工时)时,不携带生产订单序列号到生产汇报单二开方案
本文2024-09-23 03:22:17发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-158425.html