From 7a88542442417520ac1bf4bec83e00700c705ad6 Mon Sep 17 00:00:00 2001 From: EdgarRetes Date: Wed, 27 Nov 2024 14:59:24 -0600 Subject: [PATCH] [ADD] fieldservice_account_analytic: Route analytic plan --- fieldservice_account_analytic/__manifest__.py | 1 + .../models/__init__.py | 1 + .../models/analytic_account.py | 1 + .../models/fsm_location.py | 27 +++++++++--------- .../models/fsm_order.py | 27 +++++++++--------- .../models/fsm_route.py | 28 +++++++++++++++++++ .../tests/test_fsm_account_wizard.py | 3 +- 7 files changed, 61 insertions(+), 27 deletions(-) create mode 100644 fieldservice_account_analytic/models/fsm_route.py diff --git a/fieldservice_account_analytic/__manifest__.py b/fieldservice_account_analytic/__manifest__.py index 0268402faa..63efe24e2d 100644 --- a/fieldservice_account_analytic/__manifest__.py +++ b/fieldservice_account_analytic/__manifest__.py @@ -13,6 +13,7 @@ "fieldservice_account", "analytic", "product", + "fieldservice_route", ], "data": [ "data/ir_rule.xml", diff --git a/fieldservice_account_analytic/models/__init__.py b/fieldservice_account_analytic/models/__init__.py index 28a8ed802c..9846360f61 100644 --- a/fieldservice_account_analytic/models/__init__.py +++ b/fieldservice_account_analytic/models/__init__.py @@ -5,6 +5,7 @@ analytic_account, fsm_location, fsm_order, + fsm_route, res_company, res_config_settings, res_partner, diff --git a/fieldservice_account_analytic/models/analytic_account.py b/fieldservice_account_analytic/models/analytic_account.py index 45ee491a6b..f0e0b029eb 100644 --- a/fieldservice_account_analytic/models/analytic_account.py +++ b/fieldservice_account_analytic/models/analytic_account.py @@ -34,3 +34,4 @@ class AnalyticAccount(models.Model): fsm_order_id = fields.One2many("fsm.order", "analytic_account_id", copy=False) fsm_location_id = fields.One2many("fsm.location", "analytic_account_id", copy=False) + fsm_route_id = fields.One2many("fsm.route", "analytic_account_id", copy=False) diff --git a/fieldservice_account_analytic/models/fsm_location.py b/fieldservice_account_analytic/models/fsm_location.py index 4fd805b909..617bcc0dd4 100644 --- a/fieldservice_account_analytic/models/fsm_location.py +++ b/fieldservice_account_analytic/models/fsm_location.py @@ -55,17 +55,18 @@ def _search( order=order, ) - @api.model - def create(self, vals): - record = super().create(vals) - analytic_account = self.env["account.analytic.account"].create( - { - "name": vals.get("name"), - "plan_id": self.env.ref( - "fieldservice_account_analytic.fsm_location_analytic_plan" - ).id, - "fsm_location_id": record, - } - ) - record.analytic_account_id = analytic_account + @api.model_create_multi + def create(self, vals_list): + record = super().create(vals_list) + for vals in vals_list: + analytic_account = self.env["account.analytic.account"].create( + { + "name": vals.get("name"), + "plan_id": self.env.ref( + "fieldservice_account_analytic.fsm_location_analytic_plan" + ).id, + "fsm_location_id": record, + } + ) + record.analytic_account_id = analytic_account return record diff --git a/fieldservice_account_analytic/models/fsm_order.py b/fieldservice_account_analytic/models/fsm_order.py index 9ed6894df6..d5664555b0 100644 --- a/fieldservice_account_analytic/models/fsm_order.py +++ b/fieldservice_account_analytic/models/fsm_order.py @@ -41,17 +41,18 @@ def write(self, vals): order.customer_id = order.location_id.customer_id.id return res - @api.model - def create(self, vals): - record = super().create(vals) - analytic_account = self.env["account.analytic.account"].create( - { - "name": vals.get("name"), - "plan_id": self.env.ref( - "fieldservice_account_analytic.fsm_order_analytic_plan" - ).id, - "fsm_order_id": record, - } - ) - record.analytic_account_id = analytic_account + @api.model_create_multi + def create(self, vals_list): + record = super().create(vals_list) + for vals in vals_list: + analytic_account = self.env["account.analytic.account"].create( + { + "name": vals.get("name"), + "plan_id": self.env.ref( + "fieldservice_account_analytic.fsm_order_analytic_plan" + ).id, + "fsm_order_id": record, + } + ) + record.analytic_account_id = analytic_account return record diff --git a/fieldservice_account_analytic/models/fsm_route.py b/fieldservice_account_analytic/models/fsm_route.py new file mode 100644 index 0000000000..fe77142acd --- /dev/null +++ b/fieldservice_account_analytic/models/fsm_route.py @@ -0,0 +1,28 @@ +# Copyright (C) 2018 - TODAY, Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class FSMRoute(models.Model): + _inherit = "fsm.route" + + analytic_account_id = fields.Many2one( + "account.analytic.account", string="Analytic Account", company_dependent=True + ) + + @api.model_create_multi + def create(self, vals_list): + record = super().create(vals_list) + for vals in vals_list: + analytic_account = self.env["account.analytic.account"].create( + { + "name": vals.get("name"), + "plan_id": self.env.ref( + "fieldservice_account_analytic.fsm_route_analytic_plan" + ).id, + "fsm_route_id": record, + } + ) + record.analytic_account_id = analytic_account + return record diff --git a/fieldservice_account_analytic/tests/test_fsm_account_wizard.py b/fieldservice_account_analytic/tests/test_fsm_account_wizard.py index 064e1c5d48..e73b62f562 100644 --- a/fieldservice_account_analytic/tests/test_fsm_account_wizard.py +++ b/fieldservice_account_analytic/tests/test_fsm_account_wizard.py @@ -162,7 +162,8 @@ def test_fsm_orders_1(self): self.move_line.create( { "account_id": self.default_account_revenue.id, - "analytic_account_id": {self.test_analytic_account.id: 100}, + "move_id": general_move1.id, + "analytic_distribution": {self.test_analytic_account.id: 100}, "fsm_order_ids": [(6, 0, order.ids)], } )