Skip to content

Commit

Permalink
[MIG] sale_product_variant_attribute_tax: Migration to 16.0
Browse files Browse the repository at this point in the history
TT46598
  • Loading branch information
carolinafernandez-tecnativa committed Jul 30, 2024
1 parent 04b568a commit 9ab2d7f
Show file tree
Hide file tree
Showing 7 changed files with 132 additions and 41 deletions.
25 changes: 19 additions & 6 deletions sale_product_variant_attribute_tax/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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|
Expand All @@ -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
=====

Expand All @@ -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 <https://github.com/OCA/product-variant/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 <https://github.com/OCA/product-variant/issues/new?body=module:%20sale_product_variant_attribute_tax%0Aversion:%2013.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
`feedback <https://github.com/OCA/product-variant/issues/new?body=module:%20sale_product_variant_attribute_tax%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

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

Expand All @@ -75,6 +87,7 @@ Contributors
* Vicent Cubells
* Pedro M. Baeza
* Ernesto Tejeda
* Carolina Fernandez

Maintainers
~~~~~~~~~~~
Expand All @@ -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 <https://github.com/OCA/product-variant/tree/13.0/sale_product_variant_attribute_tax>`_ project on GitHub.
This module is part of the `OCA/product-variant <https://github.com/OCA/product-variant/tree/16.0/sale_product_variant_attribute_tax>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
3 changes: 2 additions & 1 deletion sale_product_variant_attribute_tax/__manifest__.py
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
3 changes: 3 additions & 0 deletions sale_product_variant_attribute_tax/readme/CONTEXT.rst
Original file line number Diff line number Diff line change
@@ -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.
1 change: 1 addition & 0 deletions sale_product_variant_attribute_tax/readme/CONTRIBUTORS.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@
* Vicent Cubells
* Pedro M. Baeza
* Ernesto Tejeda
* Carolina Fernandez
1 change: 1 addition & 0 deletions sale_product_variant_attribute_tax/readme/ROADMAP.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- This module requires `sale_variant_configurator` as a way to avoid 2 glue modules, but it may be independent.
47 changes: 30 additions & 17 deletions sale_product_variant_attribute_tax/static/description/index.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
Expand Down Expand Up @@ -367,27 +366,34 @@ <h1 class="title">Put attribute taxes on sales orders</h1>
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:5214fb55fb7de489a8b0134f2e16529d82c23708acd4ece401ad6f51d0991404
!! source digest: sha256:9352d88ee2b52de80b7e744156585858898fb96f97bfdfedf9bb2819a9d573ed
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Production/Stable" src="https://img.shields.io/badge/maturity-Production%2FStable-green.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/product-variant/tree/13.0/sale_product_variant_attribute_tax"><img alt="OCA/product-variant" src="https://img.shields.io/badge/github-OCA%2Fproduct--variant-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/product-variant-13-0/product-variant-13-0-sale_product_variant_attribute_tax"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/product-variant&amp;target_branch=13.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Production/Stable" src="https://img.shields.io/badge/maturity-Production%2FStable-green.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/product-variant/tree/16.0/sale_product_variant_attribute_tax"><img alt="OCA/product-variant" src="https://img.shields.io/badge/github-OCA%2Fproduct--variant-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/product-variant-16-0/product-variant-16-0-sale_product_variant_attribute_tax"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/product-variant&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module uses <em>product_variant_attribute_tax</em> for adding the taxes set
on product attribute values when adding a product in sales orders that contains
this attribute value.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#usage" id="toc-entry-1">Usage</a></li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-2">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-3">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-4">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-5">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-6">Maintainers</a></li>
<li><a class="reference internal" href="#use-cases-context" id="toc-entry-1">Use Cases / Context</a></li>
<li><a class="reference internal" href="#usage" id="toc-entry-2">Usage</a></li>
<li><a class="reference internal" href="#known-issues-roadmap" id="toc-entry-3">Known issues / Roadmap</a></li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-4">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-5">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-6">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-7">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-8">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="use-cases-context">
<h1><a class="toc-backref" href="#toc-entry-1">Use Cases / Context</a></h1>
<p>As the product taxes are defined at product template level, you can’t have some variants with an specific tax.</p>
<p>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.</p>
</div>
<div class="section" id="usage">
<h1><a class="toc-backref" href="#toc-entry-1">Usage</a></h1>
<h1><a class="toc-backref" href="#toc-entry-2">Usage</a></h1>
<p>To use this module, you need to:</p>
<ol class="arabic simple">
<li>Go to <em>Sales &gt; Orders &gt; Quotations</em>, create a new quotation or edit
Expand All @@ -398,41 +404,48 @@ <h1><a class="toc-backref" href="#toc-entry-1">Usage</a></h1>
specified.</li>
</ol>
</div>
<div class="section" id="known-issues-roadmap">
<h1><a class="toc-backref" href="#toc-entry-3">Known issues / Roadmap</a></h1>
<ul class="simple">
<li>This module requires <cite>sale_variant_configurator</cite> as a way to avoid 2 glue modules, but it may be independent.</li>
</ul>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#toc-entry-2">Bug Tracker</a></h1>
<h1><a class="toc-backref" href="#toc-entry-4">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/product-variant/issues">GitHub Issues</a>.
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
<a class="reference external" href="https://github.com/OCA/product-variant/issues/new?body=module:%20sale_product_variant_attribute_tax%0Aversion:%2013.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<a class="reference external" href="https://github.com/OCA/product-variant/issues/new?body=module:%20sale_product_variant_attribute_tax%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#toc-entry-3">Credits</a></h1>
<h1><a class="toc-backref" href="#toc-entry-5">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#toc-entry-4">Authors</a></h2>
<h2><a class="toc-backref" href="#toc-entry-6">Authors</a></h2>
<ul class="simple">
<li>Tecnativa</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#toc-entry-5">Contributors</a></h2>
<h2><a class="toc-backref" href="#toc-entry-7">Contributors</a></h2>
<ul class="simple">
<li><a class="reference external" href="https://www.tecnativa.com">Tecnativa</a>:<ul>
<li>Vicent Cubells</li>
<li>Pedro M. Baeza</li>
<li>Ernesto Tejeda</li>
<li>Carolina Fernandez</li>
</ul>
</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-6">Maintainers</a></h2>
<h2><a class="toc-backref" href="#toc-entry-8">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
<p>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.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/product-variant/tree/13.0/sale_product_variant_attribute_tax">OCA/product-variant</a> project on GitHub.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/product-variant/tree/16.0/sale_product_variant_attribute_tax">OCA/product-variant</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
Expand Down
Original file line number Diff line number Diff line change
@@ -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()
Expand Down Expand Up @@ -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)

0 comments on commit 9ab2d7f

Please sign in to comment.