From aa458ac48b008e8de595d18015d100ad43603124 Mon Sep 17 00:00:00 2001 From: Quentin Groulard Date: Thu, 12 Jan 2023 15:04:04 +0100 Subject: [PATCH 01/13] [ADD] account_invoice_bank_brand --- account_invoice_bank_brand/README.rst | 87 ++++ account_invoice_bank_brand/__init__.py | 1 + account_invoice_bank_brand/__manifest__.py | 14 + account_invoice_bank_brand/models/__init__.py | 2 + .../models/account_invoice.py | 27 ++ .../models/res_brand.py | 33 ++ .../readme/CONTRIBUTORS.rst | 1 + .../readme/DESCRIPTION.rst | 1 + account_invoice_bank_brand/readme/USAGE.rst | 10 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 439 ++++++++++++++++++ account_invoice_bank_brand/tests/__init__.py | 1 + .../tests/test_account_invoice.py | 41 ++ .../views/res_brand.xml | 20 + 14 files changed, 677 insertions(+) create mode 100644 account_invoice_bank_brand/README.rst create mode 100644 account_invoice_bank_brand/__init__.py create mode 100644 account_invoice_bank_brand/__manifest__.py create mode 100644 account_invoice_bank_brand/models/__init__.py create mode 100644 account_invoice_bank_brand/models/account_invoice.py create mode 100644 account_invoice_bank_brand/models/res_brand.py create mode 100644 account_invoice_bank_brand/readme/CONTRIBUTORS.rst create mode 100644 account_invoice_bank_brand/readme/DESCRIPTION.rst create mode 100644 account_invoice_bank_brand/readme/USAGE.rst create mode 100644 account_invoice_bank_brand/static/description/icon.png create mode 100644 account_invoice_bank_brand/static/description/index.html create mode 100644 account_invoice_bank_brand/tests/__init__.py create mode 100644 account_invoice_bank_brand/tests/test_account_invoice.py create mode 100644 account_invoice_bank_brand/views/res_brand.xml diff --git a/account_invoice_bank_brand/README.rst b/account_invoice_bank_brand/README.rst new file mode 100644 index 000000000..39e440ec8 --- /dev/null +++ b/account_invoice_bank_brand/README.rst @@ -0,0 +1,87 @@ +========================== +Account Invoice Bank Brand +========================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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%2Fbrand-lightgray.png?logo=github + :target: https://github.com/OCA/brand/tree/12.0/account_invoice_bank_brand + :alt: OCA/brand +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/brand-12-0/brand-12-0-account_invoice_bank_brand + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/284/12.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This addon allows to set partner_bank_id on invoices depending on the brand. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +To use this module, you need to: + +#. Go to Settings > Users & Companies > Brands +#. Select a brand +#. Define bank account +#. Create a new invoice + #. Select the brand + #. Save + +The bank account is filled with the brand bank account. + +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 +~~~~~~~ + +* ACSONE SA/NV + +Contributors +~~~~~~~~~~~~ + +* Quentin Groulard + +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. + +This module is part of the `OCA/brand `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/account_invoice_bank_brand/__init__.py b/account_invoice_bank_brand/__init__.py new file mode 100644 index 000000000..0650744f6 --- /dev/null +++ b/account_invoice_bank_brand/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/account_invoice_bank_brand/__manifest__.py b/account_invoice_bank_brand/__manifest__.py new file mode 100644 index 000000000..baf56ada3 --- /dev/null +++ b/account_invoice_bank_brand/__manifest__.py @@ -0,0 +1,14 @@ +# Copyright 2023 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Account Invoice Bank Brand", + "summary": """ + This addon allows to set partner_bank_id on invoices depending on the brand.""", + "version": "12.0.1.0.0", + "license": "AGPL-3", + "author": "ACSONE SA/NV,Odoo Community Association (OCA)", + "website": "https://github.com/OCA/brand", + "depends": ["account_brand"], + "data": ["views/res_brand.xml"], +} diff --git a/account_invoice_bank_brand/models/__init__.py b/account_invoice_bank_brand/models/__init__.py new file mode 100644 index 000000000..e9fc97a2a --- /dev/null +++ b/account_invoice_bank_brand/models/__init__.py @@ -0,0 +1,2 @@ +from . import account_invoice +from . import res_brand diff --git a/account_invoice_bank_brand/models/account_invoice.py b/account_invoice_bank_brand/models/account_invoice.py new file mode 100644 index 000000000..b2acc5526 --- /dev/null +++ b/account_invoice_bank_brand/models/account_invoice.py @@ -0,0 +1,27 @@ +# Copyright 2023 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from collections import OrderedDict + +from odoo import api, models + + +class AccountInvoice(models.Model): + + _inherit = "account.invoice" + + def _get_onchange_create(self): + res = super()._get_onchange_create() + return OrderedDict( + [("_onchange_brand", ["partner_bank_id"])] + list(res.items()) + ) + + @api.onchange("brand_id") + def _onchange_brand(self): + invoice_type = self.type or self.env.context.get("type", "out_invoice") + if ( + invoice_type in ("out_invoice", "in_refund") + and self.brand_id + and self.brand_id.partner_bank_id + ): + self.partner_bank_id = self.brand_id.partner_bank_id diff --git a/account_invoice_bank_brand/models/res_brand.py b/account_invoice_bank_brand/models/res_brand.py new file mode 100644 index 000000000..70512e6c1 --- /dev/null +++ b/account_invoice_bank_brand/models/res_brand.py @@ -0,0 +1,33 @@ +# Copyright 2023 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import _, api, fields, models +from odoo.exceptions import ValidationError + + +class ResBrand(models.Model): + + _inherit = "res.brand" + + partner_bank_id = fields.Many2one( + comodel_name="res.partner.bank", + domain="[('partner_id.ref_company_ids', 'in', [company_id])]", + string="Bank Account", + description="Company Bank Account Number to which the invoices of this " + "brand will be paid (for Customer Invoice and Vendor Credit Note)", + ) + + @api.constrains("company_id", "partner_bank_id") + def validate_partner_bank_id(self): + for record in self: + if ( + record.partner_bank_id + and not record.company_id + in record.partner_bank_id.partner_id.ref_company_ids + ): + raise ValidationError( + _( + "The account selected for invoices payment does not " + "belong to the same company as this brand." + ) + ) diff --git a/account_invoice_bank_brand/readme/CONTRIBUTORS.rst b/account_invoice_bank_brand/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..5914f5529 --- /dev/null +++ b/account_invoice_bank_brand/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Quentin Groulard diff --git a/account_invoice_bank_brand/readme/DESCRIPTION.rst b/account_invoice_bank_brand/readme/DESCRIPTION.rst new file mode 100644 index 000000000..c320ede2f --- /dev/null +++ b/account_invoice_bank_brand/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This addon allows to set partner_bank_id on invoices depending on the brand. diff --git a/account_invoice_bank_brand/readme/USAGE.rst b/account_invoice_bank_brand/readme/USAGE.rst new file mode 100644 index 000000000..499446612 --- /dev/null +++ b/account_invoice_bank_brand/readme/USAGE.rst @@ -0,0 +1,10 @@ +To use this module, you need to: + +#. Go to Settings > Users & Companies > Brands +#. Select a brand +#. Define bank account +#. Create a new invoice + #. Select the brand + #. Save + +The bank account is filled with the brand bank account. diff --git a/account_invoice_bank_brand/static/description/icon.png b/account_invoice_bank_brand/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/account_invoice_bank_brand/static/description/index.html b/account_invoice_bank_brand/static/description/index.html new file mode 100644 index 000000000..d86b2fc16 --- /dev/null +++ b/account_invoice_bank_brand/static/description/index.html @@ -0,0 +1,439 @@ + + + + + + +Account Invoice Bank Brand + + + +
+

Account Invoice Bank Brand

+ + +

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

+

This addon allows to set partner_bank_id on invoices depending on the brand.

+

Table of contents

+ +
+

Usage

+

To use this module, you need to:

+
    +
  1. Go to Settings > Users & Companies > Brands
  2. +
  3. Select a brand
  4. +
  5. Define bank account
  6. +
  7. +
    Create a new invoice
    +
      +
    1. Select the brand
    2. +
    3. Save
    4. +
    +
    +
    +
  8. +
+

The bank account is filled with the brand bank account.

+
+
+

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

+
    +
  • ACSONE SA/NV
  • +
+
+
+

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.

+

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

+

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

+
+
+
+ + diff --git a/account_invoice_bank_brand/tests/__init__.py b/account_invoice_bank_brand/tests/__init__.py new file mode 100644 index 000000000..d7555d021 --- /dev/null +++ b/account_invoice_bank_brand/tests/__init__.py @@ -0,0 +1 @@ +from . import test_account_invoice diff --git a/account_invoice_bank_brand/tests/test_account_invoice.py b/account_invoice_bank_brand/tests/test_account_invoice.py new file mode 100644 index 000000000..c1080ee5e --- /dev/null +++ b/account_invoice_bank_brand/tests/test_account_invoice.py @@ -0,0 +1,41 @@ +# Copyright 2023 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.tests.common import SavepointCase + + +class TestAccountInvoice(SavepointCase): + def setUp(self): + super(TestAccountInvoice, self).setUp() + self.partner_id = self.env.ref("base.res_partner_12") + self.invoice = self.env["account.invoice"].create( + {"partner_id": self.partner_id.id, "type": "out_invoice"} + ) + company_id = self.env["res.company"].browse(1) + self.partner_bank_id = self.env["res.partner.bank"].create( + {"acc_number": "123456", "partner_id": company_id.partner_id.id} + ) + self.brand_id = self.env["res.brand"].create( + { + "name": "Brand", + "partner_bank_id": self.partner_bank_id.id, + "company_id": 1, + } + ) + + def test_on_change_brand_id(self): + self.invoice._onchange_brand() + self.assertNotEqual(self.invoice.partner_bank_id, self.partner_bank_id) + self.invoice.brand_id = self.brand_id + self.invoice._onchange_brand() + self.assertEqual(self.invoice.partner_bank_id, self.partner_bank_id) + + def test_create_invoice(self): + invoice = self.env["account.invoice"].create( + { + "partner_id": self.partner_id.id, + "type": "out_invoice", + "brand_id": self.brand_id.id, + } + ) + self.assertEqual(invoice.partner_bank_id, self.partner_bank_id) diff --git a/account_invoice_bank_brand/views/res_brand.xml b/account_invoice_bank_brand/views/res_brand.xml new file mode 100644 index 000000000..ab235b43b --- /dev/null +++ b/account_invoice_bank_brand/views/res_brand.xml @@ -0,0 +1,20 @@ + + + + + + + res.brand.form (in account_invoice_bank_brand) + res.brand + + + + + + + + + + + From d6a33811bc91bc4fb0591d76d46b05786849bbdc Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 1 Jan 2025 16:34:20 +0000 Subject: [PATCH 02/13] [UPD] README.rst --- account_invoice_bank_brand/README.rst | 15 +++--- .../static/description/index.html | 46 ++++++++++--------- 2 files changed, 34 insertions(+), 27 deletions(-) diff --git a/account_invoice_bank_brand/README.rst b/account_invoice_bank_brand/README.rst index 39e440ec8..11b30bb97 100644 --- a/account_invoice_bank_brand/README.rst +++ b/account_invoice_bank_brand/README.rst @@ -2,10 +2,13 @@ Account Invoice Bank Brand ========================== -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:c778d60ce1f2b569b7a333850aec3dd4ce7ae11e64e7ccf6f1f910dbc57f738e + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ Account Invoice Bank Brand .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png :target: https://translation.odoo-community.org/projects/brand-12-0/brand-12-0-account_invoice_bank_brand :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/284/12.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/brand&target_branch=12.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| This addon allows to set partner_bank_id on invoices depending on the brand. @@ -51,7 +54,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/account_invoice_bank_brand/static/description/index.html b/account_invoice_bank_brand/static/description/index.html index d86b2fc16..33ba48b0f 100644 --- a/account_invoice_bank_brand/static/description/index.html +++ b/account_invoice_bank_brand/static/description/index.html @@ -1,20 +1,20 @@ - - + Account Invoice Bank Brand -
-

Account Invoice Bank Brand

+
+ + +Odoo Community Association + +
+

Account Invoice Bank Brand

-

Beta License: AGPL-3 OCA/brand Translate me on Weblate Try me on Runboat

+

Beta License: AGPL-3 OCA/brand Translate me on Weblate Try me on Runboat

This module addresses the need to specify different receiving bank accounts based on brand. When generating invoices, the module automatically populates the invoice’s bank account field with the @@ -389,7 +394,7 @@

Account Invoice Bank Brand

-

Usage

+

Usage

To use this module, you need to:

  1. Go to Settings > Users & Companies > Brands
  2. @@ -404,7 +409,7 @@

    Usage

-

Bug Tracker

+

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 to smash it by providing a detailed and welcomed @@ -412,21 +417,21 @@

Bug Tracker

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

-

Credits

+

Credits

-

Authors

+

Authors

  • ACSONE SA/NV
-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -439,5 +444,6 @@

Maintainers

+
From 5b726282a1c4d3ee7f484e56d492dcf0d2c4ed75 Mon Sep 17 00:00:00 2001 From: mymage Date: Wed, 30 Jul 2025 11:40:52 +0000 Subject: [PATCH 07/13] Added translation using Weblate (Italian) --- account_invoice_bank_brand/i18n/it.po | 50 +++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 account_invoice_bank_brand/i18n/it.po diff --git a/account_invoice_bank_brand/i18n/it.po b/account_invoice_bank_brand/i18n/it.po new file mode 100644 index 000000000..44b892fc3 --- /dev/null +++ b/account_invoice_bank_brand/i18n/it.po @@ -0,0 +1,50 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_invoice_bank_brand +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\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" + +#. module: account_invoice_bank_brand +#: model:ir.model.fields,field_description:account_invoice_bank_brand.field_res_brand__partner_bank_id +msgid "Bank Account" +msgstr "" + +#. module: account_invoice_bank_brand +#: model:ir.model.fields,help:account_invoice_bank_brand.field_res_brand__partner_bank_id +msgid "" +"Bank Account Number to which the invoices of this brand will be paid (for " +"Customer Invoice and Vendor Credit Note)" +msgstr "" + +#. module: account_invoice_bank_brand +#: model:ir.model,name:account_invoice_bank_brand.model_res_brand +msgid "Brand" +msgstr "" + +#. module: account_invoice_bank_brand +#: model_terms:ir.ui.view,arch_db:account_invoice_bank_brand.res_brand_form_view +msgid "Invoices" +msgstr "" + +#. module: account_invoice_bank_brand +#: model:ir.model,name:account_invoice_bank_brand.model_account_move +msgid "Journal Entry" +msgstr "" + +#. module: account_invoice_bank_brand +#. odoo-python +#: code:addons/account_invoice_bank_brand/models/res_brand.py:0 +msgid "" +"The account selected for invoices payment does not belong to the same " +"partner as this brand." +msgstr "" From a26016cd729e882e40c5010fdcc15bcb26dc042b Mon Sep 17 00:00:00 2001 From: mymage Date: Wed, 30 Jul 2025 11:41:30 +0000 Subject: [PATCH 08/13] Translated using Weblate (Italian) Currently translated at 100.0% (6 of 6 strings) Translation: brand-18.0/brand-18.0-account_invoice_bank_brand Translate-URL: https://translation.odoo-community.org/projects/brand-18-0/brand-18-0-account_invoice_bank_brand/it/ --- account_invoice_bank_brand/i18n/it.po | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/account_invoice_bank_brand/i18n/it.po b/account_invoice_bank_brand/i18n/it.po index 44b892fc3..65e3c2ae4 100644 --- a/account_invoice_bank_brand/i18n/it.po +++ b/account_invoice_bank_brand/i18n/it.po @@ -6,18 +6,20 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 18.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2025-07-30 12:05+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 5.10.4\n" #. module: account_invoice_bank_brand #: model:ir.model.fields,field_description:account_invoice_bank_brand.field_res_brand__partner_bank_id msgid "Bank Account" -msgstr "" +msgstr "Conto bancario" #. module: account_invoice_bank_brand #: model:ir.model.fields,help:account_invoice_bank_brand.field_res_brand__partner_bank_id @@ -25,21 +27,23 @@ msgid "" "Bank Account Number to which the invoices of this brand will be paid (for " "Customer Invoice and Vendor Credit Note)" msgstr "" +"Numero del conto bancario su cui verranno pagate le fatture di questa marca (" +"per fattura cliente e note di credito fornitore)" #. module: account_invoice_bank_brand #: model:ir.model,name:account_invoice_bank_brand.model_res_brand msgid "Brand" -msgstr "" +msgstr "Marca" #. module: account_invoice_bank_brand #: model_terms:ir.ui.view,arch_db:account_invoice_bank_brand.res_brand_form_view msgid "Invoices" -msgstr "" +msgstr "Fatture" #. module: account_invoice_bank_brand #: model:ir.model,name:account_invoice_bank_brand.model_account_move msgid "Journal Entry" -msgstr "" +msgstr "Registrazione contabile" #. module: account_invoice_bank_brand #. odoo-python @@ -48,3 +52,5 @@ msgid "" "The account selected for invoices payment does not belong to the same " "partner as this brand." msgstr "" +"Il conto selezionato per il pagamento delle fatture non appartiene allo " +"stesso partner della marca." From c4b459db4d2db94870cd1a28c4a1325db8b52b5d Mon Sep 17 00:00:00 2001 From: Bosd Date: Sat, 9 Aug 2025 13:22:11 +0000 Subject: [PATCH 09/13] Added translation using Weblate (Dutch) --- account_invoice_bank_brand/i18n/nl.po | 50 +++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 account_invoice_bank_brand/i18n/nl.po diff --git a/account_invoice_bank_brand/i18n/nl.po b/account_invoice_bank_brand/i18n/nl.po new file mode 100644 index 000000000..5b2edd479 --- /dev/null +++ b/account_invoice_bank_brand/i18n/nl.po @@ -0,0 +1,50 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_invoice_bank_brand +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: nl\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: account_invoice_bank_brand +#: model:ir.model.fields,field_description:account_invoice_bank_brand.field_res_brand__partner_bank_id +msgid "Bank Account" +msgstr "" + +#. module: account_invoice_bank_brand +#: model:ir.model.fields,help:account_invoice_bank_brand.field_res_brand__partner_bank_id +msgid "" +"Bank Account Number to which the invoices of this brand will be paid (for " +"Customer Invoice and Vendor Credit Note)" +msgstr "" + +#. module: account_invoice_bank_brand +#: model:ir.model,name:account_invoice_bank_brand.model_res_brand +msgid "Brand" +msgstr "" + +#. module: account_invoice_bank_brand +#: model_terms:ir.ui.view,arch_db:account_invoice_bank_brand.res_brand_form_view +msgid "Invoices" +msgstr "" + +#. module: account_invoice_bank_brand +#: model:ir.model,name:account_invoice_bank_brand.model_account_move +msgid "Journal Entry" +msgstr "" + +#. module: account_invoice_bank_brand +#. odoo-python +#: code:addons/account_invoice_bank_brand/models/res_brand.py:0 +msgid "" +"The account selected for invoices payment does not belong to the same " +"partner as this brand." +msgstr "" From de44b5ae9c9af13bb2e06cec2364a6e49701c913 Mon Sep 17 00:00:00 2001 From: Bosd Date: Sat, 9 Aug 2025 13:22:47 +0000 Subject: [PATCH 10/13] Translated using Weblate (Dutch) Currently translated at 100.0% (6 of 6 strings) Translation: brand-18.0/brand-18.0-account_invoice_bank_brand Translate-URL: https://translation.odoo-community.org/projects/brand-18-0/brand-18-0-account_invoice_bank_brand/nl/ --- account_invoice_bank_brand/i18n/nl.po | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/account_invoice_bank_brand/i18n/nl.po b/account_invoice_bank_brand/i18n/nl.po index 5b2edd479..5d91b86e5 100644 --- a/account_invoice_bank_brand/i18n/nl.po +++ b/account_invoice_bank_brand/i18n/nl.po @@ -6,18 +6,20 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 18.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2025-08-09 15:25+0000\n" +"Last-Translator: Bosd \n" "Language-Team: none\n" "Language: nl\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 5.10.4\n" #. module: account_invoice_bank_brand #: model:ir.model.fields,field_description:account_invoice_bank_brand.field_res_brand__partner_bank_id msgid "Bank Account" -msgstr "" +msgstr "Bankrekening" #. module: account_invoice_bank_brand #: model:ir.model.fields,help:account_invoice_bank_brand.field_res_brand__partner_bank_id @@ -25,21 +27,23 @@ msgid "" "Bank Account Number to which the invoices of this brand will be paid (for " "Customer Invoice and Vendor Credit Note)" msgstr "" +"Bankrekeningnummer waarop de facturen van dit merk betaald zullen worden (" +"voor Klantfactuur en Leverancierscreditnota)" #. module: account_invoice_bank_brand #: model:ir.model,name:account_invoice_bank_brand.model_res_brand msgid "Brand" -msgstr "" +msgstr "Merk" #. module: account_invoice_bank_brand #: model_terms:ir.ui.view,arch_db:account_invoice_bank_brand.res_brand_form_view msgid "Invoices" -msgstr "" +msgstr "Facturen" #. module: account_invoice_bank_brand #: model:ir.model,name:account_invoice_bank_brand.model_account_move msgid "Journal Entry" -msgstr "" +msgstr "Journaalpost" #. module: account_invoice_bank_brand #. odoo-python @@ -48,3 +52,5 @@ msgid "" "The account selected for invoices payment does not belong to the same " "partner as this brand." msgstr "" +"De geselecteerde rekening voor factuurbetaling behoort niet toe aan dezelfde " +"partner als dit merk." From f8b959c391213d6d76ec06a16e49b69d24a83277 Mon Sep 17 00:00:00 2001 From: Bhavesh Heliconia Date: Mon, 25 May 2026 17:34:22 +0530 Subject: [PATCH 11/13] [IMP] account_invoice_bank_brand: pre-commit auto fixes --- account_invoice_bank_brand/models/res_brand.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/account_invoice_bank_brand/models/res_brand.py b/account_invoice_bank_brand/models/res_brand.py index 400285c94..6699dbbbd 100644 --- a/account_invoice_bank_brand/models/res_brand.py +++ b/account_invoice_bank_brand/models/res_brand.py @@ -1,7 +1,7 @@ # Copyright 2023 ACSONE SA/NV # 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 @@ -24,7 +24,7 @@ def validate_partner_bank_id(self): and record.partner_id != record.partner_bank_id.partner_id ): raise ValidationError( - _( + self.env._( "The account selected for invoices payment does not " "belong to the same partner as this brand." ) From fbcee9fedee12d80bee4062bc633e2b68062c0ac Mon Sep 17 00:00:00 2001 From: Bhavesh Heliconia Date: Mon, 25 May 2026 17:44:10 +0530 Subject: [PATCH 12/13] [MIG] account_invoice_bank_brand: Migration to 19.0 --- account_invoice_bank_brand/README.rst | 13 +++++--- account_invoice_bank_brand/__manifest__.py | 2 +- .../models/account_move.py | 28 +++++++---------- .../readme/CONTRIBUTORS.md | 2 ++ .../static/description/index.html | 10 ++++-- .../tests/test_account_move.py | 31 ++++++++++--------- 6 files changed, 46 insertions(+), 40 deletions(-) diff --git a/account_invoice_bank_brand/README.rst b/account_invoice_bank_brand/README.rst index b6ab123ef..335350d9c 100644 --- a/account_invoice_bank_brand/README.rst +++ b/account_invoice_bank_brand/README.rst @@ -21,13 +21,13 @@ Account Invoice Bank Brand :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fbrand-lightgray.png?logo=github - :target: https://github.com/OCA/brand/tree/18.0/account_invoice_bank_brand + :target: https://github.com/OCA/brand/tree/19.0/account_invoice_bank_brand :alt: OCA/brand .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/brand-18-0/brand-18-0-account_invoice_bank_brand + :target: https://translation.odoo-community.org/projects/brand-19-0/brand-19-0-account_invoice_bank_brand :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png - :target: https://runboat.odoo-community.org/builds?repo=OCA/brand&target_branch=18.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/brand&target_branch=19.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -66,7 +66,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 to smash it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -82,6 +82,9 @@ Contributors ------------ - Quentin Groulard +- `Heliconia Solutions Pvt. Ltd. `__ + + - Bhavesh Heliconia Maintainers ----------- @@ -96,6 +99,6 @@ 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. -This module is part of the `OCA/brand `_ project on GitHub. +This module is part of the `OCA/brand `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/account_invoice_bank_brand/__manifest__.py b/account_invoice_bank_brand/__manifest__.py index e458e343f..3ebf327a0 100644 --- a/account_invoice_bank_brand/__manifest__.py +++ b/account_invoice_bank_brand/__manifest__.py @@ -5,7 +5,7 @@ "name": "Account Invoice Bank Brand", "summary": "Enables the automatic selection of the partner's" "bank account on invoices based on the brand.", - "version": "18.0.1.0.0", + "version": "19.0.1.0.0", "license": "AGPL-3", "author": "ACSONE SA/NV,Odoo Community Association (OCA)", "website": "https://github.com/OCA/brand", diff --git a/account_invoice_bank_brand/models/account_move.py b/account_invoice_bank_brand/models/account_move.py index d06a8bc74..faf2894d5 100644 --- a/account_invoice_bank_brand/models/account_move.py +++ b/account_invoice_bank_brand/models/account_move.py @@ -1,26 +1,20 @@ # Copyright 2023 ACSONE SA/NV # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from collections import OrderedDict - from odoo import api, models class AccountMove(models.Model): _inherit = "account.move" - def _get_onchange_create(self): - res = super()._get_onchange_create() - return OrderedDict( - [("_onchange_brand", ["partner_bank_id"])] + list(res.items()) - ) - - @api.onchange("brand_id") - def _onchange_brand(self): - move_type = self.move_type or self.env.context.get("move_type", "out_invoice") - if ( - move_type in ("out_invoice", "in_refund") - and self.brand_id - and self.brand_id.partner_bank_id - ): - self.partner_bank_id = self.brand_id.partner_bank_id + @api.depends("brand_id") + def _compute_partner_bank_id(self): + res = super()._compute_partner_bank_id() + for move in self: + if ( + move.move_type in ("out_invoice", "in_refund") + and move.brand_id + and move.brand_id.partner_bank_id + ): + move.partner_bank_id = move.brand_id.partner_bank_id + return res diff --git a/account_invoice_bank_brand/readme/CONTRIBUTORS.md b/account_invoice_bank_brand/readme/CONTRIBUTORS.md index 01f3219a1..02d7c14f8 100644 --- a/account_invoice_bank_brand/readme/CONTRIBUTORS.md +++ b/account_invoice_bank_brand/readme/CONTRIBUTORS.md @@ -1 +1,3 @@ - Quentin Groulard \<\> +- [Heliconia Solutions Pvt. Ltd.](https://www.heliconia.io) + - Bhavesh Heliconia diff --git a/account_invoice_bank_brand/static/description/index.html b/account_invoice_bank_brand/static/description/index.html index bbe559653..71cdb82d2 100644 --- a/account_invoice_bank_brand/static/description/index.html +++ b/account_invoice_bank_brand/static/description/index.html @@ -374,7 +374,7 @@

