From 0ddb7c816002442d103dd1f9315cce2e38f775b6 Mon Sep 17 00:00:00 2001 From: Marc Durepos Date: Tue, 21 Nov 2023 09:10:20 -0500 Subject: [PATCH] bemade_fsm: fix visit naming on tasks --- bemade_fsm/__manifest__.py | 2 +- bemade_fsm/models/sale_order_line.py | 11 +++++------ bemade_fsm/models/task.py | 2 +- bemade_fsm/tests/test_fsm_visit.py | 10 ++++++++++ 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/bemade_fsm/__manifest__.py b/bemade_fsm/__manifest__.py index 4d8603d..0210444 100644 --- a/bemade_fsm/__manifest__.py +++ b/bemade_fsm/__manifest__.py @@ -20,7 +20,7 @@ ######################################################################################## { 'name': 'Improved Field Service Management', - 'version': '15.0.1.0.0', + 'version': '15.0.1.0.1', 'summary': 'Adds functionality necessary for managing field service operations at Durpro.', 'description': 'Adds functionality necessary for managing field service operations at Durpro.', 'category': 'Services/Field Service', diff --git a/bemade_fsm/models/sale_order_line.py b/bemade_fsm/models/sale_order_line.py index b1cdcee..0e081cf 100644 --- a/bemade_fsm/models/sale_order_line.py +++ b/bemade_fsm/models/sale_order_line.py @@ -140,7 +140,7 @@ class SaleOrderLine(models.Model): def _timesheet_service_generation(self): super()._timesheet_service_generation() visit_lines = self.filtered(lambda l: l.visit_id) - for line in visit_lines: + for index, line in enumerate(visit_lines): task_ids = line.get_section_line_ids().mapped('task_id') if not task_ids: continue @@ -148,16 +148,15 @@ class SaleOrderLine(models.Model): # Can't group up the tasks if they're part of different projects return project_id = task_ids[0].project_id - line.visit_id.task_id = line._generate_task_for_visit_line(project_id) + line.visit_id.task_id = line._generate_task_for_visit_line(project_id, index+1) task_ids.write({'parent_id': line.visit_id.task_id.id}) - self.mapped('task_id').synchronize_name_fsm() + (self.mapped('task_id') | self.visit_ids.task_id).synchronize_name_fsm() - def _generate_task_for_visit_line(self, project): + def _generate_task_for_visit_line(self, project, visit_no: int): self.ensure_one() task = self.env['project.task'].create({ - 'name': 'Temp Name', - 'description': f"Parent task for {self.order_id.name}, visit {self.name}", + 'name': f"{self.order_id.name} - Visit {visit_no} - {self.name}", 'project_id': project.id, 'equipment_ids': self.get_section_line_ids().mapped('equipment_ids').ids, 'sale_order_id': self.order_id.id, diff --git a/bemade_fsm/models/task.py b/bemade_fsm/models/task.py index c8a65a2..3cc7219 100644 --- a/bemade_fsm/models/task.py +++ b/bemade_fsm/models/task.py @@ -213,7 +213,7 @@ class Task(models.Model): template = rec.sale_line_id and rec.sale_line_id.product_id.task_template_id name_parts = rec.sale_line_id and rec.sale_line_id.name.split('\n') title = name_parts and name_parts[0] or rec.sale_line_id.product_id.name - if not rec.parent_id: + if not rec.parent_id and not rec.visit_id: rec.name = f"{rec.sale_order_id.partner_shipping_id.name} - " \ f"{title}" if template: diff --git a/bemade_fsm/tests/test_fsm_visit.py b/bemade_fsm/tests/test_fsm_visit.py index a6d3721..137410e 100644 --- a/bemade_fsm/tests/test_fsm_visit.py +++ b/bemade_fsm/tests/test_fsm_visit.py @@ -122,3 +122,13 @@ class FSMVisitTest(BemadeFSMBaseTest): visit.task_id.action_fsm_validate() self.assertEqual(len(so.order_line), 3) + + def test_confirming_so_names_visit_properly(self): + """ Visits should be named - Visit - """ + so, visit, sol1, sol2 = self._generate_so_with_one_visit_two_lines() + + so.action_confirm() + task = visit.task_id + + supposed_name = f"{so.name} - Visit 1 - {visit.label}" + self.assertEqual(task.name, supposed_name)