diff --git a/repair_quality_control/models/qc_inspection.py b/repair_quality_control/models/qc_inspection.py index 9f25402f..61027db5 100644 --- a/repair_quality_control/models/qc_inspection.py +++ b/repair_quality_control/models/qc_inspection.py @@ -16,3 +16,17 @@ def action_view_qc_repair_order(self): "res_model": "repair.order", "res_id": self.repair_id.id, } + + def action_repair(self): + self.ensure_one() + if self.picking_id: + action = self.picking_id.action_repair_return() + action["context"].update( + { + "default_product_id": self.product_id.id, + "default_lot_id": self.lot_id.id, + "default_move_id": self.object_id.id, + "default_inspection_ids": [self.id], + } + ) + return action diff --git a/repair_quality_control/models/repair.py b/repair_quality_control/models/repair.py index e6390505..9c458bb9 100644 --- a/repair_quality_control/models/repair.py +++ b/repair_quality_control/models/repair.py @@ -26,10 +26,10 @@ def action_create_qc_inspection(self): action["context"] = { "default_qty": self.product_qty, "default_repair_id": self.id, - "default_object_id": f"product.product,{self.product_id.id}", + "default_object_id": f"product.product, {self.product_id.id}", } if self.lot_id: - action["context"]["default_object_id"] = f"stock.lot,{self.lot_id.id}" + action["context"]["default_object_id"] = f"stock.lot, {self.lot_id.id}" return action def action_view_repair_inspections(self): diff --git a/repair_quality_control/tests/test_repair_quality_control.py b/repair_quality_control/tests/test_repair_quality_control.py index 1195c58f..f8a512e6 100644 --- a/repair_quality_control/tests/test_repair_quality_control.py +++ b/repair_quality_control/tests/test_repair_quality_control.py @@ -8,10 +8,14 @@ class RepairQualityControlTest(TransactionCase): @classmethod def setUpClass(cls): super().setUpClass() + + cls.product = cls.env.ref("product.product_product_27") + cls.lot = cls.env.ref("stock.lot_product_27") + cls.repair_order = cls.env["repair.order"].create( { - "product_id": cls.env.ref("product.product_product_27").id, - "lot_id": cls.env.ref("stock.lot_product_27").id, + "product_id": cls.product.id, + "lot_id": cls.lot.id, } ) @@ -19,7 +23,7 @@ def test_create_inspection_from_repair_order(self): inspect_form = Form( self.env["qc.inspection"].with_context( default_repair_id=self.repair_order.id, - default_object_id=f"product.product,{self.repair_order.product_id.id}", + default_object_id=f"product.product, {self.repair_order.product_id.id}", ) ) qc_inspection = inspect_form.save() @@ -31,7 +35,7 @@ def test_create_inspection_from_repair_order(self): inspect_form = Form( self.env["qc.inspection"].with_context( default_repair_id=self.repair_order.id, - default_object_id=f"stock.lot,{self.repair_order.lot_id.id}", + default_object_id=f"stock.lot, {self.repair_order.lot_id.id}", ) ) qc_inspection = inspect_form.save() @@ -42,3 +46,39 @@ def test_create_inspection_from_repair_order(self): self.assertEqual( self.repair_order.inspection_ids[1].lot_id, qc_inspection.lot_id ) + + def test_create_repair_order_from_inspection(self): + picking = self.env["stock.picking"].create( + { + "picking_type_id": self.env.ref("stock.picking_type_in").id, + "location_id": self.env.ref("stock.stock_location_customers").id, + "location_dest_id": self.env.ref("stock.stock_location_stock").id, + } + ) + move = self.env["stock.move"].create( + { + "name": "Test Move", + "product_id": self.product.id, + "product_uom_qty": 1, + "product_uom": self.product.uom_id.id, + "picking_id": picking.id, + "location_id": picking.location_id.id, + "location_dest_id": picking.location_dest_id.id, + } + ) + qc_inspection = self.env["qc.inspection"].create( + { + "picking_id": picking.id, + "object_id": f"stock.move, {move.id}", + "product_id": self.product.id, + "lot_id": self.lot.id, + } + ) + repair = qc_inspection.action_repair() + repair_form = Form( + self.env[(repair.get("res_model"))].with_context(**repair["context"]) + ) + repair = repair_form.save() + self.assertEqual(repair.move_id, move) + self.assertEqual(repair.lot_id, qc_inspection.lot_id) + self.assertEqual(repair.product_id, qc_inspection.product_id) diff --git a/repair_quality_control/views/qc_inspection_views.xml b/repair_quality_control/views/qc_inspection_views.xml index 82e86af1..ef9e992b 100644 --- a/repair_quality_control/views/qc_inspection_views.xml +++ b/repair_quality_control/views/qc_inspection_views.xml @@ -21,6 +21,15 @@ + +