出库时的 stock.move.line 是如何确定的
用通俗但不失源码细节的方式,讲清楚 Odoo 出库时 stock.move.line 的生成逻辑:从 stock.move、stock.quant、移除策略到 lot/serial 拆行。
TOPIC PICKS
用通俗但不失源码细节的方式,讲清楚 Odoo 出库时 stock.move.line 的生成逻辑:从 stock.move、stock.quant、移除策略到 lot/serial 拆行。
可以顺着继续读的相邻方向
很多人一看到 Odoo 里出现负库存,就直觉觉得数据坏了。更准确的理解是:系统在用 negative quant 显性表达“这笔出入库的时间顺序还没补齐”。本文把负库存的生成、对冲与修复逻辑讲透。
同样是 buy 规则,Dropship 采购还要看收货地址和 reference_ids。地址一变、引用一变,Odoo 就不能把需求乱合并。
有些问题不是“预留失败”,而是“系统压根还没开始预留”。本文不再泛讲“有货却不分配”,而是专门拆解 free_qty、reservation_date、reservation method、operation type、bypass reservation 等因素,解释 Odoo 为什么会让一张 move 暂时停在 confirmed。
从 sale 与 sale_stock 源码讲清 Odoo 销售订单和销售订单行的 invoice_status 到底怎么算,为什么按订购、按交付、down payment、特殊行与已完成 move 会让状态看起来忽左忽右。
很多人以为点击库存单上的 Validate 就是“直接完成”。但在 Odoo 源码里,button_validate 更像总闸门:它会先做检查、再跑向导、最后才可能进入 _action_done。本文把这条链路讲透。
很多人以为 project_stock 会自动帮项目生成领料单或把库存流程深度嵌进任务里,但官方源码做得其实很克制:它先在 stock.picking 上补一个 project_id,再给项目页挂上指向收货、发货和全部调拨的嵌入动作,并通过 restricted_picking_type_code、default_project_id 和 default_partner_id 把打开后的列表与新建行为限制在项目语义里。