如何实现下推生成检验单按序列号拆划分行后在明细表体显示序列号编码

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

如何实现下推生成检验单按序列号拆划分行后在明细表体显示序列号编码

需求描述按序列号检验时,检验单单据类型中设置了按序列号拆分行,下推生成的检验单想要在明细表体显示使用决策表体的序列号;

解决方案:由于下推生成检验单携带上游单据的序列号以及序列号拆分行都是在单据转换插件中处理的。因此该需求需要二开单据转换插件实现,详细方案如下:

1、在检验单明细表体增加文本类型字段;

2、下推生成检验单的单据转换规则的插件策略处注册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):  

    billEntity = e.Result.FindByEntityKey("FBillHead") 

    for billhead in billEntity:  

        entrys=billhead["Entity"]  

        for entity in entrys:#循环处理    

            serialDatas =entity["PolicyDetail"]    

            snNo=""     

            for serialData in serialDatas:  

                serialObj=serialData["SerialId"]    

                snNo=str(serialObj["Number"])     

            entity["Text"]=snNo


3、补充说明

(1)因为按序列号拆分行是在单据转换插件中把原有表体分录清空又增加的分录,因此不能直接从e.Result中取出表体数据进行上述赋值逻辑(直接从e.Result中获取表体数据不是拆分后的分录,因此无效),所以需要取出整单数据,然后根据单据头数据再重新获取单据体数据处理相关逻辑才可以;

(2)上述代码中Text为明细表体增加的文本字段(用于显示序列号)的绑定实体属性名,这个按实际添加的字段修改即可;

(3)如果上游单据分录的序列号单位数量为1,无论检验单单据类型是否启用按序列号拆分行,都使用上述二开方案进行处理来实现检验单明细表体显示使用决策表体序列号的需求;

(4)如果上游单据分录的序列号单位数量不为1,且检验单单据类型不启用按序列号拆分行时,检验单使用决策表体会存在多个序列号,此时不适合在明细表体显示序列号,一定要显示则需要将使用决策表体的序列号拼接起来才可以,此时可以参考上述示例代码的二开方案(注意:此种情况时上述二开方案示例代码获取的是使用决策表体最后一行的序列号),但是需要注意要修改序列号字段的获取逻辑,详细如下:

def AfterConvert(e):  

    billEntity = e.Result.FindByEntityKey("FBillHead") 

    for billhead in billEntity:  

        entrys=billhead["Entity"]  

        for entity in entrys:#循环处理    

            serialDatas =entity["PolicyDetail"]    

            snNo=""     

            for serialData in serialDatas:  

                serialObj=serialData["SerialId"]    

                snNo=snNo +'/'+str(serialObj["Number"])     

            entity["Text"]=snNo

如何实现下推生成检验单按序列号拆划分行后在明细表体显示序列号编码

需求描述:按序列号检验时,检验单单据类型中设置了按序列号拆分行,下推生成的检验单想要在明细表体显示使用决策表体的序列号;解决方案:...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息