From b14c733c417341db3172fe510a08d34c46ddd5e2 Mon Sep 17 00:00:00 2001 From: brian10048 Date: Tue, 26 Nov 2019 16:59:14 -0500 Subject: [PATCH 01/39] [IMP] fieldservice_account: Simplify module - This change removes most of the invoicing logic from fieldservice_account and puts it into its own module --- fieldservice_account_analytic/README.rst | 121 +++++ fieldservice_account_analytic/__init__.py | 4 + fieldservice_account_analytic/__manifest__.py | 25 + .../data/ir_rule.xml | 28 ++ .../models/account_invoice_line.py | 21 + .../models/analytic_account.py | 28 ++ .../models/fsm_location.py | 11 + .../readme/CONFIGURE.rst | 4 + .../readme/CONTRIBUTORS.rst | 3 + .../readme/CREDITS.rst | 3 + .../readme/DESCRIPTION.rst | 2 + .../readme/INSTALL.rst | 1 + .../readme/USAGE.rst | 1 + .../security/ir.model.access.csv | 5 + .../static/description/icon.png | Bin 0 -> 17808 bytes .../static/description/index.html | 460 ++++++++++++++++++ .../views/fsm_location.xml | 20 + 17 files changed, 737 insertions(+) create mode 100644 fieldservice_account_analytic/README.rst create mode 100644 fieldservice_account_analytic/__init__.py create mode 100644 fieldservice_account_analytic/__manifest__.py create mode 100644 fieldservice_account_analytic/data/ir_rule.xml create mode 100644 fieldservice_account_analytic/models/account_invoice_line.py create mode 100644 fieldservice_account_analytic/models/analytic_account.py create mode 100644 fieldservice_account_analytic/models/fsm_location.py create mode 100644 fieldservice_account_analytic/readme/CONFIGURE.rst create mode 100644 fieldservice_account_analytic/readme/CONTRIBUTORS.rst create mode 100644 fieldservice_account_analytic/readme/CREDITS.rst create mode 100644 fieldservice_account_analytic/readme/DESCRIPTION.rst create mode 100644 fieldservice_account_analytic/readme/INSTALL.rst create mode 100644 fieldservice_account_analytic/readme/USAGE.rst create mode 100644 fieldservice_account_analytic/security/ir.model.access.csv create mode 100644 fieldservice_account_analytic/static/description/icon.png create mode 100644 fieldservice_account_analytic/static/description/index.html create mode 100644 fieldservice_account_analytic/views/fsm_location.xml diff --git a/fieldservice_account_analytic/README.rst b/fieldservice_account_analytic/README.rst new file mode 100644 index 0000000000..278e295c55 --- /dev/null +++ b/fieldservice_account_analytic/README.rst @@ -0,0 +1,121 @@ +========================== +Field Service - Accounting +========================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Ffield--service-lightgray.png?logo=github + :target: https://github.com/OCA/field-service/tree/12.0/fieldservice_account + :alt: OCA/field-service +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/field-service-12-0/field-service-12-0-fieldservice_account + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/264/12.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds the ability to track employee time and contractor +costs for Field Service Orders. It also adds functionality to create +a customer invoice and a vendor bill when a Field Service Order is +completed. + +**Table of contents** + +.. contents:: + :local: + +Installation +============ + +No special installation instructions + +Configuration +============= + +To configure this module, you need to: + +* Go to Field Service > Master Data > Locations +* Create or select a location and set their analytic account + +Usage +===== + +To use the module: + +On a field service order, open the "Accounting" tab. Depending on +whether the logged in user or an employee or not, they will see +either a place to enter timesheet records or contractor costs. + +The total cost of the order is calculated based on the entries in +the employee timesheet entries and contractor costs. + +When an order is completed, a customer invoice will be generated for +the employee time and the contractor costs. A vendor bill will be +created for the contractor costs. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Open Source Integrators + +Contributors +~~~~~~~~~~~~ + +* Michael Allen +* Serpent Consulting Services Pvt. Ltd. + +Other credits +~~~~~~~~~~~~~ + +The development of this module has been financially supported by: + +* Open Source Integrators + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-osimallen| image:: https://github.com/osimallen.png?size=40px + :target: https://github.com/osimallen + :alt: osimallen + +Current `maintainer `__: + +|maintainer-osimallen| + +This module is part of the `OCA/field-service `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/fieldservice_account_analytic/__init__.py b/fieldservice_account_analytic/__init__.py new file mode 100644 index 0000000000..66ca882fcc --- /dev/null +++ b/fieldservice_account_analytic/__init__.py @@ -0,0 +1,4 @@ +# Copyright (C) 2018 Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import models diff --git a/fieldservice_account_analytic/__manifest__.py b/fieldservice_account_analytic/__manifest__.py new file mode 100644 index 0000000000..88cbae6efc --- /dev/null +++ b/fieldservice_account_analytic/__manifest__.py @@ -0,0 +1,25 @@ +# Copyright (C) 2018 Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': 'Field Service - Analytic Accounting', + 'summary': """Track analytic accounts on Field Service locations + and orders""", + 'version': '12.0.2.0.1', + 'category': 'Field Service', + 'author': 'Open Source Integrators, Odoo Community Association (OCA)', + 'website': 'https://github.com/OCA/field-service', + 'depends': [ + 'fieldservice_account', + 'analytic', + 'product', + ], + 'data': [ + 'data/ir_rule.xml', + 'security/ir.model.access.csv', + 'views/fsm_location.xml', + ], + 'license': 'AGPL-3', + 'development_status': 'Beta', + 'maintainers': ['osimallen'], +} diff --git a/fieldservice_account_analytic/data/ir_rule.xml b/fieldservice_account_analytic/data/ir_rule.xml new file mode 100644 index 0000000000..622bca4ee7 --- /dev/null +++ b/fieldservice_account_analytic/data/ir_rule.xml @@ -0,0 +1,28 @@ + + + + + account.analytic.line.fsm.manager + + + [(1, '=', 1)] + + + + + + + + + account.analytic.line.fsm.dispatcher + + + [(1, '=', 1)] + + + + + + + + diff --git a/fieldservice_account_analytic/models/account_invoice_line.py b/fieldservice_account_analytic/models/account_invoice_line.py new file mode 100644 index 0000000000..ca90dab2b1 --- /dev/null +++ b/fieldservice_account_analytic/models/account_invoice_line.py @@ -0,0 +1,21 @@ +# Copyright (C) 2018 - TODAY, Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, models, _ +from odoo.exceptions import ValidationError + + +class AccountInvoiceLine(models.Model): + _inherit = "account.invoice.line" + + @api.model + def create(self, vals): + order = self.env['fsm.order'].browse(vals.get('fsm_order_id')) + if order: + if order.location_id.analytic_account_id: + vals['account_analytic_id'] = order.location_id.\ + analytic_account_id.id + else: + raise ValidationError(_("No analytic account " + "set on the order's Location.")) + return super(AccountInvoiceLine, self).create(vals) diff --git a/fieldservice_account_analytic/models/analytic_account.py b/fieldservice_account_analytic/models/analytic_account.py new file mode 100644 index 0000000000..62bb9c12a7 --- /dev/null +++ b/fieldservice_account_analytic/models/analytic_account.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, _ +from odoo.exceptions import ValidationError + + +class AccountAnalyticLine(models.Model): + _inherit = 'account.analytic.line' + + fsm_order_id = fields.Many2one('fsm.order', string='FSM Order') + product_id = fields.Many2one('product.product', string='Time Type') + + @api.model + def create(self, vals): + order = self.env['fsm.order'].browse(vals.get('fsm_order_id')) + if order: + if order.location_id.analytic_account_id: + vals['account_id'] = order.location_id.analytic_account_id.id + else: + raise ValidationError(_("No analytic account set " + "on the order's Location.")) + return super(AccountAnalyticLine, self).create(vals) + + @api.onchange('product_id') + def onchange_product_id(self): + if self.product_id: + self.name = self.product_id.name diff --git a/fieldservice_account_analytic/models/fsm_location.py b/fieldservice_account_analytic/models/fsm_location.py new file mode 100644 index 0000000000..07d4f5c450 --- /dev/null +++ b/fieldservice_account_analytic/models/fsm_location.py @@ -0,0 +1,11 @@ +# Copyright (C) 2018 - TODAY, Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class FSMLocation(models.Model): + _inherit = 'fsm.location' + + analytic_account_id = fields.Many2one('account.analytic.account', + string='Analytic Account') diff --git a/fieldservice_account_analytic/readme/CONFIGURE.rst b/fieldservice_account_analytic/readme/CONFIGURE.rst new file mode 100644 index 0000000000..ecc5d5f7a7 --- /dev/null +++ b/fieldservice_account_analytic/readme/CONFIGURE.rst @@ -0,0 +1,4 @@ +To configure this module, you need to: + +* Go to Field Service > Master Data > Locations +* Create or select a location and set their analytic account diff --git a/fieldservice_account_analytic/readme/CONTRIBUTORS.rst b/fieldservice_account_analytic/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000000..e9143c46f2 --- /dev/null +++ b/fieldservice_account_analytic/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* Michael Allen +* Serpent Consulting Services Pvt. Ltd. +* Brian McMaster diff --git a/fieldservice_account_analytic/readme/CREDITS.rst b/fieldservice_account_analytic/readme/CREDITS.rst new file mode 100644 index 0000000000..0eff0acf4e --- /dev/null +++ b/fieldservice_account_analytic/readme/CREDITS.rst @@ -0,0 +1,3 @@ +The development of this module has been financially supported by: + +* Open Source Integrators diff --git a/fieldservice_account_analytic/readme/DESCRIPTION.rst b/fieldservice_account_analytic/readme/DESCRIPTION.rst new file mode 100644 index 0000000000..67dffec1b1 --- /dev/null +++ b/fieldservice_account_analytic/readme/DESCRIPTION.rst @@ -0,0 +1,2 @@ +This module adds the ability to track your analytic accounts on field +service orders. diff --git a/fieldservice_account_analytic/readme/INSTALL.rst b/fieldservice_account_analytic/readme/INSTALL.rst new file mode 100644 index 0000000000..54fea7becb --- /dev/null +++ b/fieldservice_account_analytic/readme/INSTALL.rst @@ -0,0 +1 @@ +No special installation instructions diff --git a/fieldservice_account_analytic/readme/USAGE.rst b/fieldservice_account_analytic/readme/USAGE.rst new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/fieldservice_account_analytic/readme/USAGE.rst @@ -0,0 +1 @@ + diff --git a/fieldservice_account_analytic/security/ir.model.access.csv b/fieldservice_account_analytic/security/ir.model.access.csv new file mode 100644 index 0000000000..07c8b38ef7 --- /dev/null +++ b/fieldservice_account_analytic/security/ir.model.access.csv @@ -0,0 +1,5 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_account_analytic_line_fsm_manager,account.analytic.line.manager,model_account_analytic_line,fieldservice.group_fsm_manager,1,1,1,1 +access_account_analytic_line_fsm_dispatcher,account.analytic.line.dispatcher,model_account_analytic_line,fieldservice.group_fsm_dispatcher,1,1,1,0 +access_analytic_account_fsm_manager,account.analytic.account.manager,analytic.model_account_analytic_account,fieldservice.group_fsm_manager,1,1,1,1 +access_analytic_account_fsm_dispatcher,account.analytic.account.dispatcher,analytic.model_account_analytic_account,fieldservice.group_fsm_dispatcher,1,1,1,0 diff --git a/fieldservice_account_analytic/static/description/icon.png b/fieldservice_account_analytic/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..955674d8f0b8c47de3ffa9db25cb109fbe4a1091 GIT binary patch literal 17808 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 literal 0 HcmV?d00001 diff --git a/fieldservice_account_analytic/static/description/index.html b/fieldservice_account_analytic/static/description/index.html new file mode 100644 index 0000000000..be45db7518 --- /dev/null +++ b/fieldservice_account_analytic/static/description/index.html @@ -0,0 +1,460 @@ + + + + + + +Field Service - Accounting + + + +
+

Field Service - Accounting

+ + +

Beta License: AGPL-3 OCA/field-service Translate me on Weblate Try me on Runbot

+

This module adds the ability to track employee time and contractor +costs for Field Service Orders. It also adds functionality to create +a customer invoice and a vendor bill when a Field Service Order is +completed.

+

Table of contents

+ +
+

Installation

+

No special installation instructions

+
+
+

Configuration

+

To configure this module, you need to:

+
    +
  • Go to Field Service > Master Data > Locations
  • +
  • Create or select a location and set their analytic account
  • +
+
+
+

Usage

+

To use the module:

+

On a field service order, open the “Accounting” tab. Depending on +whether the logged in user or an employee or not, they will see +either a place to enter timesheet records or contractor costs.

+

The total cost of the order is calculated based on the entries in +the employee timesheet entries and contractor costs.

+

When an order is completed, a customer invoice will be generated for +the employee time and the contractor costs. A vendor bill will be +created for the contractor costs.

+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Open Source Integrators
  • +
+
+
+

Contributors

+ +
+
+

Other credits

+

The development of this module has been financially supported by:

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

Current maintainer:

+

osimallen

+

