From bf98462a09f4fdf147c2d720a3d7073fae547b10 Mon Sep 17 00:00:00 2001 From: Marc Durepos Date: Thu, 28 Mar 2024 15:36:17 -0400 Subject: [PATCH] multiple fixes for bemade_fsm to help pass tests. --- bemade_fsm/__manifest__.py | 1 + bemade_fsm/data/fsm_data.xml | 20 ---------- bemade_fsm/models/__init__.py | 1 + bemade_fsm/models/res_company.py | 8 ++++ bemade_fsm/models/sale_order_line.py | 8 ++-- bemade_fsm/models/task.py | 15 +++++++- bemade_fsm/models/task_template.py | 2 +- .../worksheet_custom_report_templates.xml | 20 ++++++---- .../reports/worksheet_custom_reports.xml | 4 -- bemade_fsm/tests/__init__.py | 1 + bemade_fsm/tests/test_bemade_fsm_common.py | 12 +++++- bemade_fsm/tests/test_equipment.py | 4 -- bemade_fsm/tests/test_fsm_visit.py | 2 +- bemade_fsm/tests/test_sale_order.py | 2 +- bemade_fsm/tests/test_task_report.py | 38 +++++++++++++++++++ bemade_fsm/wizard/__init__.py | 1 + bemade_fsm/wizard/res_config_settings.py | 23 +++++++++++ bemade_fsm/wizard/res_config_settings.xml | 22 +++++++++++ .../views/sale_order.xml | 6 +++ 19 files changed, 145 insertions(+), 45 deletions(-) create mode 100644 bemade_fsm/models/res_company.py create mode 100644 bemade_fsm/tests/test_task_report.py create mode 100644 bemade_fsm/wizard/res_config_settings.py create mode 100644 bemade_fsm/wizard/res_config_settings.xml diff --git a/bemade_fsm/__manifest__.py b/bemade_fsm/__manifest__.py index a0c437f..92e49ff 100644 --- a/bemade_fsm/__manifest__.py +++ b/bemade_fsm/__manifest__.py @@ -55,6 +55,7 @@ 'reports/worksheet_custom_report_templates.xml', 'reports/worksheet_custom_reports.xml', 'wizard/new_task_from_template.xml', + 'wizard/res_config_settings.xml', ], 'assets': { 'web.report_assets_common': [ diff --git a/bemade_fsm/data/fsm_data.xml b/bemade_fsm/data/fsm_data.xml index 5a5967b..75ca4be 100644 --- a/bemade_fsm/data/fsm_data.xml +++ b/bemade_fsm/data/fsm_data.xml @@ -26,25 +26,5 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/bemade_fsm/models/__init__.py b/bemade_fsm/models/__init__.py index aef9e8c..1fbeeea 100644 --- a/bemade_fsm/models/__init__.py +++ b/bemade_fsm/models/__init__.py @@ -8,3 +8,4 @@ from . import equipment_tag from . import task from . import res_partner from . import fsm_visit +from . import res_company \ No newline at end of file diff --git a/bemade_fsm/models/res_company.py b/bemade_fsm/models/res_company.py new file mode 100644 index 0000000..0d2fd87 --- /dev/null +++ b/bemade_fsm/models/res_company.py @@ -0,0 +1,8 @@ +from odoo import models, fields + + +class Company(models.Model): + _inherit = "res.company" + + split_time_from_materials_on_service_work_orders = fields.Boolean(default=False) + create_default_fsm_visit = fields.Boolean(default=False) diff --git a/bemade_fsm/models/sale_order_line.py b/bemade_fsm/models/sale_order_line.py index b1cdcee..528b77c 100644 --- a/bemade_fsm/models/sale_order_line.py +++ b/bemade_fsm/models/sale_order_line.py @@ -115,7 +115,7 @@ class SaleOrderLine(models.Model): vals['parent_id'] = parent and parent.id vals['user_ids'] = template.assignees.ids vals['tag_ids'] = template.tags.ids - vals['planned_hours'] = template.planned_hours + vals['allocated_hours'] = template.planned_hours vals['sequence'] = template.sequence if template.equipment_ids: vals['equipment_ids'] = template.equipment_ids.ids @@ -134,7 +134,7 @@ class SaleOrderLine(models.Model): task.message_post(body=task_msg) if not task.equipment_ids and self.equipment_ids: task.equipment_ids = self.equipment_ids.ids - task.planned_hours = self.task_duration + task.allocated_hours = self.task_duration return task def _timesheet_service_generation(self): @@ -150,7 +150,7 @@ class SaleOrderLine(models.Model): project_id = task_ids[0].project_id line.visit_id.task_id = line._generate_task_for_visit_line(project_id) task_ids.write({'parent_id': line.visit_id.task_id.id}) - self.mapped('task_id').synchronize_name_fsm() + self.task_id.filtered("is_fsm").synchronize_name_fsm() def _generate_task_for_visit_line(self, project): self.ensure_one() @@ -164,7 +164,7 @@ class SaleOrderLine(models.Model): 'partner_id': self.order_id.partner_shipping_id.id, 'visit_id': self.visit_id.id, 'date_deadline': self.visit_id.approx_date, - 'planned_hours': self.task_duration, + 'allocated_hours': self.task_duration, 'user_ids': False, # Force to empty or it uses the current user }) return task diff --git a/bemade_fsm/models/task.py b/bemade_fsm/models/task.py index 0cb809b..ea70a0f 100644 --- a/bemade_fsm/models/task.py +++ b/bemade_fsm/models/task.py @@ -2,6 +2,7 @@ from odoo import fields, models, api, Command, _ from odoo.exceptions import ValidationError, UserError from odoo.osv import expression from collections import defaultdict, namedtuple +from odoo.addons.project.models.project_task import CLOSED_STATES import re @@ -82,6 +83,15 @@ class Task(models.Model): default=False, ) + is_closed = fields.Boolean( + compute="_compute_is_closed", + ) + + def _compute_is_closed(self): + for rec in self: + rec.is_closed = rec.state in CLOSED_STATES + + @api.model_create_multi def create(self, vals): res = super().create(vals) @@ -99,9 +109,9 @@ class Task(models.Model): return res def write(self, vals): - super().write(vals) + res = super().write(vals) if not self: # End recursion on empty RecordSet - return + return res if 'propagate_assignment' in vals: # When a user sets propagate assignment, it should propagate that setting all the way down the chain self.child_ids.write({'propagate_assignment': vals['propagate_assignment']}) @@ -110,6 +120,7 @@ class Task(models.Model): # Here we use child_ids instead of _get_all_subtasks() so as to allow for setting propagate_assignment # to false on a child task. to_propagate.child_ids.write({'user_ids': vals['user_ids']}) + return res @api.depends('sale_order_id') def _compute_relevant_order_lines(self): diff --git a/bemade_fsm/models/task_template.py b/bemade_fsm/models/task_template.py index fdc1a46..0d4512d 100644 --- a/bemade_fsm/models/task_template.py +++ b/bemade_fsm/models/task_template.py @@ -90,7 +90,7 @@ class TaskTemplate(models.Model): 'parent_id': parent_id, 'user_ids': self.assignees.ids, 'tag_ids': self.tags.ids, - 'planned_hours': self.planned_hours, + 'allocated_hours': self.planned_hours, 'sequence': self.sequence, 'equipment_ids': [Command.set(self.equipment_ids.ids)] if self.equipment_ids else False, 'partner_id': project.partner_id and project.partner_id.id, diff --git a/bemade_fsm/reports/worksheet_custom_report_templates.xml b/bemade_fsm/reports/worksheet_custom_report_templates.xml index 7cd8ef8..7733981 100644 --- a/bemade_fsm/reports/worksheet_custom_report_templates.xml +++ b/bemade_fsm/reports/worksheet_custom_report_templates.xml @@ -3,8 +3,9 @@