很多仓库上线条码时,最容易出的问题不是扫描枪,而是配置开关之间的相互作用没有想清楚。
这篇文章主要参考:
enterprise/stock_barcode/models/stock_picking_type.py
一、条码配置不是“打勾即可”,而是一套联动矩阵
企业版在 stock.picking.type 上加了不少条码字段:restrict_scan_product、restrict_put_in_pack、restrict_scan_tracking_number、restrict_scan_source_location、restrict_scan_dest_location、barcode_validation_full、barcode_validation_after_dest_location、barcode_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
评论区