From 8f00176d706a93171e5d96a4cc7e596ccbcc223e Mon Sep 17 00:00:00 2001 From: louck Date: Thu, 22 Aug 2024 18:30:54 +0200 Subject: [PATCH] Add a button to display the parent of a move --- commown_devices/models/stock_move_line.py | 17 ++++++++ commown_devices/tests/test_stock_move_line.py | 42 +++++++++++++++++++ commown_devices/views/contract.xml | 1 + 3 files changed, 60 insertions(+) diff --git a/commown_devices/models/stock_move_line.py b/commown_devices/models/stock_move_line.py index daff0879a..8b317d611 100644 --- a/commown_devices/models/stock_move_line.py +++ b/commown_devices/models/stock_move_line.py @@ -26,6 +26,23 @@ def _compute_show_validate_picking(self): rec.move_id.picking_id and rec.move_id.picking_id.state == "assigned" ) + def action_open_parent(self): + if self.move_id.scrap_ids: + res_model = "stock.scrap" + res_id = self.move_id.scrap_ids.id + else: + res_model = "stock.picking" + res_id = self.move_id.picking_id.id + return { + "name": "Source", + "type": "ir.actions.act_window", + "view_type": "form", + "view_mode": "form", + "res_model": res_model, + "res_id": res_id, + "target": "new", + } + def action_validate_linked_picking(self): unvalidated_contract_ml = self.move_id.contract_id.move_line_ids.filtered( lambda ml: ml.state == "assigned" diff --git a/commown_devices/tests/test_stock_move_line.py b/commown_devices/tests/test_stock_move_line.py index f7b6b9c89..57941069f 100644 --- a/commown_devices/tests/test_stock_move_line.py +++ b/commown_devices/tests/test_stock_move_line.py @@ -88,3 +88,45 @@ def test_action_validate_linked_picking(self): # When only obe unvalidated move, the picking is validated directly self.move_line2.action_validate_linked_picking() self.assertEqual(self.picking2.state, "done") + + def test_action_open_parent(self): + # Check result on picking move line + expected_result = { + "name": "Source", + "type": "ir.actions.act_window", + "view_type": "form", + "view_mode": "form", + "res_model": "stock.picking", + "res_id": self.picking1.id, + "target": "new", + } + self.assertEqual(self.move_line1.action_open_parent(), expected_result) + + # Create scrap + self.picking2.button_validate() + lot = self.move_line2.lot_id + scrap_loc = self.env.ref("stock.stock_location_scrapped") + scrap = self.env["stock.scrap"].create( + { + "product_id": lot.product_id.id, + "lot_id": lot.id, + "location_id": self.picking2.location_dest_id.id, + "scrap_location_id": scrap_loc.id, + "product_uom_id": lot.product_id.uom_id.id, + "date_expected": self.picking2.date_done, + } + ) + scrap.action_validate() + scrap_move_line = scrap.move_id.move_line_ids + + # Check result on a scrap + expected_result = { + "name": "Source", + "type": "ir.actions.act_window", + "view_type": "form", + "view_mode": "form", + "res_model": "stock.scrap", + "res_id": scrap.id, + "target": "new", + } + self.assertEqual(scrap_move_line.action_open_parent(), expected_result) diff --git a/commown_devices/views/contract.xml b/commown_devices/views/contract.xml index a67537396..9f0389050 100644 --- a/commown_devices/views/contract.xml +++ b/commown_devices/views/contract.xml @@ -30,6 +30,7 @@ > +