很多仓库用户会问:我只是录了数量,为什么系统突然多出几条质检?答案在 stock.move.line,不在质检按钮本身。
这篇文章主要参考:
enterprise/quality_control/models/stock_move_line.pyenterprise/quality_control/models/quality.py
一、企业版把“数量出现”当成质检候选时刻
stock.move.line.create() 里,记录创建完就会调用 _filter_move_lines_applicable_for_quality_check()._create_check()。默认过滤条件很简单:quantity != 0。写操作也一样,只要改动里带了 quantity,且当前 move line 还没被拣、也没有已有检查,就会尝试建检。
二、quality point 匹配并不是只看产品
_create_check() 先通过 quality.point._get_domain(..., measure_on='move_line') 拿到候选点,再做三层归并:明确绑定具体产品、通过产品分类命中的规则,以及没限定产品/分类但限定作业类型的“全产品规则”。所以现实中看到“这条货为什么也出了质检”,很多时候不是误触发,而是被分类级或全局级质检点覆盖到了。
三、生成的质检记录为什么和 lot 关系这么紧
_get_check_values() 在创建时会直接写入 product_id、picking_id、move_line_id、lot_name 与 company_id。后续 quality.check 又会通过 move_line_id 计算 lot、数量与抽检字段。库存质检不是挂在“商品概念”上,而是挂在一次具体数量登记事实上。
四、结论
企业版库存质检的设计思路很清楚:不是等人“想起来要检”,而是在库存 move line 真正带上数量的那一刻,把质检义务自动绑定上去。
DISCUSSION
评论区