出库时的 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 拆行。
可以顺着继续读的相邻方向
stock_barcode 的主菜单扫描链路真正难点,不在识别出一个条码,而在 GS1、别名规则、库位权限与 picking/product/package/lot 多路路由之间如何稳定落到正确动作。
很多人知道 operation type 有 At Confirmation、Manual、By Date 三种预留方法,但真正容易出事的是“改配置之后,老 move 的 reservation_date 会不会被回写、调度器按什么顺序抓、backorder 会继承什么策略”。本文从队列视角把这条链路讲透。
很多人把 cluster picking 理解成“batch transfer 再加几个箱格”。但从仓库执行语义看,batch、wave、cluster 解决的是三层不同问题:作业容器、放货节奏、以及一名拣货员如何把多张订单安全拆进多个格口。本文把这三层边界讲透。
很多人能看懂库存数量,却总说不清 Odoo 为什么把价值主链挂在 stock.move 上,而不是直接挂在 quant 上。本文从 stock_account 里的 _action_done、_set_value、_create_account_move 出发,把数量流转与财务表达之间的边界讲透。
很多人把 Odoo 的 batch transfer / wave 理解成“把多张 picking 打个包”。但官方源码里的重点其实是:哪些单能合批、批次状态如何跟随明细变化、空单为什么会在校验时被自动摘出,以及 batch 和 wave 为什么不能混。本文把这套逻辑讲透。
很多人第一次接触 Odoo storage category,会把它理解成“给库位加一个容量限制”。但官方源码里的设计更细:它同时约束重量、产品容量、包裹类型容量,以及是否允许空位外的新产品进入。本文把这套逻辑讲透。