分包附加成本

Odoo 分包制造的附加成本为什么不是手工补差:收货、账单与 extra_cost 口径讲透

分包成品成本里最容易被忽略的是“供应商收多少钱”和“已经开了多少账单”并不是同一个时间点的数据。Odoo 会在收货与账单之间做补齐。

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

先说结论

在分包制造里,很多人最容易犯的错,是把“加工费”理解成一个随便填的附加金额。

mrp_subcontracting_account 的源码告诉你,Odoo 不是这么算的。它会在 _cal_price() 里结合:

  • 已完成的收货数量
  • 已入账的供应商账单价值
  • 尚未入账但报价里仍覆盖的价值

然后再得出 extra_cost

所以这不是拍脑袋分摊,而是在回答:

截至当前收货,这批分包成品到底已经承诺了多少外协加工成本。

为什么只看采购价或只看账单都不够

分包场景天然有时间差:

  • PO 先下了
  • 收货先发生
  • 账单可能晚几天甚至更晚才来

如果你只看 PO 价格,会把未入账承诺和真实结算混在一起;如果你只看账单,又会在账单未到时把分包成品价值低估。

Odoo 这里选择了折中但很实用的方式:

  • 先找已 done 的收货 move
  • 如果该收货是 subcontract receipt
  • 就分别读取账单价值和报价剩余价值
  • 两者合起来除以收货数量,形成 extra_cost

源码里最值得注意的一点

逻辑里不是简单用 price_unit,而是:

  • _get_value_from_account_move(quantity)
  • _get_value_from_quotation(quantity - bill_qty)

这意味着 Odoo 在说:

  1. 已经有正式账单覆盖的那部分,优先信账单
  2. 账单还没覆盖到的剩余数量,再回退用报价 / PO 价值补齐

这比“全部信报价”或“全部等账单”都更贴近真实经营口径。

为什么这对成本分析很重要

分包制造最怕两种错觉:

  • 账单没来,看起来成本很低
  • 账单来了又全额补进,期间毛利忽高忽低

extra_cost 的这种混合口径,目的是让成品价值在收货时就更接近真实,而不是一直等财务把所有外协账都做完。

最常见的误区

1. 以为 extra_cost 就是供应商单价

不完全是。它可能综合了账单与报价剩余部分。

2. 以为账单一来之前系统算不出附加成本

可以算,只是其中一部分来自报价回退。

3. 以为收货数量和成本口径天然同步

不是,正因为不同步,才需要这套补齐逻辑。

4. 以为这只是会计报表细节

它会直接影响分包成品成本理解和后续毛利判断。

排错顺序

如果分包成品成本看起来不对,按这个顺序查:

  1. 最近的 done 收货 move 是否真的是 subcontract receipt
  2. 当前数量有多少已被供应商账单覆盖
  3. 未覆盖部分是否还能从报价 / PO 取值
  4. extra_cost 是否按收货数量正确分摊
  5. 最后再查产品类别、估值方法与自定义成本逻辑

一句话记忆法

Odoo 分包制造的 extra_cost,不是主观加价,而是“账单已确认部分 + 报价尚未结算部分”的组合口径。

DISCUSSION

评论区

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