From 3c15d6a5e27a7fb2c74b1741b4ec030f55e97855 Mon Sep 17 00:00:00 2001 From: Marc Durepos Date: Wed, 10 Jan 2024 09:51:06 -0500 Subject: [PATCH 01/27] [FIX] bemade_fsm: propagate assignment checkbox on tasks Fixes a problem where the propagate assignment checkbox on project tasks was not effectively propagating task assignment to descendants. Also added some intelligence around checking / unchecking the box such that the setting change propagates to children. This allows for interesting configurations for assignment propagation, such as limiting propagation only to one level or only starting it at a given level of subtasks. --- bemade_fsm/__manifest__.py | 2 +- bemade_fsm/models/task.py | 3 ++ bemade_fsm/tests/test_task.py | 58 ++++++++++++++++++++++------------- 3 files changed, 40 insertions(+), 23 deletions(-) diff --git a/bemade_fsm/__manifest__.py b/bemade_fsm/__manifest__.py index fa6c83b..8cd38f7 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.6', + 'version': '15.0.1.0.7', '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/task.py b/bemade_fsm/models/task.py index 43a147d..b7f2fb0 100644 --- a/bemade_fsm/models/task.py +++ b/bemade_fsm/models/task.py @@ -102,6 +102,9 @@ class Task(models.Model): super().write(vals) if not self: # End recursion on empty RecordSet return + 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']}) if 'user_ids' in vals: to_propagate = self.filtered(lambda task: task.propagate_assignment) # Here we use child_ids instead of _get_all_subtasks() so as to allow for setting propagate_assignment diff --git a/bemade_fsm/tests/test_task.py b/bemade_fsm/tests/test_task.py index 63185de..c2b5543 100644 --- a/bemade_fsm/tests/test_task.py +++ b/bemade_fsm/tests/test_task.py @@ -6,35 +6,49 @@ from odoo import Command @tagged('post_install', '-at_install') class TaskTest(BemadeFSMBaseTest): + @classmethod + def setUpClass(cls): + # Chose to set up all tests the same way since this code was becoming very redundant + super().setUpClass() + cls.so = cls._generate_sale_order() + cls.template = cls._generate_task_template(names=['Parent', 'Child', 'Grandchild'], structure=[2, 1]) + cls.product = cls._generate_product(task_template=cls.template) + cls.sol = cls._generate_sale_order_line(sale_order=cls.so, product=cls.product) + cls.user = cls._generate_project_manager_user('Bob', 'Bob') + cls.so.action_confirm() + cls.task = cls.sol.task_id + def test_reassigning_assignment_propagating_task_changes_subtasks(self): - # This creation step is a bit lazy - we use defaults to make tasks with a hierachy and settings we want - so = self._generate_sale_order() - template = self._generate_task_template(names=['Parent', 'Child'], structure=[2]) - product = self._generate_product(task_template=template) - sol = self._generate_sale_order_line(sale_order=so, product=product) - user = self._generate_project_manager_user('Bob', 'Bob') - so.action_confirm() - task = sol.task_id + task = self.task + task.propagate_assignment = True task.write({ - 'user_ids': [Command.set([user.id])] + 'user_ids': [Command.set([self.user.id])] }) - self.assertTrue(all([t.user_ids == user for t in task | task._get_all_subtasks()])) - - def test_reassigning_assignment_non_propagating_task_doesnt_change_subtasks(self): - so = self._generate_sale_order() - template = self._generate_task_template(names=['Parent', 'Child', 'Grandchild'], structure=[2, 1]) - product = self._generate_product(task_template=template) - sol = self._generate_sale_order_line(sale_order=so, product=product) - user = self._generate_project_manager_user('Bob', 'Bob') - so.action_confirm() - task = sol.task_id - task.child_ids.write({'propagate_assignment': False}) # Stop propagation after the first level + self.assertTrue(all([t.user_ids == self.user for t in task | task._get_all_subtasks()])) + def test_reassigning_task_doesnt_propagate_by_default(self): + task = self.task task.write({ - 'user_ids': [Command.set([user.id])] + 'user_ids': [Command.set([self.user.id])] }) - self.assertTrue(all([t.user_ids == user for t in task | task.child_ids])) self.assertFalse(any([t.user_ids for t in task.child_ids.child_ids])) + + def test_unset_propagate_assignment_unsets_for_all_children(self): + task = self.task + # First, set propagation and assign + task.propagate_assignment = True + task.write({ + 'user_ids': [Command.set([self.user.id])] + }) + # Then, unset propagation for the children and re-set assignment + task.child_ids.write({'propagate_assignment': False}) + self.assertFalse(any([t.propagate_assignment for t in task._get_all_subtasks()])) + # Then, test that assigning the parent only assigns its children, not its grandchildren + task.write({ + 'user_ids': [Command.set([])] + }) + self.assertTrue(all([not t.user_ids for t in task | task.child_ids])) + self.assertTrue(all([t.user_ids == self.user for t in task.child_ids.child_ids])) From 47c8f9261c48d2303cfdbf681eb0bfd72c449e3c Mon Sep 17 00:00:00 2001 From: Marc Durepos Date: Wed, 10 Jan 2024 19:49:36 -0500 Subject: [PATCH 02/27] bemade_sports_clinic: simplify model descriptions --- bemade_sports_clinic/__manifest__.py | 2 +- bemade_sports_clinic/models/patient.py | 4 ++-- bemade_sports_clinic/models/sports_team.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bemade_sports_clinic/__manifest__.py b/bemade_sports_clinic/__manifest__.py index 81b355f..5509180 100644 --- a/bemade_sports_clinic/__manifest__.py +++ b/bemade_sports_clinic/__manifest__.py @@ -18,7 +18,7 @@ # { 'name': 'Sports Clinic Management', - 'version': '16.0.1.5.2', + 'version': '16.0.1.5.3', 'summary': 'Manage the patients of a sports medicine clinic.', 'description': """ Adds the notion of sports teams, players (patients), coaches and treatment diff --git a/bemade_sports_clinic/models/patient.py b/bemade_sports_clinic/models/patient.py index 201bea2..b1b1e41 100644 --- a/bemade_sports_clinic/models/patient.py +++ b/bemade_sports_clinic/models/patient.py @@ -7,7 +7,7 @@ from odoo.addons.phone_validation.tools import phone_validation class Patient(models.Model): _name = 'sports.patient' - _description = "Patient at a sports medicine clinic." + _description = "Patient" _inherit = ['mail.thread', 'mail.activity.mixin'] _order = 'last_name, first_name' @@ -222,7 +222,7 @@ class PatientContact(models.Model): class PatientInjury(models.Model): _name = 'sports.patient.injury' - _description = "A patient's injury." + _description = "Patient Injury" _inherit = ['mail.thread', 'mail.activity.mixin'] _rec_name = 'diagnosis' diff --git a/bemade_sports_clinic/models/sports_team.py b/bemade_sports_clinic/models/sports_team.py index b2f23bf..6f7d589 100644 --- a/bemade_sports_clinic/models/sports_team.py +++ b/bemade_sports_clinic/models/sports_team.py @@ -51,7 +51,7 @@ class SportsTeam(models.Model): class TeamStaff(models.Model): _name = "sports.team.staff" - _description = "Relationship between staff members and their teams." + _description = "Sports Team Staff" sequence = fields.Integer() team_id = fields.Many2one(comodel_name='sports.team', string='Team', required=True) From bcbb3bda1fe877cf638fd352046082c68a5bd8bd Mon Sep 17 00:00:00 2001 From: Marc Durepos Date: Sat, 13 Jan 2024 18:52:37 -0500 Subject: [PATCH 03/27] bemade_sports_clinic: notify team staff of updates Added two mail.message.subtypes to notify all followers of updates to patient status and changes to injury fields. Added a post-migration script to update all existing followers to subscribe to these new subtypes. --- bemade_sports_clinic/__manifest__.py | 3 ++- .../data/demo/sports_clinic_demo_data.xml | 2 +- .../data/sports_clinic_data.xml | 23 ++++++++++++++++ .../migrations/16.0.1.5.4/post-migrate.py | 21 +++++++++++++++ bemade_sports_clinic/models/patient.py | 26 ++++++++++++++++++- 5 files changed, 72 insertions(+), 3 deletions(-) create mode 100644 bemade_sports_clinic/data/sports_clinic_data.xml create mode 100644 bemade_sports_clinic/migrations/16.0.1.5.4/post-migrate.py diff --git a/bemade_sports_clinic/__manifest__.py b/bemade_sports_clinic/__manifest__.py index 5509180..abf3746 100644 --- a/bemade_sports_clinic/__manifest__.py +++ b/bemade_sports_clinic/__manifest__.py @@ -18,7 +18,7 @@ # { 'name': 'Sports Clinic Management', - 'version': '16.0.1.5.3', + 'version': '16.0.1.5.4', 'summary': 'Manage the patients of a sports medicine clinic.', 'description': """ Adds the notion of sports teams, players (patients), coaches and treatment @@ -42,6 +42,7 @@ 'security/sports_clinic_groups.xml', 'security/ir.model.access.csv', 'security/sports_clinic_rules.xml', + 'data/sports_clinic_data.xml', 'views/sports_team_views.xml', 'views/sports_clinic_menus.xml', 'views/sports_patient_views.xml', diff --git a/bemade_sports_clinic/data/demo/sports_clinic_demo_data.xml b/bemade_sports_clinic/data/demo/sports_clinic_demo_data.xml index c148dea..2b1dd30 100644 --- a/bemade_sports_clinic/data/demo/sports_clinic_demo_data.xml +++ b/bemade_sports_clinic/data/demo/sports_clinic_demo_data.xml @@ -186,4 +186,4 @@ - \ No newline at end of file + diff --git a/bemade_sports_clinic/data/sports_clinic_data.xml b/bemade_sports_clinic/data/sports_clinic_data.xml new file mode 100644 index 0000000..af83b45 --- /dev/null +++ b/bemade_sports_clinic/data/sports_clinic_data.xml @@ -0,0 +1,23 @@ + + + + + Patient File Update + sports.patient + + Patient's file has been updated. + + + + + + Patient Injury Status Update + sports.patient.injury + + Patient's injury was updated. + + + + + + diff --git a/bemade_sports_clinic/migrations/16.0.1.5.4/post-migrate.py b/bemade_sports_clinic/migrations/16.0.1.5.4/post-migrate.py new file mode 100644 index 0000000..2323c5d --- /dev/null +++ b/bemade_sports_clinic/migrations/16.0.1.5.4/post-migrate.py @@ -0,0 +1,21 @@ +from odoo import api, SUPERUSER_ID, Command + +def migrate(cr, version): + env = api.Environment(cr, SUPERUSER_ID, {}) + patient_followers = env['mail.followers'].search([('res_model', '=', + 'sports.patient')]) + injury_followers = env['mail.followers'].search([('res_model', '=', + 'sports.patient.injury')]) + for f in patient_followers: + f.write( + { + 'subtype_ids': + [Command.link(env.ref('bemade_sports_clinic.subtype_patient_update').id)] + } + ) + for f in injury_followers: + f.write( + { + 'subtype_ids': + [Command.link(env.ref('bemade_sports_clinic.subtype_patient_injury_update').id)] + }) diff --git a/bemade_sports_clinic/models/patient.py b/bemade_sports_clinic/models/patient.py index b1b1e41..7e70019 100644 --- a/bemade_sports_clinic/models/patient.py +++ b/bemade_sports_clinic/models/patient.py @@ -63,7 +63,7 @@ class Patient(models.Model): stage = fields.Selection( selection=[('no_play', 'Injured'), ('practice_ok', 'Practice OK'), ('healthy', 'Play OK')], compute='_compute_stage') - last_consultation_date = fields.Date() + last_consultation_date = fields.Date(tracking=True) active_injury_count = fields.Integer(compute='_compute_active_injury_count') allergies = fields.Text() team_info_notes = fields.Html(string="Notes") @@ -187,6 +187,22 @@ class Patient(models.Model): raise_exception=False ) + def _track_subtype(self, init_values): + # List of fields that should result in team staff notification + external_values = [ + "last_consultation_date", + "match_status", + "practice_status", + "predicted_return_date", + "return_date", + "external_notes", + ] + if any([v in init_values for v in external_values]): + return self.env.ref("bemade_sports_clinic.subtype_patient_update") + else: + return self.env.ref('mail.mt_note') + + class PatientContact(models.Model): _name = 'sports.patient.contact' @@ -300,3 +316,11 @@ class PatientInjury(models.Model): 'res_id': self.id, 'context': self._context, } + + def _track_subtype(self, init_values): + if 'treatment_professional_ids' in init_values \ + and len(init_values) == 1: + return self.env.ref('mail.mt_note') + else: + return self.env.ref('bemade_sports_clinic.subtype_patient_injury_update') + From 96712b257f3e85e3364811c47a34b69d9e26cd4e Mon Sep 17 00:00:00 2001 From: Marc Durepos Date: Wed, 17 Jan 2024 14:59:03 -0500 Subject: [PATCH 04/27] bemade_fsm: bug fix for equipment complete_name --- bemade_fsm/__manifest__.py | 2 +- bemade_fsm/models/equipment.py | 3 ++- bemade_fsm/tests/test_equipment.py | 4 ++++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/bemade_fsm/__manifest__.py b/bemade_fsm/__manifest__.py index 8cd38f7..12cf85a 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.7', + 'version': '15.0.1.0.8', '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/equipment.py b/bemade_fsm/models/equipment.py index dc08495..24587ab 100644 --- a/bemade_fsm/models/equipment.py +++ b/bemade_fsm/models/equipment.py @@ -72,4 +72,5 @@ class Equipment(models.Model): def _compute_complete_name(self): for rec in self: tag_part = "[%s] " % rec.pid_tag if rec.pid_tag else "" - rec.complete_name = tag_part + rec.name + name = rec.name or "" + rec.complete_name = tag_part + name diff --git a/bemade_fsm/tests/test_equipment.py b/bemade_fsm/tests/test_equipment.py index 16e06e2..879f129 100644 --- a/bemade_fsm/tests/test_equipment.py +++ b/bemade_fsm/tests/test_equipment.py @@ -19,3 +19,7 @@ class TestEquipment(BemadeFSMBaseTest): partner_company.write({'equipment_ids': [Command.set([])]}) with self.assertRaises(MissingError): equipment.name + + def test_compute_complete_name_when_name_blank(self): + equipment = self._generate_equipment(name=False) + complete_name = equipment.complete_name From 3e415249d7abe09fa90bb7cce0e0efb216f70a80 Mon Sep 17 00:00:00 2001 From: Marc Durepos Date: Tue, 23 Jan 2024 03:03:49 +0000 Subject: [PATCH 05/27] [FIX] fix a bug where dates come up to an incorrect default Timezone differences were causing dates to come up very weirdly on new patient injury records. They now use the user timezone to convert datetime.now() appropriately. --- bemade_sports_clinic/__manifest__.py | 2 +- bemade_sports_clinic/models/patient.py | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/bemade_sports_clinic/__manifest__.py b/bemade_sports_clinic/__manifest__.py index abf3746..1815504 100644 --- a/bemade_sports_clinic/__manifest__.py +++ b/bemade_sports_clinic/__manifest__.py @@ -18,7 +18,7 @@ # { 'name': 'Sports Clinic Management', - 'version': '16.0.1.5.4', + 'version': '16.0.1.5.5', 'summary': 'Manage the patients of a sports medicine clinic.', 'description': """ Adds the notion of sports teams, players (patients), coaches and treatment diff --git a/bemade_sports_clinic/models/patient.py b/bemade_sports_clinic/models/patient.py index 7e70019..357edd1 100644 --- a/bemade_sports_clinic/models/patient.py +++ b/bemade_sports_clinic/models/patient.py @@ -1,8 +1,9 @@ from odoo import models, fields, _, api, Command from odoo.exceptions import ValidationError -from datetime import date +from datetime import date, datetime from dateutil.relativedelta import relativedelta from odoo.addons.phone_validation.tools import phone_validation +import pytz class Patient(models.Model): @@ -216,6 +217,7 @@ class PatientContact(models.Model): ('other', 'Other'), ], required=True) mobile = fields.Char(unaccent=False, required=True) + # TODO: add email here and on views patient_id = fields.Many2one(comodel_name='sports.patient', string='Patient') @api.onchange('mobile') @@ -242,14 +244,25 @@ class PatientInjury(models.Model): _inherit = ['mail.thread', 'mail.activity.mixin'] _rec_name = 'diagnosis' + @api.model + def _today(self): + """Get the current date in the user's time zone.""" + return datetime.now(pytz.timezone(self.env.user.tz or 'GMT')) + + # TODO: Find a way to improve notifications send about tracking injury details + # TODO: Add field consentement_parental = fields.Selection(oui, non, non-applicable) + patient_id = fields.Many2one(comodel_name='sports.patient', string="Patient", readonly=True, required=True) patient_name = fields.Char(related="patient_id.name") diagnosis = fields.Char(tracking=True) - injury_date = fields.Date(string='Date of Injury', - default=date.today()) + + injury_date = fields.Date( + string='Date of Injury', + default=_today, + ) injury_date_na = fields.Boolean(string="N/A", default=False) internal_notes = fields.Html(tracking=True) external_notes = fields.Html(tracking=True) From 571c6cccb4f4bea03012c4e488969f28152641b4 Mon Sep 17 00:00:00 2001 From: Marc Durepos Date: Fri, 26 Jan 2024 15:20:39 -0500 Subject: [PATCH 06/27] bemade_fsm: add start and end date/time to work order PDF --- bemade_fsm/__manifest__.py | 7 +- .../worksheet_custom_report_templates.xml | 14 ++ bemade_fsm/reports/worksheet_templates.xml | 146 ------------------ 3 files changed, 15 insertions(+), 152 deletions(-) delete mode 100644 bemade_fsm/reports/worksheet_templates.xml diff --git a/bemade_fsm/__manifest__.py b/bemade_fsm/__manifest__.py index 12cf85a..78f0d36 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.8', + 'version': '15.0.1.0.9', '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', @@ -56,11 +56,6 @@ 'wizard/new_task_from_template.xml', ], 'assets': { - 'web.assets_tests': [ - 'bemade_fsm/static/tests/tours/task_template_tour.js', - 'bemade_fsm/static/tests/tours/equipment_tour.js', - 'bemade_fsm/static/tests/tours/sale_order_tour.js', - ], 'web.report_assets_common': [ 'bemade_fsm/static/src/scss/bemade_fsm.scss' ], diff --git a/bemade_fsm/reports/worksheet_custom_report_templates.xml b/bemade_fsm/reports/worksheet_custom_report_templates.xml index 192455a..7436646 100644 --- a/bemade_fsm/reports/worksheet_custom_report_templates.xml +++ b/bemade_fsm/reports/worksheet_custom_report_templates.xml @@ -242,6 +242,20 @@ +
+
+
Planned start:
+
+
+
+
+
+
Planned end:
+
+
+
+
+
Site Contacts:
diff --git a/bemade_fsm/reports/worksheet_templates.xml b/bemade_fsm/reports/worksheet_templates.xml deleted file mode 100644 index 026f037..0000000 --- a/bemade_fsm/reports/worksheet_templates.xml +++ /dev/null @@ -1,146 +0,0 @@ - - - - - Complete Worksheet Report (PDF) - project.task - qweb-pdf - bemade_fsm.worksheet_complete - - '%s Worksheet %s' % (time.strftime('%Y-%m-%d'), object.name) - - - report - - - - - - - - \ No newline at end of file From fb7b0cb3b6783dd8803bdefa3b280bd9e1c073b6 Mon Sep 17 00:00:00 2001 From: Marc Durepos Date: Fri, 26 Jan 2024 15:53:51 -0500 Subject: [PATCH 07/27] bemade_fsm: updated translations for FR --- bemade_fsm/i18n/fr.po | 154 +++++++++++++++++++++++++++++++----------- 1 file changed, 114 insertions(+), 40 deletions(-) diff --git a/bemade_fsm/i18n/fr.po b/bemade_fsm/i18n/fr.po index facf7ab..532b57e 100644 --- a/bemade_fsm/i18n/fr.po +++ b/bemade_fsm/i18n/fr.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 15.0+e\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-10-02 20:26+0000\n" -"PO-Revision-Date: 2023-10-02 20:26+0000\n" +"POT-Creation-Date: 2024-01-26 20:41+0000\n" +"PO-Revision-Date: 2024-01-26 20:41+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -56,12 +56,12 @@ msgstr "" #. module: bemade_fsm #: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table msgid "Taxes" -msgstr "" +msgstr "Taxes" #. module: bemade_fsm #: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table msgid "Total" -msgstr "" +msgstr "Total" #. module: bemade_fsm #: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table @@ -86,18 +86,18 @@ msgstr "" #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment__activity_state msgid "Activity State" -msgstr "" +msgstr "État de l'activité" #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment__activity_type_icon msgid "Activity Type Icon" -msgstr "" +msgstr "Icône du type d'activité" #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment__tag_ids #: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_equipment_summary msgid "Application" -msgstr "" +msgstr "Application" #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_visit__approx_date @@ -119,14 +119,12 @@ msgstr "Bloqué" #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_project_task__allow_billable msgid "Can be billed" -msgstr "" +msgstr "Peut être facturé" #. module: bemade_fsm -#: model:ir.model.fields,help:bemade_fsm.field_res_partner__is_site_contact -#: model:ir.model.fields,help:bemade_fsm.field_res_users__is_site_contact -msgid "" -"Check if the contact is a site contact, otherwise it is a not in that list" -msgstr "" +#: model_terms:ir.ui.view,arch_db:bemade_fsm.project_task_from_template_wizard_view_form +msgid "Cancel" +msgstr "Annuler" #. module: bemade_fsm #: model:ir.model.fields,help:bemade_fsm.field_bemade_fsm_equipment__tag_ids @@ -146,7 +144,7 @@ msgstr "Équipement client" #: model:ir.ui.menu,name:bemade_fsm.menu_service_client #: model:ir.ui.menu,name:bemade_fsm.menu_service_client_clients msgid "Clients" -msgstr "" +msgstr "Clients" #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment_tag__color @@ -171,18 +169,29 @@ msgstr "Complété" #. module: bemade_fsm #: model:ir.model,name:bemade_fsm.model_res_partner msgid "Contact" -msgstr "" +msgstr "Contact" #. module: bemade_fsm #: model_terms:ir.ui.view,arch_db:bemade_fsm.sale_order_form_inherit msgid "Contacts and Equipment" msgstr "Contacts et équipements" +#. module: bemade_fsm +#: model_terms:ir.ui.view,arch_db:bemade_fsm.project_task_from_template_wizard_view_form +msgid "Create Task" +msgstr "Créer une tâche" + +#. module: bemade_fsm +#: model:ir.model,name:bemade_fsm.model_project_task_from_template_wizard +msgid "Create Task from Template Wizard" +msgstr "Assistant pour création de tâche à partir d'un gabarit" + #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment__create_uid #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment_tag__create_uid #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment_type__create_uid #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_visit__create_uid +#: model:ir.model.fields,field_description:bemade_fsm.field_project_task_from_template_wizard__create_uid #: model:ir.model.fields,field_description:bemade_fsm.field_project_task_template__create_uid msgid "Created by" msgstr "Créé par" @@ -192,6 +201,7 @@ msgstr "Créé par" #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment_tag__create_date #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment_type__create_date #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_visit__create_date +#: model:ir.model.fields,field_description:bemade_fsm.field_project_task_from_template_wizard__create_date #: model:ir.model.fields,field_description:bemade_fsm.field_project_task_template__create_date msgid "Created on" msgstr "Date de création" @@ -257,7 +267,7 @@ msgstr "Livré" #: model_terms:ir.ui.view,arch_db:bemade_fsm.task_template_form_view #: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table msgid "Description" -msgstr "" +msgstr "Description" #. module: bemade_fsm #: model_terms:ir.ui.view,arch_db:bemade_fsm.view_task_form2_inherit @@ -274,6 +284,7 @@ msgstr "Détails" #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment_tag__display_name #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment_type__display_name #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_visit__display_name +#: model:ir.model.fields,field_description:bemade_fsm.field_project_task_from_template_wizard__display_name #: model:ir.model.fields,field_description:bemade_fsm.field_project_task_template__display_name msgid "Display Name" msgstr "Nom pour affichage" @@ -286,7 +297,7 @@ msgstr "Employés assignés aux tâches créées à partir de ce gabarit." #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_project_task__planned_date_end msgid "End Date" -msgstr "" +msgstr "Date de fin" #. module: bemade_fsm #: model:ir.actions.act_window,name:bemade_fsm.action_window_equipment @@ -302,8 +313,9 @@ msgstr "Équipement désservi" #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_res_partner__equipment_count +#: model:ir.model.fields,field_description:bemade_fsm.field_res_users__equipment_count msgid "Equipment Count" -msgstr "" +msgstr "Nombre d'équipemenets" #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment__complete_name @@ -313,7 +325,7 @@ msgstr "Nom d'équipement" #. module: bemade_fsm #: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_equipment_summary msgid "Equipment Serviced" -msgstr "Équipement désservi" +msgstr "Équipement(s) désservi" #. module: bemade_fsm #: model:ir.actions.act_window,name:bemade_fsm.action_window_equipment_tags @@ -347,12 +359,7 @@ msgstr "Durée estimée" #. module: bemade_fsm #: model:project.task.type,name:bemade_fsm.planning_project_stage_exception msgid "Exception" -msgstr "" - -#. module: bemade_fsm -#: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment__failed_message_ids -msgid "Failed Messages" -msgstr "Messages échoués" +msgstr "Exception" #. module: bemade_fsm #: model_terms:ir.ui.view,arch_db:bemade_fsm.bemade_fsm_project_task_form_inherit @@ -389,7 +396,7 @@ msgstr "Abonnés (partenaires)" #. module: bemade_fsm #: model:ir.model.fields,help:bemade_fsm.field_bemade_fsm_equipment__activity_type_icon msgid "Font awesome icon e.g. fa-tasks" -msgstr "" +msgstr "Icône Font Awesome p.ex. fa-tasks" #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_sale_order_line__is_fully_delivered @@ -416,9 +423,10 @@ msgstr "A un message" #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment_tag__id #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment_type__id #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_visit__id +#: model:ir.model.fields,field_description:bemade_fsm.field_project_task_from_template_wizard__id #: model:ir.model.fields,field_description:bemade_fsm.field_project_task_template__id msgid "ID" -msgstr "" +msgstr "Identifiant" #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment__activity_exception_icon @@ -455,7 +463,8 @@ msgstr "En cours" msgid "" "Indicates whether a line or all the lines in a section have been entirely " "delivered and invoiced." -msgstr "" +msgstr "Indique si une ligne ou toutes les lignes dans une section ont été entièrement " +"livrées et facturées." #. module: bemade_fsm #: model:ir.model.fields,help:bemade_fsm.field_bemade_fsm_visit__is_completed @@ -480,13 +489,19 @@ msgstr "Nom d'intervention" #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment__task_ids msgid "Interventions" -msgstr "" +msgstr "Interventions" #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_visit__is_invoiced msgid "Invoiced" msgstr "Facturé" +#. module: bemade_fsm +#: model:ir.model.fields,field_description:bemade_fsm.field_sale_order__is_fsm +#: model:ir.model.fields,field_description:bemade_fsm.field_sale_order_line__is_fsm +msgid "Is FSM" +msgstr "Est FSM" + #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_sale_order_line__is_field_service msgid "Is Field Service" @@ -501,7 +516,7 @@ msgstr "Est un abonné" #: model:ir.model.fields,field_description:bemade_fsm.field_res_partner__is_site_contact #: model:ir.model.fields,field_description:bemade_fsm.field_res_users__is_site_contact msgid "Is a site contact" -msgstr "" +msgstr "Est un contact sur site" #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_visit__label @@ -513,6 +528,7 @@ msgstr "Nom" #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment_tag____last_update #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment_type____last_update #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_visit____last_update +#: model:ir.model.fields,field_description:bemade_fsm.field_project_task_from_template_wizard____last_update #: model:ir.model.fields,field_description:bemade_fsm.field_project_task_template____last_update msgid "Last Modified on" msgstr "Dernière modification" @@ -522,6 +538,7 @@ msgstr "Dernière modification" #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment_tag__write_uid #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment_type__write_uid #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_visit__write_uid +#: model:ir.model.fields,field_description:bemade_fsm.field_project_task_from_template_wizard__write_uid #: model:ir.model.fields,field_description:bemade_fsm.field_project_task_template__write_uid msgid "Last Updated by" msgstr "Modifié par" @@ -531,6 +548,7 @@ msgstr "Modifié par" #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment_tag__write_date #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment_type__write_date #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_visit__write_date +#: model:ir.model.fields,field_description:bemade_fsm.field_project_task_from_template_wizard__write_date #: model:ir.model.fields,field_description:bemade_fsm.field_project_task_template__write_date msgid "Last Updated on" msgstr "Dernière mise à jour" @@ -558,7 +576,7 @@ msgstr "Erreur de livraison de message" #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment__message_ids msgid "Messages" -msgstr "" +msgstr "Messages" #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment__my_activity_date_deadline @@ -573,9 +591,14 @@ msgid "Name" msgstr "Nom" #. module: bemade_fsm -#: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment__activity_calendar_event_id -msgid "Next Activity Calendar Event" -msgstr "Évènement au calendrier de la prochaine activité" +#: model:ir.model.fields,field_description:bemade_fsm.field_project_task_from_template_wizard__new_task_title +msgid "New Task Title" +msgstr "Nouveau titre de tâche" + +#. module: bemade_fsm +#: model:ir.actions.act_window,name:bemade_fsm.action_new_task_from_template +msgid "New Task from Template" +msgstr "Nouvelle tâche à partir d'un gabarit" #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment__activity_date_deadline @@ -636,6 +659,7 @@ msgid "P&ID Tag" msgstr "Tag P&ID" #. module: bemade_fsm +#: model_terms:ir.ui.view,arch_db:bemade_fsm.project_task_view_search_fsm_inherit #: model_terms:ir.ui.view,arch_db:bemade_fsm.task_template_search_view msgid "Parent Task" msgstr "Tâche parent" @@ -661,6 +685,16 @@ msgstr "Notes sur l'emplacement physique" msgid "Plan as field service" msgstr "Planifier comme service terrain" +#. module: bemade_fsm +#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_info_block +msgid "Planned end:" +msgstr "Fin planifiée :" + +#. module: bemade_fsm +#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_info_block +msgid "Planned start:" +msgstr "Début planifié :" + #. module: bemade_fsm #: model:ir.model,name:bemade_fsm.model_product_template msgid "Product Template" @@ -677,10 +711,21 @@ msgstr "" " considéré lors de la planification." #. module: bemade_fsm +#: model:ir.model.fields,field_description:bemade_fsm.field_project_task_from_template_wizard__project_id #: model_terms:ir.ui.view,arch_db:bemade_fsm.task_template_search_view msgid "Project" msgstr "Projet" +#. module: bemade_fsm +#: model:ir.model.fields,field_description:bemade_fsm.field_project_task__propagate_assignment +msgid "Propagate Assignment" +msgstr "Propager l'assignation" + +#. module: bemade_fsm +#: model:ir.model.fields,help:bemade_fsm.field_project_task__propagate_assignment +msgid "Propagate assignment of this task to all subtasks." +msgstr "Propager l'assignation de cette tâche à toutes les sous-tâches." + #. module: bemade_fsm #: model:project.task.type,legend_done:bemade_fsm.planning_project_stage_exception #: model:project.task.type,legend_done:bemade_fsm.planning_project_stage_waiting_parts @@ -722,7 +767,12 @@ msgstr "Commande de ventes" #. module: bemade_fsm #: model:ir.model,name:bemade_fsm.model_sale_order_line msgid "Sales Order Line" -msgstr "Ligne de commandes de vente" +msgstr "Ligne de bons de commande" + +#. module: bemade_fsm +#: model:ir.model.fields,field_description:bemade_fsm.field_sale_order_line__section_line_ids +msgid "Section Line" +msgstr "Section" #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_project_task_template__sequence @@ -742,7 +792,7 @@ msgstr "Visites de service" #. module: bemade_fsm #: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_signature_block msgid "Signature" -msgstr "" +msgstr "Signature" #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_project_task__site_contacts @@ -759,18 +809,19 @@ msgstr "Contacts sur site :" #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_res_partner__equipment_ids +#: model:ir.model.fields,field_description:bemade_fsm.field_res_users__equipment_ids msgid "Site Equipment" -msgstr "" +msgstr "Équipement sur site" #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_project_task__planned_date_begin msgid "Start Date" -msgstr "" +msgstr "Date de début" #. module: bemade_fsm #: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_tasks_table msgid "Status" -msgstr "" +msgstr "Status" #. module: bemade_fsm #: model:ir.model.fields,help:bemade_fsm.field_bemade_fsm_equipment__activity_state @@ -816,6 +867,7 @@ msgstr "Tâche" #: model:ir.actions.act_window,name:bemade_fsm.task_template_act_window #: model:ir.model.fields,field_description:bemade_fsm.field_product_product__task_template_id #: model:ir.model.fields,field_description:bemade_fsm.field_product_template__task_template_id +#: model:ir.model.fields,field_description:bemade_fsm.field_project_task_from_template_wizard__task_template_id #: model_terms:ir.ui.view,arch_db:bemade_fsm.task_template_form_view #: model_terms:ir.ui.view,arch_db:bemade_fsm.task_template_search_view #: model_terms:ir.ui.view,arch_db:bemade_fsm.task_template_tree_view @@ -855,6 +907,11 @@ msgstr "" "L'équipement à désservir par défaut pour les nouveaux articles de commande " "de ventes." +#. module: bemade_fsm +#: model:ir.model.fields,help:bemade_fsm.field_project_task_from_template_wizard__project_id +msgid "The project the new task should be created in." +msgstr "" + #. module: bemade_fsm #: model:ir.model.fields,help:bemade_fsm.field_bemade_fsm_visit__so_section_id msgid "" @@ -864,6 +921,19 @@ msgstr "" "La section sur la commande de vente représentant la main d'oeuvre et les " "pièces pour cette visite" +#. module: bemade_fsm +#: model:ir.model.fields,help:bemade_fsm.field_project_task_from_template_wizard__task_template_id +msgid "The template to use when creating the new task." +msgstr "" + +#. module: bemade_fsm +#: model:ir.model.fields,help:bemade_fsm.field_project_task_from_template_wizard__new_task_title +msgid "" +"The title (name) for the newly created task. If left blank, the name of the " +"template will be used." +msgstr "Le titre (nom) de la nouvelle tâche. Si laissé vide, le nom du " +"gabarit sera utilisé." + #. module: bemade_fsm #: model_terms:ir.actions.act_window,help:bemade_fsm.task_template_act_window msgid "There are no task templates, click above to create one." @@ -909,10 +979,14 @@ msgstr "Voir tâche" #: model:ir.model.fields,field_description:bemade_fsm.field_project_task__visit_id #: model:ir.model.fields,field_description:bemade_fsm.field_sale_order__visit_ids #: model:ir.model.fields,field_description:bemade_fsm.field_sale_order_line__visit_id -#: model:ir.model.fields,field_description:bemade_fsm.field_sale_order_line__visit_ids msgid "Visit" msgstr "Visite" +#. module: bemade_fsm +#: model:ir.model.fields,field_description:bemade_fsm.field_sale_order_line__visit_ids +msgid "Visits" +msgstr "Visites" + #. module: bemade_fsm #: model:project.task.type,name:bemade_fsm.planning_project_stage_waiting_parts msgid "Waiting on Parts" From c8dc89cf29e3f912d77dd24eb001b0496bb1e6ad Mon Sep 17 00:00:00 2001 From: Marc Durepos Date: Mon, 5 Feb 2024 11:48:47 -0500 Subject: [PATCH 08/27] bemade_packing_wizard: bug fix on package creation --- bemade_packing_wizard/__manifest__.py | 2 +- bemade_packing_wizard/wizard/choose_delivery_package.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bemade_packing_wizard/__manifest__.py b/bemade_packing_wizard/__manifest__.py index 41b136d..0e822a8 100644 --- a/bemade_packing_wizard/__manifest__.py +++ b/bemade_packing_wizard/__manifest__.py @@ -1,6 +1,6 @@ { 'name': 'Packing wizard', - 'version': '15.0.1.0.0', + 'version': '15.0.1.0.1', 'category': 'Extra Tools', 'summary': 'Allow automated packing type creation', 'description': """ diff --git a/bemade_packing_wizard/wizard/choose_delivery_package.py b/bemade_packing_wizard/wizard/choose_delivery_package.py index 55a0a9e..f7cfc01 100644 --- a/bemade_packing_wizard/wizard/choose_delivery_package.py +++ b/bemade_packing_wizard/wizard/choose_delivery_package.py @@ -59,7 +59,7 @@ class ChooseDeliveryPackage(models.TransientModel): # if no package type found, create one if not delivery_package_type: delivery_package_type = delivery_package_type.create({ - 'name': f'Box {vals["width"]}x{vals["height"]}x{vals["length"]}', + 'name': f'Box {self.width}x{self.height}x{self.length}', 'width': self.width, 'height': self.height, 'packaging_length': self.length, From 8b1d9c0aa9f9dc13ed85f71d85b91ae19c1af4b6 Mon Sep 17 00:00:00 2001 From: Marc Durepos Date: Tue, 19 Dec 2023 19:09:47 -0500 Subject: [PATCH 09/27] bemade_fsm: fixed tests on propagate assignment due to new default. --- bemade_fsm/tests/test_task.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/bemade_fsm/tests/test_task.py b/bemade_fsm/tests/test_task.py index c2b5543..e04cffc 100644 --- a/bemade_fsm/tests/test_task.py +++ b/bemade_fsm/tests/test_task.py @@ -23,7 +23,8 @@ class TaskTest(BemadeFSMBaseTest): task.propagate_assignment = True task.write({ - 'user_ids': [Command.set([self.user.id])] + 'user_ids': [Command.set([self.user.id])], + 'propagate_assignment': True, }) self.assertTrue(all([t.user_ids == self.user for t in task | task._get_all_subtasks()])) @@ -31,7 +32,8 @@ class TaskTest(BemadeFSMBaseTest): def test_reassigning_task_doesnt_propagate_by_default(self): task = self.task task.write({ - 'user_ids': [Command.set([self.user.id])] + 'user_ids': [Command.set([self.user.id])], + 'propagate_assignment': True, }) self.assertFalse(any([t.user_ids for t in task.child_ids.child_ids])) From 5f414db90967c67d64448f62b167b1ed6acb227b Mon Sep 17 00:00:00 2001 From: Marc Durepos Date: Mon, 12 Feb 2024 17:02:56 -0500 Subject: [PATCH 10/27] bemade_fsm: update work order titles to match new specs --- bemade_fsm/__manifest__.py | 2 +- bemade_fsm/models/task.py | 2 +- bemade_fsm/reports/worksheet_custom_report_templates.xml | 5 ++++- bemade_fsm/reports/worksheet_custom_reports.xml | 4 ++-- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/bemade_fsm/__manifest__.py b/bemade_fsm/__manifest__.py index 78f0d36..e6da671 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.9', + 'version': '15.0.1.0.10', '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/task.py b/bemade_fsm/models/task.py index b7f2fb0..56ab0ac 100644 --- a/bemade_fsm/models/task.py +++ b/bemade_fsm/models/task.py @@ -94,7 +94,7 @@ class Task(models.Model): pattern = re.compile(r"\d+$") matches = map(lambda n: pattern.search(n), prev_seqs) seq += max(map(lambda n: int(n.group(1)) if n else 0), matches) - rec.work_order_number = rec.sale_order_id.name.replace('SO', 'WO', 1) \ + rec.work_order_number = rec.sale_order_id.name.replace('SO', 'SVR', 1) \ + f"-{seq}" return res diff --git a/bemade_fsm/reports/worksheet_custom_report_templates.xml b/bemade_fsm/reports/worksheet_custom_report_templates.xml index 7436646..6e3dcc2 100644 --- a/bemade_fsm/reports/worksheet_custom_report_templates.xml +++ b/bemade_fsm/reports/worksheet_custom_report_templates.xml @@ -218,7 +218,10 @@ - \ No newline at end of file + From 095160db5f7ac363ab459d31bbc0c1656358e32e Mon Sep 17 00:00:00 2001 From: Marc Durepos Date: Mon, 12 Feb 2024 21:25:04 -0500 Subject: [PATCH 13/27] bemade_fsm: add spacing in header section --- bemade_fsm/reports/worksheet_custom_report_templates.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bemade_fsm/reports/worksheet_custom_report_templates.xml b/bemade_fsm/reports/worksheet_custom_report_templates.xml index 1cf24c0..63cbcb3 100644 --- a/bemade_fsm/reports/worksheet_custom_report_templates.xml +++ b/bemade_fsm/reports/worksheet_custom_report_templates.xml @@ -226,7 +226,7 @@ - + /> -
From 59eb7e2239ba8b810e25120ac5b7649ba62e0249 Mon Sep 17 00:00:00 2001 From: Marc Durepos Date: Tue, 13 Feb 2024 12:26:13 -0500 Subject: [PATCH 14/27] bemade_fsm: significant changes to work order report - Remove date from main title heading (only in planned start) - Add customer PO number under main heading - Remove technician assignment info (only in timesheets) - Add table for timesheet entries - Remove time from time and materials section - Hide visit section headers from materials section - Add a section for showing the description of the visit task - Add some
elements for better visual separation --- bemade_fsm/__manifest__.py | 2 +- bemade_fsm/i18n/fr.po | 152 ++++++++++++------ .../worksheet_custom_report_templates.xml | 147 +++++++++++++---- 3 files changed, 217 insertions(+), 84 deletions(-) diff --git a/bemade_fsm/__manifest__.py b/bemade_fsm/__manifest__.py index e6da671..26450fe 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.10', + 'version': '15.0.1.0.11', '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/i18n/fr.po b/bemade_fsm/i18n/fr.po index 532b57e..dc46097 100644 --- a/bemade_fsm/i18n/fr.po +++ b/bemade_fsm/i18n/fr.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 15.0+e\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-26 20:41+0000\n" -"PO-Revision-Date: 2024-01-26 20:41+0000\n" +"POT-Creation-Date: 2024-02-13 17:09+0000\n" +"PO-Revision-Date: 2024-02-13 17:09+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -16,7 +16,7 @@ msgstr "" "Plural-Forms: \n" #. module: bemade_fsm -#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table +#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table_with_pricing_and_labour msgid "" "\n" " Amount\n" @@ -24,9 +24,9 @@ msgid "" " Total Price" msgstr "" "\n" -" Prix\n" +" Montant\n" " \n" -" Prix" +" Prix Total" #. module: bemade_fsm #: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_signature_block @@ -40,12 +40,12 @@ msgstr "" " " #. module: bemade_fsm -#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table +#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table_with_pricing_and_labour msgid "Disc.%" -msgstr "Escompte %" +msgstr "% Escompte" #. module: bemade_fsm -#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table +#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table_with_pricing_and_labour msgid "" "Section\n" " Subtotal" @@ -54,19 +54,19 @@ msgstr "" " Sous-total" #. module: bemade_fsm -#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table +#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table_with_pricing_and_labour msgid "Taxes" -msgstr "Taxes" +msgstr "" #. module: bemade_fsm -#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table +#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table_with_pricing_and_labour msgid "Total" -msgstr "Total" +msgstr "" #. module: bemade_fsm -#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table +#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table_with_pricing_and_labour msgid "Untaxed amount" -msgstr "Montant hors taxes" +msgstr "Montant hors-taxes" #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment__message_needaction @@ -78,11 +78,6 @@ msgstr "Action requise" msgid "Activities" msgstr "Activités" -#. module: bemade_fsm -#: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment__activity_exception_decoration -msgid "Activity Exception Decoration" -msgstr "" - #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment__activity_state msgid "Activity State" @@ -97,7 +92,7 @@ msgstr "Icône du type d'activité" #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment__tag_ids #: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_equipment_summary msgid "Application" -msgstr "Application" +msgstr "" #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_visit__approx_date @@ -144,7 +139,7 @@ msgstr "Équipement client" #: model:ir.ui.menu,name:bemade_fsm.menu_service_client #: model:ir.ui.menu,name:bemade_fsm.menu_service_client_clients msgid "Clients" -msgstr "Clients" +msgstr "" #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment_tag__color @@ -169,7 +164,7 @@ msgstr "Complété" #. module: bemade_fsm #: model:ir.model,name:bemade_fsm.model_res_partner msgid "Contact" -msgstr "Contact" +msgstr "" #. module: bemade_fsm #: model_terms:ir.ui.view,arch_db:bemade_fsm.sale_order_form_inherit @@ -181,11 +176,26 @@ msgstr "Contacts et équipements" msgid "Create Task" msgstr "Créer une tâche" +#. module: bemade_fsm +#. openerp-web +#: code:addons/bemade_fsm/static/src/xml/project_view_buttons.xml:0 +#: code:addons/bemade_fsm/static/src/xml/project_view_buttons.xml:0 +#, python-format +msgid "Create Task from Template" +msgstr "Créer une tâche à partir d'un gabarit" + #. module: bemade_fsm #: model:ir.model,name:bemade_fsm.model_project_task_from_template_wizard msgid "Create Task from Template Wizard" msgstr "Assistant pour création de tâche à partir d'un gabarit" +#. module: bemade_fsm +#. openerp-web +#: code:addons/bemade_fsm/static/src/xml/project_view_buttons.xml:0 +#, python-format +msgid "Create from Template" +msgstr "Créer à partir d'un gabarit" + #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment__create_uid #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment_tag__create_uid @@ -216,6 +226,11 @@ msgstr "Client" msgid "Customer:" msgstr "Client :" +#. module: bemade_fsm +#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_timesheet_entries +msgid "Date" +msgstr "" + #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_project_task_template__assignees msgid "Default Assignees" @@ -257,7 +272,8 @@ msgid "Default tags for tasks created from this template." msgstr "Étiquettes par défaut pour tâches créées à partir de ce gabarit." #. module: bemade_fsm -#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table +#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_materials_table +#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table_with_pricing_and_labour msgid "Delivered" msgstr "Livré" @@ -265,9 +281,10 @@ msgstr "Livré" #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment__description #: model:ir.model.fields,field_description:bemade_fsm.field_project_task_template__description #: model_terms:ir.ui.view,arch_db:bemade_fsm.task_template_form_view -#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table +#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_materials_table +#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table_with_pricing_and_labour msgid "Description" -msgstr "Description" +msgstr "" #. module: bemade_fsm #: model_terms:ir.ui.view,arch_db:bemade_fsm.view_task_form2_inherit @@ -359,7 +376,7 @@ msgstr "Durée estimée" #. module: bemade_fsm #: model:project.task.type,name:bemade_fsm.planning_project_stage_exception msgid "Exception" -msgstr "Exception" +msgstr "" #. module: bemade_fsm #: model_terms:ir.ui.view,arch_db:bemade_fsm.bemade_fsm_project_task_form_inherit @@ -463,8 +480,9 @@ msgstr "En cours" msgid "" "Indicates whether a line or all the lines in a section have been entirely " "delivered and invoiced." -msgstr "Indique si une ligne ou toutes les lignes dans une section ont été entièrement " -"livrées et facturées." +msgstr "" +"Indique si une ligne ou toutes les lignes dans une section ont été " +"entièrement livrées et facturées." #. module: bemade_fsm #: model:ir.model.fields,help:bemade_fsm.field_bemade_fsm_visit__is_completed @@ -489,7 +507,7 @@ msgstr "Nom d'intervention" #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment__task_ids msgid "Interventions" -msgstr "Interventions" +msgstr "" #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_visit__is_invoiced @@ -568,6 +586,11 @@ msgstr "Pièce jointe principale" msgid "Mark as Delivered" msgstr "Marquer comme livré" +#. module: bemade_fsm +#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_materials_table +msgid "Materials" +msgstr "Matériaux" + #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment__message_has_error msgid "Message Delivery error" @@ -576,7 +599,16 @@ msgstr "Erreur de livraison de message" #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment__message_ids msgid "Messages" -msgstr "Messages" +msgstr "" + +#. module: bemade_fsm +#: code:addons/bemade_fsm/models/task.py:0 +#, python-format +msgid "" +"Modifying the planned start or end time on a task is not permitted when that" +" task already has planning records associated to it. Please modify or delete" +" the planning records instead." +msgstr "" #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_equipment__my_activity_date_deadline @@ -641,7 +673,8 @@ msgid "Number of unread messages" msgstr "Nombre de messages non-lus" #. module: bemade_fsm -#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table +#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_materials_table +#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table_with_pricing_and_labour msgid "Ordered" msgstr "Commandé" @@ -698,7 +731,7 @@ msgstr "Début planifié :" #. module: bemade_fsm #: model:ir.model,name:bemade_fsm.model_product_template msgid "Product Template" -msgstr "Modèle de produit" +msgstr "Modèle d'article" #. module: bemade_fsm #: model:ir.model.fields,help:bemade_fsm.field_product_product__is_field_service @@ -762,7 +795,7 @@ msgstr "Section de commande de vente" #: model:ir.model,name:bemade_fsm.model_sale_order #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_visit__sale_order_id msgid "Sales Order" -msgstr "Commande de ventes" +msgstr "Bon de commande" #. module: bemade_fsm #: model:ir.model,name:bemade_fsm.model_sale_order_line @@ -780,7 +813,9 @@ msgid "Sequence" msgstr "Séquence" #. module: bemade_fsm +#: code:addons/bemade_fsm/models/sale_order.py:0 #: model:ir.model.fields,field_description:bemade_fsm.field_bemade_fsm_visit__task_id +#, python-format msgid "Service Visit" msgstr "Visite de service" @@ -792,7 +827,7 @@ msgstr "Visites de service" #. module: bemade_fsm #: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_signature_block msgid "Signature" -msgstr "Signature" +msgstr "" #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_project_task__site_contacts @@ -821,7 +856,7 @@ msgstr "Date de début" #. module: bemade_fsm #: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_tasks_table msgid "Status" -msgstr "Status" +msgstr "" #. module: bemade_fsm #: model:ir.model.fields,help:bemade_fsm.field_bemade_fsm_equipment__activity_state @@ -887,14 +922,10 @@ msgstr "Nom de tâche" #. module: bemade_fsm #: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_tasks_table +#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_timesheet_entries msgid "Technician" msgstr "Technicien·ne" -#. module: bemade_fsm -#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_info_block -msgid "Technicians:" -msgstr "Technicien·ne·s:" - #. module: bemade_fsm #: model:ir.model,name:bemade_fsm.model_project_task_template msgid "Template for new project tasks" @@ -924,15 +955,16 @@ msgstr "" #. module: bemade_fsm #: model:ir.model.fields,help:bemade_fsm.field_project_task_from_template_wizard__task_template_id msgid "The template to use when creating the new task." -msgstr "" +msgstr "Le gabarit à utiliser en créant la nouvelle tâche." #. module: bemade_fsm #: model:ir.model.fields,help:bemade_fsm.field_project_task_from_template_wizard__new_task_title msgid "" "The title (name) for the newly created task. If left blank, the name of the " "template will be used." -msgstr "Le titre (nom) de la nouvelle tâche. Si laissé vide, le nom du " -"gabarit sera utilisé." +msgstr "" +"Le titre (nom) de la nouvelle tâche. Si laissé vide, le nom du gabarit sera " +"utilisé." #. module: bemade_fsm #: model_terms:ir.actions.act_window,help:bemade_fsm.task_template_act_window @@ -941,7 +973,22 @@ msgstr "" "Il n'existe aucun gabarit de tâche, cliquez ci-dessus pour en créer une." #. module: bemade_fsm -#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table +#: code:addons/bemade_fsm/models/sale_order_line.py:0 +#, python-format +msgid "" +"This task has been created from: %s (%s)" +msgstr "" +"Cette tâche a été créée à partir de : %s (%s)" + +#. module: bemade_fsm +#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_timesheet_entries +msgid "Time" +msgstr "Temps" + +#. module: bemade_fsm +#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table_with_pricing_and_labour msgid "Time & Material" msgstr "Temps & matériaux" @@ -956,7 +1003,7 @@ msgid "Type of the exception activity on record." msgstr "Type d'activité d'exception sur l'enregistrement." #. module: bemade_fsm -#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table +#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_sale_order_table_with_pricing_and_labour msgid "Unit Price" msgstr "Prix unitaire" @@ -976,9 +1023,11 @@ msgid "View Task" msgstr "Voir tâche" #. module: bemade_fsm +#: code:addons/bemade_fsm/models/sale_order_line.py:0 #: model:ir.model.fields,field_description:bemade_fsm.field_project_task__visit_id #: model:ir.model.fields,field_description:bemade_fsm.field_sale_order__visit_ids #: model:ir.model.fields,field_description:bemade_fsm.field_sale_order_line__visit_id +#, python-format msgid "Visit" msgstr "Visite" @@ -1002,24 +1051,23 @@ msgstr "Messages du site web" msgid "Website communication history" msgstr "Historique de communication du site web" +#. module: bemade_fsm +#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_timesheet_entries +msgid "Work Completed" +msgstr "Travaux complétés" + #. module: bemade_fsm #: model:project.task.type,name:bemade_fsm.planning_project_stage_work_completed msgid "Work Executed" msgstr "Travaux exécutés" -#. module: bemade_fsm -#: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_info_block -msgid "Work Order" -msgstr "Bon de travail" - #. module: bemade_fsm #: model_terms:ir.ui.view,arch_db:bemade_fsm.workorder_page_info_block msgid "" "Work Order\n" " Contacts:" msgstr "" -"Bon de travail\n" -" Contacts :" +"Contacts recevant le bon de travail :" #. module: bemade_fsm #: model:ir.model.fields,field_description:bemade_fsm.field_project_task__work_order_contacts diff --git a/bemade_fsm/reports/worksheet_custom_report_templates.xml b/bemade_fsm/reports/worksheet_custom_report_templates.xml index 63cbcb3..c8c98b3 100644 --- a/bemade_fsm/reports/worksheet_custom_report_templates.xml +++ b/bemade_fsm/reports/worksheet_custom_report_templates.xml @@ -1,7 +1,61 @@ -