企业 条码规则

Odoo 企业版条码作业规则为什么常常“互相牵连”:拣货类型配置、最终校验开关与扫描约束组合

stock.picking.type 上的条码配置不是一堆独立开关。mandatory/optional/no 的组合会联动 show_barcode_validation、barcode_validation_full 与位置扫描约束,甚至在内部调拨上直接抛错。

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

很多仓库上线条码时,最容易出的问题不是扫描枪,而是配置开关之间的相互作用没有想清楚。

这篇文章主要参考:

  • enterprise/stock_barcode/models/stock_picking_type.py

一、条码配置不是“打勾即可”,而是一套联动矩阵

企业版在 stock.picking.type 上加了不少条码字段:restrict_scan_productrestrict_put_in_packrestrict_scan_tracking_numberrestrict_scan_source_locationrestrict_scan_dest_locationbarcode_validation_fullbarcode_validation_after_dest_locationbarcode_validation_all_product_packed。如果把它们当成彼此独立的开关,实施时几乎一定会踩坑。

二、show_barcode_validation 说明“最终校验区是否值得显示”

_compute_show_barcode_validation() 会把多个不可见条件折起来:强制扫产品时隐藏 full validation,没有 lot/serial 权限或包装规则不对时隐藏打包校验区,没有多库位权限或目的库位规则不匹配时隐藏位置校验项。只要不是全部隐藏,才显示最终校验分组。

三、barcode_validation_full 并不总能生效

_get_barcode_config() 里,它会被强制改成 not restrict_scan_product and barcode_validation_full。只要要求先扫产品,系统就不允许“什么都还没扫就整单 final validate”。

四、内部调拨还有一个硬约束

_check_restrinct_scan_locations() 明确禁止一种组合:内部调拨来源库位必须扫描,但目的库位却只是分组选填。这会导致流向失真,所以直接抛 UserError

五、结论

企业版条码配置的难点不在字段多,而在这些字段共同定义了一种作业纪律。理解它们的联动关系,远比背每个开关名字更重要。

DISCUSSION

评论区

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