[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 **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 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 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:: .. example::
You issue a €100 invoice on the 1st of January. The full payment is due within 30 days, and you 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 A :ref:`tax reduction <cash-discounts/tax-reductions>` can also be applied depending on the country
or region. or region.
.. seealso::
- :doc:`payment_terms`
- :doc:`../payments`
.. _cash-discounts/configuration: .. _cash-discounts/configuration:
Configuration Configuration
============= =============
To grant cash discounts to customers, you must first set up the :ref:`type of tax reduction To grant cash discounts to customers, you must first verify the :ref:`gain and loss accounts
<cash-discounts/tax-reductions>`, verify the :ref:`gain and loss accounts <cash-discounts/gain-loss-accounts>`. Then, configure :ref:`payment terms
<cash-discounts/gain-loss-accounts>`, and configure new :ref:`payment terms <cash-discounts/payment-terms>` and add a cash discount by checking the :guilabel:`Early Discount`
<cash-discounts/payment-terms>`. 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: .. _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 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 To configure how the tax reduction is applied, go to a payment term with the :guilabel:`Early
--> Settings`, and in the :guilabel:`Taxes` section, in the :guilabel:`Cash Discount Tax Reduction` Discount` checkbox enabled, and select one of the three following options:
feature, select one of the three following options:
Always (upon invoice) - Always (upon invoice)
The tax is always reduced. The base amount used to compute the tax is the discounted amount, 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. whether the customer benefits from the discount or not.
On early payment - On early payment
The tax is reduced only if the customer pays early. The base amount used to compute the tax is the 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 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. that, depending on the customer, the tax amount can vary after the invoice is issued.
Never - Never
The tax is never reduced. The base amount used to compute the tax is the full amount, whether the 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. customer benefits from the discount or not.
.. example:: .. example::
@ -70,10 +101,10 @@ Never
- Computation - Computation
* - 8th of January * - 8th of January
- €118.58 - €118.58
- (€98 + (21% of €98)) - €98 + (21% of €98)
* - 31st of January * - 31st of January
- €120.58 - €120.58
- (€100 + (21% of €98)) - €100 + (21% of €98)
.. tab:: On early payment .. tab:: On early payment
@ -85,10 +116,10 @@ Never
- Computation - Computation
* - 8th of January * - 8th of January
- €118.58 - €118.58
- (€98 + (21% of €98)) - €98 + (21% of €98)
* - 31st of January * - 31st of January
- €121.00 - €121.00
- (€100 + (21% of €100)) - €100 + (21% of €100)
.. tab:: Never .. tab:: Never
@ -100,10 +131,10 @@ Never
- Computation - Computation
* - 8th of January * - 8th of January
- €119.00 - €119.00
- (€98 + (21% of €100)) - €98 + (21% of €100)
* - 31st of January * - 31st of January
- €121.00 - €121.00
- (€100 + (21% of €100)) - €100 + (21% of €100)
.. note:: .. note::
- :ref:`Tax grids <tax-returns/tax-grids>`, which are used for the tax report, are correctly - :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 - The **type of cash discount tax reduction** may be correctly pre-configured, depending on your
:ref:`fiscal localization package <fiscal_localizations/packages>`. :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: .. _cash-discounts/customer-invoice:
Apply a cash discount to a 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 <cash-discounts/payment-terms>`. Odoo automatically computes the correct amounts, tax amounts, due
dates, and accounting records. 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. "toggle" button and adding the :guilabel:`Discount Date` and :guilabel:`Discount Amount` columns.
.. image:: cash_discounts/invoice-journal-entry.png .. 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 :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. 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 .. 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
:alt: An invoice of €100.00 with the following text added to the terms and conditions: "30 Days, Days, 2% Early Payment Discount under 7 days. 118.58 € due if paid before 01/08/2023."
2% Early Payment Discount under 7 days. 118.58 € due if paid before 01/08/2023."
Payment reconciliation Payment reconciliation
---------------------- ----------------------
When you record a payment or reconcile your bank statements, Odoo takes the customer payment's date When you record a :doc:`payment <../payments>` or :doc:`reconcile your bank transactions
into account to define if they can benefit from the cash discount or not. <../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:: .. note::
If your customer pays the discount amount *after* the discount date, you can always decide If your customer pays the discount amount *after* the discount date, you can always decide to
whether to mark the invoice as fully paid with a write-off or as partially paid. mark the invoice as fully paid with a write-off or as partially paid.
.. seealso::
:doc:`../payments`

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB