调拨单需验证质检单数量方法优化

This commit is contained in:
yuxianghui
2025-06-24 16:59:38 +08:00
parent 579b7138e7
commit f5ed94866b

View File

@@ -59,12 +59,13 @@ class StockPicking(models.Model):
“警告存在不合格产品XXXX n 件、YYYYY m件继续调拨请点“确认”否则请取消 “警告存在不合格产品XXXX n 件、YYYYY m件继续调拨请点“确认”否则请取消
""" """
try: try:
self.ensure_one()
context = self.env.context context = self.env.context
if not context.get('pinking_checkout_quality'):
picking_to_quality = self._get_picking_to_quality() picking_to_quality = self._get_picking_to_quality()
if not picking_to_quality: return False if not picking_to_quality: return False
need_quality_val = self.get_need_quality_line(picking_to_quality) need_quality_val = self.get_need_quality_line(picking_to_quality)
if (not context.get('pinking_checkout_quality') and if any(line.get('fail_check_ids') for line in need_quality_val):
any(line.get('fail_check_ids') for line in need_quality_val)):
# 回滚事务,为二次确认/取消做准备 # 回滚事务,为二次确认/取消做准备
self.env.cr.rollback() self.env.cr.rollback()
# 获取存在失败的 质检单 调拨单明细行 # 获取存在失败的 质检单 调拨单明细行
@@ -119,9 +120,11 @@ class StockPicking(models.Model):
check_ids_2_done = check_ids_2.filtered(lambda qc: qc.quality_state in ('pass', 'fail')) check_ids_2_done = check_ids_2.filtered(lambda qc: qc.quality_state in ('pass', 'fail'))
check_ids_2_fail = check_ids_2.filtered(lambda qc: qc.quality_state == 'fail') check_ids_2_fail = check_ids_2.filtered(lambda qc: qc.quality_state == 'fail')
check_ids_2_none = check_ids_2.filtered(lambda qc: qc.quality_state == 'none') check_ids_2_none = check_ids_2.filtered(lambda qc: qc.quality_state == 'none')
if len(check_ids_2) >= pre_done_qty > len(check_ids_2_done): # 每一类的“总单数”=【调拨单_需求】时则已处理的质检单“单数”≥“预完成数量”时可执行调拨单验证
if len(check_ids_2) >= move_id.product_uom_qty and len(check_ids_2_done) < pre_done_qty:
need_done_check_ids += check_ids_2_none need_done_check_ids += check_ids_2_none
elif len(check_ids_2) < pre_done_qty and len(check_ids_2_done) == 0: # 每一类的“总单数”<【调拨单_需求】时则已处理的质检单“单数”≥0时可执行调拨单验证
elif len(check_ids_2) < move_id.product_uom_qty and len(check_ids_2_done) == 0:
need_done_check_ids += check_ids_2_none need_done_check_ids += check_ids_2_none
if check_ids_2_fail: if check_ids_2_fail:
fail_check_ids += check_ids_2_fail fail_check_ids += check_ids_2_fail
@@ -161,10 +164,16 @@ class StockPicking(models.Model):
2、若调拨单任意行的0<【完成】<【需求】,且则验证时将会话是否需创建欠单 2、若调拨单任意行的0<【完成】<【需求】,且则验证时将会话是否需创建欠单
---->此时“预完成数量”=【完成】 ---->此时“预完成数量”=【完成】
""" """
if all(move_id.quantity_done == 0 for move_id in self.move_ids_without_package): # if all(move_id.quantity_done == 0 for move_id in self.move_ids_without_package):
pre_done_qty = [{'move_id': move_id, 'pre_done_qty': move_id.reserved_availability} for move_id in # pre_done_qty = [{'move_id': move_id, 'pre_done_qty': move_id.reserved_availability} for move_id in
self.move_ids_without_package] # self.move_ids_without_package]
# else:
# pre_done_qty = [{'move_id': move_id, 'pre_done_qty': move_id.quantity_done} for move_id in
# self.move_ids_without_package]
pre_done_qty = []
for move_id in self.move_ids_without_package:
if move_id.quantity_done > 0:
pre_done_qty.append({'move_id': move_id, 'pre_done_qty': move_id.quantity_done})
else: else:
pre_done_qty = [{'move_id': move_id, 'pre_done_qty': move_id.quantity_done} for move_id in pre_done_qty.append({'move_id': move_id, 'pre_done_qty': move_id.reserved_availability})
self.move_ids_without_package]
return pre_done_qty return pre_done_qty