diff --git a/sale_product_variant_attribute_tax/README.rst b/sale_product_variant_attribute_tax/README.rst index 5463020d2..5d9b46f36 100644 --- a/sale_product_variant_attribute_tax/README.rst +++ b/sale_product_variant_attribute_tax/README.rst @@ -7,7 +7,7 @@ Put attribute taxes on sales orders !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:5214fb55fb7de489a8b0134f2e16529d82c23708acd4ece401ad6f51d0991404 + !! source digest: sha256:9352d88ee2b52de80b7e744156585858898fb96f97bfdfedf9bb2819a9d573ed !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png @@ -17,13 +17,13 @@ Put attribute taxes on sales orders :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--variant-lightgray.png?logo=github - :target: https://github.com/OCA/product-variant/tree/13.0/sale_product_variant_attribute_tax + :target: https://github.com/OCA/product-variant/tree/16.0/sale_product_variant_attribute_tax :alt: OCA/product-variant .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/product-variant-13-0/product-variant-13-0-sale_product_variant_attribute_tax + :target: https://translation.odoo-community.org/projects/product-variant-16-0/product-variant-16-0-sale_product_variant_attribute_tax :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-variant&target_branch=13.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/product-variant&target_branch=16.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -37,6 +37,13 @@ this attribute value. .. contents:: :local: +Use Cases / Context +=================== + +As the product taxes are defined at product template level, you can't have some variants with an specific tax. + +These modules family covers the gap, adding the taxes at attribute level. This design decision has been taken for allowing to define the tax only once, as other options like having taxes at product variant level will force you to define the specific taxes for each of the variants that are affected. + Usage ===== @@ -49,13 +56,18 @@ To use this module, you need to: line will be completed with the default taxes of the attribute value specified. +Known issues / Roadmap +====================== + +- This module requires `sale_variant_configurator` as a way to avoid 2 glue modules, but it may be independent. + 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. @@ -75,6 +87,7 @@ Contributors * Vicent Cubells * Pedro M. Baeza * Ernesto Tejeda + * Carolina Fernandez Maintainers ~~~~~~~~~~~ @@ -89,6 +102,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/product-variant `_ project on GitHub. +This module is part of the `OCA/product-variant `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/sale_product_variant_attribute_tax/__manifest__.py b/sale_product_variant_attribute_tax/__manifest__.py index ab17e98a5..340413919 100644 --- a/sale_product_variant_attribute_tax/__manifest__.py +++ b/sale_product_variant_attribute_tax/__manifest__.py @@ -1,9 +1,10 @@ # Copyright 2016-2017 Tecnativa - Pedro M. Baeza +# Copyright 2024 Tecnativa - Carolina Fernandez # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "Put attribute taxes on sales orders", "summary": "Bring the taxes associated to product values", - "version": "13.0.1.0.0", + "version": "16.0.1.0.0", "development_status": "Production/Stable", "category": "Sales/Sales", "website": "https://github.com/OCA/product-variant", diff --git a/sale_product_variant_attribute_tax/readme/CONTEXT.rst b/sale_product_variant_attribute_tax/readme/CONTEXT.rst new file mode 100644 index 000000000..61cf4e16a --- /dev/null +++ b/sale_product_variant_attribute_tax/readme/CONTEXT.rst @@ -0,0 +1,3 @@ +As the product taxes are defined at product template level, you can't have some variants with an specific tax. + +These modules family covers the gap, adding the taxes at attribute level. This design decision has been taken for allowing to define the tax only once, as other options like having taxes at product variant level will force you to define the specific taxes for each of the variants that are affected. diff --git a/sale_product_variant_attribute_tax/readme/CONTRIBUTORS.rst b/sale_product_variant_attribute_tax/readme/CONTRIBUTORS.rst index 98667c5d5..dfc917a0e 100644 --- a/sale_product_variant_attribute_tax/readme/CONTRIBUTORS.rst +++ b/sale_product_variant_attribute_tax/readme/CONTRIBUTORS.rst @@ -3,3 +3,4 @@ * Vicent Cubells * Pedro M. Baeza * Ernesto Tejeda + * Carolina Fernandez diff --git a/sale_product_variant_attribute_tax/readme/ROADMAP.rst b/sale_product_variant_attribute_tax/readme/ROADMAP.rst new file mode 100644 index 000000000..edb435741 --- /dev/null +++ b/sale_product_variant_attribute_tax/readme/ROADMAP.rst @@ -0,0 +1 @@ +- This module requires `sale_variant_configurator` as a way to avoid 2 glue modules, but it may be independent. diff --git a/sale_product_variant_attribute_tax/static/description/index.html b/sale_product_variant_attribute_tax/static/description/index.html index f08a65e46..84f74bd4c 100644 --- a/sale_product_variant_attribute_tax/static/description/index.html +++ b/sale_product_variant_attribute_tax/static/description/index.html @@ -1,4 +1,3 @@ - @@ -367,27 +366,34 @@

Put attribute taxes on sales orders

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:5214fb55fb7de489a8b0134f2e16529d82c23708acd4ece401ad6f51d0991404 +!! source digest: sha256:9352d88ee2b52de80b7e744156585858898fb96f97bfdfedf9bb2819a9d573ed !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Production/Stable License: AGPL-3 OCA/product-variant Translate me on Weblate Try me on Runboat

+

Production/Stable License: AGPL-3 OCA/product-variant Translate me on Weblate Try me on Runboat

This module uses product_variant_attribute_tax for adding the taxes set on product attribute values when adding a product in sales orders that contains this attribute value.

Table of contents

+
+

Use Cases / Context

+

As the product taxes are defined at product template level, you can’t have some variants with an specific tax.

+

These modules family covers the gap, adding the taxes at attribute level. This design decision has been taken for allowing to define the tax only once, as other options like having taxes at product variant level will force you to define the specific taxes for each of the variants that are affected.

+
-

Usage

+

Usage

To use this module, you need to:

  1. Go to Sales > Orders > Quotations, create a new quotation or edit @@ -398,41 +404,48 @@

    Usage

    specified.
+
+

Known issues / Roadmap

+
    +
  • This module requires sale_variant_configurator as a way to avoid 2 glue modules, but it may be independent.
  • +
+
-

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

  • Tecnativa
-

Contributors

+

Contributors

  • Tecnativa:
    • Vicent Cubells
    • Pedro M. Baeza
    • Ernesto Tejeda
    • +
    • Carolina Fernandez
-

Maintainers

+

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/product-variant project on GitHub.

+

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

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

diff --git a/sale_product_variant_attribute_tax/tests/test_sale_product_variant_attribute_tax.py b/sale_product_variant_attribute_tax/tests/test_sale_product_variant_attribute_tax.py index a7a2d277c..1f13fa748 100644 --- a/sale_product_variant_attribute_tax/tests/test_sale_product_variant_attribute_tax.py +++ b/sale_product_variant_attribute_tax/tests/test_sale_product_variant_attribute_tax.py @@ -1,9 +1,10 @@ # Copyright 2016-2017 Tecnativa - Pedro M. Baeza +# Copyright 2024 Tecnativa - Carolina Fernandez # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from odoo.tests import Form, common +from odoo.tests import common -class TestSaleProductVariantAttributeTax(common.SavepointCase): +class TestSaleProductVariantAttributeTax(common.TransactionCase): @classmethod def setUpClass(cls): super().setUpClass() @@ -57,25 +58,83 @@ def setUpClass(cls): ], } ) - order_form = Form(cls.env["sale.order"]) - order_form.partner_id = cls.partner - with order_form.order_line.new() as order_line_form: - order_line_form.product_tmpl_id = cls.product_template - cls.order = order_form.save() - cls.order_line = cls.order.order_line + cls.order = cls.env["sale.order"].create({"partner_id": cls.partner.id}) def test_select_attribute_wo_tax(self): - self.order_line.product_attribute_ids[0].value_id = self.attribute_value2.id - self.order_line._onchange_product_attribute_ids_configurator() - self.assertFalse(self.order_line.tax_id) + line = self.env["sale.order.line"].new( + { + "order_id": self.order.id, + "product_tmpl_id": self.product_template.id, + "name": self.product_template.name, + "product_uom_qty": 1, + "product_uom": self.product_template.uom_id.id, + "product_attribute_ids": [ + ( + 0, + 0, + { + "product_tmpl_id": self.product_template.id, + "attribute_id": self.attribute.id, + "value_id": self.attribute_value2.id, + "owner_model": "sale.order.line", + }, + ) + ], + "create_product_variant": True, + } + ) + line._onchange_product_attribute_ids_configurator() + self.assertFalse(line.tax_id) def test_select_attribute_with_tax(self): - self.order_line.product_attribute_ids[0].value_id = self.attribute_value.id - self.order_line._onchange_product_attribute_ids_configurator() - self.assertEqual(self.order_line.tax_id, self.tax) + line = self.env["sale.order.line"].new( + { + "order_id": self.order.id, + "product_tmpl_id": self.product_template.id, + "name": self.product_template.name, + "product_uom_qty": 1, + "product_uom": self.product_template.uom_id.id, + "product_attribute_ids": [ + ( + 0, + 0, + { + "product_tmpl_id": self.product_template.id, + "attribute_id": self.attribute.id, + "value_id": self.attribute_value.id, + "owner_model": "sale.order.line", + }, + ) + ], + "create_product_variant": True, + } + ) + line._onchange_product_attribute_ids_configurator() + self.assertIn(self.tax.id, line.tax_id.ids) def test_select_attribute_with_tax_fp_mapped(self): - self.order_line.product_attribute_ids[0].value_id = self.attribute_value.id self.order.fiscal_position_id = self.fiscal_position - self.order_line._onchange_product_attribute_ids_configurator() - self.assertEqual(self.order_line.tax_id, self.tax2) + line = self.env["sale.order.line"].new( + { + "order_id": self.order.id, + "product_tmpl_id": self.product_template.id, + "name": self.product_template.name, + "product_uom_qty": 1, + "product_uom": self.product_template.uom_id.id, + "product_attribute_ids": [ + ( + 0, + 0, + { + "product_tmpl_id": self.product_template.id, + "attribute_id": self.attribute.id, + "value_id": self.attribute_value.id, + "owner_model": "sale.order.line", + }, + ) + ], + "create_product_variant": True, + } + ) + line._onchange_product_attribute_ids_configurator() + self.assertIn(self.tax2.id, line.tax_id.ids)