This module is part of the OCA/field-service project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/fieldservice_account_analytic/views/fsm_location.xml b/fieldservice_account_analytic/views/fsm_location.xml new file mode 100644 index 0000000000..80477e2838 --- /dev/null +++ b/fieldservice_account_analytic/views/fsm_location.xml @@ -0,0 +1,20 @@ + + + + + fsm.location.form.analytic + fsm.location + + + + + + + + + + + + + From 917608b25cefcab346fac398f2c06c22aca8ff72 Mon Sep 17 00:00:00 2001 From: hparfr Date: Wed, 27 Nov 2019 15:30:48 +0100 Subject: [PATCH 02/39] Clean up customer_id (billing), cost and change link between account_invoice* and fsm_order --- fieldservice_account_analytic/__init__.py | 1 + fieldservice_account_analytic/__manifest__.py | 8 +++ .../demo/fsm_location.xml | 20 ++++++ .../migrations/12.0.2.0.0/post-migration.py | 10 +++ .../models/fsm_location.py | 10 ++- .../models/fsm_location_person.py | 13 ++++ .../models/fsm_order.py | 47 ++++++++++++++ .../readme/DESCRIPTION.rst | 2 + .../report/fsm_order_report_template.xml | 16 +++++ .../views/fsm_location.xml | 46 +++++++++++--- .../views/fsm_order.xml | 62 +++++++++++++++++++ .../views/fsm_person.xml | 26 ++++++++ .../views/fsm_route.xml | 14 +++++ .../wizard/__init__.py | 1 + .../wizard/fsm_wizard.py | 13 ++++ 15 files changed, 281 insertions(+), 8 deletions(-) create mode 100644 fieldservice_account_analytic/demo/fsm_location.xml create mode 100644 fieldservice_account_analytic/migrations/12.0.2.0.0/post-migration.py create mode 100644 fieldservice_account_analytic/models/fsm_location_person.py create mode 100644 fieldservice_account_analytic/models/fsm_order.py create mode 100644 fieldservice_account_analytic/report/fsm_order_report_template.xml create mode 100644 fieldservice_account_analytic/views/fsm_order.xml create mode 100644 fieldservice_account_analytic/views/fsm_person.xml create mode 100644 fieldservice_account_analytic/views/fsm_route.xml create mode 100644 fieldservice_account_analytic/wizard/__init__.py create mode 100644 fieldservice_account_analytic/wizard/fsm_wizard.py diff --git a/fieldservice_account_analytic/__init__.py b/fieldservice_account_analytic/__init__.py index 66ca882fcc..f272a247d4 100644 --- a/fieldservice_account_analytic/__init__.py +++ b/fieldservice_account_analytic/__init__.py @@ -2,3 +2,4 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from . import models +from . import wizard \ No newline at end of file diff --git a/fieldservice_account_analytic/__manifest__.py b/fieldservice_account_analytic/__manifest__.py index 88cbae6efc..4d93f31191 100644 --- a/fieldservice_account_analytic/__manifest__.py +++ b/fieldservice_account_analytic/__manifest__.py @@ -17,8 +17,16 @@ 'data': [ 'data/ir_rule.xml', 'security/ir.model.access.csv', + 'report/fsm_order_report_template.xml', 'views/fsm_location.xml', + 'views/fsm_order.xml', + 'views/fsm_person.xml', + 'views/fsm_route.xml', ], + 'demo': [ + 'demo/fsm_location.xml', + ], + 'pre_init_hook': 'pre_init_hook', 'license': 'AGPL-3', 'development_status': 'Beta', 'maintainers': ['osimallen'], diff --git a/fieldservice_account_analytic/demo/fsm_location.xml b/fieldservice_account_analytic/demo/fsm_location.xml new file mode 100644 index 0000000000..fc3a0e6201 --- /dev/null +++ b/fieldservice_account_analytic/demo/fsm_location.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/fieldservice_account_analytic/migrations/12.0.2.0.0/post-migration.py b/fieldservice_account_analytic/migrations/12.0.2.0.0/post-migration.py new file mode 100644 index 0000000000..7218f7ce5e --- /dev/null +++ b/fieldservice_account_analytic/migrations/12.0.2.0.0/post-migration.py @@ -0,0 +1,10 @@ +# Copyright (C) 2019, Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + + +def migrate(env, version): + if not version: + return + + env.execute("UPDATE fsm_order SET bill_to = 'location' " + "WHERE bill_to IS NULL;") diff --git a/fieldservice_account_analytic/models/fsm_location.py b/fieldservice_account_analytic/models/fsm_location.py index 07d4f5c450..92611bcbc0 100644 --- a/fieldservice_account_analytic/models/fsm_location.py +++ b/fieldservice_account_analytic/models/fsm_location.py @@ -1,7 +1,7 @@ # Copyright (C) 2018 - TODAY, Open Source Integrators # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import fields, models +from odoo import fields, models, api class FSMLocation(models.Model): @@ -9,3 +9,11 @@ class FSMLocation(models.Model): analytic_account_id = fields.Many2one('account.analytic.account', string='Analytic Account') + + customer_id = fields.Many2one( + 'res.partner', string='Billed Customer', required=True, + ondelete='restrict', auto_join=True, track_visibility='onchange') + + @api.onchange('fsm_parent_id') + def _onchange_fsm_parent_id_account(self): + self.customer_id = self.fsm_parent_id.customer_id or False diff --git a/fieldservice_account_analytic/models/fsm_location_person.py b/fieldservice_account_analytic/models/fsm_location_person.py new file mode 100644 index 0000000000..d6e3a1f2e1 --- /dev/null +++ b/fieldservice_account_analytic/models/fsm_location_person.py @@ -0,0 +1,13 @@ +# Copyright (C) 2018 - TODAY, Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class FSMLocationPerson(models.Model): + _inherit = 'fsm.location.person' + + customer_id = fields.Many2one('res.partner', string='Billed Customer', + required=True, ondelete='restrict', + auto_join=True, + track_visibility='onchange') diff --git a/fieldservice_account_analytic/models/fsm_order.py b/fieldservice_account_analytic/models/fsm_order.py new file mode 100644 index 0000000000..d88ac6091a --- /dev/null +++ b/fieldservice_account_analytic/models/fsm_order.py @@ -0,0 +1,47 @@ +# 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 FSMOrder(models.Model): + _inherit = 'fsm.order' + + total_cost = fields.Float(compute='_compute_total_cost', + string='Total Cost') + bill_to = fields.Selection([('location', 'Bill Location'), + ('contact', 'Bill Contact')], + string="Bill to", + required=True, + default="location") + customer_id = fields.Many2one('res.partner', string='Contact', + domain=[('customer', '=', True)], + change_default=True, + index=True, + track_visibility='always') + + def _compute_total_cost(self): + """ To be overridden as needed from other modules """ + for order in self: + order.total_cost = 0.0 + + @api.onchange('location_id') + def _onchange_location_id_customer_account(self): + if self.location_id: + return {'domain': {'customer_id': [('service_location_id', '=', + self.location_id.name)]}} + else: + return {'domain': {'customer_id': [('id', '!=', None)]}} + + @api.onchange('customer_id') + def _onchange_customer_id_location(self): + if self.customer_id: + self.location_id = self.customer_id.service_location_id + + @api.multi + def write(self, vals): + res = super(FSMOrder, self).write(vals) + for order in self: + if 'customer_id' not in vals and order.customer_id is False: + order.customer_id = order.location_id.customer_id.id + return res diff --git a/fieldservice_account_analytic/readme/DESCRIPTION.rst b/fieldservice_account_analytic/readme/DESCRIPTION.rst index 67dffec1b1..2941a900e3 100644 --- a/fieldservice_account_analytic/readme/DESCRIPTION.rst +++ b/fieldservice_account_analytic/readme/DESCRIPTION.rst @@ -1,2 +1,4 @@ This module adds the ability to track your analytic accounts on field service orders. +It also adds the option to track the billing partner for field service +locations and orders. diff --git a/fieldservice_account_analytic/report/fsm_order_report_template.xml b/fieldservice_account_analytic/report/fsm_order_report_template.xml new file mode 100644 index 0000000000..e00d75f2c7 --- /dev/null +++ b/fieldservice_account_analytic/report/fsm_order_report_template.xml @@ -0,0 +1,16 @@ + + + + + diff --git a/fieldservice_account_analytic/views/fsm_location.xml b/fieldservice_account_analytic/views/fsm_location.xml index 80477e2838..3a5e23cdcf 100644 --- a/fieldservice_account_analytic/views/fsm_location.xml +++ b/fieldservice_account_analytic/views/fsm_location.xml @@ -1,19 +1,51 @@ + + + fsm.location.tree.accounting + fsm.location + + + + + + + + + - fsm.location.form.analytic + fsm.location.form.accounting fsm.location - + - - + + - + + + - + + + + + + + + + + fsm.location.search + fsm.location + + + + + + + + diff --git a/fieldservice_account_analytic/views/fsm_order.xml b/fieldservice_account_analytic/views/fsm_order.xml new file mode 100644 index 0000000000..db0ccee063 --- /dev/null +++ b/fieldservice_account_analytic/views/fsm_order.xml @@ -0,0 +1,62 @@ + + + + fsm.order.form.account + fsm.order + + + + + + + + + + + + + + + + + fsm.order.tree + fsm.order + + + + + + + + + + + fsm.order.kanban + fsm.order + + + + + + +
+ + + +
+
+
+
+ + + Orders + fsm.order + + + + + + + + +
diff --git a/fieldservice_account_analytic/views/fsm_person.xml b/fieldservice_account_analytic/views/fsm_person.xml new file mode 100644 index 0000000000..1e8581675e --- /dev/null +++ b/fieldservice_account_analytic/views/fsm_person.xml @@ -0,0 +1,26 @@ + + + + fsm.person.form + fsm.person + + + + + + + + + + + fsm.location.person.form + fsm.location.person + + + + + + + + + diff --git a/fieldservice_account_analytic/views/fsm_route.xml b/fieldservice_account_analytic/views/fsm_route.xml new file mode 100644 index 0000000000..4f1df4b04b --- /dev/null +++ b/fieldservice_account_analytic/views/fsm_route.xml @@ -0,0 +1,14 @@ + + + + fsm.route.form + fsm.route + + + + + + + + + diff --git a/fieldservice_account_analytic/wizard/__init__.py b/fieldservice_account_analytic/wizard/__init__.py new file mode 100644 index 0000000000..c013f4b7c3 --- /dev/null +++ b/fieldservice_account_analytic/wizard/__init__.py @@ -0,0 +1 @@ +from . import fsm_wizard diff --git a/fieldservice_account_analytic/wizard/fsm_wizard.py b/fieldservice_account_analytic/wizard/fsm_wizard.py new file mode 100644 index 0000000000..a3050f737d --- /dev/null +++ b/fieldservice_account_analytic/wizard/fsm_wizard.py @@ -0,0 +1,13 @@ +# Copyright (C) 2018 Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import models + + +class FSMWizard(models.TransientModel): + _inherit = 'fsm.wizard' + + def _prepare_fsm_location(self, partner): + res = super()._prepare_fsm_location(partner) + res['customer_id'] = partner.id + res['owner_id'] = partner.id + return res From 46f0d1e3ba88cbda988a7a5926d2cdededaa5609 Mon Sep 17 00:00:00 2001 From: hparfr Date: Wed, 27 Nov 2019 15:31:46 +0100 Subject: [PATCH 03/39] add missing files --- fieldservice_account_analytic/models/__init__.py | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 fieldservice_account_analytic/models/__init__.py diff --git a/fieldservice_account_analytic/models/__init__.py b/fieldservice_account_analytic/models/__init__.py new file mode 100644 index 0000000000..5c0842d55d --- /dev/null +++ b/fieldservice_account_analytic/models/__init__.py @@ -0,0 +1,10 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import ( + account_invoice, + analytic_account, + fsm_location, + fsm_location_person, + fsm_order, + fsm_person, +) From 24089f97ec80c02766ae673a3dc4135e9c4c2d41 Mon Sep 17 00:00:00 2001 From: brian10048 Date: Mon, 2 Dec 2019 17:32:47 -0500 Subject: [PATCH 04/39] [FIX] fieldservice_account: tests and travis --- fieldservice_account_analytic/__init__.py | 3 +- fieldservice_account_analytic/__manifest__.py | 1 - fieldservice_account_analytic/init_hook.py | 8 +++++ .../models/__init__.py | 3 +- .../tests/__init__.py | 4 +++ .../tests/test_fsm_account_wizard.py | 30 +++++++++++++++++++ .../views/fsm_person.xml | 26 ---------------- 7 files changed, 45 insertions(+), 30 deletions(-) create mode 100644 fieldservice_account_analytic/init_hook.py create mode 100644 fieldservice_account_analytic/tests/__init__.py create mode 100644 fieldservice_account_analytic/tests/test_fsm_account_wizard.py delete mode 100644 fieldservice_account_analytic/views/fsm_person.xml diff --git a/fieldservice_account_analytic/__init__.py b/fieldservice_account_analytic/__init__.py index f272a247d4..a60aec2546 100644 --- a/fieldservice_account_analytic/__init__.py +++ b/fieldservice_account_analytic/__init__.py @@ -2,4 +2,5 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from . import models -from . import wizard \ No newline at end of file +from . import wizard +from .init_hook import pre_init_hook diff --git a/fieldservice_account_analytic/__manifest__.py b/fieldservice_account_analytic/__manifest__.py index 4d93f31191..5b98148f4f 100644 --- a/fieldservice_account_analytic/__manifest__.py +++ b/fieldservice_account_analytic/__manifest__.py @@ -20,7 +20,6 @@ 'report/fsm_order_report_template.xml', 'views/fsm_location.xml', 'views/fsm_order.xml', - 'views/fsm_person.xml', 'views/fsm_route.xml', ], 'demo': [ diff --git a/fieldservice_account_analytic/init_hook.py b/fieldservice_account_analytic/init_hook.py new file mode 100644 index 0000000000..730d91faac --- /dev/null +++ b/fieldservice_account_analytic/init_hook.py @@ -0,0 +1,8 @@ +# Copyright (C) 2019 Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + + +def pre_init_hook(cr): + cr.execute("""ALTER TABLE "fsm_location" ADD "customer_id" INT;""") + cr.execute("""UPDATE "fsm_location" SET customer_id = owner_id + WHERE customer_id IS NULL;""") diff --git a/fieldservice_account_analytic/models/__init__.py b/fieldservice_account_analytic/models/__init__.py index 5c0842d55d..173f04e574 100644 --- a/fieldservice_account_analytic/models/__init__.py +++ b/fieldservice_account_analytic/models/__init__.py @@ -1,10 +1,9 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from . import ( - account_invoice, + account_invoice_line, analytic_account, fsm_location, fsm_location_person, fsm_order, - fsm_person, ) diff --git a/fieldservice_account_analytic/tests/__init__.py b/fieldservice_account_analytic/tests/__init__.py new file mode 100644 index 0000000000..3eb82c6555 --- /dev/null +++ b/fieldservice_account_analytic/tests/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2019 Brian McMaster +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) + +from . import test_fsm_account_wizard diff --git a/fieldservice_account_analytic/tests/test_fsm_account_wizard.py b/fieldservice_account_analytic/tests/test_fsm_account_wizard.py new file mode 100644 index 0000000000..5a3eaf84ae --- /dev/null +++ b/fieldservice_account_analytic/tests/test_fsm_account_wizard.py @@ -0,0 +1,30 @@ +# Copyright 2019 Ecosoft Co., Ltd (http://ecosoft.co.th/) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) + +from odoo.addons.fieldservice_account.tests.test_fsm_account import ( + FSMAccountCase +) + + +class FSMAccountCase(FSMAccountCase): + + def setUp(self): + super(FSMAccountCase, self).setUp() + + def test_convert_contact_to_fsm_location(self): + """ + Test converting a contact to a location to make sure the customer_id + and owner_id get set correctly + :return: + """ + self.Wizard.action_convert_location(self.test_loc_partner2) + + # check if there is a new FSM Location with the same name + self.wiz_location = self.env['fsm.location']. \ + search([('name', '=', self.test_loc_partner2.name)]) + + # check if location is created successfully and fields copied over + self.assertEqual(self.test_loc_partner2, + self.wiz_location.customer_id) + self.assertEqual(self.test_loc_partner2, + self.wiz_location.owner_id) diff --git a/fieldservice_account_analytic/views/fsm_person.xml b/fieldservice_account_analytic/views/fsm_person.xml deleted file mode 100644 index 1e8581675e..0000000000 --- a/fieldservice_account_analytic/views/fsm_person.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - fsm.person.form - fsm.person - - - - - - - - - - - fsm.location.person.form - fsm.location.person - - - - - - - - - From a2dd002f48d966ef7adb3a6c3a83ccbaaadbfa70 Mon Sep 17 00:00:00 2001 From: brian10048 Date: Thu, 5 Dec 2019 13:28:31 -0500 Subject: [PATCH 05/39] [IMP] fieldservice_account: Update maintainers --- fieldservice_account_analytic/__manifest__.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/fieldservice_account_analytic/__manifest__.py b/fieldservice_account_analytic/__manifest__.py index 5b98148f4f..b7e1330238 100644 --- a/fieldservice_account_analytic/__manifest__.py +++ b/fieldservice_account_analytic/__manifest__.py @@ -28,5 +28,9 @@ 'pre_init_hook': 'pre_init_hook', 'license': 'AGPL-3', 'development_status': 'Beta', - 'maintainers': ['osimallen'], + 'maintainers': [ + 'osimallen', + 'brian10048', + 'bodedra', + ], } From df4c5f8061e77e2dab4cb91f67ff61987d736fde Mon Sep 17 00:00:00 2001 From: oca-travis Date: Thu, 5 Dec 2019 19:00:14 +0000 Subject: [PATCH 06/39] [UPD] Update fieldservice_account_analytic.pot --- .../i18n/fieldservice_account_analytic.pot | 109 ++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 fieldservice_account_analytic/i18n/fieldservice_account_analytic.pot diff --git a/fieldservice_account_analytic/i18n/fieldservice_account_analytic.pot b/fieldservice_account_analytic/i18n/fieldservice_account_analytic.pot new file mode 100644 index 0000000000..c68a6c0d8f --- /dev/null +++ b/fieldservice_account_analytic/i18n/fieldservice_account_analytic.pot @@ -0,0 +1,109 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fieldservice_account_analytic +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: fieldservice_account_analytic +#: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.fsm_location_form_view_analytic +#: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.fsm_order_form_analytic +msgid "Accounting" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_location__analytic_account_id +msgid "Analytic Account" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_account_analytic_line +msgid "Analytic Line" +msgstr "" + +#. module: fieldservice_account_analytic +#: selection:fsm.order,bill_to:0 +msgid "Bill Contact" +msgstr "" + +#. module: fieldservice_account_analytic +#: selection:fsm.order,bill_to:0 +msgid "Bill Location" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_order__bill_to +msgid "Bill to" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_location__customer_id +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_location_person__customer_id +msgid "Billed Customer" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_order__customer_id +msgid "Contact" +msgstr "" + +#. module: fieldservice_account_analytic +#: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.fsm_location_search_view_analytic +msgid "Customer" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_account_analytic_line__fsm_order_id +msgid "FSM Order" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_fsm_wizard +msgid "FSM Record Conversion" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_fsm_location +msgid "Field Service Location" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_fsm_location_person +msgid "Field Service Location Person Info" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_fsm_order +msgid "Field Service Order" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_account_invoice_line +msgid "Invoice Line" +msgstr "" + +#. module: fieldservice_account_analytic +#: code:addons/fieldservice_account_analytic/models/account_invoice_line.py:19 +#: code:addons/fieldservice_account_analytic/models/analytic_account.py:21 +#, python-format +msgid "No analytic account set on the order's Location." +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_account_analytic_line__product_id +msgid "Time Type" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_order__total_cost +msgid "Total Cost" +msgstr "" + From 0c703fcf5ce212c42d0c8e7104ef795467858b56 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 5 Dec 2019 19:10:27 +0000 Subject: [PATCH 07/39] [UPD] README.rst --- fieldservice_account_analytic/README.rst | 44 +++++++++---------- .../static/description/index.html | 34 ++++++-------- 2 files changed, 33 insertions(+), 45 deletions(-) diff --git a/fieldservice_account_analytic/README.rst b/fieldservice_account_analytic/README.rst index 278e295c55..aeb2336ff6 100644 --- a/fieldservice_account_analytic/README.rst +++ b/fieldservice_account_analytic/README.rst @@ -1,6 +1,6 @@ -========================== -Field Service - Accounting -========================== +=================================== +Field Service - Analytic Accounting +=================================== .. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! @@ -14,10 +14,10 @@ Field Service - Accounting :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Ffield--service-lightgray.png?logo=github - :target: https://github.com/OCA/field-service/tree/12.0/fieldservice_account + :target: https://github.com/OCA/field-service/tree/12.0/fieldservice_account_analytic :alt: OCA/field-service .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/field-service-12-0/field-service-12-0-fieldservice_account + :target: https://translation.odoo-community.org/projects/field-service-12-0/field-service-12-0-fieldservice_account_analytic :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png :target: https://runbot.odoo-community.org/runbot/264/12.0 @@ -25,10 +25,10 @@ Field Service - Accounting |badge1| |badge2| |badge3| |badge4| |badge5| -This module adds the ability to track employee time and contractor -costs for Field Service Orders. It also adds functionality to create -a customer invoice and a vendor bill when a Field Service Order is -completed. +This module adds the ability to track your analytic accounts on field +service orders. +It also adds the option to track the billing partner for field service +locations and orders. **Table of contents** @@ -51,18 +51,7 @@ To configure this module, you need to: Usage ===== -To use the module: -On a field service order, open the "Accounting" tab. Depending on -whether the logged in user or an employee or not, they will see -either a place to enter timesheet records or contractor costs. - -The total cost of the order is calculated based on the entries in -the employee timesheet entries and contractor costs. - -When an order is completed, a customer invoice will be generated for -the employee time and the contractor costs. A vendor bill will be -created for the contractor costs. Bug Tracker =========== @@ -70,7 +59,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -87,6 +76,7 @@ Contributors * Michael Allen * Serpent Consulting Services Pvt. Ltd. +* Brian McMaster Other credits ~~~~~~~~~~~~~ @@ -111,11 +101,17 @@ promote its widespread use. .. |maintainer-osimallen| image:: https://github.com/osimallen.png?size=40px :target: https://github.com/osimallen :alt: osimallen +.. |maintainer-brian10048| image:: https://github.com/brian10048.png?size=40px + :target: https://github.com/brian10048 + :alt: brian10048 +.. |maintainer-bodedra| image:: https://github.com/bodedra.png?size=40px + :target: https://github.com/bodedra + :alt: bodedra -Current `maintainer `__: +Current `maintainers `__: -|maintainer-osimallen| +|maintainer-osimallen| |maintainer-brian10048| |maintainer-bodedra| -This module is part of the `OCA/field-service `_ project on GitHub. +This module is part of the `OCA/field-service `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/fieldservice_account_analytic/static/description/index.html b/fieldservice_account_analytic/static/description/index.html index be45db7518..ac71aa178f 100644 --- a/fieldservice_account_analytic/static/description/index.html +++ b/fieldservice_account_analytic/static/description/index.html @@ -4,7 +4,7 @@ -Field Service - Accounting +Field Service - Analytic Accounting -
-

