From 5802bf33cf3a80d28f869a0275d165cdd86f287a Mon Sep 17 00:00:00 2001 From: Thierry Ducrest Date: Tue, 23 Apr 2024 10:52:04 +0200 Subject: [PATCH] shipment_advice: do not copy shipment advice id on moves In the case of partially receiving goods, the backorder moves created should not be included in the shipment advice being processed. But it probably makes sense for outgoing move as well. --- shipment_advice/models/stock_move.py | 1 + shipment_advice/tests/test_shipment_advice.py | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+) 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/tests/test_shipment_advice.py b/shipment_advice/tests/test_shipment_advice.py index 6e6ad581..2bcedeac 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_recieve_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)