服务热线:4008-707-110 进销存、财务、生产、CRM、小程序商城、电商对接,24小时手机/微信:13570008008!

联系我们

销售热线: 4008-707-110

咨 询QQ: 1982121

手机微信: 13570008008

E-mail: kingjdy@126.com

网 址: http://www.kingjdy.com

首页 > 生产管理知识

生产齐套分析二次开发下推调拨单/生产领料单

齐套分析单二开下推直接调拨单

问题背景:齐套分析单的调拨业务是金蝶云星空/生产制造的一个业务场景,旨在完成生产订单齐套分析场景之后,自动对接生产订单中调拨材料的调拨流程。由于齐套分析单与直接调拨单的上游单据生产用料清单并没有直接的上下有关系,这是一个通过冗余上游数据进行代码下推指定单据的实现案例。

生产模块对接直接调拨单的相关单据上下游关系图

 

实现概要

获取齐套分析子项明细

齐套分析单子项明细为生产齐套分析单经过齐套分析生成的运算结果数据。由于生产齐套分析单并没有控制参与分析的订单数量,单次生成的运算结果会超出树形单据体的承载能力。为了降低生产齐套分析单的单据加载速度,以及提供更为便捷的子项明细过滤查询功能,齐套分析子项明细被设计为独立的单据类数据,通过FID与生产齐套分析单进行关联。仅在生产齐套分析单的单据插件/操作插件内获取数据包并不会包含子项明细的数据,需要通过分析单的单据头内码进行二次取数才能取到分析后的子项明细数据。

QueryBuilderParemeter qp = new QueryBuilderParemeter

{

         FormId = "PRD_MATCHDETAIL",

        SelectItems = SelectorItemInfo.CreateItems(

              "FPPBomEntryId",

              "FPPBomId",

              "FBaseWillTransQty",

              "FWillTransQty"),

        FilterClauseWihtKey = "FID=@maid and FBaseWillTransQty > 0",

};

qp.ExtJoinTables.Add(new ExtJoinTableDescription

{

        TableName = StringUtils.GetSqlWithCardinality(moids.Count, "@moids", 1, true),

        TableNameAs = "ts",

        FieldName = "FID",

        ScourceKey = "FMoIdSub"});

List<SqlParam> p = new List<SqlParam>{

        new SqlParam("@moids",KDDbType.udt_inttable,moids.ToArray()),

        new SqlParam("@maid",KDDbType.Int64,maid)

};

var ret = AppServiceContext.QueryService.GetDynamicObjectCollection(ctx, qp, p);

构造用料清单单据选择集合

齐套分析单子项明细存在用料清单内码的冗余FPPBOMID,FPPBOMENTRYID,通过获取相应的齐套分析单子项明细可以关联获取到对应的用料清单子项,以及构造用料清单的选单集合(List<ListSelectedRow>)。

转换插件干预下推结果的生成

这点参考已有的文章:使用代码实现单据下推

参考案例

条件允许的话,详细实现可以通过反编译标准组件Kingdee.K3.MFG.PRD.App.Core.dll阅读源码,对应实现类:Kingdee.K3.MFG.PRD.App.Core.Preparation.Match.PushTranferDirect.TransferDirectBuilder


生产模块对接生产领料单的相关单据上下游关系图

 

获取齐套分析子项明细

与下推直接调拨单实现雷同,区别于下推填充的数量为本次领料数,本文不再赘述。


 

 

公司:连邦科技(广州)有限公司 全国热线:4008-707-110

地址:广州市番禺区兴南大道368号招商城市主场2栋938

金蝶软件 版权所有 丨 经营许可证号:粤ICP备19145382号