Field Service - Accounting

+
+

Field Service - Analytic Accounting

-

Beta License: AGPL-3 OCA/field-service Translate me on Weblate Try me on Runbot

-

This module adds the ability to track employee time and contractor -costs for Field Service Orders. It also adds functionality to create -a customer invoice and a vendor bill when a Field Service Order is -completed.

+

Beta License: AGPL-3 OCA/field-service Translate me on Weblate Try me on Runbot

+

This module adds the ability to track your analytic accounts on field +service orders. +It also adds the option to track the billing partner for field service +locations and orders.

Table of contents

Usage

-

To use the module:

-

On a field service order, open the “Accounting” tab. Depending on -whether the logged in user or an employee or not, they will see -either a place to enter timesheet records or contractor costs.

-

The total cost of the order is calculated based on the entries in -the employee timesheet entries and contractor costs.

-

When an order is completed, a customer invoice will be generated for -the employee time and the contractor costs. A vendor bill will be -created for the contractor costs.

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -feedback.

+feedback.

Do not contact contributors directly about support or help with technical issues.

@@ -433,6 +424,7 @@

Contributors

@@ -449,9 +441,9 @@

Maintainers

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

-

Current maintainer:

-

osimallen

-

This module is part of the OCA/field-service project on GitHub.

+

Current maintainers:

+

osimallen brian10048 bodedra

+

This module is part of the OCA/field-service project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

