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 @@
+
+
+
diff --git a/repair_quality_control/views/repair_views.xml b/repair_quality_control/views/repair_views.xml
index 08ee5462..7f59d378 100644
--- a/repair_quality_control/views/repair_views.xml
+++ b/repair_quality_control/views/repair_views.xml
@@ -18,13 +18,19 @@
/>
-
+