[IMP] accounting: move cash discount tax reduction to payment term

task-3211595

closes odoo/documentation#5260

X-original-commit: ceda988a29
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
Signed-off-by: Dallas Dean (dade) <dade@odoo.com>
This commit is contained in:
“Dallas” 2023-07-04 09:44:25 +00:00
parent 775e80ed92
commit 18db702655
4 changed files with 89 additions and 92 deletions

View File

@ -5,7 +5,7 @@ Cash discounts and tax reduction
**Cash discounts** are reductions in the amount a customer must pay for goods or services offered as
an incentive for paying their invoice promptly. These discounts are typically a percentage of the
total invoice amount and are applied if the customer pays within a specified time. Cash discounts
can help the company maintain a steady cash flow.
can help a company maintain a steady cash flow.
.. example::
You issue a €100 invoice on the 1st of January. The full payment is due within 30 days, and you
@ -17,15 +17,46 @@ can help the company maintain a steady cash flow.
A :ref:`tax reduction <cash-discounts/tax-reductions>` can also be applied depending on the country
or region.
.. seealso::
- :doc:`payment_terms`
- :doc:`../payments`
.. _cash-discounts/configuration:
Configuration
=============
To grant cash discounts to customers, you must first set up the :ref:`type of tax reduction
<cash-discounts/tax-reductions>`, verify the :ref:`gain and loss accounts
<cash-discounts/gain-loss-accounts>`, and configure new :ref:`payment terms
<cash-discounts/payment-terms>`.
To grant cash discounts to customers, you must first verify the :ref:`gain and loss accounts
<cash-discounts/gain-loss-accounts>`. Then, configure :ref:`payment terms
<cash-discounts/payment-terms>` and add a cash discount by checking the :guilabel:`Early Discount`
checkbox and filling in the discount percentage, discount days, and :ref:`tax
reduction <cash-discounts/tax-reductions>` fields.
.. _cash-discounts/gain-loss-accounts:
Cash discount gain/loss accounts
--------------------------------
With a cash discount, the amount you earn depends on whether the customer benefits from the cash
discount or not. This inevitably leads to gains and losses, which are recorded on default accounts.
To modify these accounts, go to :menuselection:`Accounting --> Configuration --> Settings`, and, in
the :guilabel:`Default Accounts` section, select the accounts you want to use for the
:guilabel:`Cash Discount Gain account` and :guilabel:`Cash Discount Loss account`.
.. _cash-discounts/payment-terms:
Payment terms
-------------
Cash discounts are defined on :doc:`payment terms <payment_terms>`. Configure them to your liking by
going to :menuselection:`Accounting --> Configuration --> Payment Terms`, and make sure to fill out
the discount percentage, discount days, and :ref:`tax reduction <cash-discounts/tax-reductions>`
fields.
.. image:: cash_discounts/payment-terms.png
:alt: Configuration of payment terms named "2/7 Net 30". The field "Description on Invoices"
reads: "Payment terms: 30 Days, 2% Early Payment Discount under 7 days".
.. _cash-discounts/tax-reductions:
@ -33,24 +64,24 @@ Tax reductions
--------------
Depending on the country or region, the base amount used to compute the tax can vary, which can lead
to a **tax reduction**.
to a **tax reduction**. Since tax reductions are set on individual payment terms, each term can use
a specific tax reduction.
To configure how the tax reduction is applied, go to :menuselection:`Accounting --> Configuration
--> Settings`, and in the :guilabel:`Taxes` section, in the :guilabel:`Cash Discount Tax Reduction`
feature, select one of the three following options:
To configure how the tax reduction is applied, go to a payment term with the :guilabel:`Early
Discount` checkbox enabled, and select one of the three following options:
Always (upon invoice)
The tax is always reduced. The base amount used to compute the tax is the discounted amount,
whether the customer benefits from the discount or not.
- Always (upon invoice)
The tax is always reduced. The base amount used to compute the tax is the discounted amount,
whether the customer benefits from the discount or not.
On early payment
The tax is reduced only if the customer pays early. The base amount used to compute the tax is the
same as the sale: if the customer benefits from the reduction, then the tax is reduced. This means
that, depending on the customer, the tax amount can vary after the invoice is issued.
- On early payment
The tax is reduced only if the customer pays early. The base amount used to compute the tax is the
same as the sale: if the customer benefits from the reduction, then the tax is reduced. This means
that, depending on the customer, the tax amount can vary after the invoice is issued.
Never
The tax is never reduced. The base amount used to compute the tax is the full amount, whether the
customer benefits from the discount or not.
- Never
The tax is never reduced. The base amount used to compute the tax is the full amount, whether the
customer benefits from the discount or not.
.. example::
@ -70,10 +101,10 @@ Never
- Computation
* - 8th of January
- €118.58
- (€98 + (21% of €98))
- €98 + (21% of €98)
* - 31st of January
- €120.58
- (€100 + (21% of €98))
- €100 + (21% of €98)
.. tab:: On early payment
@ -85,10 +116,10 @@ Never
- Computation
* - 8th of January
- €118.58
- (€98 + (21% of €98))
- €98 + (21% of €98)
* - 31st of January
- €121.00
- (€100 + (21% of €100))
- €100 + (21% of €100)
.. tab:: Never
@ -100,10 +131,10 @@ Never
- Computation
* - 8th of January
- €119.00
- (€98 + (21% of €100))
- €98 + (21% of €100)
* - 31st of January
- €121.00
- (€100 + (21% of €100))
- €100 + (21% of €100)
.. note::
- :ref:`Tax grids <tax-returns/tax-grids>`, which are used for the tax report, are correctly
@ -112,41 +143,12 @@ Never
- The **type of cash discount tax reduction** may be correctly pre-configured, depending on your
:ref:`fiscal localization package <fiscal_localizations/packages>`.
.. _cash-discounts/gain-loss-accounts:
Cash discount gain/loss accounts
--------------------------------
With a cash discount, the amount you earn depends on whether the customer benefits from the cash
discount or not. This inevitably leads to gains and losses, which are recorded on default accounts.
To modify these accounts, go to :menuselection:`Accounting --> Configuration --> Settings`, and in
the :guilabel:`Default Accounts` section, select the accounts you want to use for the
:guilabel:`Cash Discount Gain account` and :guilabel:`Cash Discount Loss account`.
.. _cash-discounts/payment-terms:
Payment terms
-------------
Cash discounts are defined on :doc:`payment terms <payment_terms>`. Configure them to your liking by
going to :menuselection:`Accounting --> Configuration --> Payment Terms`, and make sure to fill out
the fields :guilabel:`Discount %` and :guilabel:`Discount Days`.
.. image:: cash_discounts/payment-terms.png
:align: center
:alt: Configuration of payment terms named "2/7 Net 30". The field "Description on Invoices"
reads: "Payment terms: 30 Days, 2% Early Payment Discount under 7 days".
.. seealso::
:doc:`payment_terms`
.. _cash-discounts/customer-invoice:
Apply a cash discount to a customer invoice
===========================================
Apply a cash discount to a customer invoice by selecting the :ref:`payment terms you created
On a customer invoice, apply a cash discount by selecting the :ref:`payment terms you created
<cash-discounts/payment-terms>`. Odoo automatically computes the correct amounts, tax amounts, due
dates, and accounting records.
@ -154,26 +156,23 @@ Under the :guilabel:`Journal Items` tab, you can display the discount details by
"toggle" button and adding the :guilabel:`Discount Date` and :guilabel:`Discount Amount` columns.
.. image:: cash_discounts/invoice-journal-entry.png
:align: center
:alt: An invoice of €100.00 with "2/7 Net 30" selected as payment terms. The "Journal Items" tab
is open, and the "Discount Date" and "Discount Amount" columns are displayed.
The discount amount and due date are also displayed on the generated invoice sent to the customer.
The discount amount and due date are also displayed on the generated invoice report sent to the
customer if the :guilabel:`Show installment dates` option is checked on the payment terms.
.. image:: cash_discounts/invoice-print.png
:align: center
:alt: An invoice of €100.00 with the following text added to the terms and conditions: "30 Days,
2% Early Payment Discount under 7 days. 118.58 € due if paid before 01/08/2023."
:alt: An invoice of €100.00 with the following text added to the terms and conditions: "30
Days, 2% Early Payment Discount under 7 days. 118.58 € due if paid before 01/08/2023."
Payment reconciliation
----------------------
When you record a payment or reconcile your bank statements, Odoo takes the customer payment's date
into account to define if they can benefit from the cash discount or not.
When you record a :doc:`payment <../payments>` or :doc:`reconcile your bank transactions
<../bank/reconciliation>`, Odoo takes the customer payment's date into account to determine if the
customer can benefit from the cash discount or not.
.. note::
If your customer pays the discount amount *after* the discount date, you can always decide
whether to mark the invoice as fully paid with a write-off or as partially paid.
.. seealso::
:doc:`../payments`
If your customer pays the discount amount *after* the discount date, you can always decide to
mark the invoice as fully paid with a write-off or as partially paid.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -49,43 +49,41 @@ To create new payment terms, follow these steps:
#. Go to :menuselection:`Accounting --> Configuration --> Payment Terms` and click on
:guilabel:`New`.
#. Enter a name in the :guilabel:`Payment Terms` field. This field is the name displayed in the
database and is not customer-facing.
#. Enter the text to be displayed on the document (sales order, invoice, etc.) in the
:guilabel:`Description on the Invoice` field.
#. Tick the :guilabel:`Display terms on invoice` checkbox to display a breakdown of each payment and
its due date on the invoice report, if desired.
#. In the :guilabel:`Terms` section, add a set of rules (terms) to define what needs to be paid and
by which due date(s). Defining terms automatically calculates the payments' due date(s). This is
particularly helpful for managing **installment plans** (:dfn:`payment terms with multiple
#. Enter a name in the :guilabel:`Payment Terms` field. This field is the name displayed both
internally and on sales orders.
#. Tick the :guilabel:`Early Discount` checkbox and fill out the discount percentage, discount days,
and :ref:`tax reduction <cash-discounts/tax-reductions>` fields to add a :doc:`cash discount
<cash_discounts>`, if desired.
#. In the :guilabel:`Due Terms` section, add a set of rules (terms) to define what needs to be paid
and by which due date(s). Defining terms automatically calculates the payments' due date(s). This
is particularly helpful for managing **installment plans** (:dfn:`payment terms with multiple
terms`).
To add a term, click on :guilabel:`Add a line`, define its :guilabel:`Due Type` and
:guilabel:`Value`, and fill out the appropriate fields to define when the term is due, including
any :doc:`discounts <cash_discounts>`. Due dates are calculated by taking the invoice/bill date,
first adding the :guilabel:`Months`, and then adding the :guilabel:`Days`. If the :guilabel:`End
of month` toggle is enabled, the due date will then be the end of that month, plus any
:guilabel:`Days after End of month`.
To add a term, click on :guilabel:`Add a line`, define the discount's value and type in the
:guilabel:`Due` fields, then fill out the :guilabel:`After` fields to determine the due date.
#. Enter the text to be displayed on the document (sales order, invoice, etc.) in the gray textbox
in the :guilabel:`Preview` column.
#. Tick the :guilabel:`Show installment dates` checkbox to display a breakdown of each payment and
its due date on the invoice report, if desired.
.. tip::
To instead specify a number of days *before the end of the month*, use a negative value in the
:guilabel:`Days after End of month` field.
:guilabel:`After` field.
To test that your payment terms are configured correctly, enter an invoice amount and invoice date
in the :guilabel:`Example` section to generate the payments that would be due and their due dates
To test that your payment terms are configured correctly, enter an invoice date on the
:guilabel:`Example` line to generate the payments that would be due and their due dates
using these payment terms.
.. important::
- Terms are computed in the order of their due dates.
- The **balance** should always be used for the last line.
Terms are computed in the order of their due dates.
.. example::
In the following example, 30% is due on the day of issuance, and the balance is due at the end of
the following month.
In the following example, 30% is due on the day of issuance, and the remaining 70% is due at the
end of the following month.
.. image:: payment_terms/configuration.png
:alt: Example of Payment Terms. The last line is the balance due on the 31st of the following
month.
:alt: Example of Payment Terms. The first line is the 30% due immediately. The second line is
the remaining 70% due at the end of the following month.
Using payment terms
===================
@ -126,7 +124,7 @@ due date into account, rather than just the balance due date. It also helps to g
distinct due dates
In this example, an invoice of $1000 has been issued with the following payment terms: *30% is
due on the day of issuance, and the balance is due at the end of the following month.*
due on the day of issuance, and the remaining 70% is due at the end of the following month.*
+----------------------+-------------+---------+---------+
| Account | Due date | Debit | Credit |

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB