From a62e0f24e02ef3d3f08ee305112664d3eddccc42 Mon Sep 17 00:00:00 2001 From: Lois Rilo Date: Tue, 24 Oct 2023 13:17:15 +0200 Subject: [PATCH 01/16] [ADD] product_pricelist_fixed_currency_rate --- .../README.rst | 98 ++++ .../__init__.py | 1 + .../__manifest__.py | 19 + .../models/__init__.py | 2 + .../models/product_pricelist_item.py | 110 +++++ .../models/res_currency.py | 15 + .../readme/CONTRIBUTORS.rst | 1 + .../readme/DESCRIPTION.rst | 2 + .../readme/USAGE.rst | 9 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 437 ++++++++++++++++++ .../tests/__init__.py | 1 + ...t_product_pricelist_fixed_currency_rate.py | 139 ++++++ .../views/pricelist_views.xml | 50 ++ 14 files changed, 884 insertions(+) create mode 100644 product_pricelist_fixed_currency_rate/README.rst create mode 100644 product_pricelist_fixed_currency_rate/__init__.py create mode 100644 product_pricelist_fixed_currency_rate/__manifest__.py create mode 100644 product_pricelist_fixed_currency_rate/models/__init__.py create mode 100644 product_pricelist_fixed_currency_rate/models/product_pricelist_item.py create mode 100644 product_pricelist_fixed_currency_rate/models/res_currency.py create mode 100644 product_pricelist_fixed_currency_rate/readme/CONTRIBUTORS.rst create mode 100644 product_pricelist_fixed_currency_rate/readme/DESCRIPTION.rst create mode 100644 product_pricelist_fixed_currency_rate/readme/USAGE.rst create mode 100644 product_pricelist_fixed_currency_rate/static/description/icon.png create mode 100644 product_pricelist_fixed_currency_rate/static/description/index.html create mode 100644 product_pricelist_fixed_currency_rate/tests/__init__.py create mode 100644 product_pricelist_fixed_currency_rate/tests/test_product_pricelist_fixed_currency_rate.py create mode 100644 product_pricelist_fixed_currency_rate/views/pricelist_views.xml diff --git a/product_pricelist_fixed_currency_rate/README.rst b/product_pricelist_fixed_currency_rate/README.rst new file mode 100644 index 00000000000..be8b65f7cb0 --- /dev/null +++ b/product_pricelist_fixed_currency_rate/README.rst @@ -0,0 +1,98 @@ +===================================== +Product Pricelist Fixed Currency Rate +===================================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:705f94a56352ec7c69ab3d351588f96a01ef2266e347c800f32094d29d3de741 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fproduct--attribute-lightgray.png?logo=github + :target: https://github.com/OCA/product-attribute/tree/16.0/product_pricelist_fixed_currency_rate + :alt: OCA/product-attribute +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/product-attribute-16-0/product-attribute-16-0-product_pricelist_fixed_currency_rate + :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/product-attribute&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module extends the product pricelists feature to allow to set a fixed +currency rate to convert from a pricelist with a different currency. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +When using advanced price rules: + +#. Go to a pricelist and create a pricelist with a given currency. +#. Create a new pricelist rule with computation formula. +#. Make it based on other pricelist that uses a different currency. +#. *Fixed Currency Rate* will show up, set a value. + +This will force the currency conversion to always use the specified +*Fixed Currency Rate* rate when using this pricelist. + +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 `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* ForgeFlow + +Contributors +~~~~~~~~~~~~ + +* Lois Rilo + +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-LoisRForgeFlow| image:: https://github.com/LoisRForgeFlow.png?size=40px + :target: https://github.com/LoisRForgeFlow + :alt: LoisRForgeFlow + +Current `maintainer `__: + +|maintainer-LoisRForgeFlow| + +This module is part of the `OCA/product-attribute `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/product_pricelist_fixed_currency_rate/__init__.py b/product_pricelist_fixed_currency_rate/__init__.py new file mode 100644 index 00000000000..0650744f6bc --- /dev/null +++ b/product_pricelist_fixed_currency_rate/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/product_pricelist_fixed_currency_rate/__manifest__.py b/product_pricelist_fixed_currency_rate/__manifest__.py new file mode 100644 index 00000000000..df62416eb59 --- /dev/null +++ b/product_pricelist_fixed_currency_rate/__manifest__.py @@ -0,0 +1,19 @@ +# Copyright 2023 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +{ + "name": "Product Pricelist Fixed Currency Rate", + "summary": "Set a fixed currency rate between pricelists", + "version": "16.0.1.0.0", + "category": "Product", + "website": "https://github.com/OCA/product-attribute", + "author": "ForgeFlow, Odoo Community Association (OCA)", + "maintainers": ["LoisRForgeFlow"], + "license": "AGPL-3", + "application": False, + "installable": True, + "depends": ["product"], + "data": [ + "views/pricelist_views.xml", + ], +} diff --git a/product_pricelist_fixed_currency_rate/models/__init__.py b/product_pricelist_fixed_currency_rate/models/__init__.py new file mode 100644 index 00000000000..612e869f33a --- /dev/null +++ b/product_pricelist_fixed_currency_rate/models/__init__.py @@ -0,0 +1,2 @@ +from . import product_pricelist_item +from . import res_currency diff --git a/product_pricelist_fixed_currency_rate/models/product_pricelist_item.py b/product_pricelist_fixed_currency_rate/models/product_pricelist_item.py new file mode 100644 index 00000000000..6dd74ec8745 --- /dev/null +++ b/product_pricelist_fixed_currency_rate/models/product_pricelist_item.py @@ -0,0 +1,110 @@ +# Copyright 2023 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import _, api, fields, models + + +class ProductPricelist(models.Model): + _inherit = "product.pricelist.item" + + fixed_currency_rate = fields.Float( + digits=(12, 12), + help="If set (different to 0.0), the currency conversion will " + "ignore the actual currency rate and always use the fixed " + "currency rate.", + ) + inverse_fixed_currency_rate = fields.Float( + digits=(12, 12), + compute="_compute_inverse_fixed_currency_rate", + inverse="_inverse_inverse_fixed_currency_rate", + help="If set (different to 0.0), the currency conversion will " + "ignore the actual currency rate and always use the fixed " + "currency rate.", + ) + is_fixed_currency_rate_applicable = fields.Boolean( + compute="_compute_is_fixed_currency_rate_applicable" + ) + actual_currency_rate = fields.Float( + digits=(12, 12), compute="_compute_is_fixed_currency_rate_applicable" + ) + inverse_actual_currency_rate = fields.Float( + digits=(12, 12), compute="_compute_is_fixed_currency_rate_applicable" + ) + do_inverse_currency_rate = fields.Boolean( + compute="_compute_do_inverse_currency_rate", + store=True, + readonly=False, + ) + currency_rate_tooltip = fields.Char( + compute="_compute_currency_rate_tooltip", + ) + + @api.depends("base_pricelist_id", "base_pricelist_id.currency_id", "base") + def _compute_is_fixed_currency_rate_applicable(self): + for rec in self: + applicable = ( + rec.base == "pricelist" + and rec.base_pricelist_id + and rec.base_pricelist_id.currency_id != rec.pricelist_id.currency_id + ) + rec.is_fixed_currency_rate_applicable = applicable + if applicable: + curr_from = rec.base_pricelist_id.currency_id + curr_to = rec.pricelist_id.currency_id + company = rec.company_id or self.env.company + rate = self.env["res.currency"]._get_conversion_rate( + curr_from, curr_to, company, rec.date_end or fields.Date.today() + ) + rec.actual_currency_rate = rate + rec.inverse_actual_currency_rate = 1 / rate if rate else 0.0 + else: + rec.actual_currency_rate = 1.0 + rec.inverse_actual_currency_rate = 1.0 + + def _compute_base_price(self, product, quantity, uom, date, target_currency): + if self.is_fixed_currency_rate_applicable and self.fixed_currency_rate: + return super( + ProductPricelist, + self.with_context(fixed_currency_rate=self.fixed_currency_rate), + )._compute_base_price(product, quantity, uom, date, target_currency) + return super()._compute_base_price( + product, quantity, uom, date, target_currency + ) + + @api.depends("base_pricelist_id", "base_pricelist_id.currency_id") + def _compute_do_inverse_currency_rate(self): + for rec in self: + if rec.is_fixed_currency_rate_applicable: + rec.do_inverse_currency_rate = rec.actual_currency_rate < 1.0 + + @api.depends("do_inverse_currency_rate") + def _compute_currency_rate_tooltip(self): + for rec in self: + if rec.do_inverse_currency_rate: + curr_from = rec.pricelist_id.currency_id + curr_to = rec.base_pricelist_id.currency_id + else: + curr_from = rec.base_pricelist_id.currency_id + curr_to = rec.pricelist_id.currency_id + rec.currency_rate_tooltip = _("({curr_from} to {curr_to} rates)").format( + curr_from=curr_from.name, curr_to=curr_to.name + ) + + @api.depends("fixed_currency_rate") + def _compute_inverse_fixed_currency_rate(self): + for rec in self: + rec.inverse_fixed_currency_rate = ( + 1 / rec.fixed_currency_rate if rec.fixed_currency_rate else 0.0 + ) + + def _inverse_inverse_fixed_currency_rate(self): + for rec in self: + rec.fixed_currency_rate = ( + 1 / rec.inverse_fixed_currency_rate + if rec.inverse_fixed_currency_rate + else 0.0 + ) + + def toggle_do_inverse_currency_rate(self): + for rec in self: + rec.do_inverse_currency_rate = not rec.do_inverse_currency_rate diff --git a/product_pricelist_fixed_currency_rate/models/res_currency.py b/product_pricelist_fixed_currency_rate/models/res_currency.py new file mode 100644 index 00000000000..e04f08f4987 --- /dev/null +++ b/product_pricelist_fixed_currency_rate/models/res_currency.py @@ -0,0 +1,15 @@ +# Copyright 2023 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, models + + +class ProductPricelist(models.Model): + _inherit = "res.currency" + + @api.model + def _get_conversion_rate(self, from_currency, to_currency, company, date): + fixed_rate = self.env.context.get("fixed_currency_rate") + if fixed_rate: + return fixed_rate + return super()._get_conversion_rate(from_currency, to_currency, company, date) diff --git a/product_pricelist_fixed_currency_rate/readme/CONTRIBUTORS.rst b/product_pricelist_fixed_currency_rate/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000000..77dfbe89e97 --- /dev/null +++ b/product_pricelist_fixed_currency_rate/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Lois Rilo diff --git a/product_pricelist_fixed_currency_rate/readme/DESCRIPTION.rst b/product_pricelist_fixed_currency_rate/readme/DESCRIPTION.rst new file mode 100644 index 00000000000..af7a89184dc --- /dev/null +++ b/product_pricelist_fixed_currency_rate/readme/DESCRIPTION.rst @@ -0,0 +1,2 @@ +This module extends the product pricelists feature to allow to set a fixed +currency rate to convert from a pricelist with a different currency. diff --git a/product_pricelist_fixed_currency_rate/readme/USAGE.rst b/product_pricelist_fixed_currency_rate/readme/USAGE.rst new file mode 100644 index 00000000000..81e62c663d3 --- /dev/null +++ b/product_pricelist_fixed_currency_rate/readme/USAGE.rst @@ -0,0 +1,9 @@ +When using advanced price rules: + +#. Go to a pricelist and create a pricelist with a given currency. +#. Create a new pricelist rule with computation formula. +#. Make it based on other pricelist that uses a different currency. +#. *Fixed Currency Rate* will show up, set a value. + +This will force the currency conversion to always use the specified +*Fixed Currency Rate* rate when using this pricelist. diff --git a/product_pricelist_fixed_currency_rate/static/description/icon.png b/product_pricelist_fixed_currency_rate/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/product_pricelist_fixed_currency_rate/static/description/index.html b/product_pricelist_fixed_currency_rate/static/description/index.html new file mode 100644 index 00000000000..0d57db12f90 --- /dev/null +++ b/product_pricelist_fixed_currency_rate/static/description/index.html @@ -0,0 +1,437 @@ + + + + + + +Product Pricelist Fixed Currency Rate + + + +
+

