出库时的 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 拆行。
可以顺着继续读的相邻方向
基于 helpdesk_stock 测试,讲清工单退货按钮背后如何判断可退货、如何跨 commercial partner 聚合,以及 open backorder 时为何仍能退。
条码作业里的 package 不只是一个编码。stock.package 会先走 GS1 预处理搜索,再按 reusable/空库位筛 usable packages;stock.move.line 还要维护 outermost_result_package_id 来表达整包再入包。
stock.picking.type 上的条码配置不是一堆独立开关。mandatory/optional/no 的组合会联动 show_barcode_validation、barcode_validation_full 与位置扫描约束,甚至在内部调拨上直接抛错。
post_barcode_process() 的核心不是收尾,而是重算事实:已拣未完的 move 会拆成已完成与待回单两部分,条码前端额外生成的 move line 还会触发过度预留数量截断。
stock_enterprise 的 stock.report 不是普通 ORM 模型,而是一张手工拼接的 SQL 视图:延迟、周期、是否补单和产品维度都在这里被重新定义。
quality_control_picking_batch 处理的不是简单的批量显示,而是 batch 上 quality_check_todo 聚合、split 后 obsolete check 清理与 operation/product 检查重建。