From 4bf4e84300391e16bbd69ec671d90f2d2b2f51d2 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 5 Dec 2019 19:10:31 +0000 Subject: [PATCH 08/39] fieldservice_account_analytic 12.0.2.0.2 --- fieldservice_account_analytic/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fieldservice_account_analytic/__manifest__.py b/fieldservice_account_analytic/__manifest__.py index b7e1330238..6857117776 100644 --- a/fieldservice_account_analytic/__manifest__.py +++ b/fieldservice_account_analytic/__manifest__.py @@ -5,7 +5,7 @@ 'name': 'Field Service - Analytic Accounting', 'summary': """Track analytic accounts on Field Service locations and orders""", - 'version': '12.0.2.0.1', + 'version': '12.0.2.0.2', 'category': 'Field Service', 'author': 'Open Source Integrators, Odoo Community Association (OCA)', 'website': 'https://github.com/OCA/field-service', From a4b5ab38e9b5d80a7cbc467c0ae82bd8c740b4c3 Mon Sep 17 00:00:00 2001 From: scampbell Date: Wed, 11 Dec 2019 15:28:09 -0800 Subject: [PATCH 09/39] [IMP] Analytic Account Company Dependant --- fieldservice_account_analytic/models/fsm_location.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fieldservice_account_analytic/models/fsm_location.py b/fieldservice_account_analytic/models/fsm_location.py index 92611bcbc0..bf9ed97b7b 100644 --- a/fieldservice_account_analytic/models/fsm_location.py +++ b/fieldservice_account_analytic/models/fsm_location.py @@ -8,7 +8,8 @@ class FSMLocation(models.Model): _inherit = 'fsm.location' analytic_account_id = fields.Many2one('account.analytic.account', - string='Analytic Account') + string='Analytic Account', + company_dependent=True) customer_id = fields.Many2one( 'res.partner', string='Billed Customer', required=True, From c85c14a4a031101d992f4eb19a92cd2839fa7c61 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 12 Dec 2019 15:52:24 +0000 Subject: [PATCH 10/39] fieldservice_account_analytic 12.0.2.1.0 --- fieldservice_account_analytic/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fieldservice_account_analytic/__manifest__.py b/fieldservice_account_analytic/__manifest__.py index 6857117776..d041e45c72 100644 --- a/fieldservice_account_analytic/__manifest__.py +++ b/fieldservice_account_analytic/__manifest__.py @@ -5,7 +5,7 @@ 'name': 'Field Service - Analytic Accounting', 'summary': """Track analytic accounts on Field Service locations and orders""", - 'version': '12.0.2.0.2', + 'version': '12.0.2.1.0', 'category': 'Field Service', 'author': 'Open Source Integrators, Odoo Community Association (OCA)', 'website': 'https://github.com/OCA/field-service', From f18c02ba8d4fca1488af48b1fd515481ff6f6e96 Mon Sep 17 00:00:00 2001 From: Murtuza Saleh Date: Tue, 17 Dec 2019 13:51:21 +0530 Subject: [PATCH 11/39] [12.0][IMP] fieldservice --- fieldservice_account_analytic/__manifest__.py | 1 - fieldservice_account_analytic/views/fsm_route.xml | 14 -------------- 2 files changed, 15 deletions(-) delete mode 100644 fieldservice_account_analytic/views/fsm_route.xml diff --git a/fieldservice_account_analytic/__manifest__.py b/fieldservice_account_analytic/__manifest__.py index d041e45c72..de1e8f178e 100644 --- a/fieldservice_account_analytic/__manifest__.py +++ b/fieldservice_account_analytic/__manifest__.py @@ -20,7 +20,6 @@ 'report/fsm_order_report_template.xml', 'views/fsm_location.xml', 'views/fsm_order.xml', - 'views/fsm_route.xml', ], 'demo': [ 'demo/fsm_location.xml', diff --git a/fieldservice_account_analytic/views/fsm_route.xml b/fieldservice_account_analytic/views/fsm_route.xml deleted file mode 100644 index 4f1df4b04b..0000000000 --- a/fieldservice_account_analytic/views/fsm_route.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - fsm.route.form - fsm.route - - - - - - - - - From 8a6fc95b82c8af5ab372a349aeaa8cd11f8f8276 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 18 Dec 2019 15:26:50 +0000 Subject: [PATCH 12/39] fieldservice_account_analytic 12.0.3.0.0 --- fieldservice_account_analytic/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fieldservice_account_analytic/__manifest__.py b/fieldservice_account_analytic/__manifest__.py index de1e8f178e..945f00ca47 100644 --- a/fieldservice_account_analytic/__manifest__.py +++ b/fieldservice_account_analytic/__manifest__.py @@ -5,7 +5,7 @@ 'name': 'Field Service - Analytic Accounting', 'summary': """Track analytic accounts on Field Service locations and orders""", - 'version': '12.0.2.1.0', + 'version': '12.0.3.0.0', 'category': 'Field Service', 'author': 'Open Source Integrators, Odoo Community Association (OCA)', 'website': 'https://github.com/OCA/field-service', From b591a6e21a1571d929ea03b9f398afb134beae93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nelson=20Ram=C3=ADrez=20S=C3=A1nchez?= Date: Wed, 15 Jan 2020 04:01:03 +0000 Subject: [PATCH 13/39] Added translation using Weblate (Spanish (Chile)) --- fieldservice_account_analytic/i18n/es_CL.po | 109 ++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 fieldservice_account_analytic/i18n/es_CL.po diff --git a/fieldservice_account_analytic/i18n/es_CL.po b/fieldservice_account_analytic/i18n/es_CL.po new file mode 100644 index 0000000000..9e4dc3a174 --- /dev/null +++ b/fieldservice_account_analytic/i18n/es_CL.po @@ -0,0 +1,109 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fieldservice_account_analytic +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: es_CL\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. module: fieldservice_account_analytic +#: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.fsm_location_form_view_analytic +#: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.fsm_order_form_analytic +msgid "Accounting" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_location__analytic_account_id +msgid "Analytic Account" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_account_analytic_line +msgid "Analytic Line" +msgstr "" + +#. module: fieldservice_account_analytic +#: selection:fsm.order,bill_to:0 +msgid "Bill Contact" +msgstr "" + +#. module: fieldservice_account_analytic +#: selection:fsm.order,bill_to:0 +msgid "Bill Location" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_order__bill_to +msgid "Bill to" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_location__customer_id +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_location_person__customer_id +msgid "Billed Customer" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_order__customer_id +msgid "Contact" +msgstr "" + +#. module: fieldservice_account_analytic +#: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.fsm_location_search_view_analytic +msgid "Customer" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_account_analytic_line__fsm_order_id +msgid "FSM Order" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_fsm_wizard +msgid "FSM Record Conversion" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_fsm_location +msgid "Field Service Location" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_fsm_location_person +msgid "Field Service Location Person Info" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_fsm_order +msgid "Field Service Order" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_account_invoice_line +msgid "Invoice Line" +msgstr "" + +#. module: fieldservice_account_analytic +#: code:addons/fieldservice_account_analytic/models/account_invoice_line.py:19 +#: code:addons/fieldservice_account_analytic/models/analytic_account.py:21 +#, python-format +msgid "No analytic account set on the order's Location." +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_account_analytic_line__product_id +msgid "Time Type" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_order__total_cost +msgid "Total Cost" +msgstr "" From f470472300235e5e2ca7d54882753ed076ef0627 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nelson=20Ram=C3=ADrez=20S=C3=A1nchez?= Date: Wed, 15 Jan 2020 04:01:22 +0000 Subject: [PATCH 14/39] Translated using Weblate (Spanish (Chile)) Currently translated at 11.1% (2 of 18 strings) Translation: field-service-12.0/field-service-12.0-fieldservice_account_analytic Translate-URL: https://translation.odoo-community.org/projects/field-service-12-0/field-service-12-0-fieldservice_account_analytic/es_CL/ --- fieldservice_account_analytic/i18n/es_CL.po | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/fieldservice_account_analytic/i18n/es_CL.po b/fieldservice_account_analytic/i18n/es_CL.po index 9e4dc3a174..87b385b095 100644 --- a/fieldservice_account_analytic/i18n/es_CL.po +++ b/fieldservice_account_analytic/i18n/es_CL.po @@ -6,24 +6,26 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2020-01-15 06:13+0000\n" +"Last-Translator: Nelson Ramírez Sánchez \n" "Language-Team: none\n" "Language: es_CL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.10\n" #. module: fieldservice_account_analytic #: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.fsm_location_form_view_analytic #: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.fsm_order_form_analytic msgid "Accounting" -msgstr "" +msgstr "Contabilidad" #. module: fieldservice_account_analytic #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_location__analytic_account_id msgid "Analytic Account" -msgstr "" +msgstr "Cuenta Analítica" #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_account_analytic_line From 4341d583fee9929790651edb167b0bf971f9157e Mon Sep 17 00:00:00 2001 From: Marcel Savegnago Date: Thu, 16 Jan 2020 06:26:51 +0000 Subject: [PATCH 15/39] Added translation using Weblate (Portuguese (Brazil)) --- fieldservice_account_analytic/i18n/pt_BR.po | 109 ++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 fieldservice_account_analytic/i18n/pt_BR.po diff --git a/fieldservice_account_analytic/i18n/pt_BR.po b/fieldservice_account_analytic/i18n/pt_BR.po new file mode 100644 index 0000000000..199dd9b8bc --- /dev/null +++ b/fieldservice_account_analytic/i18n/pt_BR.po @@ -0,0 +1,109 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fieldservice_account_analytic +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" + +#. module: fieldservice_account_analytic +#: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.fsm_location_form_view_analytic +#: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.fsm_order_form_analytic +msgid "Accounting" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_location__analytic_account_id +msgid "Analytic Account" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_account_analytic_line +msgid "Analytic Line" +msgstr "" + +#. module: fieldservice_account_analytic +#: selection:fsm.order,bill_to:0 +msgid "Bill Contact" +msgstr "" + +#. module: fieldservice_account_analytic +#: selection:fsm.order,bill_to:0 +msgid "Bill Location" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_order__bill_to +msgid "Bill to" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_location__customer_id +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_location_person__customer_id +msgid "Billed Customer" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_order__customer_id +msgid "Contact" +msgstr "" + +#. module: fieldservice_account_analytic +#: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.fsm_location_search_view_analytic +msgid "Customer" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_account_analytic_line__fsm_order_id +msgid "FSM Order" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_fsm_wizard +msgid "FSM Record Conversion" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_fsm_location +msgid "Field Service Location" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_fsm_location_person +msgid "Field Service Location Person Info" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_fsm_order +msgid "Field Service Order" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_account_invoice_line +msgid "Invoice Line" +msgstr "" + +#. module: fieldservice_account_analytic +#: code:addons/fieldservice_account_analytic/models/account_invoice_line.py:19 +#: code:addons/fieldservice_account_analytic/models/analytic_account.py:21 +#, python-format +msgid "No analytic account set on the order's Location." +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_account_analytic_line__product_id +msgid "Time Type" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_order__total_cost +msgid "Total Cost" +msgstr "" From 22c8e5d57abae52d79b0d192431847fd6473aaa7 Mon Sep 17 00:00:00 2001 From: scampbell Date: Wed, 15 Jan 2020 17:35:01 -0800 Subject: [PATCH 16/39] [IMP] Set Default Customer [IMP] Move Method Up [IMP] api.model + space [IMP] fsm_parent_id [FIX] Typo --- fieldservice_account_analytic/models/fsm_location.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/fieldservice_account_analytic/models/fsm_location.py b/fieldservice_account_analytic/models/fsm_location.py index bf9ed97b7b..6885f1b1c1 100644 --- a/fieldservice_account_analytic/models/fsm_location.py +++ b/fieldservice_account_analytic/models/fsm_location.py @@ -11,9 +11,16 @@ class FSMLocation(models.Model): string='Analytic Account', company_dependent=True) + @api.model + def get_default_customer(self): + if self.fsm_parent_id: + return self.fsm_parent_id.customer_id.id + return self.owner_id.id + customer_id = fields.Many2one( 'res.partner', string='Billed Customer', required=True, - ondelete='restrict', auto_join=True, track_visibility='onchange') + ondelete='restrict', auto_join=True, track_visibility='onchange', + default=get_default_customer) @api.onchange('fsm_parent_id') def _onchange_fsm_parent_id_account(self): From 73c5b8e5eac4578ef0de51767a9df007651db102 Mon Sep 17 00:00:00 2001 From: Maxime Chambreuil Date: Thu, 16 Jan 2020 11:39:15 -0600 Subject: [PATCH 17/39] [ADD] Spanish (es) translation --- fieldservice_account_analytic/i18n/es.po | 111 +++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 fieldservice_account_analytic/i18n/es.po diff --git a/fieldservice_account_analytic/i18n/es.po b/fieldservice_account_analytic/i18n/es.po new file mode 100644 index 0000000000..b8c52b0790 --- /dev/null +++ b/fieldservice_account_analytic/i18n/es.po @@ -0,0 +1,111 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fieldservice_account_analytic +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2020-01-15 06:13+0000\n" +"Last-Translator: Nelson Ramírez Sánchez \n" +"Language-Team: none\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.10\n" + +#. module: fieldservice_account_analytic +#: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.fsm_location_form_view_analytic +#: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.fsm_order_form_analytic +msgid "Accounting" +msgstr "Contabilidad" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_location__analytic_account_id +msgid "Analytic Account" +msgstr "Cuenta Analítica" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_account_analytic_line +msgid "Analytic Line" +msgstr "" + +#. module: fieldservice_account_analytic +#: selection:fsm.order,bill_to:0 +msgid "Bill Contact" +msgstr "" + +#. module: fieldservice_account_analytic +#: selection:fsm.order,bill_to:0 +msgid "Bill Location" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_order__bill_to +msgid "Bill to" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_location__customer_id +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_location_person__customer_id +msgid "Billed Customer" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_order__customer_id +msgid "Contact" +msgstr "" + +#. module: fieldservice_account_analytic +#: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.fsm_location_search_view_analytic +msgid "Customer" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_account_analytic_line__fsm_order_id +msgid "FSM Order" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_fsm_wizard +msgid "FSM Record Conversion" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_fsm_location +msgid "Field Service Location" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_fsm_location_person +msgid "Field Service Location Person Info" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_fsm_order +msgid "Field Service Order" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_account_invoice_line +msgid "Invoice Line" +msgstr "" + +#. module: fieldservice_account_analytic +#: code:addons/fieldservice_account_analytic/models/account_invoice_line.py:19 +#: code:addons/fieldservice_account_analytic/models/analytic_account.py:21 +#, python-format +msgid "No analytic account set on the order's Location." +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_account_analytic_line__product_id +msgid "Time Type" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_order__total_cost +msgid "Total Cost" +msgstr "" From d9838f8bf75015ed1c34bac9ef0f19cd1d88ee16 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Fri, 17 Jan 2020 00:35:14 +0000 Subject: [PATCH 18/39] fieldservice_account_analytic 12.0.3.1.0 --- fieldservice_account_analytic/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fieldservice_account_analytic/__manifest__.py b/fieldservice_account_analytic/__manifest__.py index 945f00ca47..8a4fd731d1 100644 --- a/fieldservice_account_analytic/__manifest__.py +++ b/fieldservice_account_analytic/__manifest__.py @@ -5,7 +5,7 @@ 'name': 'Field Service - Analytic Accounting', 'summary': """Track analytic accounts on Field Service locations and orders""", - 'version': '12.0.3.0.0', + 'version': '12.0.3.1.0', 'category': 'Field Service', 'author': 'Open Source Integrators, Odoo Community Association (OCA)', 'website': 'https://github.com/OCA/field-service', From a4258d61eaf4233221ba1a37e4da078dcc1b1294 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nelson=20Ram=C3=ADrez=20S=C3=A1nchez?= Date: Fri, 17 Jan 2020 03:22:38 +0000 Subject: [PATCH 19/39] Translated using Weblate (Spanish) Currently translated at 100.0% (18 of 18 strings) Translation: field-service-12.0/field-service-12.0-fieldservice_account_analytic Translate-URL: https://translation.odoo-community.org/projects/field-service-12-0/field-service-12-0-fieldservice_account_analytic/es/ --- fieldservice_account_analytic/i18n/es.po | 34 ++++++++++++------------ 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/fieldservice_account_analytic/i18n/es.po b/fieldservice_account_analytic/i18n/es.po index b8c52b0790..53524f15f9 100644 --- a/fieldservice_account_analytic/i18n/es.po +++ b/fieldservice_account_analytic/i18n/es.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2020-01-15 06:13+0000\n" +"PO-Revision-Date: 2020-01-17 06:13+0000\n" "Last-Translator: Nelson Ramírez Sánchez \n" "Language-Team: none\n" "Language: es\n" @@ -30,82 +30,82 @@ msgstr "Cuenta Analítica" #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_account_analytic_line msgid "Analytic Line" -msgstr "" +msgstr "Linea Analitica" #. module: fieldservice_account_analytic #: selection:fsm.order,bill_to:0 msgid "Bill Contact" -msgstr "" +msgstr "Contacto de Facturación" #. module: fieldservice_account_analytic #: selection:fsm.order,bill_to:0 msgid "Bill Location" -msgstr "" +msgstr "Dirección de Facturación" #. module: fieldservice_account_analytic #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_order__bill_to msgid "Bill to" -msgstr "" +msgstr "Facturar a" #. module: fieldservice_account_analytic #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_location__customer_id #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_location_person__customer_id msgid "Billed Customer" -msgstr "" +msgstr "Facturado a Cliente" #. module: fieldservice_account_analytic #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_order__customer_id msgid "Contact" -msgstr "" +msgstr "Contacto" #. module: fieldservice_account_analytic #: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.fsm_location_search_view_analytic msgid "Customer" -msgstr "" +msgstr "Cliente" #. module: fieldservice_account_analytic #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_account_analytic_line__fsm_order_id msgid "FSM Order" -msgstr "" +msgstr "Pedido FSM" #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_fsm_wizard msgid "FSM Record Conversion" -msgstr "" +msgstr "Conversión de Registro FSM" #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_fsm_location msgid "Field Service Location" -msgstr "" +msgstr "Ubicación del Servicio de Campo" #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_fsm_location_person msgid "Field Service Location Person Info" -msgstr "" +msgstr "Servicio de campo Ubicación Información de la persona" #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_fsm_order msgid "Field Service Order" -msgstr "" +msgstr "Orden de Servicio de Campo" #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_account_invoice_line msgid "Invoice Line" -msgstr "" +msgstr "Línea de factura" #. module: fieldservice_account_analytic #: code:addons/fieldservice_account_analytic/models/account_invoice_line.py:19 #: code:addons/fieldservice_account_analytic/models/analytic_account.py:21 #, python-format msgid "No analytic account set on the order's Location." -msgstr "" +msgstr "No hay una cuenta analítica establecida en la ubicación del pedido." #. module: fieldservice_account_analytic #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_account_analytic_line__product_id msgid "Time Type" -msgstr "" +msgstr "Tipo de Tiempo" #. module: fieldservice_account_analytic #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_order__total_cost msgid "Total Cost" -msgstr "" +msgstr "Coste Total" From c232f2b4bdbb149af72019377af9f8e368d90cf9 Mon Sep 17 00:00:00 2001 From: scampbell Date: Fri, 31 Jan 2020 14:49:43 -0800 Subject: [PATCH 20/39] [DEL] Remove fsm_location_person.py --- fieldservice_account_analytic/models/__init__.py | 1 - .../models/fsm_location_person.py | 13 ------------- 2 files changed, 14 deletions(-) delete mode 100644 fieldservice_account_analytic/models/fsm_location_person.py diff --git a/fieldservice_account_analytic/models/__init__.py b/fieldservice_account_analytic/models/__init__.py index 173f04e574..59b98aeef2 100644 --- a/fieldservice_account_analytic/models/__init__.py +++ b/fieldservice_account_analytic/models/__init__.py @@ -4,6 +4,5 @@ account_invoice_line, analytic_account, fsm_location, - fsm_location_person, fsm_order, ) diff --git a/fieldservice_account_analytic/models/fsm_location_person.py b/fieldservice_account_analytic/models/fsm_location_person.py deleted file mode 100644 index d6e3a1f2e1..0000000000 --- a/fieldservice_account_analytic/models/fsm_location_person.py +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright (C) 2018 - TODAY, Open Source Integrators -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). - -from odoo import fields, models - - -class FSMLocationPerson(models.Model): - _inherit = 'fsm.location.person' - - customer_id = fields.Many2one('res.partner', string='Billed Customer', - required=True, ondelete='restrict', - auto_join=True, - track_visibility='onchange') From 163d65f896aeba9b35c63004e126fe79456a1bba Mon Sep 17 00:00:00 2001 From: oca-travis Date: Sat, 1 Feb 2020 19:56:30 +0000 Subject: [PATCH 21/39] [UPD] Update fieldservice_account_analytic.pot --- .../i18n/fieldservice_account_analytic.pot | 6 ------ 1 file changed, 6 deletions(-) diff --git a/fieldservice_account_analytic/i18n/fieldservice_account_analytic.pot b/fieldservice_account_analytic/i18n/fieldservice_account_analytic.pot index c68a6c0d8f..a7729d23a4 100644 --- a/fieldservice_account_analytic/i18n/fieldservice_account_analytic.pot +++ b/fieldservice_account_analytic/i18n/fieldservice_account_analytic.pot @@ -46,7 +46,6 @@ msgstr "" #. module: fieldservice_account_analytic #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_location__customer_id -#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_location_person__customer_id msgid "Billed Customer" msgstr "" @@ -75,11 +74,6 @@ msgstr "" msgid "Field Service Location" msgstr "" -#. module: fieldservice_account_analytic -#: model:ir.model,name:fieldservice_account_analytic.model_fsm_location_person -msgid "Field Service Location Person Info" -msgstr "" - #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_fsm_order msgid "Field Service Order" From 59080000e1f88a1da50b935920323e53b9f4077d Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Sat, 1 Feb 2020 20:06:12 +0000 Subject: [PATCH 22/39] fieldservice_account_analytic 12.0.3.2.0 --- fieldservice_account_analytic/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fieldservice_account_analytic/__manifest__.py b/fieldservice_account_analytic/__manifest__.py index 8a4fd731d1..5fc8d3276f 100644 --- a/fieldservice_account_analytic/__manifest__.py +++ b/fieldservice_account_analytic/__manifest__.py @@ -5,7 +5,7 @@ 'name': 'Field Service - Analytic Accounting', 'summary': """Track analytic accounts on Field Service locations and orders""", - 'version': '12.0.3.1.0', + 'version': '12.0.3.2.0', 'category': 'Field Service', 'author': 'Open Source Integrators, Odoo Community Association (OCA)', 'website': 'https://github.com/OCA/field-service', From 483adc5cc85d53bb169e91a338b06256cf0b7828 Mon Sep 17 00:00:00 2001 From: OCA Transbot Date: Sat, 1 Feb 2020 20:06:27 +0000 Subject: [PATCH 23/39] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: field-service-12.0/field-service-12.0-fieldservice_account_analytic Translate-URL: https://translation.odoo-community.org/projects/field-service-12-0/field-service-12-0-fieldservice_account_analytic/ --- fieldservice_account_analytic/i18n/es.po | 11 ++++------- fieldservice_account_analytic/i18n/es_CL.po | 8 +------- fieldservice_account_analytic/i18n/pt_BR.po | 8 +------- 3 files changed, 6 insertions(+), 21 deletions(-) diff --git a/fieldservice_account_analytic/i18n/es.po b/fieldservice_account_analytic/i18n/es.po index 53524f15f9..017a539d4e 100644 --- a/fieldservice_account_analytic/i18n/es.po +++ b/fieldservice_account_analytic/i18n/es.po @@ -1,6 +1,6 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * fieldservice_account_analytic +# * fieldservice_account_analytic # msgid "" msgstr "" @@ -49,7 +49,6 @@ msgstr "Facturar a" #. module: fieldservice_account_analytic #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_location__customer_id -#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_location_person__customer_id msgid "Billed Customer" msgstr "Facturado a Cliente" @@ -78,11 +77,6 @@ msgstr "Conversión de Registro FSM" msgid "Field Service Location" msgstr "Ubicación del Servicio de Campo" -#. module: fieldservice_account_analytic -#: model:ir.model,name:fieldservice_account_analytic.model_fsm_location_person -msgid "Field Service Location Person Info" -msgstr "Servicio de campo Ubicación Información de la persona" - #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_fsm_order msgid "Field Service Order" @@ -109,3 +103,6 @@ msgstr "Tipo de Tiempo" #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_order__total_cost msgid "Total Cost" msgstr "Coste Total" + +#~ msgid "Field Service Location Person Info" +#~ msgstr "Servicio de campo Ubicación Información de la persona" diff --git a/fieldservice_account_analytic/i18n/es_CL.po b/fieldservice_account_analytic/i18n/es_CL.po index 87b385b095..1ac61bd739 100644 --- a/fieldservice_account_analytic/i18n/es_CL.po +++ b/fieldservice_account_analytic/i18n/es_CL.po @@ -1,6 +1,6 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * fieldservice_account_analytic +# * fieldservice_account_analytic # msgid "" msgstr "" @@ -49,7 +49,6 @@ msgstr "" #. module: fieldservice_account_analytic #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_location__customer_id -#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_location_person__customer_id msgid "Billed Customer" msgstr "" @@ -78,11 +77,6 @@ msgstr "" msgid "Field Service Location" msgstr "" -#. module: fieldservice_account_analytic -#: model:ir.model,name:fieldservice_account_analytic.model_fsm_location_person -msgid "Field Service Location Person Info" -msgstr "" - #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_fsm_order msgid "Field Service Order" diff --git a/fieldservice_account_analytic/i18n/pt_BR.po b/fieldservice_account_analytic/i18n/pt_BR.po index 199dd9b8bc..ae5a95e69f 100644 --- a/fieldservice_account_analytic/i18n/pt_BR.po +++ b/fieldservice_account_analytic/i18n/pt_BR.po @@ -1,6 +1,6 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * fieldservice_account_analytic +# * fieldservice_account_analytic # msgid "" msgstr "" @@ -47,7 +47,6 @@ msgstr "" #. module: fieldservice_account_analytic #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_location__customer_id -#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_location_person__customer_id msgid "Billed Customer" msgstr "" @@ -76,11 +75,6 @@ msgstr "" msgid "Field Service Location" msgstr "" -#. module: fieldservice_account_analytic -#: model:ir.model,name:fieldservice_account_analytic.model_fsm_location_person -msgid "Field Service Location Person Info" -msgstr "" - #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_fsm_order msgid "Field Service Order" From 99b01460f2b57e7fe67e523ef779e207af2270d1 Mon Sep 17 00:00:00 2001 From: Marcel Savegnago Date: Wed, 5 Feb 2020 20:53:59 +0000 Subject: [PATCH 24/39] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (17 of 17 strings) Translation: field-service-12.0/field-service-12.0-fieldservice_account_analytic Translate-URL: https://translation.odoo-community.org/projects/field-service-12-0/field-service-12-0-fieldservice_account_analytic/pt_BR/ --- fieldservice_account_analytic/i18n/pt_BR.po | 38 +++++++++++---------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/fieldservice_account_analytic/i18n/pt_BR.po b/fieldservice_account_analytic/i18n/pt_BR.po index ae5a95e69f..5c3dc5dd7d 100644 --- a/fieldservice_account_analytic/i18n/pt_BR.po +++ b/fieldservice_account_analytic/i18n/pt_BR.po @@ -6,98 +6,100 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2020-02-05 22:13+0000\n" +"Last-Translator: Marcel Savegnago \n" "Language-Team: none\n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.10\n" #. module: fieldservice_account_analytic #: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.fsm_location_form_view_analytic #: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.fsm_order_form_analytic msgid "Accounting" -msgstr "" +msgstr "Contabilidade" #. module: fieldservice_account_analytic #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_location__analytic_account_id msgid "Analytic Account" -msgstr "" +msgstr "Conta Analítica" #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_account_analytic_line msgid "Analytic Line" -msgstr "" +msgstr "Linha Analitica" #. module: fieldservice_account_analytic #: selection:fsm.order,bill_to:0 msgid "Bill Contact" -msgstr "" +msgstr "Conta do Contato" #. module: fieldservice_account_analytic #: selection:fsm.order,bill_to:0 msgid "Bill Location" -msgstr "" +msgstr "Localização de Conta" #. module: fieldservice_account_analytic #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_order__bill_to msgid "Bill to" -msgstr "" +msgstr "Conta para" #. module: fieldservice_account_analytic #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_location__customer_id msgid "Billed Customer" -msgstr "" +msgstr "Cliente Faturado" #. module: fieldservice_account_analytic #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_order__customer_id msgid "Contact" -msgstr "" +msgstr "Contato" #. module: fieldservice_account_analytic #: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.fsm_location_search_view_analytic msgid "Customer" -msgstr "" +msgstr "Cliente" #. module: fieldservice_account_analytic #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_account_analytic_line__fsm_order_id msgid "FSM Order" -msgstr "" +msgstr "Ordem FSM" #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_fsm_wizard msgid "FSM Record Conversion" -msgstr "" +msgstr "Conversão do Registro FSM" #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_fsm_location msgid "Field Service Location" -msgstr "" +msgstr "Localização do Serviço de Campo" #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_fsm_order msgid "Field Service Order" -msgstr "" +msgstr "Ordem de Serviço de Campo" #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_account_invoice_line msgid "Invoice Line" -msgstr "" +msgstr "Linha de Fatura" #. module: fieldservice_account_analytic #: code:addons/fieldservice_account_analytic/models/account_invoice_line.py:19 #: code:addons/fieldservice_account_analytic/models/analytic_account.py:21 #, python-format msgid "No analytic account set on the order's Location." -msgstr "" +msgstr "Nenhuma conta analítica definida na Localização do ordem." #. module: fieldservice_account_analytic #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_account_analytic_line__product_id msgid "Time Type" -msgstr "" +msgstr "Tipo de Tempo" #. module: fieldservice_account_analytic #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_order__total_cost msgid "Total Cost" -msgstr "" +msgstr "Custo Total" From 16ab660378c09024d82165246b04f1ed4846de33 Mon Sep 17 00:00:00 2001 From: scampbell Date: Thu, 16 Jan 2020 15:33:27 -0800 Subject: [PATCH 25/39] [IMP] Filter Location/Contact [IMP] Remove Unused Import [IMP] Github Comments [IMP] Add FSM to Variable --- fieldservice_account_analytic/__manifest__.py | 1 + .../models/__init__.py | 2 ++ .../models/fsm_order.py | 19 +++++++++++---- .../models/res_company.py | 18 ++++++++++++++ .../models/res_config_settings.py | 14 +++++++++++ .../views/res_config_settings.xml | 24 +++++++++++++++++++ 6 files changed, 73 insertions(+), 5 deletions(-) create mode 100644 fieldservice_account_analytic/models/res_company.py create mode 100644 fieldservice_account_analytic/models/res_config_settings.py create mode 100644 fieldservice_account_analytic/views/res_config_settings.xml diff --git a/fieldservice_account_analytic/__manifest__.py b/fieldservice_account_analytic/__manifest__.py index 5fc8d3276f..c9aae9b2d8 100644 --- a/fieldservice_account_analytic/__manifest__.py +++ b/fieldservice_account_analytic/__manifest__.py @@ -20,6 +20,7 @@ 'report/fsm_order_report_template.xml', 'views/fsm_location.xml', 'views/fsm_order.xml', + 'views/res_config_settings.xml' ], 'demo': [ 'demo/fsm_location.xml', diff --git a/fieldservice_account_analytic/models/__init__.py b/fieldservice_account_analytic/models/__init__.py index 59b98aeef2..a08d9949b4 100644 --- a/fieldservice_account_analytic/models/__init__.py +++ b/fieldservice_account_analytic/models/__init__.py @@ -5,4 +5,6 @@ analytic_account, fsm_location, fsm_order, + res_company, + res_config_settings ) diff --git a/fieldservice_account_analytic/models/fsm_order.py b/fieldservice_account_analytic/models/fsm_order.py index d88ac6091a..c2e5da8402 100644 --- a/fieldservice_account_analytic/models/fsm_order.py +++ b/fieldservice_account_analytic/models/fsm_order.py @@ -25,13 +25,22 @@ def _compute_total_cost(self): for order in self: order.total_cost = 0.0 - @api.onchange('location_id') + @api.onchange('location_id', 'customer_id') def _onchange_location_id_customer_account(self): - if self.location_id: - return {'domain': {'customer_id': [('service_location_id', '=', - self.location_id.name)]}} + if self.env.user.company_id.fsm_filter_location_by_contact: + if self.location_id: + return {'domain': {'customer_id': [('service_location_id', '=', + self.location_id.id)]}} + else: + return {'domain': {'customer_id': [], + 'location_id': []}} else: - return {'domain': {'customer_id': [('id', '!=', None)]}} + if self.customer_id: + return {'domain': {'location_id': [('partner_id', '=', + self.customer_id.id)]}} + else: + return {'domain': {'location_id': [], + 'customer_id': []}} @api.onchange('customer_id') def _onchange_customer_id_location(self): diff --git a/fieldservice_account_analytic/models/res_company.py b/fieldservice_account_analytic/models/res_company.py new file mode 100644 index 0000000000..ed087f6ed9 --- /dev/null +++ b/fieldservice_account_analytic/models/res_company.py @@ -0,0 +1,18 @@ +# Copyright (C) 2020 - TODAY, Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class ResCompany(models.Model): + _inherit = 'res.company' + + fsm_filter_location_by_contact = fields.Boolean( + string='Filter Contacts with Location' + ) + + @api.onchange('fsm_filter_location_by_contact') + def onchange_fsm_filter_location_by_contact(self): + fso_ids = self.env['fsm.order'].search([]) + for fso_id in fso_ids: + fso_id._onchange_location_id_customer_account() diff --git a/fieldservice_account_analytic/models/res_config_settings.py b/fieldservice_account_analytic/models/res_config_settings.py new file mode 100644 index 0000000000..e8ea540845 --- /dev/null +++ b/fieldservice_account_analytic/models/res_config_settings.py @@ -0,0 +1,14 @@ +# Copyright (C) 2020, Open Source Integrators +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class ResConfigSettings(models.TransientModel): + _inherit = 'res.config.settings' + + fsm_filter_location_by_contact = fields.Boolean( + string='Filter Contacts with Location', + related='company_id.fsm_filter_location_by_contact', + readonly=False + ) diff --git a/fieldservice_account_analytic/views/res_config_settings.xml b/fieldservice_account_analytic/views/res_config_settings.xml new file mode 100644 index 0000000000..b7bb82f2f6 --- /dev/null +++ b/fieldservice_account_analytic/views/res_config_settings.xml @@ -0,0 +1,24 @@ + + + res.config.settings.view.form.fsm.filter + res.config.settings + + + +
+
+
+ +
+
+
+
+
+
+
+
From 9079228f1113be0474695d2e7a4bc844b4a4cffb Mon Sep 17 00:00:00 2001 From: oca-travis Date: Wed, 19 Feb 2020 00:43:25 +0000 Subject: [PATCH 26/39] [UPD] Update fieldservice_account_analytic.pot --- .../i18n/fieldservice_account_analytic.pot | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/fieldservice_account_analytic/i18n/fieldservice_account_analytic.pot b/fieldservice_account_analytic/i18n/fieldservice_account_analytic.pot index a7729d23a4..9ec0a906fa 100644 --- a/fieldservice_account_analytic/i18n/fieldservice_account_analytic.pot +++ b/fieldservice_account_analytic/i18n/fieldservice_account_analytic.pot @@ -49,6 +49,16 @@ msgstr "" msgid "Billed Customer" msgstr "" +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_res_company +msgid "Companies" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_res_config_settings +msgid "Config Settings" +msgstr "" + #. module: fieldservice_account_analytic #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_order__customer_id msgid "Contact" @@ -79,6 +89,18 @@ msgstr "" msgid "Field Service Order" msgstr "" +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_res_company__fsm_filter_location_by_contact +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_res_config_settings__fsm_filter_location_by_contact +#: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.res_config_settings_view_form_filter +msgid "Filter Contacts with Location" +msgstr "" + +#. module: fieldservice_account_analytic +#: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.res_config_settings_view_form_filter +msgid "Filter the Location on an FSM Order by the Contact" +msgstr "" + #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_account_invoice_line msgid "Invoice Line" From 0f3f5b7a685a68c9f53a833dd07a1d22d3363444 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 19 Feb 2020 00:55:17 +0000 Subject: [PATCH 27/39] fieldservice_account_analytic 12.0.3.3.0 --- fieldservice_account_analytic/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fieldservice_account_analytic/__manifest__.py b/fieldservice_account_analytic/__manifest__.py index c9aae9b2d8..bca30ae460 100644 --- a/fieldservice_account_analytic/__manifest__.py +++ b/fieldservice_account_analytic/__manifest__.py @@ -5,7 +5,7 @@ 'name': 'Field Service - Analytic Accounting', 'summary': """Track analytic accounts on Field Service locations and orders""", - 'version': '12.0.3.2.0', + 'version': '12.0.3.3.0', 'category': 'Field Service', 'author': 'Open Source Integrators, Odoo Community Association (OCA)', 'website': 'https://github.com/OCA/field-service', From 0f8f37ceea505e2c376764c37c02641b9eae89eb Mon Sep 17 00:00:00 2001 From: OCA Transbot Date: Wed, 19 Feb 2020 00:55:45 +0000 Subject: [PATCH 28/39] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: field-service-12.0/field-service-12.0-fieldservice_account_analytic Translate-URL: https://translation.odoo-community.org/projects/field-service-12-0/field-service-12-0-fieldservice_account_analytic/ --- fieldservice_account_analytic/i18n/es.po | 22 +++++++++++++++++++++ fieldservice_account_analytic/i18n/es_CL.po | 22 +++++++++++++++++++++ fieldservice_account_analytic/i18n/pt_BR.po | 22 +++++++++++++++++++++ 3 files changed, 66 insertions(+) diff --git a/fieldservice_account_analytic/i18n/es.po b/fieldservice_account_analytic/i18n/es.po index 017a539d4e..77f10545fe 100644 --- a/fieldservice_account_analytic/i18n/es.po +++ b/fieldservice_account_analytic/i18n/es.po @@ -52,6 +52,16 @@ msgstr "Facturar a" msgid "Billed Customer" msgstr "Facturado a Cliente" +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_res_company +msgid "Companies" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_res_config_settings +msgid "Config Settings" +msgstr "" + #. module: fieldservice_account_analytic #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_order__customer_id msgid "Contact" @@ -82,6 +92,18 @@ msgstr "Ubicación del Servicio de Campo" msgid "Field Service Order" msgstr "Orden de Servicio de Campo" +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_res_company__fsm_filter_location_by_contact +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_res_config_settings__fsm_filter_location_by_contact +#: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.res_config_settings_view_form_filter +msgid "Filter Contacts with Location" +msgstr "" + +#. module: fieldservice_account_analytic +#: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.res_config_settings_view_form_filter +msgid "Filter the Location on an FSM Order by the Contact" +msgstr "" + #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_account_invoice_line msgid "Invoice Line" diff --git a/fieldservice_account_analytic/i18n/es_CL.po b/fieldservice_account_analytic/i18n/es_CL.po index 1ac61bd739..cfe0014f8f 100644 --- a/fieldservice_account_analytic/i18n/es_CL.po +++ b/fieldservice_account_analytic/i18n/es_CL.po @@ -52,6 +52,16 @@ msgstr "" msgid "Billed Customer" msgstr "" +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_res_company +msgid "Companies" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_res_config_settings +msgid "Config Settings" +msgstr "" + #. module: fieldservice_account_analytic #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_order__customer_id msgid "Contact" @@ -82,6 +92,18 @@ msgstr "" msgid "Field Service Order" msgstr "" +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_res_company__fsm_filter_location_by_contact +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_res_config_settings__fsm_filter_location_by_contact +#: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.res_config_settings_view_form_filter +msgid "Filter Contacts with Location" +msgstr "" + +#. module: fieldservice_account_analytic +#: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.res_config_settings_view_form_filter +msgid "Filter the Location on an FSM Order by the Contact" +msgstr "" + #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_account_invoice_line msgid "Invoice Line" diff --git a/fieldservice_account_analytic/i18n/pt_BR.po b/fieldservice_account_analytic/i18n/pt_BR.po index 5c3dc5dd7d..4d725fbac3 100644 --- a/fieldservice_account_analytic/i18n/pt_BR.po +++ b/fieldservice_account_analytic/i18n/pt_BR.po @@ -52,6 +52,16 @@ msgstr "Conta para" msgid "Billed Customer" msgstr "Cliente Faturado" +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_res_company +msgid "Companies" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_res_config_settings +msgid "Config Settings" +msgstr "" + #. module: fieldservice_account_analytic #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_order__customer_id msgid "Contact" @@ -82,6 +92,18 @@ msgstr "Localização do Serviço de Campo" msgid "Field Service Order" msgstr "Ordem de Serviço de Campo" +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_res_company__fsm_filter_location_by_contact +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_res_config_settings__fsm_filter_location_by_contact +#: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.res_config_settings_view_form_filter +msgid "Filter Contacts with Location" +msgstr "" + +#. module: fieldservice_account_analytic +#: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.res_config_settings_view_form_filter +msgid "Filter the Location on an FSM Order by the Contact" +msgstr "" + #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_account_invoice_line msgid "Invoice Line" From d6ae9e29a8c75f4698fe0b83265f92bb9425823d Mon Sep 17 00:00:00 2001 From: Fernando Colus Date: Tue, 16 Jun 2020 23:51:12 +0000 Subject: [PATCH 29/39] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (21 of 21 strings) Translation: field-service-12.0/field-service-12.0-fieldservice_account_analytic Translate-URL: https://translation.odoo-community.org/projects/field-service-12-0/field-service-12-0-fieldservice_account_analytic/pt_BR/ --- fieldservice_account_analytic/i18n/pt_BR.po | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/fieldservice_account_analytic/i18n/pt_BR.po b/fieldservice_account_analytic/i18n/pt_BR.po index 4d725fbac3..abaf5d36ce 100644 --- a/fieldservice_account_analytic/i18n/pt_BR.po +++ b/fieldservice_account_analytic/i18n/pt_BR.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2020-02-05 22:13+0000\n" -"Last-Translator: Marcel Savegnago \n" +"PO-Revision-Date: 2020-06-17 02:19+0000\n" +"Last-Translator: Fernando Colus \n" "Language-Team: none\n" "Language: pt_BR\n" "MIME-Version: 1.0\n" @@ -55,12 +55,12 @@ msgstr "Cliente Faturado" #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_res_company msgid "Companies" -msgstr "" +msgstr "Empresas" #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_res_config_settings msgid "Config Settings" -msgstr "" +msgstr "Definições de configuração" #. module: fieldservice_account_analytic #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_order__customer_id @@ -97,12 +97,13 @@ msgstr "Ordem de Serviço de Campo" #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_res_config_settings__fsm_filter_location_by_contact #: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.res_config_settings_view_form_filter msgid "Filter Contacts with Location" -msgstr "" +msgstr "Filtrar contatos de acordo com o Local" #. module: fieldservice_account_analytic #: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.res_config_settings_view_form_filter msgid "Filter the Location on an FSM Order by the Contact" msgstr "" +"Filtrar por contato o local em um pedido do FSM (Field Services Management)" #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_account_invoice_line From 3480796d286f6595fd54089c9780d55a80591c05 Mon Sep 17 00:00:00 2001 From: Fernando Colus Date: Wed, 17 Jun 2020 16:13:03 +0000 Subject: [PATCH 30/39] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (21 of 21 strings) Translation: field-service-12.0/field-service-12.0-fieldservice_account_analytic Translate-URL: https://translation.odoo-community.org/projects/field-service-12-0/field-service-12-0-fieldservice_account_analytic/pt_BR/ --- fieldservice_account_analytic/i18n/pt_BR.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fieldservice_account_analytic/i18n/pt_BR.po b/fieldservice_account_analytic/i18n/pt_BR.po index abaf5d36ce..e44e795ee0 100644 --- a/fieldservice_account_analytic/i18n/pt_BR.po +++ b/fieldservice_account_analytic/i18n/pt_BR.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2020-06-17 02:19+0000\n" +"PO-Revision-Date: 2020-06-17 16:19+0000\n" "Last-Translator: Fernando Colus \n" "Language-Team: none\n" "Language: pt_BR\n" @@ -75,7 +75,7 @@ msgstr "Cliente" #. module: fieldservice_account_analytic #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_account_analytic_line__fsm_order_id msgid "FSM Order" -msgstr "Ordem FSM" +msgstr "Ordem FSM (Field Service Management)" #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_fsm_wizard From d2353cd0f3d5cf20e933f3ac2d612d52c179bd56 Mon Sep 17 00:00:00 2001 From: Ignacio Buioli Date: Mon, 20 Jul 2020 19:21:04 +0000 Subject: [PATCH 31/39] Added translation using Weblate (Spanish (Argentina)) --- fieldservice_account_analytic/i18n/es_AR.po | 125 ++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 fieldservice_account_analytic/i18n/es_AR.po diff --git a/fieldservice_account_analytic/i18n/es_AR.po b/fieldservice_account_analytic/i18n/es_AR.po new file mode 100644 index 0000000000..7c6ad0cc07 --- /dev/null +++ b/fieldservice_account_analytic/i18n/es_AR.po @@ -0,0 +1,125 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fieldservice_account_analytic +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: es_AR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. module: fieldservice_account_analytic +#: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.fsm_location_form_view_analytic +#: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.fsm_order_form_analytic +msgid "Accounting" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_location__analytic_account_id +msgid "Analytic Account" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_account_analytic_line +msgid "Analytic Line" +msgstr "" + +#. module: fieldservice_account_analytic +#: selection:fsm.order,bill_to:0 +msgid "Bill Contact" +msgstr "" + +#. module: fieldservice_account_analytic +#: selection:fsm.order,bill_to:0 +msgid "Bill Location" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_order__bill_to +msgid "Bill to" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_location__customer_id +msgid "Billed Customer" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_res_company +msgid "Companies" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_res_config_settings +msgid "Config Settings" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_order__customer_id +msgid "Contact" +msgstr "" + +#. module: fieldservice_account_analytic +#: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.fsm_location_search_view_analytic +msgid "Customer" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_account_analytic_line__fsm_order_id +msgid "FSM Order" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_fsm_wizard +msgid "FSM Record Conversion" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_fsm_location +msgid "Field Service Location" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_fsm_order +msgid "Field Service Order" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_res_company__fsm_filter_location_by_contact +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_res_config_settings__fsm_filter_location_by_contact +#: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.res_config_settings_view_form_filter +msgid "Filter Contacts with Location" +msgstr "" + +#. module: fieldservice_account_analytic +#: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.res_config_settings_view_form_filter +msgid "Filter the Location on an FSM Order by the Contact" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_account_invoice_line +msgid "Invoice Line" +msgstr "" + +#. module: fieldservice_account_analytic +#: code:addons/fieldservice_account_analytic/models/account_invoice_line.py:19 +#: code:addons/fieldservice_account_analytic/models/analytic_account.py:21 +#, python-format +msgid "No analytic account set on the order's Location." +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_account_analytic_line__product_id +msgid "Time Type" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_order__total_cost +msgid "Total Cost" +msgstr "" From daaec9cae06776cfbf365fe298f6d7929034c172 Mon Sep 17 00:00:00 2001 From: Ignacio Buioli Date: Mon, 20 Jul 2020 19:21:35 +0000 Subject: [PATCH 32/39] Translated using Weblate (Spanish (Argentina)) Currently translated at 100.0% (21 of 21 strings) Translation: field-service-12.0/field-service-12.0-fieldservice_account_analytic Translate-URL: https://translation.odoo-community.org/projects/field-service-12-0/field-service-12-0-fieldservice_account_analytic/es_AR/ --- fieldservice_account_analytic/i18n/es_AR.po | 46 +++++++++++---------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/fieldservice_account_analytic/i18n/es_AR.po b/fieldservice_account_analytic/i18n/es_AR.po index 7c6ad0cc07..c86c044489 100644 --- a/fieldservice_account_analytic/i18n/es_AR.po +++ b/fieldservice_account_analytic/i18n/es_AR.po @@ -6,120 +6,122 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2020-07-20 22:19+0000\n" +"Last-Translator: Ignacio Buioli \n" "Language-Team: none\n" "Language: es_AR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.10\n" #. module: fieldservice_account_analytic #: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.fsm_location_form_view_analytic #: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.fsm_order_form_analytic msgid "Accounting" -msgstr "" +msgstr "Contabilidad" #. module: fieldservice_account_analytic #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_location__analytic_account_id msgid "Analytic Account" -msgstr "" +msgstr "Cuenta Analítica" #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_account_analytic_line msgid "Analytic Line" -msgstr "" +msgstr "Línea Analítica" #. module: fieldservice_account_analytic #: selection:fsm.order,bill_to:0 msgid "Bill Contact" -msgstr "" +msgstr "Factura de Contacto" #. module: fieldservice_account_analytic #: selection:fsm.order,bill_to:0 msgid "Bill Location" -msgstr "" +msgstr "Ubicación de Factura" #. module: fieldservice_account_analytic #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_order__bill_to msgid "Bill to" -msgstr "" +msgstr "Facturar a" #. module: fieldservice_account_analytic #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_location__customer_id msgid "Billed Customer" -msgstr "" +msgstr "Cliente Facturado" #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_res_company msgid "Companies" -msgstr "" +msgstr "Compañías" #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_res_config_settings msgid "Config Settings" -msgstr "" +msgstr "Configurar Ajustes" #. module: fieldservice_account_analytic #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_order__customer_id msgid "Contact" -msgstr "" +msgstr "Contacto" #. module: fieldservice_account_analytic #: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.fsm_location_search_view_analytic msgid "Customer" -msgstr "" +msgstr "Cliente" #. module: fieldservice_account_analytic #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_account_analytic_line__fsm_order_id msgid "FSM Order" -msgstr "" +msgstr "Pedido FSM" #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_fsm_wizard msgid "FSM Record Conversion" -msgstr "" +msgstr "Conversión a Registro FSM" #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_fsm_location msgid "Field Service Location" -msgstr "" +msgstr "Ubicación de Servicio de Campo" #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_fsm_order msgid "Field Service Order" -msgstr "" +msgstr "Pedido de Servicio de Campo" #. module: fieldservice_account_analytic #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_res_company__fsm_filter_location_by_contact #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_res_config_settings__fsm_filter_location_by_contact #: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.res_config_settings_view_form_filter msgid "Filter Contacts with Location" -msgstr "" +msgstr "Filtrar Contactos con Ubicación" #. module: fieldservice_account_analytic #: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.res_config_settings_view_form_filter msgid "Filter the Location on an FSM Order by the Contact" -msgstr "" +msgstr "Filtrar la Ubicación por Contacto en un Pedido FSM" #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_account_invoice_line msgid "Invoice Line" -msgstr "" +msgstr "Línea de Factura" #. module: fieldservice_account_analytic #: code:addons/fieldservice_account_analytic/models/account_invoice_line.py:19 #: code:addons/fieldservice_account_analytic/models/analytic_account.py:21 #, python-format msgid "No analytic account set on the order's Location." -msgstr "" +msgstr "No hay una cuenta analítica establecida en la Ubicación del pedido." #. module: fieldservice_account_analytic #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_account_analytic_line__product_id msgid "Time Type" -msgstr "" +msgstr "Tipo de Tiempo" #. module: fieldservice_account_analytic #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_order__total_cost msgid "Total Cost" -msgstr "" +msgstr "Costo Total" From 78c981b08fddf5dbb854c2e82b277f3194000e1c Mon Sep 17 00:00:00 2001 From: Daniel Reis Date: Tue, 21 Jul 2020 08:17:32 +0000 Subject: [PATCH 33/39] Added translation using Weblate (Portuguese (Portugal)) --- fieldservice_account_analytic/i18n/pt_PT.po | 125 ++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 fieldservice_account_analytic/i18n/pt_PT.po diff --git a/fieldservice_account_analytic/i18n/pt_PT.po b/fieldservice_account_analytic/i18n/pt_PT.po new file mode 100644 index 0000000000..fee287db17 --- /dev/null +++ b/fieldservice_account_analytic/i18n/pt_PT.po @@ -0,0 +1,125 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fieldservice_account_analytic +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: pt_PT\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" + +#. module: fieldservice_account_analytic +#: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.fsm_location_form_view_analytic +#: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.fsm_order_form_analytic +msgid "Accounting" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_location__analytic_account_id +msgid "Analytic Account" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_account_analytic_line +msgid "Analytic Line" +msgstr "" + +#. module: fieldservice_account_analytic +#: selection:fsm.order,bill_to:0 +msgid "Bill Contact" +msgstr "" + +#. module: fieldservice_account_analytic +#: selection:fsm.order,bill_to:0 +msgid "Bill Location" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_order__bill_to +msgid "Bill to" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_location__customer_id +msgid "Billed Customer" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_res_company +msgid "Companies" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_res_config_settings +msgid "Config Settings" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_order__customer_id +msgid "Contact" +msgstr "" + +#. module: fieldservice_account_analytic +#: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.fsm_location_search_view_analytic +msgid "Customer" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_account_analytic_line__fsm_order_id +msgid "FSM Order" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_fsm_wizard +msgid "FSM Record Conversion" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_fsm_location +msgid "Field Service Location" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_fsm_order +msgid "Field Service Order" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_res_company__fsm_filter_location_by_contact +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_res_config_settings__fsm_filter_location_by_contact +#: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.res_config_settings_view_form_filter +msgid "Filter Contacts with Location" +msgstr "" + +#. module: fieldservice_account_analytic +#: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.res_config_settings_view_form_filter +msgid "Filter the Location on an FSM Order by the Contact" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model,name:fieldservice_account_analytic.model_account_invoice_line +msgid "Invoice Line" +msgstr "" + +#. module: fieldservice_account_analytic +#: code:addons/fieldservice_account_analytic/models/account_invoice_line.py:19 +#: code:addons/fieldservice_account_analytic/models/analytic_account.py:21 +#, python-format +msgid "No analytic account set on the order's Location." +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_account_analytic_line__product_id +msgid "Time Type" +msgstr "" + +#. module: fieldservice_account_analytic +#: model:ir.model.fields,field_description:fieldservice_account_analytic.field_fsm_order__total_cost +msgid "Total Cost" +msgstr "" From d3b52c0b9cbf19c8c436e98cf8dbb80593e34f82 Mon Sep 17 00:00:00 2001 From: Daniel Reis Date: Tue, 21 Jul 2020 08:30:31 +0000 Subject: [PATCH 34/39] Translated using Weblate (Portuguese (Portugal)) Currently translated at 9.5% (2 of 21 strings) Translation: field-service-12.0/field-service-12.0-fieldservice_account_analytic Translate-URL: https://translation.odoo-community.org/projects/field-service-12-0/field-service-12-0-fieldservice_account_analytic/pt_PT/ --- fieldservice_account_analytic/i18n/pt_PT.po | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/fieldservice_account_analytic/i18n/pt_PT.po b/fieldservice_account_analytic/i18n/pt_PT.po index fee287db17..bf9ae769dc 100644 --- a/fieldservice_account_analytic/i18n/pt_PT.po +++ b/fieldservice_account_analytic/i18n/pt_PT.po @@ -6,13 +6,15 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2020-07-21 10:19+0000\n" +"Last-Translator: Daniel Reis \n" "Language-Team: none\n" "Language: pt_PT\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.10\n" #. module: fieldservice_account_analytic #: model_terms:ir.ui.view,arch_db:fieldservice_account_analytic.fsm_location_form_view_analytic @@ -83,12 +85,12 @@ msgstr "" #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_fsm_location msgid "Field Service Location" -msgstr "" +msgstr "Local do Serviço de Campo" #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_fsm_order msgid "Field Service Order" -msgstr "" +msgstr "Ordem de Serviço" #. module: fieldservice_account_analytic #: model:ir.model.fields,field_description:fieldservice_account_analytic.field_res_company__fsm_filter_location_by_contact From 563c270a8838cb828c6b466995277e136e84161f Mon Sep 17 00:00:00 2001 From: Ignacio Buioli Date: Thu, 10 Sep 2020 05:28:45 +0000 Subject: [PATCH 35/39] Translated using Weblate (Spanish (Argentina)) Currently translated at 100.0% (21 of 21 strings) Translation: field-service-12.0/field-service-12.0-fieldservice_account_analytic Translate-URL: https://translation.odoo-community.org/projects/field-service-12-0/field-service-12-0-fieldservice_account_analytic/es_AR/ --- fieldservice_account_analytic/i18n/es_AR.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fieldservice_account_analytic/i18n/es_AR.po b/fieldservice_account_analytic/i18n/es_AR.po index c86c044489..965e516fe5 100644 --- a/fieldservice_account_analytic/i18n/es_AR.po +++ b/fieldservice_account_analytic/i18n/es_AR.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2020-07-20 22:19+0000\n" +"PO-Revision-Date: 2020-09-10 08:00+0000\n" "Last-Translator: Ignacio Buioli \n" "Language-Team: none\n" "Language: es_AR\n" @@ -85,7 +85,7 @@ msgstr "Conversión a Registro FSM" #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_fsm_location msgid "Field Service Location" -msgstr "Ubicación de Servicio de Campo" +msgstr "Ubicación del Servicio de Campo" #. module: fieldservice_account_analytic #: model:ir.model,name:fieldservice_account_analytic.model_fsm_order From 3b2c47941f8c1bc3b07dbaf2c4d6782bbbe813de Mon Sep 17 00:00:00 2001 From: Benoit Aimont Date: Wed, 28 Apr 2021 15:29:42 +0200 Subject: [PATCH 36/39] [IMP] fieldservice_account_analytic: black, isort, prettier --- fieldservice_account_analytic/__manifest__.py | 48 ++++++--------- .../data/ir_rule.xml | 33 +++++------ .../demo/fsm_location.xml | 12 ++-- fieldservice_account_analytic/init_hook.py | 6 +- .../migrations/12.0.2.0.0/post-migration.py | 3 +- .../models/__init__.py | 2 +- .../models/account_invoice_line.py | 12 ++-- .../models/analytic_account.py | 19 +++--- .../models/fsm_location.py | 23 +++++--- .../models/fsm_order.py | 59 +++++++++++-------- .../models/res_company.py | 8 +-- .../models/res_config_settings.py | 8 +-- .../readme/USAGE.rst | 1 - .../report/fsm_order_report_template.xml | 13 ++-- .../tests/test_fsm_account_wizard.py | 16 ++--- .../views/fsm_location.xml | 26 ++++---- .../views/fsm_order.xml | 27 ++++----- .../views/res_config_settings.xml | 12 ++-- .../wizard/fsm_wizard.py | 6 +- .../odoo/addons/fieldservice_account_analytic | 1 + setup/fieldservice_account_analytic/setup.py | 6 ++ 21 files changed, 173 insertions(+), 168 deletions(-) create mode 120000 setup/fieldservice_account_analytic/odoo/addons/fieldservice_account_analytic create mode 100644 setup/fieldservice_account_analytic/setup.py diff --git a/fieldservice_account_analytic/__manifest__.py b/fieldservice_account_analytic/__manifest__.py index bca30ae460..22af3daa9f 100644 --- a/fieldservice_account_analytic/__manifest__.py +++ b/fieldservice_account_analytic/__manifest__.py @@ -2,35 +2,25 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { - 'name': 'Field Service - Analytic Accounting', - 'summary': """Track analytic accounts on Field Service locations + "name": "Field Service - Analytic Accounting", + "summary": """Track analytic accounts on Field Service locations and orders""", - 'version': '12.0.3.3.0', - 'category': 'Field Service', - 'author': 'Open Source Integrators, Odoo Community Association (OCA)', - 'website': 'https://github.com/OCA/field-service', - 'depends': [ - 'fieldservice_account', - 'analytic', - 'product', - ], - 'data': [ - 'data/ir_rule.xml', - 'security/ir.model.access.csv', - 'report/fsm_order_report_template.xml', - 'views/fsm_location.xml', - 'views/fsm_order.xml', - 'views/res_config_settings.xml' - ], - 'demo': [ - 'demo/fsm_location.xml', - ], - 'pre_init_hook': 'pre_init_hook', - 'license': 'AGPL-3', - 'development_status': 'Beta', - 'maintainers': [ - 'osimallen', - 'brian10048', - 'bodedra', + "version": "12.0.3.3.0", + "category": "Field Service", + "author": "Open Source Integrators, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/field-service", + "depends": ["fieldservice_account", "analytic", "product"], + "data": [ + "data/ir_rule.xml", + "security/ir.model.access.csv", + "report/fsm_order_report_template.xml", + "views/fsm_location.xml", + "views/fsm_order.xml", + "views/res_config_settings.xml", ], + "demo": ["demo/fsm_location.xml"], + "pre_init_hook": "pre_init_hook", + "license": "AGPL-3", + "development_status": "Beta", + "maintainers": ["osimallen", "brian10048", "bodedra"], } diff --git a/fieldservice_account_analytic/data/ir_rule.xml b/fieldservice_account_analytic/data/ir_rule.xml index 622bca4ee7..279666bf91 100644 --- a/fieldservice_account_analytic/data/ir_rule.xml +++ b/fieldservice_account_analytic/data/ir_rule.xml @@ -1,28 +1,25 @@ - + - account.analytic.line.fsm.manager - - + + [(1, '=', 1)] - - - - - + + + + + - account.analytic.line.fsm.dispatcher - - + + [(1, '=', 1)] - - - - - + + + + + - diff --git a/fieldservice_account_analytic/demo/fsm_location.xml b/fieldservice_account_analytic/demo/fsm_location.xml index fc3a0e6201..713b1d2a7c 100644 --- a/fieldservice_account_analytic/demo/fsm_location.xml +++ b/fieldservice_account_analytic/demo/fsm_location.xml @@ -1,20 +1,16 @@ - - + - - + - - + - - + diff --git a/fieldservice_account_analytic/init_hook.py b/fieldservice_account_analytic/init_hook.py index 730d91faac..49ef6b0ab8 100644 --- a/fieldservice_account_analytic/init_hook.py +++ b/fieldservice_account_analytic/init_hook.py @@ -4,5 +4,7 @@ def pre_init_hook(cr): cr.execute("""ALTER TABLE "fsm_location" ADD "customer_id" INT;""") - cr.execute("""UPDATE "fsm_location" SET customer_id = owner_id - WHERE customer_id IS NULL;""") + cr.execute( + """UPDATE "fsm_location" SET customer_id = owner_id + WHERE customer_id IS NULL;""" + ) diff --git a/fieldservice_account_analytic/migrations/12.0.2.0.0/post-migration.py b/fieldservice_account_analytic/migrations/12.0.2.0.0/post-migration.py index 7218f7ce5e..1f7de1b3b7 100644 --- a/fieldservice_account_analytic/migrations/12.0.2.0.0/post-migration.py +++ b/fieldservice_account_analytic/migrations/12.0.2.0.0/post-migration.py @@ -6,5 +6,4 @@ def migrate(env, version): if not version: return - env.execute("UPDATE fsm_order SET bill_to = 'location' " - "WHERE bill_to IS NULL;") + env.execute("UPDATE fsm_order SET bill_to = 'location' " "WHERE bill_to IS NULL;") diff --git a/fieldservice_account_analytic/models/__init__.py b/fieldservice_account_analytic/models/__init__.py index a08d9949b4..f42338c138 100644 --- a/fieldservice_account_analytic/models/__init__.py +++ b/fieldservice_account_analytic/models/__init__.py @@ -6,5 +6,5 @@ fsm_location, fsm_order, res_company, - res_config_settings + res_config_settings, ) diff --git a/fieldservice_account_analytic/models/account_invoice_line.py b/fieldservice_account_analytic/models/account_invoice_line.py index ca90dab2b1..21bb9c93a3 100644 --- a/fieldservice_account_analytic/models/account_invoice_line.py +++ b/fieldservice_account_analytic/models/account_invoice_line.py @@ -1,7 +1,7 @@ # Copyright (C) 2018 - TODAY, Open Source Integrators # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import api, models, _ +from odoo import _, api, models from odoo.exceptions import ValidationError @@ -10,12 +10,12 @@ class AccountInvoiceLine(models.Model): @api.model def create(self, vals): - order = self.env['fsm.order'].browse(vals.get('fsm_order_id')) + order = self.env["fsm.order"].browse(vals.get("fsm_order_id")) if order: if order.location_id.analytic_account_id: - vals['account_analytic_id'] = order.location_id.\ - analytic_account_id.id + vals["account_analytic_id"] = order.location_id.analytic_account_id.id else: - raise ValidationError(_("No analytic account " - "set on the order's Location.")) + raise ValidationError( + _("No analytic account " "set on the order's Location.") + ) return super(AccountInvoiceLine, self).create(vals) diff --git a/fieldservice_account_analytic/models/analytic_account.py b/fieldservice_account_analytic/models/analytic_account.py index 62bb9c12a7..149b82fe81 100644 --- a/fieldservice_account_analytic/models/analytic_account.py +++ b/fieldservice_account_analytic/models/analytic_account.py @@ -1,28 +1,29 @@ # 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, _ +from odoo import _, api, fields, models from odoo.exceptions import ValidationError class AccountAnalyticLine(models.Model): - _inherit = 'account.analytic.line' + _inherit = "account.analytic.line" - fsm_order_id = fields.Many2one('fsm.order', string='FSM Order') - product_id = fields.Many2one('product.product', string='Time Type') + fsm_order_id = fields.Many2one("fsm.order", string="FSM Order") + product_id = fields.Many2one("product.product", string="Time Type") @api.model def create(self, vals): - order = self.env['fsm.order'].browse(vals.get('fsm_order_id')) + order = self.env["fsm.order"].browse(vals.get("fsm_order_id")) if order: if order.location_id.analytic_account_id: - vals['account_id'] = order.location_id.analytic_account_id.id + vals["account_id"] = order.location_id.analytic_account_id.id else: - raise ValidationError(_("No analytic account set " - "on the order's Location.")) + raise ValidationError( + _("No analytic account set " "on the order's Location.") + ) return super(AccountAnalyticLine, self).create(vals) - @api.onchange('product_id') + @api.onchange("product_id") def onchange_product_id(self): if self.product_id: self.name = self.product_id.name diff --git a/fieldservice_account_analytic/models/fsm_location.py b/fieldservice_account_analytic/models/fsm_location.py index 6885f1b1c1..d1fa677f92 100644 --- a/fieldservice_account_analytic/models/fsm_location.py +++ b/fieldservice_account_analytic/models/fsm_location.py @@ -1,15 +1,15 @@ # Copyright (C) 2018 - TODAY, Open Source Integrators # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import fields, models, api +from odoo import api, fields, models class FSMLocation(models.Model): - _inherit = 'fsm.location' + _inherit = "fsm.location" - analytic_account_id = fields.Many2one('account.analytic.account', - string='Analytic Account', - company_dependent=True) + analytic_account_id = fields.Many2one( + "account.analytic.account", string="Analytic Account", company_dependent=True + ) @api.model def get_default_customer(self): @@ -18,10 +18,15 @@ def get_default_customer(self): return self.owner_id.id customer_id = fields.Many2one( - 'res.partner', string='Billed Customer', required=True, - ondelete='restrict', auto_join=True, track_visibility='onchange', - default=get_default_customer) + "res.partner", + string="Billed Customer", + required=True, + ondelete="restrict", + auto_join=True, + track_visibility="onchange", + default=get_default_customer, + ) - @api.onchange('fsm_parent_id') + @api.onchange("fsm_parent_id") def _onchange_fsm_parent_id_account(self): self.customer_id = self.fsm_parent_id.customer_id or False diff --git a/fieldservice_account_analytic/models/fsm_order.py b/fieldservice_account_analytic/models/fsm_order.py index c2e5da8402..77ab3e6264 100644 --- a/fieldservice_account_analytic/models/fsm_order.py +++ b/fieldservice_account_analytic/models/fsm_order.py @@ -5,44 +5,53 @@ class FSMOrder(models.Model): - _inherit = 'fsm.order' - - total_cost = fields.Float(compute='_compute_total_cost', - string='Total Cost') - bill_to = fields.Selection([('location', 'Bill Location'), - ('contact', 'Bill Contact')], - string="Bill to", - required=True, - default="location") - customer_id = fields.Many2one('res.partner', string='Contact', - domain=[('customer', '=', True)], - change_default=True, - index=True, - track_visibility='always') + _inherit = "fsm.order" + + total_cost = fields.Float(compute="_compute_total_cost", string="Total Cost") + bill_to = fields.Selection( + [("location", "Bill Location"), ("contact", "Bill Contact")], + string="Bill to", + required=True, + default="location", + ) + customer_id = fields.Many2one( + "res.partner", + string="Contact", + domain=[("customer", "=", True)], + change_default=True, + index=True, + track_visibility="always", + ) def _compute_total_cost(self): """ To be overridden as needed from other modules """ for order in self: order.total_cost = 0.0 - @api.onchange('location_id', 'customer_id') + @api.onchange("location_id", "customer_id") def _onchange_location_id_customer_account(self): if self.env.user.company_id.fsm_filter_location_by_contact: if self.location_id: - return {'domain': {'customer_id': [('service_location_id', '=', - self.location_id.id)]}} + return { + "domain": { + "customer_id": [ + ("service_location_id", "=", self.location_id.id) + ] + } + } else: - return {'domain': {'customer_id': [], - 'location_id': []}} + return {"domain": {"customer_id": [], "location_id": []}} else: if self.customer_id: - return {'domain': {'location_id': [('partner_id', '=', - self.customer_id.id)]}} + return { + "domain": { + "location_id": [("partner_id", "=", self.customer_id.id)] + } + } else: - return {'domain': {'location_id': [], - 'customer_id': []}} + return {"domain": {"location_id": [], "customer_id": []}} - @api.onchange('customer_id') + @api.onchange("customer_id") def _onchange_customer_id_location(self): if self.customer_id: self.location_id = self.customer_id.service_location_id @@ -51,6 +60,6 @@ def _onchange_customer_id_location(self): def write(self, vals): res = super(FSMOrder, self).write(vals) for order in self: - if 'customer_id' not in vals and order.customer_id is False: + if "customer_id" not in vals and order.customer_id is False: order.customer_id = order.location_id.customer_id.id return res diff --git a/fieldservice_account_analytic/models/res_company.py b/fieldservice_account_analytic/models/res_company.py index ed087f6ed9..4d6dd0e399 100644 --- a/fieldservice_account_analytic/models/res_company.py +++ b/fieldservice_account_analytic/models/res_company.py @@ -5,14 +5,14 @@ class ResCompany(models.Model): - _inherit = 'res.company' + _inherit = "res.company" fsm_filter_location_by_contact = fields.Boolean( - string='Filter Contacts with Location' + string="Filter Contacts with Location" ) - @api.onchange('fsm_filter_location_by_contact') + @api.onchange("fsm_filter_location_by_contact") def onchange_fsm_filter_location_by_contact(self): - fso_ids = self.env['fsm.order'].search([]) + fso_ids = self.env["fsm.order"].search([]) for fso_id in fso_ids: fso_id._onchange_location_id_customer_account() diff --git a/fieldservice_account_analytic/models/res_config_settings.py b/fieldservice_account_analytic/models/res_config_settings.py index e8ea540845..8d37084ce9 100644 --- a/fieldservice_account_analytic/models/res_config_settings.py +++ b/fieldservice_account_analytic/models/res_config_settings.py @@ -5,10 +5,10 @@ class ResConfigSettings(models.TransientModel): - _inherit = 'res.config.settings' + _inherit = "res.config.settings" fsm_filter_location_by_contact = fields.Boolean( - string='Filter Contacts with Location', - related='company_id.fsm_filter_location_by_contact', - readonly=False + string="Filter Contacts with Location", + related="company_id.fsm_filter_location_by_contact", + readonly=False, ) diff --git a/fieldservice_account_analytic/readme/USAGE.rst b/fieldservice_account_analytic/readme/USAGE.rst index 8b13789179..e69de29bb2 100644 --- a/fieldservice_account_analytic/readme/USAGE.rst +++ b/fieldservice_account_analytic/readme/USAGE.rst @@ -1 +0,0 @@ - diff --git a/fieldservice_account_analytic/report/fsm_order_report_template.xml b/fieldservice_account_analytic/report/fsm_order_report_template.xml index e00d75f2c7..701c934f27 100644 --- a/fieldservice_account_analytic/report/fsm_order_report_template.xml +++ b/fieldservice_account_analytic/report/fsm_order_report_template.xml @@ -1,16 +1,19 @@ - -