仓库条码里最容易被低估的对象之一,就是 package。很多项目把它当成“带条码的箱子”,而企业版明显不是这么设计的。
这篇文章主要参考:
enterprise/stock_barcode/models/stock_package.pyenterprise/stock_barcode/models/stock_move_line.pyenterprise/stock_barcode/models/stock_picking.py
一、包装搜索先过 GS1 预处理,不是简单 name 等值查询
stock.package._search() 会先走公司条码规则的 GS1 预处理。这说明企业版默认把 package 看成条码规则系统的一部分,而不是普通文本字段。对于 GS1 场景,这一步决定了扫描结果能不能被正确解释成 package 标识。
二、条码前端不会把所有包裹全量塞给用户
_get_usable_packages() 只取两类包:package_use = reusable 的包,和当前没有 location_id 的空包。同时还受 stock_barcode.usable_packages_limit 参数限制,并可结合 pack_locs 把当前作业相关位置上的包补进来。企业版非常在意前端缓存规模和现场可用性,不会为了“查得全”把终端拖慢。
三、结果包与外层包不是一回事
stock.move.line 新增的 outermost_result_package_id 不是当前行直接放进的 result_package_id,而是更外层包裹关系。配套的 inverse 逻辑说明两种场景:行还没进包时可直接按外层包打包;行已经在一个包里时,则支持“包再放进更大的包”。
四、结论
企业版条码里的 package 不是静态主数据,而是“可识别、可复用、可嵌套、可缓存”的物流容器对象。理解这一点,包装流程设计才不会停留在“打印一个箱码”那么浅的层次。
DISCUSSION
评论区