diff --git a/fleet_vehicle_inspection_template/models/fleet_vehicle_inspection.py b/fleet_vehicle_inspection_template/models/fleet_vehicle_inspection.py index d49e6e97..7e78f579 100644 --- a/fleet_vehicle_inspection_template/models/fleet_vehicle_inspection.py +++ b/fleet_vehicle_inspection_template/models/fleet_vehicle_inspection.py @@ -15,6 +15,7 @@ class FleetVehicleInspection(models.Model): def _compute_line_data_for_template_change(self, line): return { "inspection_item_id": line.inspection_template_item_id.id, + "sequence": line.sequence, "state": "draft", } @@ -25,7 +26,9 @@ def _onchange_inspection_template_id(self): self.note = self.inspection_template_id.note inspection_lines = [(5, 0, 0)] - for line in self.inspection_template_id.inspection_template_line_ids: + for line in self.inspection_template_id.inspection_template_line_ids.sorted( + "sequence" + ): data = self._compute_line_data_for_template_change(line) inspection_lines.append((0, 0, data)) diff --git a/fleet_vehicle_inspection_template/models/fleet_vehicle_inspection_template_line.py b/fleet_vehicle_inspection_template/models/fleet_vehicle_inspection_template_line.py index 9e79a76d..79d42311 100644 --- a/fleet_vehicle_inspection_template/models/fleet_vehicle_inspection_template_line.py +++ b/fleet_vehicle_inspection_template/models/fleet_vehicle_inspection_template_line.py @@ -24,3 +24,5 @@ class FleetVehicleInspectionTemplateLine(models.Model): required=True, copy=True, ) + + sequence = fields.Integer(default=10) diff --git a/fleet_vehicle_inspection_template/tests/test_fleet_vehicle_inspection_template.py b/fleet_vehicle_inspection_template/tests/test_fleet_vehicle_inspection_template.py index b2f3b16d..42205907 100644 --- a/fleet_vehicle_inspection_template/tests/test_fleet_vehicle_inspection_template.py +++ b/fleet_vehicle_inspection_template/tests/test_fleet_vehicle_inspection_template.py @@ -17,9 +17,9 @@ def setUpClass(cls): cls.item_02 = cls.inspection_item.create({"name": "Mirrors"}) - cls.inspection_template = cls.inspection_template.create( + cls.inspection_template_01 = cls.inspection_template.create( { - "name": "TemplateTest", + "name": "TemplateTest_01", "inspection_template_line_ids": [ ( 0, @@ -35,15 +35,69 @@ def setUpClass(cls): } ) + cls.inspection_template_02 = cls.inspection_template.create( + { + "name": "TemplateTest_02", + "inspection_template_line_ids": [ + ( + 0, + 0, + { + "inspection_template_item_id": cls.item_01.id, + "sequence": 11, # Different sequence in the template line + }, + ), + ( + 0, + 0, + { + "inspection_template_item_id": cls.item_02.id, + "sequence": 10, # Different sequence in the template line + }, + ), + ], + } + ) + cls.inspection = cls.inspection.create( { "vehicle_id": cls.vehicle, - "inspection_template_id": cls.inspection_template.id, + "inspection_template_id": cls.inspection_template_01.id, } ) def test_fleet_vehicle_inspection(self): + # --- Test with an inspection template --- + self.inspection._onchange_inspection_template_id() + + self.assertEqual(self.inspection.name, self.inspection_template_01.name) + self.assertTrue(self.inspection.inspection_line_ids) + # --- Change the template ID --- + self.inspection.inspection_template_id = self.inspection_template_02 + + # Trigger the onchange method again self.inspection._onchange_inspection_template_id() - self.assertEqual(self.inspection.name, self.inspection_template.name) + + self.assertEqual(len(self.inspection.inspection_line_ids), 2) + + # Check if the sequence is correctly copied from the template line + line_1 = self.inspection.inspection_line_ids.filtered( + lambda linei: linei.inspection_item_id == self.item_01 + ) + self.assertEqual(line_1.sequence, 11) + + # --- Test without an inspection template --- + self.inspection.inspection_template_id = False # Remove the template + + # Trigger the onchange method again + self.inspection._onchange_inspection_template_id() + + # Assert that the name and note are not changed + self.assertEqual(self.inspection.name, self.inspection_template_02.name) + # (remains the same as the previous template) + self.assertNotEqual(self.inspection.name, self.inspection_template_01.name) + + # Assert that the inspection lines are NOT removed self.assertTrue(self.inspection.inspection_line_ids) + self.assertEqual(len(self.inspection.inspection_line_ids), 2) diff --git a/fleet_vehicle_inspection_template/views/fleet_vehicle_inspection_template.xml b/fleet_vehicle_inspection_template/views/fleet_vehicle_inspection_template.xml index 90667738..810ea7a3 100644 --- a/fleet_vehicle_inspection_template/views/fleet_vehicle_inspection_template.xml +++ b/fleet_vehicle_inspection_template/views/fleet_vehicle_inspection_template.xml @@ -27,6 +27,7 @@ > +