Product Pricelist Fixed Currency Rate

+ + +

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

+

This module extends the product pricelists feature to allow to set a fixed +currency rate to convert from a pricelist with a different currency.

+

Table of contents

+ +
+

Usage

+

When using advanced price rules:

+
    +
  1. Go to a pricelist and create a pricelist with a given currency.
  2. +
  3. Create a new pricelist rule with computation formula.
  4. +
  5. Make it based on other pricelist that uses a different currency.
  6. +
  7. Fixed Currency Rate will show up, set a value.
  8. +
+

This will force the currency conversion to always use the specified +Fixed Currency Rate rate when using this pricelist.

+
+
+

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.

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • ForgeFlow
  • +
+
+ +
+

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:

+

LoisRForgeFlow

+

This module is part of the OCA/product-attribute project on GitHub.

+

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

+
+
+
+ + diff --git a/product_pricelist_fixed_currency_rate/tests/__init__.py b/product_pricelist_fixed_currency_rate/tests/__init__.py new file mode 100644 index 00000000000..a2463030e55 --- /dev/null +++ b/product_pricelist_fixed_currency_rate/tests/__init__.py @@ -0,0 +1 @@ +from . import test_product_pricelist_fixed_currency_rate diff --git a/product_pricelist_fixed_currency_rate/tests/test_product_pricelist_fixed_currency_rate.py b/product_pricelist_fixed_currency_rate/tests/test_product_pricelist_fixed_currency_rate.py new file mode 100644 index 00000000000..4f4513c68a8 --- /dev/null +++ b/product_pricelist_fixed_currency_rate/tests/test_product_pricelist_fixed_currency_rate.py @@ -0,0 +1,139 @@ +# Copyright 2023 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +from odoo.tests import common + + +class TestProductPricelistFixedCurrencyRate(common.TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.pricelist_model = cls.env["product.pricelist"] + cls.product_model = cls.env["product.product"] + + cls.company = cls.env["res.company"].create( + { + "name": "Test", + "currency_id": cls.env.ref("base.EUR").id, + } + ) + cls.env.user.company_id = cls.company + + cls.product_1 = cls.product_model.create( + { + "name": "Product 1", + "list_price": 150.00, + "company_id": cls.company.id, + } + ) + cls.product_2 = cls.product_model.create( + { + "name": "Product 1", + "list_price": 200.00, + "company_id": cls.company.id, + } + ) + + cls.pricelist_eur = cls.pricelist_model.create( + { + "name": "Pricelist EUR", + "currency_id": cls.env.ref("base.EUR").id, + "company_id": cls.company.id, + "item_ids": [ + ( + 0, + 0, + { + "applied_on": "0_product_variant", + "compute_price": "fixed", + "product_id": cls.product_1.id, + "fixed_price": 140.00, + }, + ) + ], + } + ) + cls.pricelist_usd = cls.pricelist_model.create( + { + "name": "Pricelist USD", + "currency_id": cls.env.ref("base.USD").id, + "company_id": cls.company.id, + "item_ids": [ + ( + 0, + 0, + { + "applied_on": "3_global", + "compute_price": "formula", + "base": "pricelist", + "base_pricelist_id": cls.pricelist_eur.id, + }, + ) + ], + } + ) + cls.pricelist_usd_fixed_rate = cls.pricelist_model.create( + { + "name": "Pricelist USD", + "currency_id": cls.env.ref("base.USD").id, + "company_id": cls.company.id, + "item_ids": [ + ( + 0, + 0, + { + "applied_on": "3_global", + "compute_price": "formula", + "base": "pricelist", + "base_pricelist_id": cls.pricelist_eur.id, + "fixed_currency_rate": 2.0, + }, + ) + ], + } + ) + # Clean rates: + cls.env["res.currency.rate"].search( + [ + ("currency_id", "=", cls.env.ref("base.USD").id), + ("company_id", "=", cls.company.id), + ] + ).unlink() + cls.env["res.currency.rate"].create( + { + "name": "2023-01-01", + "rate": 1.5, + "currency_id": cls.env.ref("base.USD").id, + "company_id": cls.company.id, + } + ) + + def test_01_pricelist_currency_rate(self): + # Product 1 (item in base pricelist) + self.assertEqual(self.env.company.currency_id, self.env.ref("base.EUR")) + eur_price_1 = self.pricelist_eur._get_product_price(self.product_1, 1.0) + self.assertEqual(eur_price_1, 140.0) + usd_price_1 = self.pricelist_usd._get_product_price(self.product_1, 1.0) + expected = 140 * 1.5 + self.assertEqual(usd_price_1, expected) + usd_fr_price_1 = self.pricelist_usd_fixed_rate._get_product_price( + self.product_1, 1.0 + ) + expected = 140 * 2.0 + self.assertEqual(usd_fr_price_1, expected) + # Product 2 (no item in base pricelist) + eur_price_2 = self.pricelist_eur._get_product_price(self.product_2, 1.0) + self.assertEqual(eur_price_2, 200.0) + usd_price_2 = self.pricelist_usd._get_product_price(self.product_2, 1.0) + expected = 200 * 1.5 + self.assertEqual(usd_price_2, expected) + usd_fr_price_2 = self.pricelist_usd_fixed_rate._get_product_price( + self.product_2, 1.0 + ) + expected = 200 * 2.0 + self.assertEqual(usd_fr_price_2, expected) + + def test_02_auxiliary_fields(self): + item = self.pricelist_usd_fixed_rate.item_ids + self.assertTrue(item.is_fixed_currency_rate_applicable) + self.assertEqual(item.actual_currency_rate, 1.5) diff --git a/product_pricelist_fixed_currency_rate/views/pricelist_views.xml b/product_pricelist_fixed_currency_rate/views/pricelist_views.xml new file mode 100644 index 00000000000..62e466916fe --- /dev/null +++ b/product_pricelist_fixed_currency_rate/views/pricelist_views.xml @@ -0,0 +1,50 @@ + + + + product.pricelist.item.form - product_pricelist_fixed_currency_rate + product.pricelist.item + + + + + + + + + + + + + + + From f0d871be80127916d627bd79167646f8002330f3 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Mon, 13 Nov 2023 09:26:35 +0000 Subject: [PATCH 02/16] [UPD] Update product_pricelist_fixed_currency_rate.pot --- .../product_pricelist_fixed_currency_rate.pot | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 product_pricelist_fixed_currency_rate/i18n/product_pricelist_fixed_currency_rate.pot diff --git a/product_pricelist_fixed_currency_rate/i18n/product_pricelist_fixed_currency_rate.pot b/product_pricelist_fixed_currency_rate/i18n/product_pricelist_fixed_currency_rate.pot new file mode 100644 index 00000000000..e2164df81f2 --- /dev/null +++ b/product_pricelist_fixed_currency_rate/i18n/product_pricelist_fixed_currency_rate.pot @@ -0,0 +1,79 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_pricelist_fixed_currency_rate +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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: product_pricelist_fixed_currency_rate +#. odoo-python +#: code:addons/product_pricelist_fixed_currency_rate/models/product_pricelist_item.py:0 +#, python-format +msgid "({curr_from} to {curr_to} rates)" +msgstr "" + +#. module: product_pricelist_fixed_currency_rate +#: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__actual_currency_rate +msgid "Actual Currency Rate" +msgstr "" + +#. module: product_pricelist_fixed_currency_rate +#: model:ir.model,name:product_pricelist_fixed_currency_rate.model_res_currency +msgid "Currency" +msgstr "" + +#. module: product_pricelist_fixed_currency_rate +#: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__currency_rate_tooltip +msgid "Currency Rate Tooltip" +msgstr "" + +#. module: product_pricelist_fixed_currency_rate +#: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__do_inverse_currency_rate +msgid "Do Inverse Currency Rate" +msgstr "" + +#. module: product_pricelist_fixed_currency_rate +#: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__fixed_currency_rate +msgid "Fixed Currency Rate" +msgstr "" + +#. module: product_pricelist_fixed_currency_rate +#: model:ir.model.fields,help:product_pricelist_fixed_currency_rate.field_product_pricelist_item__fixed_currency_rate +#: model:ir.model.fields,help:product_pricelist_fixed_currency_rate.field_product_pricelist_item__inverse_fixed_currency_rate +msgid "" +"If set (different to 0.0), the currency conversion will ignore the actual " +"currency rate and always use the fixed currency rate." +msgstr "" + +#. module: product_pricelist_fixed_currency_rate +#: model_terms:ir.ui.view,arch_db:product_pricelist_fixed_currency_rate.product_pricelist_item_form_view +msgid "Inverse" +msgstr "" + +#. module: product_pricelist_fixed_currency_rate +#: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__inverse_actual_currency_rate +msgid "Inverse Actual Currency Rate" +msgstr "" + +#. module: product_pricelist_fixed_currency_rate +#: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__inverse_fixed_currency_rate +msgid "Inverse Fixed Currency Rate" +msgstr "" + +#. module: product_pricelist_fixed_currency_rate +#: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__is_fixed_currency_rate_applicable +msgid "Is Fixed Currency Rate Applicable" +msgstr "" + +#. module: product_pricelist_fixed_currency_rate +#: model:ir.model,name:product_pricelist_fixed_currency_rate.model_product_pricelist_item +msgid "Pricelist Rule" +msgstr "" From 4d9705e40ae0c439746872a0aadea8f6ff6082bc Mon Sep 17 00:00:00 2001 From: mymage Date: Mon, 13 Nov 2023 13:38:39 +0000 Subject: [PATCH 03/16] Added translation using Weblate (Italian) --- .../i18n/it.po | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 product_pricelist_fixed_currency_rate/i18n/it.po diff --git a/product_pricelist_fixed_currency_rate/i18n/it.po b/product_pricelist_fixed_currency_rate/i18n/it.po new file mode 100644 index 00000000000..654a3ae5140 --- /dev/null +++ b/product_pricelist_fixed_currency_rate/i18n/it.po @@ -0,0 +1,80 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_pricelist_fixed_currency_rate +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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: product_pricelist_fixed_currency_rate +#. odoo-python +#: code:addons/product_pricelist_fixed_currency_rate/models/product_pricelist_item.py:0 +#, python-format +msgid "({curr_from} to {curr_to} rates)" +msgstr "" + +#. module: product_pricelist_fixed_currency_rate +#: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__actual_currency_rate +msgid "Actual Currency Rate" +msgstr "" + +#. module: product_pricelist_fixed_currency_rate +#: model:ir.model,name:product_pricelist_fixed_currency_rate.model_res_currency +msgid "Currency" +msgstr "" + +#. module: product_pricelist_fixed_currency_rate +#: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__currency_rate_tooltip +msgid "Currency Rate Tooltip" +msgstr "" + +#. module: product_pricelist_fixed_currency_rate +#: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__do_inverse_currency_rate +msgid "Do Inverse Currency Rate" +msgstr "" + +#. module: product_pricelist_fixed_currency_rate +#: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__fixed_currency_rate +msgid "Fixed Currency Rate" +msgstr "" + +#. module: product_pricelist_fixed_currency_rate +#: model:ir.model.fields,help:product_pricelist_fixed_currency_rate.field_product_pricelist_item__fixed_currency_rate +#: model:ir.model.fields,help:product_pricelist_fixed_currency_rate.field_product_pricelist_item__inverse_fixed_currency_rate +msgid "" +"If set (different to 0.0), the currency conversion will ignore the actual " +"currency rate and always use the fixed currency rate." +msgstr "" + +#. module: product_pricelist_fixed_currency_rate +#: model_terms:ir.ui.view,arch_db:product_pricelist_fixed_currency_rate.product_pricelist_item_form_view +msgid "Inverse" +msgstr "" + +#. module: product_pricelist_fixed_currency_rate +#: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__inverse_actual_currency_rate +msgid "Inverse Actual Currency Rate" +msgstr "" + +#. module: product_pricelist_fixed_currency_rate +#: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__inverse_fixed_currency_rate +msgid "Inverse Fixed Currency Rate" +msgstr "" + +#. module: product_pricelist_fixed_currency_rate +#: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__is_fixed_currency_rate_applicable +msgid "Is Fixed Currency Rate Applicable" +msgstr "" + +#. module: product_pricelist_fixed_currency_rate +#: model:ir.model,name:product_pricelist_fixed_currency_rate.model_product_pricelist_item +msgid "Pricelist Rule" +msgstr "" From 2fe58d3065424192671351f9fae176cd8bf1be55 Mon Sep 17 00:00:00 2001 From: mymage Date: Mon, 13 Nov 2023 13:49:03 +0000 Subject: [PATCH 04/16] Translated using Weblate (Italian) Currently translated at 100.0% (12 of 12 strings) Translation: product-attribute-16.0/product-attribute-16.0-product_pricelist_fixed_currency_rate Translate-URL: https://translation.odoo-community.org/projects/product-attribute-16-0/product-attribute-16-0-product_pricelist_fixed_currency_rate/it/ --- .../i18n/it.po | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/product_pricelist_fixed_currency_rate/i18n/it.po b/product_pricelist_fixed_currency_rate/i18n/it.po index 654a3ae5140..14a78f87f38 100644 --- a/product_pricelist_fixed_currency_rate/i18n/it.po +++ b/product_pricelist_fixed_currency_rate/i18n/it.po @@ -6,45 +6,47 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2023-11-13 16:38+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.17\n" #. module: product_pricelist_fixed_currency_rate #. odoo-python #: code:addons/product_pricelist_fixed_currency_rate/models/product_pricelist_item.py:0 #, python-format msgid "({curr_from} to {curr_to} rates)" -msgstr "" +msgstr "(tasso da {curr_from} a {curr_to})" #. module: product_pricelist_fixed_currency_rate #: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__actual_currency_rate msgid "Actual Currency Rate" -msgstr "" +msgstr "Tasso valuta attuale" #. module: product_pricelist_fixed_currency_rate #: model:ir.model,name:product_pricelist_fixed_currency_rate.model_res_currency msgid "Currency" -msgstr "" +msgstr "Valuta" #. module: product_pricelist_fixed_currency_rate #: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__currency_rate_tooltip msgid "Currency Rate Tooltip" -msgstr "" +msgstr "Nota tasso valuta" #. module: product_pricelist_fixed_currency_rate #: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__do_inverse_currency_rate msgid "Do Inverse Currency Rate" -msgstr "" +msgstr "Inverti tasso valuta" #. module: product_pricelist_fixed_currency_rate #: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__fixed_currency_rate msgid "Fixed Currency Rate" -msgstr "" +msgstr "Tasso valuta fisso" #. module: product_pricelist_fixed_currency_rate #: model:ir.model.fields,help:product_pricelist_fixed_currency_rate.field_product_pricelist_item__fixed_currency_rate @@ -53,28 +55,30 @@ msgid "" "If set (different to 0.0), the currency conversion will ignore the actual " "currency rate and always use the fixed currency rate." msgstr "" +"Se impostata (diversa da 0,0), la vonversione di valuta ignorerà il tasso " +"valuta attuale e userà sempre il tasso valuta fisso." #. module: product_pricelist_fixed_currency_rate #: model_terms:ir.ui.view,arch_db:product_pricelist_fixed_currency_rate.product_pricelist_item_form_view msgid "Inverse" -msgstr "" +msgstr "Inverso" #. module: product_pricelist_fixed_currency_rate #: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__inverse_actual_currency_rate msgid "Inverse Actual Currency Rate" -msgstr "" +msgstr "Inverso tasso valuta attuale" #. module: product_pricelist_fixed_currency_rate #: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__inverse_fixed_currency_rate msgid "Inverse Fixed Currency Rate" -msgstr "" +msgstr "Inverso tasso valuta fisso" #. module: product_pricelist_fixed_currency_rate #: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__is_fixed_currency_rate_applicable msgid "Is Fixed Currency Rate Applicable" -msgstr "" +msgstr "È applicabile il tasso valuta fisso" #. module: product_pricelist_fixed_currency_rate #: model:ir.model,name:product_pricelist_fixed_currency_rate.model_product_pricelist_item msgid "Pricelist Rule" -msgstr "" +msgstr "Regola listino prezzi" From c946dfbee27d39808c4d186c2350f14866fe3ba1 Mon Sep 17 00:00:00 2001 From: Ivorra78 Date: Wed, 15 Nov 2023 18:27:50 +0000 Subject: [PATCH 05/16] Added translation using Weblate (Spanish) --- .../i18n/es.po | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 product_pricelist_fixed_currency_rate/i18n/es.po diff --git a/product_pricelist_fixed_currency_rate/i18n/es.po b/product_pricelist_fixed_currency_rate/i18n/es.po new file mode 100644 index 00000000000..9eb449dd767 --- /dev/null +++ b/product_pricelist_fixed_currency_rate/i18n/es.po @@ -0,0 +1,80 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_pricelist_fixed_currency_rate +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. module: product_pricelist_fixed_currency_rate +#. odoo-python +#: code:addons/product_pricelist_fixed_currency_rate/models/product_pricelist_item.py:0 +#, python-format +msgid "({curr_from} to {curr_to} rates)" +msgstr "" + +#. module: product_pricelist_fixed_currency_rate +#: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__actual_currency_rate +msgid "Actual Currency Rate" +msgstr "" + +#. module: product_pricelist_fixed_currency_rate +#: model:ir.model,name:product_pricelist_fixed_currency_rate.model_res_currency +msgid "Currency" +msgstr "" + +#. module: product_pricelist_fixed_currency_rate +#: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__currency_rate_tooltip +msgid "Currency Rate Tooltip" +msgstr "" + +#. module: product_pricelist_fixed_currency_rate +#: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__do_inverse_currency_rate +msgid "Do Inverse Currency Rate" +msgstr "" + +#. module: product_pricelist_fixed_currency_rate +#: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__fixed_currency_rate +msgid "Fixed Currency Rate" +msgstr "" + +#. module: product_pricelist_fixed_currency_rate +#: model:ir.model.fields,help:product_pricelist_fixed_currency_rate.field_product_pricelist_item__fixed_currency_rate +#: model:ir.model.fields,help:product_pricelist_fixed_currency_rate.field_product_pricelist_item__inverse_fixed_currency_rate +msgid "" +"If set (different to 0.0), the currency conversion will ignore the actual " +"currency rate and always use the fixed currency rate." +msgstr "" + +#. module: product_pricelist_fixed_currency_rate +#: model_terms:ir.ui.view,arch_db:product_pricelist_fixed_currency_rate.product_pricelist_item_form_view +msgid "Inverse" +msgstr "" + +#. module: product_pricelist_fixed_currency_rate +#: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__inverse_actual_currency_rate +msgid "Inverse Actual Currency Rate" +msgstr "" + +#. module: product_pricelist_fixed_currency_rate +#: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__inverse_fixed_currency_rate +msgid "Inverse Fixed Currency Rate" +msgstr "" + +#. module: product_pricelist_fixed_currency_rate +#: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__is_fixed_currency_rate_applicable +msgid "Is Fixed Currency Rate Applicable" +msgstr "" + +#. module: product_pricelist_fixed_currency_rate +#: model:ir.model,name:product_pricelist_fixed_currency_rate.model_product_pricelist_item +msgid "Pricelist Rule" +msgstr "" From 4d5a0f532ffeb132705784490519e3d1b0311ff2 Mon Sep 17 00:00:00 2001 From: Ivorra78 Date: Wed, 15 Nov 2023 18:29:29 +0000 Subject: [PATCH 06/16] Translated using Weblate (Spanish) Currently translated at 100.0% (12 of 12 strings) Translation: product-attribute-16.0/product-attribute-16.0-product_pricelist_fixed_currency_rate Translate-URL: https://translation.odoo-community.org/projects/product-attribute-16-0/product-attribute-16-0-product_pricelist_fixed_currency_rate/es/ --- .../i18n/es.po | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/product_pricelist_fixed_currency_rate/i18n/es.po b/product_pricelist_fixed_currency_rate/i18n/es.po index 9eb449dd767..aa833fbc230 100644 --- a/product_pricelist_fixed_currency_rate/i18n/es.po +++ b/product_pricelist_fixed_currency_rate/i18n/es.po @@ -6,45 +6,47 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2023-11-15 20:38+0000\n" +"Last-Translator: Ivorra78 \n" "Language-Team: none\n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" #. module: product_pricelist_fixed_currency_rate #. odoo-python #: code:addons/product_pricelist_fixed_currency_rate/models/product_pricelist_item.py:0 #, python-format msgid "({curr_from} to {curr_to} rates)" -msgstr "" +msgstr "({curr_from} to {curr_to} rates)" #. module: product_pricelist_fixed_currency_rate #: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__actual_currency_rate msgid "Actual Currency Rate" -msgstr "" +msgstr "Tipo de Cambio Real" #. module: product_pricelist_fixed_currency_rate #: model:ir.model,name:product_pricelist_fixed_currency_rate.model_res_currency msgid "Currency" -msgstr "" +msgstr "Divisa" #. module: product_pricelist_fixed_currency_rate #: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__currency_rate_tooltip msgid "Currency Rate Tooltip" -msgstr "" +msgstr "Información sobre el Tipo de Cambio" #. module: product_pricelist_fixed_currency_rate #: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__do_inverse_currency_rate msgid "Do Inverse Currency Rate" -msgstr "" +msgstr "Invertir el Tipo de Cambio" #. module: product_pricelist_fixed_currency_rate #: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__fixed_currency_rate msgid "Fixed Currency Rate" -msgstr "" +msgstr "Tipo de Cambio Fijo" #. module: product_pricelist_fixed_currency_rate #: model:ir.model.fields,help:product_pricelist_fixed_currency_rate.field_product_pricelist_item__fixed_currency_rate @@ -53,28 +55,30 @@ msgid "" "If set (different to 0.0), the currency conversion will ignore the actual " "currency rate and always use the fixed currency rate." msgstr "" +"Si se establece (diferente a 0.0), la conversión de moneda ignorará el tipo " +"de moneda actual y utilizará siempre el tipo de moneda fijo." #. module: product_pricelist_fixed_currency_rate #: model_terms:ir.ui.view,arch_db:product_pricelist_fixed_currency_rate.product_pricelist_item_form_view msgid "Inverse" -msgstr "" +msgstr "Inverso" #. module: product_pricelist_fixed_currency_rate #: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__inverse_actual_currency_rate msgid "Inverse Actual Currency Rate" -msgstr "" +msgstr "Tipo de Divisa Real Inverso" #. module: product_pricelist_fixed_currency_rate #: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__inverse_fixed_currency_rate msgid "Inverse Fixed Currency Rate" -msgstr "" +msgstr "Tipo de Cambio Fijo Inverso" #. module: product_pricelist_fixed_currency_rate #: model:ir.model.fields,field_description:product_pricelist_fixed_currency_rate.field_product_pricelist_item__is_fixed_currency_rate_applicable msgid "Is Fixed Currency Rate Applicable" -msgstr "" +msgstr "Es aplicable el tipo de cambio fijo" #. module: product_pricelist_fixed_currency_rate #: model:ir.model,name:product_pricelist_fixed_currency_rate.model_product_pricelist_item msgid "Pricelist Rule" -msgstr "" +msgstr "Regla de la lista de precios" From 9e712e9cb8f5d9f44558e59c72161b730952de97 Mon Sep 17 00:00:00 2001 From: kobros-tech Date: Fri, 9 Aug 2024 12:09:19 +0300 Subject: [PATCH 07/16] [MIG] product_pricelist_fixed_currency_rate: Migration to 17.0 --- .../README.rst | 39 +++++++------ .../__manifest__.py | 4 +- .../pyproject.toml | 3 + .../readme/CONTRIBUTORS.md | 2 + .../readme/CONTRIBUTORS.rst | 1 - .../readme/DESCRIPTION.md | 3 + .../readme/DESCRIPTION.rst | 2 - .../readme/USAGE.md | 9 +++ .../readme/USAGE.rst | 9 --- .../static/description/index.html | 56 ++++++++++--------- ...t_product_pricelist_fixed_currency_rate.py | 51 +++++++++++++++++ .../views/pricelist_views.xml | 18 ++---- 12 files changed, 128 insertions(+), 69 deletions(-) create mode 100644 product_pricelist_fixed_currency_rate/pyproject.toml create mode 100644 product_pricelist_fixed_currency_rate/readme/CONTRIBUTORS.md delete mode 100644 product_pricelist_fixed_currency_rate/readme/CONTRIBUTORS.rst create mode 100644 product_pricelist_fixed_currency_rate/readme/DESCRIPTION.md delete mode 100644 product_pricelist_fixed_currency_rate/readme/DESCRIPTION.rst create mode 100644 product_pricelist_fixed_currency_rate/readme/USAGE.md delete mode 100644 product_pricelist_fixed_currency_rate/readme/USAGE.rst diff --git a/product_pricelist_fixed_currency_rate/README.rst b/product_pricelist_fixed_currency_rate/README.rst index be8b65f7cb0..f45644bf75a 100644 --- a/product_pricelist_fixed_currency_rate/README.rst +++ b/product_pricelist_fixed_currency_rate/README.rst @@ -17,19 +17,20 @@ Product Pricelist Fixed Currency Rate :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fproduct--attribute-lightgray.png?logo=github - :target: https://github.com/OCA/product-attribute/tree/16.0/product_pricelist_fixed_currency_rate + :target: https://github.com/OCA/product-attribute/tree/17.0/product_pricelist_fixed_currency_rate :alt: OCA/product-attribute .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/product-attribute-16-0/product-attribute-16-0-product_pricelist_fixed_currency_rate + :target: https://translation.odoo-community.org/projects/product-attribute-17-0/product-attribute-17-0-product_pricelist_fixed_currency_rate :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/product-attribute&target_branch=16.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/product-attribute&target_branch=17.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| -This module extends the product pricelists feature to allow to set a fixed -currency rate to convert from a pricelist with a different currency. +This module extends the product pricelists feature to allow to set a +fixed currency rate to convert from a pricelist with a different +currency. **Table of contents** @@ -41,10 +42,10 @@ Usage When using advanced price rules: -#. Go to a pricelist and create a pricelist with a given currency. -#. Create a new pricelist rule with computation formula. -#. Make it based on other pricelist that uses a different currency. -#. *Fixed Currency Rate* will show up, set a value. +1. Go to a pricelist and create a pricelist with a given currency. +2. Create a new pricelist rule with computation formula. +3. Make it based on other pricelist that uses a different currency. +4. *Fixed Currency Rate* will show up, set a value. This will force the currency conversion to always use the specified *Fixed Currency Rate* rate when using this pricelist. @@ -55,7 +56,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. @@ -63,17 +64,18 @@ Credits ======= Authors -~~~~~~~ +------- * ForgeFlow Contributors -~~~~~~~~~~~~ +------------ -* Lois Rilo +- Lois Rilo +- Mohamed Alkobrosli Maintainers -~~~~~~~~~~~ +----------- This module is maintained by the OCA. @@ -88,11 +90,14 @@ promote its widespread use. .. |maintainer-LoisRForgeFlow| image:: https://github.com/LoisRForgeFlow.png?size=40px :target: https://github.com/LoisRForgeFlow :alt: LoisRForgeFlow +.. |maintainer-kobros-tech| image:: https://github.com/kobros-tech.png?size=40px + :target: https://github.com/kobros-tech + :alt: kobros-tech -Current `maintainer `__: +Current `maintainers `__: -|maintainer-LoisRForgeFlow| +|maintainer-LoisRForgeFlow| |maintainer-kobros-tech| -This module is part of the `OCA/product-attribute `_ project on GitHub. +This module is part of the `OCA/product-attribute `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/product_pricelist_fixed_currency_rate/__manifest__.py b/product_pricelist_fixed_currency_rate/__manifest__.py index df62416eb59..84d4e04e5b3 100644 --- a/product_pricelist_fixed_currency_rate/__manifest__.py +++ b/product_pricelist_fixed_currency_rate/__manifest__.py @@ -4,11 +4,11 @@ { "name": "Product Pricelist Fixed Currency Rate", "summary": "Set a fixed currency rate between pricelists", - "version": "16.0.1.0.0", + "version": "17.0.1.0.0", "category": "Product", "website": "https://github.com/OCA/product-attribute", "author": "ForgeFlow, Odoo Community Association (OCA)", - "maintainers": ["LoisRForgeFlow"], + "maintainers": ["LoisRForgeFlow", "kobros-tech"], "license": "AGPL-3", "application": False, "installable": True, diff --git a/product_pricelist_fixed_currency_rate/pyproject.toml b/product_pricelist_fixed_currency_rate/pyproject.toml new file mode 100644 index 00000000000..4231d0cccb3 --- /dev/null +++ b/product_pricelist_fixed_currency_rate/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/product_pricelist_fixed_currency_rate/readme/CONTRIBUTORS.md b/product_pricelist_fixed_currency_rate/readme/CONTRIBUTORS.md new file mode 100644 index 00000000000..c90fd656ca2 --- /dev/null +++ b/product_pricelist_fixed_currency_rate/readme/CONTRIBUTORS.md @@ -0,0 +1,2 @@ +- Lois Rilo \<\> +- Mohamed Alkobrosli \<\> diff --git a/product_pricelist_fixed_currency_rate/readme/CONTRIBUTORS.rst b/product_pricelist_fixed_currency_rate/readme/CONTRIBUTORS.rst deleted file mode 100644 index 77dfbe89e97..00000000000 --- a/product_pricelist_fixed_currency_rate/readme/CONTRIBUTORS.rst +++ /dev/null @@ -1 +0,0 @@ -* Lois Rilo diff --git a/product_pricelist_fixed_currency_rate/readme/DESCRIPTION.md b/product_pricelist_fixed_currency_rate/readme/DESCRIPTION.md new file mode 100644 index 00000000000..2cd73ba04a1 --- /dev/null +++ b/product_pricelist_fixed_currency_rate/readme/DESCRIPTION.md @@ -0,0 +1,3 @@ +This module extends the product pricelists feature to allow to set a +fixed currency rate to convert from a pricelist with a different +currency. diff --git a/product_pricelist_fixed_currency_rate/readme/DESCRIPTION.rst b/product_pricelist_fixed_currency_rate/readme/DESCRIPTION.rst deleted file mode 100644 index af7a89184dc..00000000000 --- a/product_pricelist_fixed_currency_rate/readme/DESCRIPTION.rst +++ /dev/null @@ -1,2 +0,0 @@ -This module extends the product pricelists feature to allow to set a fixed -currency rate to convert from a pricelist with a different currency. diff --git a/product_pricelist_fixed_currency_rate/readme/USAGE.md b/product_pricelist_fixed_currency_rate/readme/USAGE.md new file mode 100644 index 00000000000..3c2df0ebb1e --- /dev/null +++ b/product_pricelist_fixed_currency_rate/readme/USAGE.md @@ -0,0 +1,9 @@ +When using advanced price rules: + +1. Go to a pricelist and create a pricelist with a given currency. +2. Create a new pricelist rule with computation formula. +3. Make it based on other pricelist that uses a different currency. +4. *Fixed Currency Rate* will show up, set a value. + +This will force the currency conversion to always use the specified +*Fixed Currency Rate* rate when using this pricelist. diff --git a/product_pricelist_fixed_currency_rate/readme/USAGE.rst b/product_pricelist_fixed_currency_rate/readme/USAGE.rst deleted file mode 100644 index 81e62c663d3..00000000000 --- a/product_pricelist_fixed_currency_rate/readme/USAGE.rst +++ /dev/null @@ -1,9 +0,0 @@ -When using advanced price rules: - -#. Go to a pricelist and create a pricelist with a given currency. -#. Create a new pricelist rule with computation formula. -#. Make it based on other pricelist that uses a different currency. -#. *Fixed Currency Rate* will show up, set a value. - -This will force the currency conversion to always use the specified -*Fixed Currency Rate* rate when using this pricelist. diff --git a/product_pricelist_fixed_currency_rate/static/description/index.html b/product_pricelist_fixed_currency_rate/static/description/index.html index 0d57db12f90..04da486b0ee 100644 --- a/product_pricelist_fixed_currency_rate/static/description/index.html +++ b/product_pricelist_fixed_currency_rate/static/description/index.html @@ -1,20 +1,20 @@ - - + Product Pricelist Fixed Currency Rate -
-

