企业 PLM

Odoo 企业版 PLM 为什么不是“BOM 改版留个版本号”而已:ECO rebase、approval stage 与新版本应用链路讲透

mrp_plm 真正解决的是工程变更在制造现场如何受控生效:旧 BOM 上又发生了变化怎么办,ECO 之间如何 rebase,审批阶段怎么卡住,最终何时

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

制造里的改版最怕“图纸改了,但现场到底按哪一版干”没人说得清。PLM 的价值,就是把这件事从口头约定变成受控状态机。

这篇文章主要参考了以下企业版源码与测试入口:

  • enterprise/mrp_plm/models/mrp_bom.py
  • enterprise/mrp_plm/models/mrp_eco.py
  • enterprise/mrp_plm/tests/test_mrp_plm.py

一、这个模块真正解决的不是表面动作,而是跨模块语义对齐

mrp_plm 真正解决的是工程变更在制造现场如何受控生效:旧 BOM 上又发生了变化怎么办,ECO 之间如何 rebase,审批阶段怎么卡住,最终何时 apply 成新的版本。

如果只看 UI,很容易把它理解成一个按钮、一张表或一个新视图。但从 mrp_plm 的模型、测试和桥接关系看,官方真正关心的是:前台动作发生以后,后端主链路能不能继续保持同一套业务语义

二、核心机制链路

1. BOM 变更先进入 ECO,而不是直接改现行版

mrp_production.action_create_eco()、mrp_bom.apply_new_version() 与 mrp_eco 模型说明工程变更先被封装成 ECO,再决定何时入主线。

2. rebase 解决并行变更冲突

tests 里 test_rebase_with_old_bom_change / previous_eco_change 说明,多个 ECO 并行时不能只看谁先保存,而要把后来的改动重放到新的基线上。

3. approval stage 决定谁能放行版本

MrpEcoApproval / Stage 的计算字段和 awaiting_my_validation 搜索说明审批并不是备注,而是版本推进的闸门。

三、最容易被误解的边界

  • 把 PLM 当成 BOM 备注历史,直接改现行 BOM。
  • 多个 ECO 并行时不做 rebase,最后改动互相覆盖。
  • 审批阶段只是“走流程”,却不真正限制 apply new version。

这些误解之所以常见,往往是因为大家只看见“入口动作”,却没有继续追到模型方法、状态切换、聚合口径和测试场景里去看 Odoo 究竟把什么当成事实、把什么当成辅助信息。

四、实施与排查时,建议按这个顺序看

  • 先查变更是否以 ECO 形式创建。
  • 再核对 rebase 后 BOM line / operation 是否按预期重放。
  • 最后检查审批阶段与 awaiting_my_validation 是否卡住了不该放行的版本。

对企业版功能来说,排查顺序非常重要。很多看似是“结果不对”的问题,真正根因往往更早:字段上下文没带过去、桥接对象没建、状态机没推进、或者权限/公司边界一开始就错了。

五、结论

PLM 真正守住的,是工程变更从提出、并行、审批到投产的整条版本控制链,而不只是“BOM 多了个 revision 字段”。

DISCUSSION

评论区

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