WIP 会计

Odoo 制造在制品为什么不是“等完工再算”:WIP 凭证、自动冲回与组件+工时口径讲透

如果只在完工后看成本,生产过程中的在制品就会变成黑箱。Odoo 的 WIP 向导把已领料和工单工时先挂到在制品,再自动冲回。

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

先说结论

很多团队谈制造成本时,脑子里只有两种状态:

  • 还没完工,不知道成本
  • 完工以后,看成品成本

但在 Odoo 的 mrp_account 里,标准思路并不是一直等到完工,而是允许你先把已经领掉的料 + 已经发生的工单开销挂到 WIP(在制品)上,然后自动冲回。

这意味着:

WIP 不是“最终成本”,而是给财务与生产一个中间时点的真实快照。

向导到底做了什么

mrp.account.wip.accounting 向导会先过滤适用 MO:

  • progress
  • to_close
  • confirmed

也就是说,它面向的是还处在生产中或接近收尾的制造单,而不是只服务于 done 状态。

然后它会自动生成三类会计分录行:

  1. WIP - Component Value
  2. WIP - Overhead
  3. Manufacturing WIP - xxx 对应借方汇总

逻辑上很像:

  • 把组件价值和制造开销先从原口径挪出来
  • 暂时挂到 WIP 账户
  • 到 reversal date 再自动反向冲回

组件价值怎么算

源码里取的是:

  • move_raw_ids.move_line_ids
  • 只看 pickedquantity 不为零
  • date <= 统计时点

这非常重要。

它不是看“理论 BOM 数量”,而是看到这个时点为止,真实已经拣出 / 领出的组件。如果 lot 有独立估值,还会优先取 lot 价格。

所以 WIP 口径偏现实执行,不偏理论配方。

开销为什么来自工单而不是随便估一把

向导里的 overhead_value = productions.workorder_ids._cal_cost(date),说明工时和工序开销来自工单累计,而不是脑补一个统一制造费率。

因此它想表达的是:

  • 你已经做掉多少工序
  • 到某个日期为止产生了多少实际制造开销
  • 这些开销应不应该先挂在在制品上

这比“月底手工估一个在制余额”更贴近执行链。

为什么要自动冲回

WIP 向导不是永久入账,而是配套 reversal_date

确认后,Odoo 会:

  1. 建一张正式分录并 post
  2. 再自动生成反向分录
  3. 在设定的冲回日期 post

这意味着它不是想和最终完工估值重复记账,而是做期间切分

比如月末你想看到在制品快照,次月一开始自动冲回,避免和后续真实完工入账叠加失真。

最常见的误区

1. 以为 WIP 会替代完工成本

不会。它是期间快照,不是最终结算。

2. 以为组件价值按 BOM 定额走

源码看的是已拣料 move line,不是纯理论数量。

3. 以为没有完工就没有可确认的制造开销

只要工单上已有累计成本,WIP 就能体现。

4. 以为冲回是可有可无

没有冲回,你的中间快照就可能跟后续正式估值重叠。

排错顺序

如果 WIP 金额不对,优先按这个顺序查:

  1. 选中的 MO 状态是否在向导适用范围内
  2. 原料 move line 是否 picked 且日期落在统计点前
  3. 工单是否已有可计算成本
  4. 公司 WIP / overhead / valuation 账户是否配置正确
  5. reversal date 是否晚于 posting date

一句话记忆法

Odoo 的制造 WIP 不是“提前算最终成本”,而是“把当前已经真实发生的成本先挂出来,再按期间自动冲回”。

DISCUSSION

评论区

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