diff --git a/addons/repair/models/repair.py b/addons/repair/models/repair.py index b6f300d4c23..cf74b76adbc 100644 --- a/addons/repair/models/repair.py +++ b/addons/repair/models/repair.py @@ -385,6 +385,8 @@ class Repair(models.Model): no_service_policy = 'service_policy' not in self.env['product.template'] #SOL qty delivered = repair.move_ids.quantity for repair in self: + if all(not move.picked for move in repair.move_ids): + repair.move_ids.picked = True if repair.sale_order_line_id: ro_origin_product = repair.sale_order_line_id.product_template_id # TODO: As 'service_policy' only appears with 'sale_project' module, isolate conditions related to this field in a 'sale_project_repair' module if it's worth @@ -392,6 +394,7 @@ class Repair(models.Model): repair.sale_order_line_id.qty_delivered = repair.sale_order_line_id.product_uom_qty if not repair.product_id: continue + if repair.product_id.product_tmpl_id.tracking != 'none' and not repair.lot_id: raise ValidationError(_( "Serial number is required for product to repair : %s", @@ -412,6 +415,7 @@ class Repair(models.Model): 'partner_id': repair.partner_id.id, 'location_id': repair.location_id.id, 'location_dest_id': repair.location_id.id, + 'picked': True, 'move_line_ids': [(0, 0, { 'product_id': repair.product_id.id, 'lot_id': repair.lot_id.id, @@ -436,7 +440,6 @@ class Repair(models.Model): move_id = repair_move.get(repair.id, False) if move_id: repair.move_id = move_id - self.sale_order_line_id.move_ids.picked = True all_moves = self.move_ids + product_moves all_moves._action_done() diff --git a/addons/repair/tests/test_repair.py b/addons/repair/tests/test_repair.py index 04d71f65c3a..9001fa3d417 100644 --- a/addons/repair/tests/test_repair.py +++ b/addons/repair/tests/test_repair.py @@ -414,7 +414,6 @@ class TestRepair(common.TransactionCase): repair_order.action_repair_start() for line in repair_order.move_ids: line.quantity = line.product_uom_qty - repair_order.move_ids.picked = True repair_order.action_repair_end() self.assertTrue(float_is_zero(order_line.qty_delivered, 2)) self.assertEqual(float_compare(sol_part_0.product_uom_qty, ro_line_0.quantity, 2), 0)