企业 制造 / 分包

Odoo 企业版分包制造报表为什么不能直接套普通 MO 报表:分包服务 join、组件归集与总成本边界

分包制造的总成本不是普通 MO 成本字段换个名字;企业版额外 join 了分包 stock move 与服务价格,再把这部分成本并入 mrp.report。

企业 制造
进阶 开发者 1 分钟阅读
0 评论 0 点赞 0 收藏 5 阅读

很多人看分包制造报表时,会下意识认为:既然也是 MO,那直接沿用普通制造报表的总成本字段就行。

mrp_subcontracting_account_enterprise 明确告诉你不行。它在 mrp.report 上新增 subcontracting_costunit_subcontracting_cost,并重写 _select_total_cost(),把 sub_cost.total 加进总成本。也就是说,普通制造报表的总成本定义,到了分包场景里是不完整的。

真正关键的是 _from() 里的额外 join。模块先从成品 stock_move 出发,再通过 stock_move_move_rel 追到对应的分包 move,筛出 sm_sub.is_subcontract = 't' 的记录,最后用 sm_sub.price_unit * sm_fin.product_qty 汇总分包成本。这里的含义非常明确:企业版不是去猜一个“分包费用字段”,而是从真实分包物流关系和价格事实里拼出成本。

_select() 还把这部分成本乘上汇率表,并结合 cost_share.byproduct_cost_shareprod_qty.product_qty 算出单位分包成本。换句话说,分包报表不仅要知道总共花了多少,还要知道在副产品分摊后,每单位成品到底承担了多少分包费用。

这就是为什么很多团队会觉得分包成本“算得和想象不一样”。如果你脑子里只有采购服务费这一条线,就会忽略它是如何和成品 move、产量、汇率、byproduct share 一起被解释的。企业版这里做的是报表级建模,而不是采购单级取数。

实施时有两个高频误区:一是把分包采购价当成唯一成本来源,忽略成品产量与副产品分摊;二是看到 mrp.report 里已有 total_cost,就以为所有制造模式都能共用同一口径。前者会低估成本,后者会把分包报表做成假统一。

所以企业版分包制造报表的关键,在于它承认分包是一条不同于普通工序制造的成本链,因此必须用专门的 join 把这条链补进报表模型。

DISCUSSION

评论区

想参与讨论?先 登录 再发表评论。
还没有评论,你可以成为第一个留言的人。