Account Invoice Bank Brand

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:b06e0a7df5086664d24412deaa56546afbb59c6f1657e49549e1af20e5e04d32 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/brand Translate me on Weblate Try me on Runboat

+

Beta License: AGPL-3 OCA/brand Translate me on Weblate Try me on Runboat

This module addresses the need to specify different receiving bank accounts based on brand. When generating invoices, the module automatically populates the invoice’s bank account field with the @@ -413,7 +413,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 to smash it by providing a detailed and welcomed -feedback.

+feedback.

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

@@ -428,6 +428,10 @@

Authors

Contributors

@@ -439,7 +443,7 @@

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.

-

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

+

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

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

diff --git a/account_invoice_bank_brand/tests/test_account_move.py b/account_invoice_bank_brand/tests/test_account_move.py index cd59decc3..1391c5558 100644 --- a/account_invoice_bank_brand/tests/test_account_move.py +++ b/account_invoice_bank_brand/tests/test_account_move.py @@ -2,15 +2,23 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from odoo.exceptions import ValidationError -from odoo.tests.common import TransactionCase +from odoo.addons.base.tests.common import BaseCommon -class TestAccountInvoiceBankBrand(TransactionCase): + +class TestAccountInvoiceBankBrand(BaseCommon): @classmethod def setUpClass(cls): super().setUpClass() - cls.partner = cls.env.ref("base.res_partner_12") # A customer partner cls.company = cls.env.ref("base.main_company") + cls.journal = cls.env["account.journal"].create( + { + "name": "Sale Journal", + "code": "SALE", + "type": "sale", + "company_id": cls.company.id, + } + ) cls.invoice = cls.env["account.move"].create( { "partner_id": cls.partner.id, @@ -34,17 +42,13 @@ def setUpClass(cls): } ) - def test_onchange_brand(self): - # 1. Initially, partner_bank_id should be False - self.assertFalse(self.invoice.partner_bank_id) - # 2. Set brand_id on invoice + def test_brand_compute_partner_bank_id(self): + # 1. Set brand_id on invoice self.invoice.brand_id = self.brand - # 3. Trigger onchange - self.invoice._onchange_brand() - # 4. Assert partner_bank_id is set if brand has it + # 2. Assert partner_bank_id is set if brand has it self.brand.partner_bank_id = self.partner_bank - self.invoice.brand_id = self.brand - self.invoice._onchange_brand() + # Trigger recompute + self.invoice._compute_partner_bank_id() self.assertEqual(self.invoice.partner_bank_id, self.brand.partner_bank_id) def test_create_invoice_with_brand(self): @@ -55,14 +59,13 @@ def test_create_invoice_with_brand(self): "move_type": "out_invoice", "brand_id": self.brand.id, "company_id": self.company.id, - "partner_bank_id": self.partner_bank.id, } ) self.assertEqual(invoice.partner_bank_id, self.brand.partner_bank_id) def test_validate_partner_bank_id_constraint(self): # 1. Create a bank account for a different partner - another_partner = self.env.ref("base.res_partner_2") + another_partner = self.env["res.partner"].create({"name": "Another Partner"}) another_partner_bank = self.env["res.partner.bank"].create( { "partner_id": another_partner.id, From 5735503308feebeb3ce59c0b521443a647808dfe Mon Sep 17 00:00:00 2001 From: Bhavesh Heliconia Date: Mon, 25 May 2026 17:46:45 +0530 Subject: [PATCH 13/13] [DON'T MERGE] test-requirements.txt --- test-requirements.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 test-requirements.txt diff --git a/test-requirements.txt b/test-requirements.txt new file mode 100644 index 000000000..2616819c2 --- /dev/null +++ b/test-requirements.txt @@ -0,0 +1 @@ +odoo-addon-account_brand @ git+https://github.com/OCA/brand.git@refs/pull/303/head#subdirectory=account_brand