From e954df1179c3c9182454f8c48281d76de1e1c31e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Tue, 29 Mar 2022 10:22:36 +0200 Subject: [PATCH 01/12] [ADD] maintenance_account: New addon. TT33410 [UPD] Update maintenance_account.pot [UPD] README.rst --- maintenance_account/README.rst | 96 ++++ maintenance_account/__init__.py | 1 + maintenance_account/__manifest__.py | 17 + maintenance_account/i18n/es.po | 86 ++++ .../i18n/maintenance_account.pot | 88 ++++ maintenance_account/models/__init__.py | 2 + maintenance_account/models/account_move.py | 114 +++++ .../models/maintenance_equipment.py | 19 + maintenance_account/readme/CONTRIBUTORS.rst | 6 + maintenance_account/readme/DESCRIPTION.rst | 1 + maintenance_account/readme/USAGE.rst | 6 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 437 ++++++++++++++++++ maintenance_account/tests/__init__.py | 3 + .../tests/test_maintenance_account.py | 95 ++++ .../views/account_move_view.xml | 46 ++ .../views/maintenance_equipment_view.xml | 13 + 17 files changed, 1030 insertions(+) create mode 100644 maintenance_account/README.rst create mode 100644 maintenance_account/__init__.py create mode 100644 maintenance_account/__manifest__.py create mode 100644 maintenance_account/i18n/es.po create mode 100644 maintenance_account/i18n/maintenance_account.pot create mode 100644 maintenance_account/models/__init__.py create mode 100644 maintenance_account/models/account_move.py create mode 100644 maintenance_account/models/maintenance_equipment.py create mode 100644 maintenance_account/readme/CONTRIBUTORS.rst create mode 100644 maintenance_account/readme/DESCRIPTION.rst create mode 100644 maintenance_account/readme/USAGE.rst create mode 100644 maintenance_account/static/description/icon.png create mode 100644 maintenance_account/static/description/index.html create mode 100644 maintenance_account/tests/__init__.py create mode 100644 maintenance_account/tests/test_maintenance_account.py create mode 100644 maintenance_account/views/account_move_view.xml create mode 100644 maintenance_account/views/maintenance_equipment_view.xml diff --git a/maintenance_account/README.rst b/maintenance_account/README.rst new file mode 100644 index 000000000..af25b1af5 --- /dev/null +++ b/maintenance_account/README.rst @@ -0,0 +1,96 @@ +=================== +Maintenance Account +=================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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%2Fmaintenance-lightgray.png?logo=github + :target: https://github.com/OCA/maintenance/tree/14.0/maintenance_account + :alt: OCA/maintenance +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/maintenance-14-0/maintenance-14-0-maintenance_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/240/14.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module automatically creates the equipment when validating the purchase invoices. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +To use this module, you need to: + +* Go to *Invoicing > Vendor > Bills* and create a new one with any product with the "Can be Maintenance" field checked. +* Confirm the invoice. +* A new equipment category linked to the product line has been created (if the product category did not already have one linked). +* A smart-button is displayed with the equipments created (as many equipments as the quantity of product lines are created). + +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 +~~~~~~~ + +* Tecnativa + +Contributors +~~~~~~~~~~~~ + +* César Fernández Domínguez + +* `Tecnativa `_: + + * Víctor Martínez + * Pedro M. Baeza + +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-victoralmau| image:: https://github.com/victoralmau.png?size=40px + :target: https://github.com/victoralmau + :alt: victoralmau + +Current `maintainer `__: + +|maintainer-victoralmau| + +This module is part of the `OCA/maintenance `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/maintenance_account/__init__.py b/maintenance_account/__init__.py new file mode 100644 index 000000000..0650744f6 --- /dev/null +++ b/maintenance_account/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/maintenance_account/__manifest__.py b/maintenance_account/__manifest__.py new file mode 100644 index 000000000..d56cb2148 --- /dev/null +++ b/maintenance_account/__manifest__.py @@ -0,0 +1,17 @@ +# Copyright 2022 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + "name": "Maintenance Account", + "version": "14.0.1.0.0", + "category": "Maintenance", + "website": "https://github.com/OCA/maintenance", + "author": "Tecnativa, Odoo Community Association (OCA)", + "license": "AGPL-3", + "depends": ["maintenance_product", "account"], + "installable": True, + "data": [ + "views/maintenance_equipment_view.xml", + "views/account_move_view.xml", + ], + "maintainers": ["victoralmau"], +} diff --git a/maintenance_account/i18n/es.po b/maintenance_account/i18n/es.po new file mode 100644 index 000000000..2bc4495f7 --- /dev/null +++ b/maintenance_account/i18n/es.po @@ -0,0 +1,86 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_account +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-03-30 07:30+0000\n" +"PO-Revision-Date: 2022-03-30 09:31+0200\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: \n" +"Language: es\n" +"X-Generator: Poedit 2.3\n" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_account_move__display_name +#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__display_name +#: model:ir.model.fields,field_description:maintenance_account.field_maintenance_equipment__display_name +msgid "Display Name" +msgstr "Nombre mostrado" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__equipment_category_id +msgid "Equipment Category" +msgstr "Categoría de equipo" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_account_bank_statement_line__equipment_count +#: model:ir.model.fields,field_description:maintenance_account.field_account_move__equipment_count +#: model:ir.model.fields,field_description:maintenance_account.field_account_payment__equipment_count +msgid "Equipment Count" +msgstr "Total de equipos" + +#. module: maintenance_account +#: model_terms:ir.ui.view,arch_db:maintenance_account.view_move_form +msgid "Equipment(s)" +msgstr "Equipo(s)" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__equipment_ids +msgid "Equipments" +msgstr "Equipos" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_account_move__id +#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__id +#: model:ir.model.fields,field_description:maintenance_account.field_maintenance_equipment__id +msgid "ID" +msgstr "ID" + +#. module: maintenance_account +#: model:ir.model,name:maintenance_account.model_account_move +msgid "Journal Entry" +msgstr "Asiento contable" + +#. module: maintenance_account +#: model:ir.model,name:maintenance_account.model_account_move_line +msgid "Journal Item" +msgstr "Apunte contable" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_account_move____last_update +#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line____last_update +#: model:ir.model.fields,field_description:maintenance_account.field_maintenance_equipment____last_update +msgid "Last Modified on" +msgstr "Última modificación el" + +#. module: maintenance_account +#: model:ir.model,name:maintenance_account.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Equipo de mantenimiento" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_maintenance_equipment__move_id +msgid "Move" +msgstr "Asiento" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_maintenance_equipment__move_line_id +msgid "Move line" +msgstr "Apunte" diff --git a/maintenance_account/i18n/maintenance_account.pot b/maintenance_account/i18n/maintenance_account.pot new file mode 100644 index 000000000..273dd78e0 --- /dev/null +++ b/maintenance_account/i18n/maintenance_account.pot @@ -0,0 +1,88 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_account +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.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: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_account_move__display_name +#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__display_name +#: model:ir.model.fields,field_description:maintenance_account.field_maintenance_equipment__display_name +msgid "Display Name" +msgstr "" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__equipment_category_id +msgid "Equipment Category" +msgstr "" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_account_bank_statement_line__equipment_count +#: model:ir.model.fields,field_description:maintenance_account.field_account_move__equipment_count +#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__equipment_count +#: model:ir.model.fields,field_description:maintenance_account.field_account_payment__equipment_count +msgid "Equipment Count" +msgstr "" + +#. module: maintenance_account +#: model_terms:ir.ui.view,arch_db:maintenance_account.view_move_form +msgid "Equipment(s)" +msgstr "" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__equipment_ids +msgid "Equipments" +msgstr "" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_account_move__id +#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__id +#: model:ir.model.fields,field_description:maintenance_account.field_maintenance_equipment__id +msgid "ID" +msgstr "" + +#. module: maintenance_account +#: model:ir.model,name:maintenance_account.model_account_move +msgid "Journal Entry" +msgstr "" + +#. module: maintenance_account +#: model:ir.model,name:maintenance_account.model_account_move_line +msgid "Journal Item" +msgstr "" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_account_move____last_update +#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line____last_update +#: model:ir.model.fields,field_description:maintenance_account.field_maintenance_equipment____last_update +msgid "Last Modified on" +msgstr "" + +#. module: maintenance_account +#: model:ir.model,name:maintenance_account.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_maintenance_equipment__move_id +msgid "Move" +msgstr "" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_maintenance_equipment__move_line_id +msgid "Move line" +msgstr "" + +#. module: maintenance_account +#: model:ir.model.fields,help:maintenance_account.field_maintenance_equipment__move_id +msgid "The move of this entry line." +msgstr "" diff --git a/maintenance_account/models/__init__.py b/maintenance_account/models/__init__.py new file mode 100644 index 000000000..aeb722068 --- /dev/null +++ b/maintenance_account/models/__init__.py @@ -0,0 +1,2 @@ +from . import account_move +from . import maintenance_equipment diff --git a/maintenance_account/models/account_move.py b/maintenance_account/models/account_move.py new file mode 100644 index 000000000..30e8091ba --- /dev/null +++ b/maintenance_account/models/account_move.py @@ -0,0 +1,114 @@ +# Copyright 2022 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from odoo import api, fields, models + + +class AccountMove(models.Model): + _inherit = "account.move" + + equipment_count = fields.Integer(compute="_compute_equipment_count") + + def _compute_equipment_count(self): + for item in self: + item.equipment_count = sum(item.mapped("line_ids.equipment_count")) + + def unlink(self): + items = self.env["maintenance.equipment"].search([("move_id", "in", self.ids)]) + items.write({"move_line_id": False, "move_id": False}) + return super().unlink() + + def action_post(self): + super().action_post() + equipment_model = self.env["maintenance.equipment"] + for move in self: + for line in move.line_ids.filtered( + lambda x: ( + not x.equipment_ids + and x.product_id + and x.product_id.product_tmpl_id.maintenance_ok + ) + ): + if not line.equipment_category_id: + line._set_equipment_category() + # Create equipments + limit = int(line.quantity) + 1 + vals = line._prepare_equipment_vals() + equipment_ids = [] + for _i in range(1, limit): + equipment = equipment_model.create(vals) + equipment_ids.append((4, equipment.id)) + line.equipment_ids = equipment_ids + + def action_view_equipments(self): + items = self.env["maintenance.equipment"].search([("move_id", "=", self.id)]) + action = self.env.ref("maintenance.hr_equipment_action") + action_dict = action.sudo().read()[0] + if len(items) == 1: + res = self.env.ref("maintenance.hr_equipment_view_form", False) + action_dict["views"] = [(res and res.id or False, "form")] + action_dict["res_id"] = items.id + elif items: + action_dict["domain"] = [("id", "in", items.ids)] + else: + action_dict = {"type": "ir.actions.act_window_close"} + return action_dict + + +class AccountMoveLine(models.Model): + _inherit = "account.move.line" + + equipment_category_id = fields.Many2one( + comodel_name="maintenance.equipment.category", + string="Equipment Category", + compute="_compute_equipment_category_id", + store=True, + readonly=False, + ) + equipment_ids = fields.Many2many( + comodel_name="maintenance.equipment", + string="Equipments", + ) + equipment_count = fields.Integer(compute="_compute_equipment_count") + + @api.depends("product_id") + def _compute_equipment_category_id(self): + for item in self: + if ( + item.product_id.maintenance_ok + and item.product_id.product_tmpl_id.categ_id.equipment_category_ids + ): + item.equipment_category_id = fields.first( + item.product_id.product_tmpl_id.categ_id.equipment_category_ids + ) + else: + item.equipment_category_id = item.equipment_category_id + + def _compute_equipment_count(self): + data = self.env["maintenance.equipment"].read_group( + [("move_line_id", "in", self.ids)], ["move_line_id"], ["move_line_id"] + ) + mapping = {x["move_line_id"][0]: x["move_line_id_count"] for x in data} + for item in self: + item.equipment_count = mapping.get(item.id, 0) + + def _prepare_equipment_category_vals(self): + categ = self.product_id.product_tmpl_id.categ_id + return {"name": categ.name, "product_category_id": categ.id} + + def _set_equipment_category(self): + if not self.equipment_category_id: + category_model = self.env["maintenance.equipment.category"] + category = category_model.create(self._prepare_equipment_category_vals()) + self.equipment_category_id = category.id + + def _prepare_equipment_vals(self): + return { + "move_line_id": self.id, + "name": self.product_id.name, + "product_id": self.product_id.id, + "category_id": self.equipment_category_id.id, + "assign_date": self.move_id.date, + "effective_date": self.move_id.date, + "partner_id": self.move_id.partner_id.id, + "partner_ref": self.move_id.ref, + } diff --git a/maintenance_account/models/maintenance_equipment.py b/maintenance_account/models/maintenance_equipment.py new file mode 100644 index 000000000..f1eca2c80 --- /dev/null +++ b/maintenance_account/models/maintenance_equipment.py @@ -0,0 +1,19 @@ +# Copyright 2022 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from odoo import fields, models + + +class MaintenanceEquipment(models.Model): + _inherit = "maintenance.equipment" + + move_id = fields.Many2one( + comodel_name="account.move", + related="move_line_id.move_id", + string="Move", + readonly=True, + ) + move_line_id = fields.Many2one( + comodel_name="account.move.line", + string="Move line", + readonly=True, + ) diff --git a/maintenance_account/readme/CONTRIBUTORS.rst b/maintenance_account/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..536c58907 --- /dev/null +++ b/maintenance_account/readme/CONTRIBUTORS.rst @@ -0,0 +1,6 @@ +* César Fernández Domínguez + +* `Tecnativa `_: + + * Víctor Martínez + * Pedro M. Baeza diff --git a/maintenance_account/readme/DESCRIPTION.rst b/maintenance_account/readme/DESCRIPTION.rst new file mode 100644 index 000000000..cb5ff7746 --- /dev/null +++ b/maintenance_account/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module automatically creates the equipment when validating the purchase invoices. diff --git a/maintenance_account/readme/USAGE.rst b/maintenance_account/readme/USAGE.rst new file mode 100644 index 000000000..8e3ffd09c --- /dev/null +++ b/maintenance_account/readme/USAGE.rst @@ -0,0 +1,6 @@ +To use this module, you need to: + +* Go to *Invoicing > Vendor > Bills* and create a new one with any product with the "Can be Maintenance" field checked. +* Confirm the invoice. +* A new equipment category linked to the product line has been created (if the product category did not already have one linked). +* A smart-button is displayed with the equipments created (as many equipments as the quantity of product lines are created). diff --git a/maintenance_account/static/description/icon.png b/maintenance_account/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/maintenance_account/static/description/index.html b/maintenance_account/static/description/index.html new file mode 100644 index 000000000..0ece416ff --- /dev/null +++ b/maintenance_account/static/description/index.html @@ -0,0 +1,437 @@ + + + + + + +Maintenance Account + + + +
+

Maintenance Account

+ + +

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

+

This module automatically creates the equipment when validating the purchase invoices.

+

Table of contents

+ +
+

Usage

+

To use this module, you need to:

+
    +
  • Go to Invoicing > Vendor > Bills and create a new one with any product with the “Can be Maintenance” field checked.
  • +
  • Confirm the invoice.
  • +
  • A new equipment category linked to the product line has been created (if the product category did not already have one linked).
  • +
  • A smart-button is displayed with the equipments created (as many equipments as the quantity of product lines are created).
  • +
+
+
+

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

+
    +
  • Tecnativa
  • +
+
+
+

Contributors

+ +
+
+

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:

+

victoralmau

+

This module is part of the OCA/maintenance project on GitHub.

+

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

+
+
+
+ + diff --git a/maintenance_account/tests/__init__.py b/maintenance_account/tests/__init__.py new file mode 100644 index 000000000..6fefd8858 --- /dev/null +++ b/maintenance_account/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) + +from . import test_maintenance_account diff --git a/maintenance_account/tests/test_maintenance_account.py b/maintenance_account/tests/test_maintenance_account.py new file mode 100644 index 000000000..92cc51932 --- /dev/null +++ b/maintenance_account/tests/test_maintenance_account.py @@ -0,0 +1,95 @@ +# Copyright 2022 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) + +from odoo import fields +from odoo.tests import Form, common + + +class TestAccountMove(common.SavepointCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.categ = cls.env["product.category"].create({"name": "Test category"}) + cls.product_a = cls.env["product.product"].create( + {"name": "Test product A", "maintenance_ok": True, "categ_id": cls.categ.id} + ) + cls.product_b = cls.env["product.product"].create( + {"name": "Test product B", "categ_id": cls.categ.id} + ) + cls.account_payable = cls.env["account.account"].create( + { + "name": "Test Account", + "code": "TEST", + "user_type_id": cls.env.ref("account.data_account_type_payable").id, + "reconcile": True, + } + ) + cls.account_expense = cls.env["account.account"].create( + { + "name": "Test Account", + "code": "ACC", + "user_type_id": cls.env.ref("account.data_account_type_expenses").id, + } + ) + cls.journal = cls.env["account.journal"].create( + { + "name": "Test purchase journal", + "type": "purchase", + "code": "TEST-PURCHASE", + } + ) + cls.partner = cls.env["res.partner"].create( + { + "name": "Test partner", + } + ) + + def _create_invoice(self): + move_form = Form( + self.env["account.move"].with_context(default_type="in_invoice") + ) + move_form.partner_id = self.partner + move_form.ref = "SUPPLIE-REF" + move_form.invoice_date = fields.Date.from_string("2000-01-01") + with move_form.invoice_line_ids.new() as line_form: + line_form.product_id = self.product_a + line_form.quantity = 2 + line_form.account_id = self.account_expense + with move_form.invoice_line_ids.new() as line_form: + line_form.product_id = self.product_b + line_form.quantity = 2 + line_form.account_id = self.account_expense + invoice = move_form.save() + return invoice + + def test_invoice_action_post_equipment_1(self): + invoice = self._create_invoice() + line_a = invoice.line_ids.filtered(lambda x: x.product_id == self.product_a) + line_b = invoice.line_ids.filtered(lambda x: x.product_id == self.product_b) + self.assertFalse(line_a.equipment_category_id) + self.assertFalse(line_b.equipment_category_id) + invoice.action_post() + equipments = invoice.mapped("line_ids.equipment_ids") + self.assertEqual(len(equipments), 2) + self.assertTrue(line_a.equipment_category_id) + self.assertEqual(len(line_a.equipment_ids), 2) + self.assertEqual(len(line_b.equipment_ids), 0) + equipment = fields.first(equipments) + self.assertEqual(equipment.name, self.product_a.name) + self.assertEqual(equipment.product_id, self.product_a) + self.assertEqual(equipment.category_id.product_category_id, self.categ) + self.assertEqual(equipment.assign_date, invoice.date) + self.assertEqual(equipment.effective_date, invoice.date) + self.assertEqual(equipment.partner_id, self.partner) + self.assertEqual(equipment.partner_ref, invoice.ref) + + def test_invoice_action_post_equipment_2(self): + category = self.env["maintenance.equipment.category"].create( + {"name": self.categ.name, "product_category_id": self.categ.id} + ) + invoice = self._create_invoice() + line_a = invoice.line_ids.filtered(lambda x: x.product_id == self.product_a) + self.assertEqual(line_a.equipment_category_id, category) + invoice.action_post() + equipment = fields.first(line_a.equipment_ids) + self.assertEqual(equipment.category_id, category) diff --git a/maintenance_account/views/account_move_view.xml b/maintenance_account/views/account_move_view.xml new file mode 100644 index 000000000..7eda29af3 --- /dev/null +++ b/maintenance_account/views/account_move_view.xml @@ -0,0 +1,46 @@ + + + + account.move.form + account.move + + + + + + + + + + + + + + + diff --git a/maintenance_account/views/maintenance_equipment_view.xml b/maintenance_account/views/maintenance_equipment_view.xml new file mode 100644 index 000000000..47a43eb78 --- /dev/null +++ b/maintenance_account/views/maintenance_equipment_view.xml @@ -0,0 +1,13 @@ + + + + equipment.form + maintenance.equipment + + + + + + + + From 8d350be04db5b085eba56877603dd1f659a8c37f Mon Sep 17 00:00:00 2001 From: mymage Date: Mon, 24 Oct 2022 09:39:55 +0000 Subject: [PATCH 02/12] Added translation using Weblate (Italian) Translated using Weblate (Italian) Currently translated at 100.0% (13 of 13 strings) Translation: maintenance-14.0/maintenance-14.0-maintenance_account Translate-URL: https://translation.odoo-community.org/projects/maintenance-14-0/maintenance-14-0-maintenance_account/it/ --- maintenance_account/i18n/it.po | 91 ++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 maintenance_account/i18n/it.po diff --git a/maintenance_account/i18n/it.po b/maintenance_account/i18n/it.po new file mode 100644 index 000000000..54fce7453 --- /dev/null +++ b/maintenance_account/i18n/it.po @@ -0,0 +1,91 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_account +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2022-10-24 11:43+0000\n" +"Last-Translator: mymage \n" +"Language-Team: none\n" +"Language: it\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 4.14.1\n" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_account_move__display_name +#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__display_name +#: model:ir.model.fields,field_description:maintenance_account.field_maintenance_equipment__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__equipment_category_id +msgid "Equipment Category" +msgstr "Categoria attrezzatura" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_account_bank_statement_line__equipment_count +#: model:ir.model.fields,field_description:maintenance_account.field_account_move__equipment_count +#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__equipment_count +#: model:ir.model.fields,field_description:maintenance_account.field_account_payment__equipment_count +msgid "Equipment Count" +msgstr "Conteggio attrezzatura" + +#. module: maintenance_account +#: model_terms:ir.ui.view,arch_db:maintenance_account.view_move_form +msgid "Equipment(s)" +msgstr "Attrezzatura(e)" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__equipment_ids +msgid "Equipments" +msgstr "Attrezzature" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_account_move__id +#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__id +#: model:ir.model.fields,field_description:maintenance_account.field_maintenance_equipment__id +msgid "ID" +msgstr "ID" + +#. module: maintenance_account +#: model:ir.model,name:maintenance_account.model_account_move +msgid "Journal Entry" +msgstr "Registrazione contabile" + +#. module: maintenance_account +#: model:ir.model,name:maintenance_account.model_account_move_line +msgid "Journal Item" +msgstr "Movimento contabile" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_account_move____last_update +#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line____last_update +#: model:ir.model.fields,field_description:maintenance_account.field_maintenance_equipment____last_update +msgid "Last Modified on" +msgstr "Ultima modifica il" + +#. module: maintenance_account +#: model:ir.model,name:maintenance_account.model_maintenance_equipment +msgid "Maintenance Equipment" +msgstr "Attrezzatura manutenzione" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_maintenance_equipment__move_id +msgid "Move" +msgstr "Movimento" + +#. module: maintenance_account +#: model:ir.model.fields,field_description:maintenance_account.field_maintenance_equipment__move_line_id +msgid "Move line" +msgstr "Riga movimento" + +#. module: maintenance_account +#: model:ir.model.fields,help:maintenance_account.field_maintenance_equipment__move_id +msgid "The move of this entry line." +msgstr "Il movimento di questa registrazione." From 2be87c769dbab2caa7e5be39c8dca5da3f0417ba Mon Sep 17 00:00:00 2001 From: Enric Tobella Date: Tue, 13 Dec 2022 18:11:42 +0100 Subject: [PATCH 03/12] [IMP] maintenance_account: Only create equipments on purchase documents maintenance_account 14.0.1.0.1 --- maintenance_account/__manifest__.py | 2 +- maintenance_account/models/account_move.py | 2 +- .../tests/test_maintenance_account.py | 14 ++++++++++++-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/maintenance_account/__manifest__.py b/maintenance_account/__manifest__.py index d56cb2148..15097af31 100644 --- a/maintenance_account/__manifest__.py +++ b/maintenance_account/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "Maintenance Account", - "version": "14.0.1.0.0", + "version": "14.0.1.0.1", "category": "Maintenance", "website": "https://github.com/OCA/maintenance", "author": "Tecnativa, Odoo Community Association (OCA)", diff --git a/maintenance_account/models/account_move.py b/maintenance_account/models/account_move.py index 30e8091ba..247a8f505 100644 --- a/maintenance_account/models/account_move.py +++ b/maintenance_account/models/account_move.py @@ -20,7 +20,7 @@ def unlink(self): def action_post(self): super().action_post() equipment_model = self.env["maintenance.equipment"] - for move in self: + for move in self.filtered(lambda r: r.is_purchase_document()): for line in move.line_ids.filtered( lambda x: ( not x.equipment_ids diff --git a/maintenance_account/tests/test_maintenance_account.py b/maintenance_account/tests/test_maintenance_account.py index 92cc51932..bcee6a6da 100644 --- a/maintenance_account/tests/test_maintenance_account.py +++ b/maintenance_account/tests/test_maintenance_account.py @@ -44,9 +44,9 @@ def setUpClass(cls): } ) - def _create_invoice(self): + def _create_invoice(self, move_type="in_invoice"): move_form = Form( - self.env["account.move"].with_context(default_type="in_invoice") + self.env["account.move"].with_context(default_move_type=move_type) ) move_form.partner_id = self.partner move_form.ref = "SUPPLIE-REF" @@ -62,6 +62,16 @@ def _create_invoice(self): invoice = move_form.save() return invoice + def test_invoice_out_invoice_action_post_equipment_1(self): + invoice = self._create_invoice("out_invoice") + line_a = invoice.line_ids.filtered(lambda x: x.product_id == self.product_a) + line_b = invoice.line_ids.filtered(lambda x: x.product_id == self.product_b) + self.assertFalse(line_a.equipment_category_id) + self.assertFalse(line_b.equipment_category_id) + invoice.action_post() + equipments = invoice.mapped("line_ids.equipment_ids") + self.assertEqual(len(equipments), 0) + def test_invoice_action_post_equipment_1(self): invoice = self._create_invoice() line_a = invoice.line_ids.filtered(lambda x: x.product_id == self.product_a) From 8b0e8b390664315e8053682953ee6c3689c696cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Wed, 1 Mar 2023 14:15:43 +0100 Subject: [PATCH 04/12] [FIX] maintenance_account: Avoid error when post the invoice if the user does not have permissions to create maintenance records. TT41917 maintenance_account 14.0.1.0.2 --- maintenance_account/__manifest__.py | 2 +- maintenance_account/models/account_move.py | 14 +++++++--- .../tests/test_maintenance_account.py | 26 ++++++++++++++++--- 3 files changed, 33 insertions(+), 9 deletions(-) diff --git a/maintenance_account/__manifest__.py b/maintenance_account/__manifest__.py index 15097af31..5afaa1387 100644 --- a/maintenance_account/__manifest__.py +++ b/maintenance_account/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "Maintenance Account", - "version": "14.0.1.0.1", + "version": "14.0.1.0.2", "category": "Maintenance", "website": "https://github.com/OCA/maintenance", "author": "Tecnativa, Odoo Community Association (OCA)", diff --git a/maintenance_account/models/account_move.py b/maintenance_account/models/account_move.py index 247a8f505..f69085c60 100644 --- a/maintenance_account/models/account_move.py +++ b/maintenance_account/models/account_move.py @@ -19,7 +19,8 @@ def unlink(self): def action_post(self): super().action_post() - equipment_model = self.env["maintenance.equipment"] + # Prevent error if user does not have permission to create equipments + equipment_model = self.env["maintenance.equipment"].sudo() for move in self.filtered(lambda r: r.is_purchase_document()): for line in move.line_ids.filtered( lambda x: ( @@ -35,7 +36,9 @@ def action_post(self): vals = line._prepare_equipment_vals() equipment_ids = [] for _i in range(1, limit): - equipment = equipment_model.create(vals) + equipment = equipment_model.with_company( + move.company_id, + ).create(vals.copy()) equipment_ids.append((4, equipment.id)) line.equipment_ids = equipment_ids @@ -97,8 +100,11 @@ def _prepare_equipment_category_vals(self): def _set_equipment_category(self): if not self.equipment_category_id: - category_model = self.env["maintenance.equipment.category"] - category = category_model.create(self._prepare_equipment_category_vals()) + # Prevent error if user does not have permission to create equipments + category_model = self.env["maintenance.equipment.category"].sudo() + category = category_model.with_company(self.company_id).create( + self._prepare_equipment_category_vals() + ) self.equipment_category_id = category.id def _prepare_equipment_vals(self): diff --git a/maintenance_account/tests/test_maintenance_account.py b/maintenance_account/tests/test_maintenance_account.py index bcee6a6da..8c7226093 100644 --- a/maintenance_account/tests/test_maintenance_account.py +++ b/maintenance_account/tests/test_maintenance_account.py @@ -1,14 +1,27 @@ -# Copyright 2022 Tecnativa - Víctor Martínez +# Copyright 2022-2023 Tecnativa - Víctor Martínez # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) from odoo import fields -from odoo.tests import Form, common +from odoo.tests import Form, common, new_test_user +from odoo.tests.common import users class TestAccountMove(common.SavepointCase): @classmethod def setUpClass(cls): super().setUpClass() + ctx = { + "mail_create_nolog": True, + "mail_create_nosubscribe": True, + "mail_notrack": True, + "no_reset_password": True, + } + new_test_user( + cls.env, + login="test-account-user", + groups="account.group_account_invoice", + context=ctx, + ) cls.categ = cls.env["product.category"].create({"name": "Test category"}) cls.product_a = cls.env["product.product"].create( {"name": "Test product A", "maintenance_ok": True, "categ_id": cls.categ.id} @@ -62,6 +75,7 @@ def _create_invoice(self, move_type="in_invoice"): invoice = move_form.save() return invoice + @users("test-account-user") def test_invoice_out_invoice_action_post_equipment_1(self): invoice = self._create_invoice("out_invoice") line_a = invoice.line_ids.filtered(lambda x: x.product_id == self.product_a) @@ -72,6 +86,7 @@ def test_invoice_out_invoice_action_post_equipment_1(self): equipments = invoice.mapped("line_ids.equipment_ids") self.assertEqual(len(equipments), 0) + @users("test-account-user") def test_invoice_action_post_equipment_1(self): invoice = self._create_invoice() line_a = invoice.line_ids.filtered(lambda x: x.product_id == self.product_a) @@ -93,9 +108,12 @@ def test_invoice_action_post_equipment_1(self): self.assertEqual(equipment.partner_id, self.partner) self.assertEqual(equipment.partner_ref, invoice.ref) + @users("test-account-user") def test_invoice_action_post_equipment_2(self): - category = self.env["maintenance.equipment.category"].create( - {"name": self.categ.name, "product_category_id": self.categ.id} + category = ( + self.env["maintenance.equipment.category"] + .sudo() + .create({"name": self.categ.name, "product_category_id": self.categ.id}) ) invoice = self._create_invoice() line_a = invoice.line_ids.filtered(lambda x: x.product_id == self.product_a) From b6fa972ac296d98833c979269b0bc15fb801c568 Mon Sep 17 00:00:00 2001 From: Enric Tobella Date: Wed, 1 Mar 2023 12:57:46 +0100 Subject: [PATCH 05/12] [FIX] maintenance_account: Check if the category has an equipment category before creating it maintenance_account 14.0.1.0.3 --- maintenance_account/__manifest__.py | 2 +- maintenance_account/models/account_move.py | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/maintenance_account/__manifest__.py b/maintenance_account/__manifest__.py index 5afaa1387..2de5bbcf7 100644 --- a/maintenance_account/__manifest__.py +++ b/maintenance_account/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "Maintenance Account", - "version": "14.0.1.0.2", + "version": "14.0.1.0.3", "category": "Maintenance", "website": "https://github.com/OCA/maintenance", "author": "Tecnativa, Odoo Community Association (OCA)", diff --git a/maintenance_account/models/account_move.py b/maintenance_account/models/account_move.py index f69085c60..04eec6d20 100644 --- a/maintenance_account/models/account_move.py +++ b/maintenance_account/models/account_move.py @@ -100,11 +100,14 @@ def _prepare_equipment_category_vals(self): def _set_equipment_category(self): if not self.equipment_category_id: - # Prevent error if user does not have permission to create equipments category_model = self.env["maintenance.equipment.category"].sudo() - category = category_model.with_company(self.company_id).create( - self._prepare_equipment_category_vals() + category = fields.first( + self.product_id.product_tmpl_id.categ_id.equipment_category_ids ) + if not category: + category = category_model.create( + self._prepare_equipment_category_vals() + ) self.equipment_category_id = category.id def _prepare_equipment_vals(self): From 013d25abb62438a100d712852cbcfb158c130bff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Thu, 2 Mar 2023 11:03:06 +0100 Subject: [PATCH 06/12] [MIG] maintenance_account: Migration to 15.0 TT41913 [UPD] Update maintenance_account.pot [UPD] README.rst Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: maintenance-15.0/maintenance-15.0-maintenance_account Translate-URL: https://translation.odoo-community.org/projects/maintenance-15-0/maintenance-15-0-maintenance_account/ --- maintenance_account/README.rst | 10 ++--- maintenance_account/__manifest__.py | 2 +- maintenance_account/i18n/es.po | 38 ++++++++----------- maintenance_account/i18n/it.po | 30 +++++---------- .../i18n/maintenance_account.pot | 23 +---------- maintenance_account/models/account_move.py | 8 ++-- .../static/description/index.html | 6 +-- .../tests/test_maintenance_account.py | 13 ++++++- 8 files changed, 52 insertions(+), 78 deletions(-) diff --git a/maintenance_account/README.rst b/maintenance_account/README.rst index af25b1af5..3cd57482d 100644 --- a/maintenance_account/README.rst +++ b/maintenance_account/README.rst @@ -14,13 +14,13 @@ Maintenance Account :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmaintenance-lightgray.png?logo=github - :target: https://github.com/OCA/maintenance/tree/14.0/maintenance_account + :target: https://github.com/OCA/maintenance/tree/15.0/maintenance_account :alt: OCA/maintenance .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/maintenance-14-0/maintenance-14-0-maintenance_account + :target: https://translation.odoo-community.org/projects/maintenance-15-0/maintenance-15-0-maintenance_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/240/14.0 + :target: https://runbot.odoo-community.org/runbot/240/15.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -48,7 +48,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. @@ -91,6 +91,6 @@ Current `maintainer `__: |maintainer-victoralmau| -This module is part of the `OCA/maintenance `_ project on GitHub. +This module is part of the `OCA/maintenance `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/maintenance_account/__manifest__.py b/maintenance_account/__manifest__.py index 2de5bbcf7..97759ba91 100644 --- a/maintenance_account/__manifest__.py +++ b/maintenance_account/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "Maintenance Account", - "version": "14.0.1.0.3", + "version": "15.0.1.0.0", "category": "Maintenance", "website": "https://github.com/OCA/maintenance", "author": "Tecnativa, Odoo Community Association (OCA)", diff --git a/maintenance_account/i18n/es.po b/maintenance_account/i18n/es.po index 2bc4495f7..f94c01753 100644 --- a/maintenance_account/i18n/es.po +++ b/maintenance_account/i18n/es.po @@ -10,20 +10,13 @@ msgstr "" "PO-Revision-Date: 2022-03-30 09:31+0200\n" "Last-Translator: \n" "Language-Team: \n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: \n" -"Language: es\n" "X-Generator: Poedit 2.3\n" -#. module: maintenance_account -#: model:ir.model.fields,field_description:maintenance_account.field_account_move__display_name -#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__display_name -#: model:ir.model.fields,field_description:maintenance_account.field_maintenance_equipment__display_name -msgid "Display Name" -msgstr "Nombre mostrado" - #. module: maintenance_account #: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__equipment_category_id msgid "Equipment Category" @@ -32,6 +25,7 @@ msgstr "Categoría de equipo" #. module: maintenance_account #: model:ir.model.fields,field_description:maintenance_account.field_account_bank_statement_line__equipment_count #: model:ir.model.fields,field_description:maintenance_account.field_account_move__equipment_count +#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__equipment_count #: model:ir.model.fields,field_description:maintenance_account.field_account_payment__equipment_count msgid "Equipment Count" msgstr "Total de equipos" @@ -46,13 +40,6 @@ msgstr "Equipo(s)" msgid "Equipments" msgstr "Equipos" -#. module: maintenance_account -#: model:ir.model.fields,field_description:maintenance_account.field_account_move__id -#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__id -#: model:ir.model.fields,field_description:maintenance_account.field_maintenance_equipment__id -msgid "ID" -msgstr "ID" - #. module: maintenance_account #: model:ir.model,name:maintenance_account.model_account_move msgid "Journal Entry" @@ -63,13 +50,6 @@ msgstr "Asiento contable" msgid "Journal Item" msgstr "Apunte contable" -#. module: maintenance_account -#: model:ir.model.fields,field_description:maintenance_account.field_account_move____last_update -#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line____last_update -#: model:ir.model.fields,field_description:maintenance_account.field_maintenance_equipment____last_update -msgid "Last Modified on" -msgstr "Última modificación el" - #. module: maintenance_account #: model:ir.model,name:maintenance_account.model_maintenance_equipment msgid "Maintenance Equipment" @@ -84,3 +64,17 @@ msgstr "Asiento" #: model:ir.model.fields,field_description:maintenance_account.field_maintenance_equipment__move_line_id msgid "Move line" msgstr "Apunte" + +#. module: maintenance_account +#: model:ir.model.fields,help:maintenance_account.field_maintenance_equipment__move_id +msgid "The move of this entry line." +msgstr "" + +#~ msgid "Display Name" +#~ msgstr "Nombre mostrado" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Last Modified on" +#~ msgstr "Última modificación el" diff --git a/maintenance_account/i18n/it.po b/maintenance_account/i18n/it.po index 54fce7453..d92fcabdd 100644 --- a/maintenance_account/i18n/it.po +++ b/maintenance_account/i18n/it.po @@ -16,13 +16,6 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.14.1\n" -#. module: maintenance_account -#: model:ir.model.fields,field_description:maintenance_account.field_account_move__display_name -#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__display_name -#: model:ir.model.fields,field_description:maintenance_account.field_maintenance_equipment__display_name -msgid "Display Name" -msgstr "Nome visualizzato" - #. module: maintenance_account #: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__equipment_category_id msgid "Equipment Category" @@ -46,13 +39,6 @@ msgstr "Attrezzatura(e)" msgid "Equipments" msgstr "Attrezzature" -#. module: maintenance_account -#: model:ir.model.fields,field_description:maintenance_account.field_account_move__id -#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__id -#: model:ir.model.fields,field_description:maintenance_account.field_maintenance_equipment__id -msgid "ID" -msgstr "ID" - #. module: maintenance_account #: model:ir.model,name:maintenance_account.model_account_move msgid "Journal Entry" @@ -63,13 +49,6 @@ msgstr "Registrazione contabile" msgid "Journal Item" msgstr "Movimento contabile" -#. module: maintenance_account -#: model:ir.model.fields,field_description:maintenance_account.field_account_move____last_update -#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line____last_update -#: model:ir.model.fields,field_description:maintenance_account.field_maintenance_equipment____last_update -msgid "Last Modified on" -msgstr "Ultima modifica il" - #. module: maintenance_account #: model:ir.model,name:maintenance_account.model_maintenance_equipment msgid "Maintenance Equipment" @@ -89,3 +68,12 @@ msgstr "Riga movimento" #: model:ir.model.fields,help:maintenance_account.field_maintenance_equipment__move_id msgid "The move of this entry line." msgstr "Il movimento di questa registrazione." + +#~ msgid "Display Name" +#~ msgstr "Nome visualizzato" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Last Modified on" +#~ msgstr "Ultima modifica il" diff --git a/maintenance_account/i18n/maintenance_account.pot b/maintenance_account/i18n/maintenance_account.pot index 273dd78e0..62213de1b 100644 --- a/maintenance_account/i18n/maintenance_account.pot +++ b/maintenance_account/i18n/maintenance_account.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 14.0\n" +"Project-Id-Version: Odoo Server 15.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -13,13 +13,6 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" -#. module: maintenance_account -#: model:ir.model.fields,field_description:maintenance_account.field_account_move__display_name -#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__display_name -#: model:ir.model.fields,field_description:maintenance_account.field_maintenance_equipment__display_name -msgid "Display Name" -msgstr "" - #. module: maintenance_account #: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__equipment_category_id msgid "Equipment Category" @@ -43,13 +36,6 @@ msgstr "" msgid "Equipments" msgstr "" -#. module: maintenance_account -#: model:ir.model.fields,field_description:maintenance_account.field_account_move__id -#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__id -#: model:ir.model.fields,field_description:maintenance_account.field_maintenance_equipment__id -msgid "ID" -msgstr "" - #. module: maintenance_account #: model:ir.model,name:maintenance_account.model_account_move msgid "Journal Entry" @@ -60,13 +46,6 @@ msgstr "" msgid "Journal Item" msgstr "" -#. module: maintenance_account -#: model:ir.model.fields,field_description:maintenance_account.field_account_move____last_update -#: model:ir.model.fields,field_description:maintenance_account.field_account_move_line____last_update -#: model:ir.model.fields,field_description:maintenance_account.field_maintenance_equipment____last_update -msgid "Last Modified on" -msgstr "" - #. module: maintenance_account #: model:ir.model,name:maintenance_account.model_maintenance_equipment msgid "Maintenance Equipment" diff --git a/maintenance_account/models/account_move.py b/maintenance_account/models/account_move.py index 04eec6d20..0256d0b5e 100644 --- a/maintenance_account/models/account_move.py +++ b/maintenance_account/models/account_move.py @@ -18,7 +18,7 @@ def unlink(self): return super().unlink() def action_post(self): - super().action_post() + res = super().action_post() # Prevent error if user does not have permission to create equipments equipment_model = self.env["maintenance.equipment"].sudo() for move in self.filtered(lambda r: r.is_purchase_document()): @@ -41,11 +41,13 @@ def action_post(self): ).create(vals.copy()) equipment_ids.append((4, equipment.id)) line.equipment_ids = equipment_ids + return res def action_view_equipments(self): items = self.env["maintenance.equipment"].search([("move_id", "=", self.id)]) - action = self.env.ref("maintenance.hr_equipment_action") - action_dict = action.sudo().read()[0] + action_dict = self.env["ir.actions.act_window"]._for_xml_id( + "maintenance.hr_equipment_action" + ) if len(items) == 1: res = self.env.ref("maintenance.hr_equipment_view_form", False) action_dict["views"] = [(res and res.id or False, "form")] diff --git a/maintenance_account/static/description/index.html b/maintenance_account/static/description/index.html index 0ece416ff..f588ec6bc 100644 --- a/maintenance_account/static/description/index.html +++ b/maintenance_account/static/description/index.html @@ -367,7 +367,7 @@

