diff --git a/addons/stock_picking_batch/models/stock_picking.py b/addons/stock_picking_batch/models/stock_picking.py index 67f9551d8ac..be8f0ffeb27 100644 --- a/addons/stock_picking_batch/models/stock_picking.py +++ b/addons/stock_picking_batch/models/stock_picking.py @@ -119,6 +119,14 @@ class StockPicking(models.Model): picking._find_auto_batch() return res + def _action_done(self): + res = super()._action_done() + for picking in self: + if picking.batch_id and any(picking.state != 'done' for picking in picking.batch_id.picking_ids): + picking.batch_id = None + + return res + def _should_show_transfers(self): if len(self.batch_id) == 1 and self == self.batch_id.picking_ids: return False diff --git a/addons/stock_picking_batch/tests/test_batch_picking.py b/addons/stock_picking_batch/tests/test_batch_picking.py index 5943e65e1d2..54d932ed231 100644 --- a/addons/stock_picking_batch/tests/test_batch_picking.py +++ b/addons/stock_picking_batch/tests/test_batch_picking.py @@ -449,3 +449,8 @@ class TestBatchPicking(TransactionCase): self.assertTrue(picking_out_3.batch_id) self.assertEqual(picking_out_1.batch_id.id, picking_out_3.batch_id.id) self.assertFalse(picking_out_2.batch_id) + # If Picking 1 is validated without Picking 3, Picking 1 should be removed from the batch + picking_out_1.move_ids.quantity_done = 10 + picking_out_1.button_validate() + self.assertFalse(picking_out_1.batch_id) + self.assertEqual(len(picking_out_3.batch_id.picking_ids), 1)