diff --git a/shipment_advice/models/stock_move.py b/shipment_advice/models/stock_move.py index eafc69e9..4fcd81ac 100644 --- a/shipment_advice/models/stock_move.py +++ b/shipment_advice/models/stock_move.py @@ -12,6 +12,7 @@ class StockMove(models.Model): ondelete="set null", string="Planned shipment", index=True, + copy=False, ) def _plan_in_shipment(self, shipment_advice): diff --git a/shipment_advice/models/stock_move_line.py b/shipment_advice/models/stock_move_line.py index c189f5c4..8f6a1d0f 100644 --- a/shipment_advice/models/stock_move_line.py +++ b/shipment_advice/models/stock_move_line.py @@ -13,6 +13,7 @@ class StockMoveLine(models.Model): ondelete="set null", string="Shipment advice", index=True, + copy=False, ) def button_load_in_shipment(self): diff --git a/shipment_advice/tests/test_shipment_advice.py b/shipment_advice/tests/test_shipment_advice.py index 6e6ad581..5b3a42a2 100644 --- a/shipment_advice/tests/test_shipment_advice.py +++ b/shipment_advice/tests/test_shipment_advice.py @@ -246,3 +246,23 @@ def test_shipment_advice_draft(self): def test_shipment_name(self): self.assertTrue("OUT" in self.shipment_advice_out.name) self.assertTrue("IN" in self.shipment_advice_in.name) + + def test_shipment_advice_receive_partial_move_backorder(self): + picking = self.move_product_in1.picking_id + # Plan a move + self._plan_records_in_shipment(self.shipment_advice_in, self.move_product_in1) + self._in_progress_shipment_advice(self.shipment_advice_in) + # Partially receive the move and create a backorder + for ml in self.move_product_in1.move_line_ids: + ml.qty_done = ml.product_uom_qty - 2 + wizard = ( + self.env["stock.backorder.confirmation"] + .with_context(button_validate_picking_ids=picking.ids) + .create({"pick_ids": [(6, 0, picking.ids)]}) + ) + wizard.process() + # New move created should not be included in the processing shipment + backorder_picking = self.env["stock.picking"].search( + [("backorder_id", "=", picking.id)] + ) + self.assertFalse(backorder_picking.move_lines.shipment_advice_id)