Maintenance Account

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

+

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

This module automatically creates the equipment when validating the purchase invoices.

Table of contents

@@ -397,7 +397,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.

@@ -428,7 +428,7 @@

Maintainers

promote its widespread use.

Current maintainer:

victoralmau

-

This module is part of the OCA/maintenance project on GitHub.

+

This module is part of the OCA/maintenance project on GitHub.

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

diff --git a/maintenance_account/tests/test_maintenance_account.py b/maintenance_account/tests/test_maintenance_account.py index 8c7226093..e68a7ec83 100644 --- a/maintenance_account/tests/test_maintenance_account.py +++ b/maintenance_account/tests/test_maintenance_account.py @@ -6,7 +6,7 @@ from odoo.tests.common import users -class TestAccountMove(common.SavepointCase): +class TestAccountMove(common.TransactionCase): @classmethod def setUpClass(cls): super().setUpClass() @@ -108,6 +108,17 @@ def test_invoice_action_post_equipment_1(self): self.assertEqual(equipment.partner_id, self.partner) self.assertEqual(equipment.partner_ref, invoice.ref) + @users("test-account-user") + def test_invoice_action_post_equipment_1_multi_lines(self): + self.product_b.maintenance_ok = True + invoice = self._create_invoice() + line_a = invoice.line_ids.filtered(lambda x: x.product_id == self.product_a) + line_b = invoice.line_ids.filtered(lambda x: x.product_id == self.product_b) + invoice.action_post() + equipments = invoice.mapped("line_ids.equipment_ids") + self.assertEqual(len(equipments.mapped("category_id")), 1) + self.assertEqual(line_a.equipment_category_id, line_b.equipment_category_id) + @users("test-account-user") def test_invoice_action_post_equipment_2(self): category = ( From cbca0ef8d93ad6343a94534efb2caaf2cf83579b Mon Sep 17 00:00:00 2001 From: Enric Tobella Date: Fri, 21 Apr 2023 12:53:53 +0200 Subject: [PATCH 07/12] [FIX] maintenance_account: Add the field We want to add it in order to avoid that the information when using the purchase field. --- maintenance_account/views/account_move_view.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/maintenance_account/views/account_move_view.xml b/maintenance_account/views/account_move_view.xml index 7eda29af3..310ec3720 100644 --- a/maintenance_account/views/account_move_view.xml +++ b/maintenance_account/views/account_move_view.xml @@ -30,6 +30,7 @@ attrs="{'column_invisible': [('parent.move_type', '!=', 'in_invoice')]}" optional="hide" /> + + From 862ba10e35ab6da6a8ceab5d3d80e88fd7c0b015 Mon Sep 17 00:00:00 2001 From: Ivorra78 Date: Thu, 6 Jul 2023 18:08:10 +0000 Subject: [PATCH 08/12] Translated using Weblate (Spanish) Currently translated at 100.0% (10 of 10 strings) Translation: maintenance-15.0/maintenance-15.0-maintenance_account Translate-URL: https://translation.odoo-community.org/projects/maintenance-15-0/maintenance-15-0-maintenance_account/es/ --- maintenance_account/i18n/es.po | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/maintenance_account/i18n/es.po b/maintenance_account/i18n/es.po index f94c01753..61ecb4a3a 100644 --- a/maintenance_account/i18n/es.po +++ b/maintenance_account/i18n/es.po @@ -7,15 +7,15 @@ msgstr "" "Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-03-30 07:30+0000\n" -"PO-Revision-Date: 2022-03-30 09:31+0200\n" -"Last-Translator: \n" +"PO-Revision-Date: 2023-07-06 20:08+0000\n" +"Last-Translator: Ivorra78 \n" "Language-Team: \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: \n" -"X-Generator: Poedit 2.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" #. module: maintenance_account #: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__equipment_category_id @@ -68,7 +68,7 @@ msgstr "Apunte" #. module: maintenance_account #: model:ir.model.fields,help:maintenance_account.field_maintenance_equipment__move_id msgid "The move of this entry line." -msgstr "" +msgstr "El movimiento de esta línea de entrada." #~ msgid "Display Name" #~ msgstr "Nombre mostrado" From 28b0870a3bb8968aceab56c6ee0ea52eb0edff68 Mon Sep 17 00:00:00 2001 From: mymage Date: Mon, 7 Aug 2023 06:45:42 +0000 Subject: [PATCH 09/12] Translated using Weblate (Italian) Currently translated at 100.0% (10 of 10 strings) Translation: maintenance-15.0/maintenance-15.0-maintenance_account Translate-URL: https://translation.odoo-community.org/projects/maintenance-15-0/maintenance-15-0-maintenance_account/it/ maintenance_account 15.0.1.0.1 [UPD] README.rst --- maintenance_account/README.rst | 15 ++++--- maintenance_account/__manifest__.py | 2 +- maintenance_account/i18n/it.po | 6 +-- .../static/description/index.html | 40 ++++++++++--------- 4 files changed, 34 insertions(+), 29 deletions(-) diff --git a/maintenance_account/README.rst b/maintenance_account/README.rst index 3cd57482d..3b6a7ff54 100644 --- a/maintenance_account/README.rst +++ b/maintenance_account/README.rst @@ -2,10 +2,13 @@ Maintenance Account =================== -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:67684d651aad4f717395cb7f97e2a9d365438bb7ae35f38e692b39cc05848999 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ Maintenance Account .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png :target: https://translation.odoo-community.org/projects/maintenance-15-0/maintenance-15-0-maintenance_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/240/15.0 - :alt: Try me on Runbot +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/maintenance&target_branch=15.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| This module automatically creates the equipment when validating the purchase invoices. @@ -47,7 +50,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 +If you spotted it first, help us to smash it by providing a detailed and welcomed `feedback `_. Do not contact contributors directly about support or help with technical issues. diff --git a/maintenance_account/__manifest__.py b/maintenance_account/__manifest__.py index 97759ba91..9981882a4 100644 --- a/maintenance_account/__manifest__.py +++ b/maintenance_account/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "Maintenance Account", - "version": "15.0.1.0.0", + "version": "15.0.1.0.1", "category": "Maintenance", "website": "https://github.com/OCA/maintenance", "author": "Tecnativa, Odoo Community Association (OCA)", diff --git a/maintenance_account/i18n/it.po b/maintenance_account/i18n/it.po index d92fcabdd..1ef62334b 100644 --- a/maintenance_account/i18n/it.po +++ b/maintenance_account/i18n/it.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2022-10-24 11:43+0000\n" +"PO-Revision-Date: 2023-08-07 09:11+0000\n" "Last-Translator: mymage \n" "Language-Team: none\n" "Language: it\n" @@ -14,7 +14,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.14.1\n" +"X-Generator: Weblate 4.17\n" #. module: maintenance_account #: model:ir.model.fields,field_description:maintenance_account.field_account_move_line__equipment_category_id @@ -67,7 +67,7 @@ msgstr "Riga movimento" #. module: maintenance_account #: model:ir.model.fields,help:maintenance_account.field_maintenance_equipment__move_id msgid "The move of this entry line." -msgstr "Il movimento di questa registrazione." +msgstr "Il movimento per questa riga di registrazione." #~ msgid "Display Name" #~ msgstr "Nome visualizzato" diff --git a/maintenance_account/static/description/index.html b/maintenance_account/static/description/index.html index f588ec6bc..822eeae6d 100644 --- a/maintenance_account/static/description/index.html +++ b/maintenance_account/static/description/index.html @@ -1,20 +1,20 @@ - + - + Maintenance Account