电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

组装拆卸单BOM展开携带子件货主类型的二开处理(Python实现)

来源:金蝶云社区作者:金蝶2024-09-165

组装拆卸单BOM展开携带子件货主类型的二开处理(Python实现)

一、【需求问题】

组装拆卸时,按BOM展开后,物料清单中货主类型为客户的子项物料没有携带到组装拆卸单上,当前携带的是成品表的货主类型。 

image.webp


二、【功能分析】

组装拆卸单的表单插件,对BOM展开的触发操作,将当前BOM展开后子件的货主类型和货主默认赋值为成品表的货主类型和货主,并没有采用清单上设置的子项物料货主类型和货主

当前标准插件无法禁用,只能是二开插件在BOM操作触发后,再获取到BOM子项的信息,将展开后的子件物料数据中货主类型和货主重新做赋值。


之前对于组装拆卸单的二开帖子参考:

1、组装拆卸单BOM展开,成品表仓库仓位赋值到子件表仓库仓位

2、Python继承AbstractValidator实现校验器案例 


核心代码Py: 


import clr 
clr.AddReference("System")
clr.AddReference("Kingdee.BOS")
clr.AddReference("Kingdee.BOS.Core")
clr.AddReference("Kingdee.BOS.App")
clr.AddReference('Kingdee.BOS.ServiceHelper')
clr.AddReference('Kingdee.BOS.DataEntity')
clr.AddReference("Kingdee.BOS.App.Core")
clr.AddReference('Kingdee.BOS.ServiceHelper')
clr.AddReference("Kingdee.BOS.Contracts")

from System import *
from System import StringComparison
from Kingdee.BOS.Core.DynamicForm import *
from Kingdee.BOS.Core.Metadata.FieldElement import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
from System.Collections.Generic import *
from Kingdee.BOS.ServiceHelper import * 
from Kingdee.BOS.Contracts import *
from Kingdee.BOS.App.Core import *

def AfterEntryBarItemClick(e):
    if e.BarItemKey.Equals("TBBOMEXPAND", StringComparison.OrdinalIgnoreCase):
        viewService = ViewService()
        metaService = MetaDataService()
        
        formMetaData = metaService.Load(this.Context, "ENG_BOM")
        products = this.View.Model.DataObject["ProductEntity"]
        for i in range (0, products.Count):
            refBomID = Convert.ToInt64(products[i]["RefBomID_Id"])
            if refBomID == 0:
                continue
                
            bomObj = viewService.LoadSingle(this.Context, refBomID, formMetaData.BusinessInfo.GetDynamicObjectType())
            if bomObj == None:
                continue
                
            subItems = products[0]["STK_ASSEMBLYSUBITEM"]
            bomTreeEntity = bomObj["TreeEntity"]
            for j in range (0, subItems.Count):
                materialId = Convert.ToInt64(subItems[j]["MaterialIDSETY_Id"])
                dySubResult = filter(lambda x: x["MATERIALIDCHILD_Id"] == materialId, bomTreeEntity)
                dySub = List[object](dySubResult)
                if dySub.Count > 0:
                    if dySub[0]["OWNERTYPEID"] == "BD_Customer":
                        subItems[j]["OwnerTypeIDSETY"] = Convert.ToString(dySub[0]["OWNERTYPEID"])
                        #subItems[j]["FOwnerIDSETY_Id"] = 0 #Convert.ToInt64(dySub[0]["OWNERID_Id"])
                        this.Model.SetValue("FOwnerIDSETY", Convert.ToInt64(dySub[0]["OWNERID_Id"]), j);

          

C#:

public override void AfterEntryBarItemClick(AfterBarItemClickEventArgs e)
{
    switch (e.Ba

组装拆卸单BOM展开携带子件货主类型的二开处理(Python实现)

一、【需求问题】组装拆卸时,按BOM展开后,物料清单中货主类型为客户的子项物料没有携带到组装拆卸单上,当前携带的是成品表的货主类型。 ...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信