企业 库存 / 条码质检

Odoo 企业版库存条码质检为什么要“先拣后检”:check_state、barcode_trigger 与 move line 可检边界

围绕 stock_barcode_quality_control 说明条码端为什么要把 move line 先标记 picked,再允许按扫码上下文触发质量检查。

企业 库存
进阶 开发者 1 分钟阅读
0 评论 0 点赞 0 收藏 4 阅读

仓库现场最容易问的一句话是:既然要做质检,为什么系统不让我一开始就检?企业版 stock_barcode_quality_control 的回答很明确——在条码场景里,质检并不独立于拣货动作,而是建立在“这条 move line 已经进入实际执行”之上的。

stock.move.line._get_fields_stock_barcode() 会把 check_state 带进条码初始数据,让前端知道每条行当前有没有质检状态可显示。但可显示不等于可触发,真正的边界在 _is_checkable_from_context()

当上下文里存在 barcode_trigger 时,源码会额外要求该行已经 picked。这说明系统认为:扫码触发的质检应该发生在你真正拣到、录到或确认到那条行之后,而不是在还没碰到实物时先做一张抽象检查单。

同样地,stock.picking._get_fields_stock_barcode() 会把 quality_check_todo 也带进条码初始状态,让 picking 层知道还有多少检查没做完。于是库存动作和质量动作在同一个客户端状态里发生对接:行级是否可检,看 picked 与上下文;单据级是否还欠检,看 quality_check_todo

这条链说明企业版把质量检查嵌进了条码执行流,而不是挂成一个平行待办。仓库不是先把所有动作做完再统一补检,也不是先把检做完再去碰货,而是在“实物已进入扫描事实”之后接上质量环节。

如果你发现某条 move line 明明有质检点却在条码端点不开,优先看是不是还没被标记 picked、是不是进入了带 barcode_trigger 的路径、以及初始字段里是否真的带了 check_state。这些条件缺一不可。

DISCUSSION

评论区

想参与讨论?先 登录 再发表评论。
还没有评论,你可以成为第一个留言的人。