mirror of
https://github.com/odoo/documentation.git
synced 2025-12-15 00:49:06 +07:00
[IMP] Taxes: improve tax configuration doc
task-5094417 We improve the following sections of the Taxes page: - Tax computations: At the moment, the section for the `Percentage of Price tax included` tax computation doesn't distinguish itself enough from the 'Included in Price' option which people usually want. We also improve the examples. - Included in Price - Affects base of subsequent taxes - Base affected by preceding taxes: this option was not documented, so we add a section for it. closes odoo/documentation#14908 Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
This commit is contained in:
@@ -72,23 +72,42 @@ The **tax name** is displayed for backend users in the :guilabel:`Taxes` field i
|
|||||||
Tax computation
|
Tax computation
|
||||||
~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
- **Group of Taxes**
|
The :guilabel:`Tax Computation` field determines how the tax amount is computed from the sales
|
||||||
|
price. The following options are available:
|
||||||
|
|
||||||
|
- :ref:`Group of Taxes <taxes/computation/group-of-taxes>`: a combination of several other taxes
|
||||||
|
- :ref:`Fixed <taxes/computation/fixed>`: a fixed amount
|
||||||
|
- :ref:`Percentage of Price <taxes/computation/percentage-of-price>`: a percentage of the
|
||||||
|
tax-excluded sales price
|
||||||
|
- :ref:`Percentage of Price Tax Included <taxes/computation/percentage-of-price-tax-included>`: a
|
||||||
|
percentage of the tax-included total
|
||||||
|
- :ref:`Python Code <taxes/computation/python-code>`: a custom user-defined formula
|
||||||
|
|
||||||
|
.. _taxes/computation/group-of-taxes:
|
||||||
|
|
||||||
|
Group of taxes
|
||||||
|
**************
|
||||||
|
|
||||||
The tax is a combination of multiple sub-taxes. You can add as many taxes as you want, in the
|
The tax is a combination of multiple sub-taxes. You can add as many taxes as you want, in the
|
||||||
order you want them to be applied.
|
order you want them to be applied.
|
||||||
|
|
||||||
.. important::
|
.. important::
|
||||||
Make sure that the tax sequence is correct, as the order in which they are may impact the
|
Make sure the tax sequence is correct, as the display order determines the application order and
|
||||||
taxes' amounts computation, especially if one of the taxes :ref:`affects the base of the
|
may affect tax computation, particularly if a tax :ref:`affects the base of subsequent taxes
|
||||||
subsequent ones <taxes/base-subsequent>`.
|
<taxes/base-subsequent>`.
|
||||||
|
|
||||||
- **Fixed**
|
.. _taxes/computation/fixed:
|
||||||
|
|
||||||
The tax has a fixed amount in the default currency. The amount remains the same, regardless of the
|
Fixed
|
||||||
sales price.
|
*****
|
||||||
|
|
||||||
|
The tax has a fixed amount in the default currency. The amount remains the same per unit,
|
||||||
|
regardless of the sales price.
|
||||||
|
|
||||||
|
The computation is :math:`\text{tax amount} = \text{fixed tax amount} \times \text{quantity}`.
|
||||||
|
|
||||||
.. example::
|
.. example::
|
||||||
A product has a sales price of $1000, and we apply a $10 *fixed* tax. We then have:
|
A product has a sales price of $1000, and we apply a $10 :guilabel:`Fixed` tax. We then have:
|
||||||
|
|
||||||
+-------------+-------------+----------+----------+
|
+-------------+-------------+----------+----------+
|
||||||
| Product | Price | Tax | Total |
|
| Product | Price | Tax | Total |
|
||||||
@@ -97,13 +116,25 @@ Tax computation
|
|||||||
| 1,000 | 1,000 | 10 | 1,010.00 |
|
| 1,000 | 1,000 | 10 | 1,010.00 |
|
||||||
+-------------+-------------+----------+----------+
|
+-------------+-------------+----------+----------+
|
||||||
|
|
||||||
- **Percentage of price**
|
.. _taxes/computation/percentage-of-price:
|
||||||
|
|
||||||
The *sales price* is the taxable basis: the tax amount is computed by multiplying the sales price
|
Percentage of price
|
||||||
by the tax percentage.
|
*******************
|
||||||
|
|
||||||
.. example::
|
The tax rate is a percentage of the **tax-excluded** subtotal.
|
||||||
A product has a sales price of $1000, and we apply a *10% of Price* tax. We then have:
|
|
||||||
|
The exact tax computation depends on the :ref:`Included in Price <taxes/included-in-price>` field,
|
||||||
|
which determines whether the sales price should be treated as tax-excluded or tax-included:
|
||||||
|
|
||||||
|
.. tabs::
|
||||||
|
.. tab:: Tax-excluded
|
||||||
|
|
||||||
|
If :guilabel:`Included in Price` is disabled, the computation is :math:`\text{tax amount}
|
||||||
|
= \text{sales price} \times \text{tax rate}`.
|
||||||
|
|
||||||
|
.. example::
|
||||||
|
A product has a sales price of $1000, and we apply a 10% :guilabel:`Percentage of Price`
|
||||||
|
tax that is not :guilabel:`Included in Price`. We then have:
|
||||||
|
|
||||||
+-------------+-------------+----------+----------+
|
+-------------+-------------+----------+----------+
|
||||||
| Product | Price | Tax | Total |
|
| Product | Price | Tax | Total |
|
||||||
@@ -112,13 +143,47 @@ Tax computation
|
|||||||
| 1,000 | 1,000 | 100 | 1,100.00 |
|
| 1,000 | 1,000 | 100 | 1,100.00 |
|
||||||
+-------------+-------------+----------+----------+
|
+-------------+-------------+----------+----------+
|
||||||
|
|
||||||
- **Percentage of Price Tax Included**
|
.. tab:: Tax-included
|
||||||
|
|
||||||
The **total** is the taxable basis: the tax amount is a percentage of the total.
|
If :guilabel:`Included in Price` is enabled, the computation is :math:`\text{tax amount} =
|
||||||
|
\text{sales price} \times \frac{\text{tax rate}}{1 + \text{tax rate}}`.
|
||||||
|
|
||||||
.. example::
|
.. example::
|
||||||
A product has a Sales Price of $1000, and we apply a *10% of Price Tax Included* tax. We then
|
A product has a sales price of $1000, and we apply a 10% :guilabel:`Percentage of Price`
|
||||||
have:
|
tax that is :guilabel:`Included in Price`. We then have:
|
||||||
|
|
||||||
|
+-------------+-------------+----------+----------+
|
||||||
|
| Product | Price | Tax | Total |
|
||||||
|
| sales price | without tax | | |
|
||||||
|
+=============+=============+==========+==========+
|
||||||
|
| 1,000 | 909.09 | 90.91 | 1,000.00 |
|
||||||
|
+-------------+-------------+----------+----------+
|
||||||
|
|
||||||
|
.. _taxes/computation/percentage-of-price-tax-included:
|
||||||
|
|
||||||
|
Percentage of price tax included
|
||||||
|
********************************
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
This tax computation is rarely used and only useful in countries (e.g., Brazil, Bolivia) that
|
||||||
|
quote tax rates as a percentage of the tax-included total.
|
||||||
|
For the more common need to compute tax amounts from a tax-included price, use the
|
||||||
|
:ref:`Percentage of Price <taxes/computation/percentage-of-price>` tax computation with the
|
||||||
|
:ref:`Included in Price <taxes/included-in-price>` option.
|
||||||
|
|
||||||
|
The tax rate is a percentage of the **tax-included** total.
|
||||||
|
|
||||||
|
The exact tax computation depends on the :ref:`Included in Price <taxes/included-in-price>` field,
|
||||||
|
which determines whether the sales price should be treated as tax-excluded or tax-included:
|
||||||
|
|
||||||
|
.. tabs::
|
||||||
|
.. tab:: Tax-excluded
|
||||||
|
If :guilabel:`Included in Price` is disabled, the computation is :math:`\text{tax amount}
|
||||||
|
= \text{sales price} \times \frac{\text{tax rate}}{1 - \text{tax rate}}`.
|
||||||
|
|
||||||
|
.. example::
|
||||||
|
A product has a sales price of $1000, and we apply a 10% :guilabel:`Percentage of Price
|
||||||
|
Tax Included` tax that is not :guilabel:`Included in Price`. We then have:
|
||||||
|
|
||||||
+-------------+-------------+----------+----------+
|
+-------------+-------------+----------+----------+
|
||||||
| Product | Price | Tax | Total |
|
| Product | Price | Tax | Total |
|
||||||
@@ -127,16 +192,60 @@ Tax computation
|
|||||||
| 1,000 | 1,000 | 111.11 | 1,111.11 |
|
| 1,000 | 1,000 | 111.11 | 1,111.11 |
|
||||||
+-------------+-------------+----------+----------+
|
+-------------+-------------+----------+----------+
|
||||||
|
|
||||||
- **Python code**
|
Note that the real tax rate in terms of the tax-excluded price is
|
||||||
|
:math:`\frac{111.11}{1000} = 11.111\%`.
|
||||||
|
|
||||||
A tax defined as **Python code** consists of two snippets of Python code that are executed in a
|
.. tab:: Tax-included
|
||||||
local environment containing data such as the unit price, product or partner.
|
|
||||||
:guilabel:`Python Code` defines the amount of the tax, and :guilabel:`Applicable Code` defines if
|
If :guilabel:`Included in Price` is enabled, the computation is :math:`\text{tax amount} =
|
||||||
the tax is to be applied. The formula is found at the bottom of the :guilabel:`Definition` tab.
|
\text{sales price} \times \text{tax rate}`.
|
||||||
|
|
||||||
|
.. example::
|
||||||
|
A product has a sales price of $1000, and we apply a 10%
|
||||||
|
:guilabel:`Percentage of Price Tax Included` tax that is :guilabel:`Included in Price`.
|
||||||
|
We then have:
|
||||||
|
|
||||||
|
+-------------+-------------+----------+----------+
|
||||||
|
| Product | Price | Tax | Total |
|
||||||
|
| sales price | without tax | | |
|
||||||
|
+=============+=============+==========+==========+
|
||||||
|
| 1,000 | 900 | 100 | 1,000.00 |
|
||||||
|
+-------------+-------------+----------+----------+
|
||||||
|
|
||||||
|
Note that the real tax rate in terms of the tax-excluded price is
|
||||||
|
:math:`\frac{100}{900} = 11.111\%`.
|
||||||
|
|
||||||
|
.. _taxes/computation/python-code:
|
||||||
|
|
||||||
|
Python code
|
||||||
|
***********
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
If a tax can be expressed as a multiple of the quantity of the product to which it applies, it
|
||||||
|
can be defined as a :ref:`Fixed <taxes/computation/fixed>` tax. Doing so is strongly recommended
|
||||||
|
over defining a :guilabel:`Python Code` tax.
|
||||||
|
|
||||||
|
A tax defined as :guilabel:`Python Code` consists of two snippets of Python code that are executed
|
||||||
|
in a local environment that can access the unit price, quantity, product, and partner.
|
||||||
|
:guilabel:`Python Code` defines the amount of the tax, and :guilabel:`Applicable Code` defines
|
||||||
|
whether the tax is applied. Enter a formula for each field at the bottom of the
|
||||||
|
:guilabel:`Definition` tab.
|
||||||
|
|
||||||
.. example::
|
.. example::
|
||||||
:guilabel:`Python Code`: `result = price_unit * 0.10`
|
A product has a sales price of $1000, and we apply a :guilabel:`Python Code` tax with the
|
||||||
:guilabel:`Applicable Code`: `result = true`
|
following configuration:
|
||||||
|
|
||||||
|
- :guilabel:`Python Code`: `result = price_unit * 0.10` and
|
||||||
|
- :guilabel:`Applicable Code`: `result = True`.
|
||||||
|
|
||||||
|
We then have:
|
||||||
|
|
||||||
|
+-------------+-------------+----------+----------+
|
||||||
|
| Product | Price | Tax | Total |
|
||||||
|
| sales price | without tax | | |
|
||||||
|
+=============+=============+==========+==========+
|
||||||
|
| 1,000 | 1,000 | 100 | 1,100.00 |
|
||||||
|
+-------------+-------------+----------+----------+
|
||||||
|
|
||||||
.. _taxes/active:
|
.. _taxes/active:
|
||||||
|
|
||||||
@@ -256,29 +365,27 @@ invoice line.
|
|||||||
Included in price
|
Included in price
|
||||||
~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
With this option activated, the total (including the tax) equals the **sales price**.
|
With this option activated, the tax will treat the sales price on which it is applied as a total
|
||||||
|
including the tax amount. The tax computation will split the sales price into a base amount and a
|
||||||
|
tax amount. This makes it suitable for B2C sales in most countries where prices are quoted
|
||||||
|
tax-inclusive.
|
||||||
|
|
||||||
`Total = Sales Price = Computed Tax-Excluded price + Tax`
|
`Total = Sales Price = Computed Tax-Excluded price + Tax`
|
||||||
|
|
||||||
.. example::
|
.. example::
|
||||||
A product has a sales price of $1000, and we apply a *10% of Price* tax, which is *included in
|
A product has a sales price of $1000, and we apply a 10% :guilabel:`Percentage of Price` tax
|
||||||
the price*. We then have:
|
with :guilabel:`Included in Price`. We then have:
|
||||||
|
|
||||||
+-------------+-------------+----------+----------+
|
+-------------+-------------+----------+----------+
|
||||||
| Product | Price | Tax | Total |
|
| Product | Price | Tax | Total |
|
||||||
| sales price | without tax | | |
|
| sales price | without tax | | |
|
||||||
+=============+=============+==========+==========+
|
+=============+=============+==========+==========+
|
||||||
| 1,000 | 900.10 | 90.9 | 1,000.00 |
|
| 1,000 | 909.09 | 90.91 | 1,000.00 |
|
||||||
+-------------+-------------+----------+----------+
|
+-------------+-------------+----------+----------+
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
If you need to define prices accurately, both tax-included and tax-excluded, please refer to the
|
For a guide on configuring tax-excluded and tax-included prices for B2B and B2C customers,
|
||||||
following documentation: :doc:`taxes/B2B_B2C`.
|
see :doc:`taxes/B2B_B2C`.
|
||||||
|
|
||||||
.. note::
|
|
||||||
By default, only the :guilabel:`Tax excluded` column is displayed on invoices. To display the
|
|
||||||
:guilabel:`Tax included` column, click the **dropdown toggle** button and check
|
|
||||||
:guilabel:`Tax incl.`.
|
|
||||||
|
|
||||||
.. image:: taxes/toggle-button.png
|
.. image:: taxes/toggle-button.png
|
||||||
|
|
||||||
@@ -287,11 +394,36 @@ With this option activated, the total (including the tax) equals the **sales pri
|
|||||||
Affect base of subsequent taxes
|
Affect base of subsequent taxes
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
With this option, the total tax-included becomes the taxable basis for the other taxes applied to
|
If this setting is enabled, any subsequent tax applied on the same product line that has
|
||||||
the same product.
|
:ref:`taxes/base-affected` will be based on a modified sales price. The exact behavior depends on
|
||||||
|
whether the tax with :guilabel:`Affect base of subsequent taxes` is :ref:`taxes/included-in-price`
|
||||||
|
or not.
|
||||||
|
|
||||||
You can configure a new :ref:`group of taxes <taxes/computation>` to include this tax or add it
|
.. tabs::
|
||||||
directly to a product line.
|
.. tab:: Tax-excluded
|
||||||
|
If :guilabel:`Included in Price` is disabled, subsequent taxes with :guilabel:`Base affected
|
||||||
|
by preceding taxes` will be based on a modified sales price equal to the original sales price
|
||||||
|
plus the tax amount.
|
||||||
|
|
||||||
|
.. example::
|
||||||
|
A product has a sales price of $1000, and we apply a 10% :guilabel:`Percentage of Price`
|
||||||
|
tax with :guilabel:`Affect base of subsequent taxes`. Any subsequent tax with
|
||||||
|
:guilabel:`Base affected by preceding taxes` will be based on a modified sales price of
|
||||||
|
$1100.
|
||||||
|
|
||||||
|
.. tab:: Tax-included
|
||||||
|
If :guilabel:`Included in Price` is enabled, subsequent taxes with :guilabel:`Base affected
|
||||||
|
by preceding taxes` will be based on a modified sales price equal to the original sales price
|
||||||
|
minus the tax amount.
|
||||||
|
|
||||||
|
.. example::
|
||||||
|
A product has a sales price of $1100, and we apply a 10% :guilabel:`Percentage of Price`
|
||||||
|
tax with :guilabel:`Included in Price` and :guilabel:`Affect base of subsequent taxes`.
|
||||||
|
Any subsequent tax with :guilabel:`Base affected by preceding taxes` will be based on a
|
||||||
|
modified sales price of $1000.
|
||||||
|
|
||||||
|
This setting is considered any time multiple taxes are applied to the same product line, whether
|
||||||
|
via a :ref:`group of taxes <taxes/computation>` or multiple taxes added directly to a product line.
|
||||||
|
|
||||||
.. image:: taxes/subsequent-line.png
|
.. image:: taxes/subsequent-line.png
|
||||||
:alt: The eco-tax is taken into the basis of the 21% VAT tax
|
:alt: The eco-tax is taken into the basis of the 21% VAT tax
|
||||||
@@ -307,6 +439,19 @@ directly to a product line.
|
|||||||
.. image:: taxes/list-sequence.png
|
.. image:: taxes/list-sequence.png
|
||||||
:alt: The taxes' sequence in Odoo determines which tax is applied first
|
:alt: The taxes' sequence in Odoo determines which tax is applied first
|
||||||
|
|
||||||
|
.. _taxes/base-affected:
|
||||||
|
|
||||||
|
Base affected by preceding taxes
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
This setting, which is only visible in :doc:`developer mode <../../general/developer_mode>`,
|
||||||
|
determines whether any previous tax that :ref:`affects the base of subsequent taxes
|
||||||
|
<taxes/base-subsequent>` will modify the sales price that this tax is based on.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Taxes with :ref:`Included in Price <taxes/included-in-price>` always behave as if this setting is
|
||||||
|
enabled.
|
||||||
|
|
||||||
Extra taxes
|
Extra taxes
|
||||||
===========
|
===========
|
||||||
|
|
||||||
@@ -320,7 +465,7 @@ imposed by governments. These extra taxes can be **luxury** taxes, **environment
|
|||||||
|
|
||||||
To compute an extra tax in Odoo, :ref:`create a tax <taxes/configuration>`, enter a tax name, select
|
To compute an extra tax in Odoo, :ref:`create a tax <taxes/configuration>`, enter a tax name, select
|
||||||
a :ref:`Tax Computation <taxes/configuration>`, set an :guilabel:`Amount`, and in the
|
a :ref:`Tax Computation <taxes/configuration>`, set an :guilabel:`Amount`, and in the
|
||||||
:guilabel:`Advanced Options` tab, check :guilabel:`Affect Base of Subsequent Taxes`. Then, drag and
|
:guilabel:`Advanced Options` tab, enable :guilabel:`Affect Base of Subsequent Taxes`. Then, drag and
|
||||||
drop the taxes in the :ref:`order they should be computed <taxes/base-subsequent>`.
|
drop the taxes in the :ref:`order they should be computed <taxes/base-subsequent>`.
|
||||||
|
|
||||||
.. example::
|
.. example::
|
||||||
|
|||||||
Reference in New Issue
Block a user