出库时的 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 有 Python constraints,却说不清它们到底是在 create 前、写库后、inverse 前还是 compute 后触发。本文结合 models.py 源码,拆开 _validate_fields 在 create / write / stored compute 链路中的真实时机,帮你判断校验到底该放哪一层。
很多人第一次接触 _origin,会把它误解成“修改前的旧值”或“临时记录对应的数据库镜像”。但从 Odoo 源码看,_origin 真正表达的是记录身份背后的原始记录语义,尤其在 new()、x2many 表单编辑与 onchange diff 回传里非常关键。
很多人知道字段上能写 check_company=True,却没真正搞明白什么时候会自动报错、什么时候只是界面 domain 收窄。本文结合 odoo/orm/models.py 和 fields_relational.py,讲清 _check_company_auto、_check_company 与 check_company=True 是怎么一起工作的。
stock_barcode 里的 EPC 编码器处理的不是一个普通格式转换,而是 GS1 element string、company prefix、partition table 与 serial 规则的组合校验。
Website Studio 自动生成模型页面时,真正难点不是复制模板,而是按模型替换占位符、补齐页面视图,并为公开访问建立最小可用 ACL。
web_studio 的 studio_model_create 真正做的是一条后端建模流水线:x_name 种子字段、可选能力扩展、access rights 初始化和 automatic views 全都自动衔接。