制造工单

Odoo 制造工单为什么不是 MO 的附件:Work Orders、Operations 和工位排产到底怎么串起来

很多人以为制造工单只是 MO 下面的几个步骤,但在 Odoo 里,Work Order 实际承载的是工位执行、依赖关系和现场节奏。本文把它讲清楚。

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

先说结论

在 Odoo 里,MO 负责表达“要生产什么”,而 Work Order 负责表达“现场具体怎么做”。

你可以把它记成:

MO 是整单视角,Operation 是工艺设计,Work Order 是实际执行单元。

所以工单绝不是 MO 下随便挂几个步骤那么简单。


Operation 和 Work Order 不是一回事

很多人第一次接触制造,会把这两个词混在一起。

但它们分别对应两层:

  • Operation:定义在 BOM / Routing 上的工艺步骤模板
  • Work Order:MO 确认后,根据这些步骤实际长出来的执行记录

也就是说,Operation 更像蓝图,Work Order 更像施工任务。


官方源码里最关键的关系

从源码可以看到:

  • mrp.bomoperation_ids
  • mrp.productionworkorder_ids
  • mrp.workorder 挂着 operation_idworkcenter_id

这说明系统设计非常明确:

  1. 工艺步骤先定义在 BOM 上
  2. MO 落地后再实例化成具体工单
  3. 工单才进入工位、时间、执行和阻塞关系

为什么工单对制造现场这么重要

因为制造现场最关心的不是“有一张 MO”,而是:

  • 下一步哪个工位做
  • 哪个步骤被前序阻塞
  • 实际做了多久
  • 原料该在哪个步骤消耗
  • 副产品在哪个步骤产出

这些都更接近 Work Order,而不是 MO 头信息。

所以 Odoo 把很多执行层字段都放到了工单这边。


阻塞关系为什么很关键

mrp.workorder 里,官方维护了:

  • blocked_by_workorder_ids
  • needed_by_workorder_ids

这说明 Odoo 并不是把制造步骤当成线性文本,而是真把它当成有依赖约束的执行图

所以某个工单不能开工,不一定是系统卡你,而可能是前置工单还没完成。


为什么工位和工单强绑定

因为 Operation 只是“做什么”,工位还解决“在哪做”。

源码里 operation_id 改变时,会联动 workcenter_id、名称等信息。

这背后的含义是:

制造不是只有工艺顺序,还要落到实际产能资源。

一旦进入工位,就会牵涉:

  • 冲突
  • 计划开始/结束时间
  • 产能占用
  • 实际时长与成本模式

新手最容易误解的 4 件事

1. 以为 Work Order 只是 MO 的子表

其实它承载的是现场执行语义。

2. 以为 Operation 和 Work Order 是同义词

前者偏模板,后者偏实例。

3. 以为制造排程只看 MO 时间

真正落地时更常看工位与工单冲突。

4. 以为原料消耗和副产品只跟 MO 有关

很多执行细节其实和具体 operation / workorder 绑定。


一句话记忆法

Operation 负责定义工艺,Work Order 负责执行工艺;MO 管整单,工单管现场。

DISCUSSION

评论区

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