出库时的 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 拆行。
从 sale_stock 源码看,Odoo 怎样先统计已履约数量,再决定要不要重新发起 procurement,避免确认、改数量、补单时重复造 move。
计算字段不只取决于数据库值,也取决于上下文。公司、日期和货币一变,ORM 就需要知道该重新算哪一份结果。
Odoo 的权限不是一把锁,而是多层门禁:模型访问、记录规则、组继承和 sudo 各管一段,缺一层就会误判。
视图继承不是谁写在后面谁生效,而是按继承树、优先级和选择器逐层合并。理解这条链,才能让 XML 改动更稳。
从 `account.move._compute_date()` 看 Odoo 如何把 invoice_date、date 和 line_ids.date 绑在同一条重算链路上。
很多人以为 project_stock 会自动帮项目生成领料单或把库存流程深度嵌进任务里,但官方源码做得其实很克制:它先在 stock.picking 上补一个 project_id,再给项目页挂上指向收货、发货和全部调拨的嵌入动作,并通过 restricted_picking_type_code、default_project_id 和 default_partner_id 把打开后的列表与新建行为限制在项目语义里。