出库时的 stock.move.line 是如何确定的
用通俗但不失源码细节的方式,讲清楚 Odoo 出库时 stock.move.line 的生成逻辑:从 stock.move、stock.quant、移除策略到 lot/serial 拆行。
CATEGORY FOCUS
聚合 Odoo 开发基础、源码理解、ORM、模型、视图、安全与扩展实践。
TOPIC PICKS
用通俗但不失源码细节的方式,讲清楚 Odoo 出库时 stock.move.line 的生成逻辑:从 stock.move、stock.quant、移除策略到 lot/serial 拆行。
从 Odoo 19 的 web onchange 实现出发,解释 onchange 为什么本质上是在表单草稿上做推演,而不是在数据库里真正写记录;也讲清它和 create/write/constraints 该如何分工。
很多人以为 stored compute 字段会像普通 Python 赋值一样立即改完、立即稳定。但从 fields.py 的 compute_value 和 models.py 的 modified、_recompute_recordset 看,Odoo 真正维护的是一条“依赖标记 -> 加入待重算 -> 适时 flush/recompute”的管线。
related 字段很方便,但很多人对它的默认权限语义理解并不完整。本文从 fields.py 默认值、测试模型与 read_group 测试讲清 related_sudo 为什么会影响展示、搜索与分组边界。
很多人知道 Odoo 有 XPath 继承,却不清楚多个扩展视图一起叠上来时,系统到底按什么顺序组合。本文从 ir_ui_view.py 源码讲清 priority、primary mode、深度优先遍历与常见误判。
很多人以为工单计时只是车间看板数据,但在 Odoo 里,duration 会继续影响 performance、expected duration 乃至工序成本。本文把这条链讲清楚。
制造里的 backorder 不只是“剩余数量另起一张单”,它还会拆 move、搬 reservation、续接 work order。本文把 MO backorder 讲清楚。