我的广告

回答

收藏

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

金蝶云星空 金蝶云星空 2783 人阅读 | 0 人回复 | 2023-06-14

齐套分析单二开下推直接调拨单
问题背景:齐套分析单的调拨业务是金蝶云星空/生产制造的一个业务场景,旨在完成生产订单齐套分析场景之后,自动对接生产订单中调拨材料的调拨流程。由于齐套分析单与直接调拨单的上游单据生产用料清单并没有直接的上下有关系,这是一个通过冗余上游数据进行代码下推指定单据的实现案例。
生产模块对接直接调拨单的相关单据上下游关系图
实现概要
获取齐套分析子项明细
齐套分析单子项明细为生产齐套分析单经过齐套分析生成的运算结果数据。由于生产齐套分析单并没有控制参与分析的订单数量,单次生成的运算结果会超出树形单据体的承载能力。为了降低生产齐套分析单的单据加载速度,以及提供更为便捷的子项明细过滤查询功能,齐套分析子项明细被设计为独立的单据类数据,通过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

, G! u$ D* K# g! _# C2 i' b
生产模块对接生产领料单的相关单据上下游关系图
4 o3 b+ N0 {9 T
实现概要
获取齐套分析子项明细
与下推直接调拨单实现雷同,区别于下推填充的数量为本次领料数,本文不再赘述。
$ {8 B' n/ \# N

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
作者:amen 来源:百知社区 著作权归作者所有。未经允许禁止转载,如需转载请联系作者获得授权。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则