Product Pricelist Fixed Currency Rate

+
+ + +Odoo Community Association + +
+

Product Pricelist Fixed Currency Rate

-

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

+

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

This module extends the product pricelists feature to allow to set a fixed currency rate to convert from a pricelist with a different currency.

@@ -387,7 +392,7 @@

Product Pricelist Fixed Currency Rate

-

Usage

+

Usage

When using advanced price rules:

  1. Go to a pricelist and create a pricelist with a given currency.
  2. @@ -399,23 +404,23 @@

    Usage

    Fixed Currency Rate rate when using this pricelist.

-

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 -feedback.

+feedback.

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

-

Credits

+

Credits

-

Authors

+

Authors

  • ForgeFlow
-

Contributors

+

Contributors

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -433,10 +438,11 @@

Maintainers

promote its widespread use.

Current maintainers:

LoisRForgeFlow kobros-tech

-

This module is part of the OCA/product-attribute project on GitHub.

+

This module is part of the OCA/product-attribute project on GitHub.

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

+
From 0e7674260827bc9e08695ceb6a0629cc18159305 Mon Sep 17 00:00:00 2001 From: Fernando Date: Sat, 18 Apr 2026 21:46:35 -0400 Subject: [PATCH 16/16] [FIX] product_pricelist_fixed_currency_rate: fix signature to match Odoo 18 In Odoo 18, _compute_base_price() parameter was renamed from 'target_currency' to 'currency'. The old signature causes: TypeError: ProductPricelist._compute_base_price() got an unexpected keyword argument 'currency' Fix: rename parameter to 'currency' to match parent method signature. Closes: https://github.com/OCA/product-attribute/issues/1831 --- .../models/product_pricelist_item.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/product_pricelist_fixed_currency_rate/models/product_pricelist_item.py b/product_pricelist_fixed_currency_rate/models/product_pricelist_item.py index 2e95ad63115..96c5e154b72 100644 --- a/product_pricelist_fixed_currency_rate/models/product_pricelist_item.py +++ b/product_pricelist_fixed_currency_rate/models/product_pricelist_item.py @@ -61,15 +61,13 @@ def _compute_is_fixed_currency_rate_applicable(self): rec.actual_currency_rate = 1.0 rec.inverse_actual_currency_rate = 1.0 - def _compute_base_price(self, product, quantity, uom, date, target_currency): + def _compute_base_price(self, product, quantity, uom, date, currency): if self.is_fixed_currency_rate_applicable and self.fixed_currency_rate: return super( ProductPricelist, self.with_context(fixed_currency_rate=self.fixed_currency_rate), - )._compute_base_price(product, quantity, uom, date, target_currency) - return super()._compute_base_price( - product, quantity, uom, date, target_currency - ) + )._compute_base_price(product, quantity, uom, date, currency) + return super()._compute_base_price(product, quantity, uom, date, currency) @api.depends("base_pricelist_id", "base_pricelist_id.currency_id") def _compute_do_inverse_currency_rate(self):