[IMP] accounting: l10n update brazilian page with new template

closes odoo/documentation#13619

Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
This commit is contained in:
afma-odoo
2025-06-03 16:37:09 +02:00
parent 74079011f2
commit 7c3ce223d1
20 changed files with 310 additions and 390 deletions

View File

@@ -13,7 +13,7 @@ transactions.
*AvaTax* is only available for integration with databases/companies that have locations in the
United States, Canada, and Brazil. This means the fiscal position/country of a database can only
be set to the United States, Canada, or Brazil. For more information, reference this
documentation: :ref:`avatax/fiscal_country`.
documentation: :ref:`accounting/avatax/fiscal_country`.
*AvaTax* accounts for location-based tax rates for each state, county, and city. It improves
remittance accuracy by paying close attention to laws, rules, jurisdiction boundaries, and special
@@ -42,7 +42,8 @@ connect with Avalara to purchase a license: `Avalara: Let's Talk
.. tip::
Upon account setup, take note of the *AvaTax* :guilabel:`Account ID`. This will be needed in the
:ref:`Odoo setup <avatax/credentials>`. In Odoo, this number is the :guilabel:`API ID`.
:ref:`Odoo setup <accounting/avatax/credentials>`. In Odoo, this number is the :guilabel:`API
ID`.
Then, `create a basic company profile
<https://www.odoo.com/r/2k0>`_.
@@ -65,7 +66,7 @@ Follow the Avalara documentation for creating a basic company profile:
#. `Add a marketplace to the company profile
<https://www.odoo.com/r/QA5>`_.
.. _avatax/create_avalara_credentials:
.. _accounting/avatax/create_avalara_credentials:
Connect to AvaTax
-----------------
@@ -102,6 +103,8 @@ If this is an additional license key, ensure the previous connection can be brok
Copy this key to a safe place. It is strongly encouraged to back up the license key for
future reference. This key **cannot** be retrieved after leaving this screen.
.. _accounting/avatax/odoo-configuration:
Odoo configuration
==================
@@ -111,7 +114,7 @@ are made accurately.
Verify that the Odoo database contains necessary data. The country initially set up in the database
determines the fiscal position, and aids *AvaTax* in calculating accurate tax rates.
.. _avatax/fiscal_country:
.. _accounting/avatax/fiscal_country:
Fiscal country
--------------
@@ -210,7 +213,7 @@ and :guilabel:`Amazon/Avatax Bridge`, respectively.
- :doc:`../../fiscal_localizations/brazil`
- :doc:`../../fiscal_localizations/united_states`
.. _avatax/credentials:
.. _accounting/avatax/credentials:
Odoo AvaTax settings
--------------------
@@ -228,6 +231,8 @@ Odoo database.
:align: center
:alt: Configure AvaTax settings
.. _accounting/avatax/prerequisites:
Prerequisites
~~~~~~~~~~~~~
@@ -253,7 +258,7 @@ Key` field.
:guilabel:`Account ID` is listed first.
To access the :guilabel:`License Key` see this documentation:
:ref:`avatax/create_avalara_credentials`.
:ref:`accounting/avatax/create_avalara_credentials`.
For the :guilabel:`Company Code` field, enter the Avalara company code for the company being
configured. Avalara interprets this as `DEFAULT`, if it is not set. The :guilabel:`Company Code` can
@@ -332,7 +337,7 @@ Sync parameters
Upon finishing the configuration and settings of the *AvaTax* section, click the :guilabel:`Sync
Parameters` button. This action synchronizes the exemption codes from *AvaTax*.
.. _avatax/fiscal_positions:
.. _accounting/avatax/fiscal_positions:
Fiscal position
---------------

View File

@@ -6,6 +6,8 @@ AvaTax is a tax calculation software that can be integrated with Odoo in the Uni
Canada. Once the :doc:`integration setup <../avatax>` is complete, the calculated tax is simple and
automatic.
.. _accounting/avatax/tax-calculation:
Tax calculation
===============

View File

@@ -89,27 +89,8 @@ local fiscal and accounting regulations:
to Brazilian accounting standards
- :ref:`Taxes <localizations/brazil/taxes>`: pre-configured tax rates, including standard VAT,
zero-rated, and exempt options.
- :ref:`Products <localizations/brazil/products>`
- :ref:`Contacts <localizations/brazil/company-and-contacts>`
- :ref:`Fiscal positions <localizations/brazil/fiscal-positions>`: automated tax adjustments based
on customer or supplier registration status.
- :doc:`Payroll </applications/hr/payroll>`
- :doc:`Reporting <../accounting/reporting>`
- :ref:`AvaTax integration <localizations/brazil/avatax-account>`
- :ref:`Tax computation <localizations/brazil/tax-computation>`
Sales taxes can be automatically computed, and electronic invoices for goods (NF-e) and services
(NFS-e) can be sent using AvaTax (Avalara) through |API| calls. Moreover, taxes for services can be
configured.
For the goods and services tax computation and electronic invoicing process, configure the
:ref:`contacts <localizations/brazil/company-and-contacts>`, :ref:`company
<localizations/brazil/company-and-contacts>`, and :ref:`products <localizations/brazil/products>`
and :ref:`create an account in AvaTax <localizations/brazil/avatax-account>` in the general
settings.
For the services taxes, create and configure them from Odoo directly without computing them with
AvaTax.
.. _localizations/brazil/chart-of-accounts:
@@ -136,29 +117,190 @@ Taxes used for services must be manually added and configured, as the rate may d
the city where the service is offered.
.. important::
For service taxes created manually, NFS-e can't be issued. To electronically send an NFS-e,
compute taxes using Avalara.
NFS-e can't be issued for service taxes created manually. To :ref:`electronically send an NFS-e
<localizations/brazil/e-invoice-services>`, compute taxes using Avalara.
.. warning::
Do not delete taxes, as they are used for the AvaTax tax computation. If deleted, Odoo creates
them again when used in an |SO| or invoice, and computing taxes with AvaTax. However, the account
used to register the tax must be re-configured in the tax's :guilabel:`Definition` tab, under
them again when used in an |SO| or invoice, computing taxes with AvaTax. However, the account
used to register the tax must be reconfigured in the tax's :guilabel:`Definition` tab, under
the :guilabel:`Distribution for invoices` and :guilabel:`Distribution for refunds` sections.
.. _localizations/brazil/company-and-contacts:
Company and contacts
====================
To use all the features of this fiscal localization, the following fields are required on the
:doc:`company record </applications/general/companies>`:
- :guilabel:`Name`
- :guilabel:`Address`: add :guilabel:`City`, :guilabel:`State`, :guilabel:`Zip Code`,
:guilabel:`Country`
- In the :guilabel:`Street` field, enter the street name, number, and any additional address
information.
- In the :guilabel:`Street 2` field, enter the neighborhood.
- :guilabel:`Identification Number`: :guilabel:`CNPJ` or :guilabel:`CPF`
- :guilabel:`Tax ID`: associated with the identification type
- :guilabel:`IE`: State registration
- :guilabel:`IM`: Municipal registration
- :guilabel:`SUFRAMA code`: Superintendence of the Manaus Free Trade Zone - add if applicable
- :guilabel:`Phone`
- :guilabel:`Email`
Configure the :guilabel:`Fiscal Information` within the :guilabel:`Sales and Purchase` tab:
- Add the :ref:`Fiscal Position <localizations/brazil/fiscal-positions>` for AvaTax Brazil.
- :guilabel:`Tax Regime`: Federal Tax Regime
- :guilabel:`ICMS Taxpayer Type`: indicates :guilabel:`ICMS regime`, :guilabel:`Exempt status`,
or :guilabel:`Non-Taxpayer`
- :guilabel:`Main Activity Sector`
Configure the following extra :guilabel:`Fiscal Information` to issue NFS-e:
- Add the :ref:`Fiscal Position <localizations/brazil/fiscal-positions>` for AvaTax Brazil.
- :guilabel:`COFINS Details`: :guilabel:`Taxable, Not Taxable, Taxable with rate 0%, Exempt,
Suspended`
- :guilabel:`PIS Details` :guilabel:`Taxable, Not Taxable, Taxable with rate 0%, Exempt,
Suspended`
- :guilabel:`CSLL Taxable` if the company is subject to CSLL or not
.. tip::
If it is a simplified regime, the ICMS rate must be configured. To do so, go to
:menuselection:`Accounting --> Configuration --> Settings`, scroll down to the :guilabel:`Taxes`
section, and set the :guilabel:`Sales Tax` and :guilabel:`Purchase Tax` fields in the
:guilabel:`Default Taxes` section.
The same configuration applies to the relevant :doc:`contact <../../essentials/contacts>` form when
using the AvaTax integration.
.. note::
Select the :guilabel:`Company` option for a contact with a tax ID (CNPJ), or check
:guilabel:`Individual` for a contact with a CPF.
.. _localizations/brazil/avatax-account:
AvaTax integration
==================
.. note::
- Make sure to :ref:`install <general/install>` the :guilabel:`AvaTax Brazil` (`l10n_br_avatax`)
module.
- Odoo is a certified partner of Avalara Brazil.
- The :doc:`Avalara AvaTax integration <../accounting/taxes/avatax>` uses :doc:`In-App-Purchases
(IAPs) <../../essentials/in_app_purchase>` to compute taxes and handle electronic documents
(e.g., :ref:`NF-e <localizations/brazil/e-invoice-goods>`, :ref:`NFS-e
<localizations/brazil/e-invoice-services>`). Each action consumes credits from the `IAP credit
balance <https://iap.odoo.com/iap/in-app-services/819>`_. On creation, new databases receive
500 free credits.
To compute the goods and services tax and process electronic invoices, the following configurations
are needed:
- :ref:`Company <localizations/brazil/company-and-contacts>`
- :ref:`Contacts <localizations/brazil/company-and-contacts>`
- :ref:`AvaTax configuration<localizations/brazil/avatax-credentials>`.
- :ref:`A1 digital certificate <localizations/brazil/certificate-upload>`
- :ref:`Tax mapping <localizations/brazil/fiscal-positions>`
- :ref:`Products <localizations/brazil/products>`
.. _localizations/brazil/avatax-configuration:
Configuration
-------------
.. _localizations/brazil/avatax-credentials:
Credentials
~~~~~~~~~~~
:ref:`Activate AvaTax in Odoo <accounting/avatax/credentials>` and, in the :guilabel:`AvaTax Brazil`
section, add the administrator's email address for the AvaTax portal in the :guilabel:`AvaTax Portal
Email` field, then click :icon:`fa-plug` :guilabel:`Create account`.
.. warning::
When **testing** or **creating a production** :guilabel:`AvaTax Portal Email` integration in a
sandbox or production database, use a real email address, as it is needed to :ref:`connect to
Avalara <accounting/avatax/prerequisites>` and set up the certificates, whether to test or use it
on production.
There are two different Brazilian Avalara Portals:
- One for testing: https://portal.sandbox.avalarabrasil.com.br/
- One for production: https://portal.avalarabrasil.com.br/
When the account is created from Odoo, select the right environment. Moreover, the email used to
open the account cannot be used to open another account. Save the :guilabel:`API ID` and
:guilabel:`API Key` when the account is created from Odoo.
.. image:: brazil/transfer-api-credentials.png
:alt: Transfer API Credentials.
After the account is created from Odoo, go to the Avalara Portal to set up the password:
#. Access the `Avalara portal <https://portal.avalarabrasil.com.br/Login>`_.
#. Click :guilabel:`Meu primeiro acesso`.
#. Add the email address used in Odoo to create the Avalara/AvaTax account, and click
:guilabel:`Solicitar Senha`.
#. An email will then be received with a token and a link to create a password. Click on this link
and copy-paste the token to allocate the desired password.
.. tip::
If you use AvaTax in Odoo for tax computation **only**, setting a password or accessing the
Avalara portal is unnecessary. However, to use the electronic invoice service, access to
AvaTax is needed, and the :ref:`certificate must be uploaded
<localizations/brazil/certificate-upload>`.
.. note::
|API| credentials can be transferred. This option should be used only when an account has already
been created in another Odoo instance and must be reused.
.. _localizations/brazil/certificate-upload:
A1 certificate upload
~~~~~~~~~~~~~~~~~~~~~
To issue electronic invoices, a certificate must be uploaded to the `AvaTax portal
<https://portal.avalarabrasil.com.br/Login>`_.
The certificate will be synchronized with Odoo as long as the external identifier number in the
AvaTax portal matches, without special characters, with the CNPJ number, and the identification
number (CNPJ) in Odoo matches the CNPJ in AvaTax.
.. important::
Some cities require the certificate to be linked within the City Portal system before issuing
NFS-e from Odoo.
If an error message from the city that says :guilabel:`Your certificate is not linked
to the user` is received, this process needs to be done in the city portal.
.. _localizations/brazil/fiscal-positions:
Fiscal positions
~~~~~~~~~~~~~~~~
To set up the :guilabel:`Automatic Tax Mapping (Avalara Brazil)` :ref:`fiscal position
<accounting/avatax/fiscal_positions>`, enable the :guilabel:`Detect Automatically` and
:guilabel:`Use AvaTax Brazil API` options.
.. seealso::
:doc:`Taxes functional documentation <../accounting/taxes>`
:doc:`Fiscal positions <../accounting/taxes/fiscal_positions>`
.. _localizations/brazil/products:
Products
--------
~~~~~~~~
To use the AvaTax integration on sales orders and invoices, enter the following information in the
:guilabel:`Sales` tab of the product form under the :guilabel:`Brazil Accounting` section, based on
how the product will be used.
E-Invoice for goods (NF-e)
~~~~~~~~~~~~~~~~~~~~~~~~~~
.. _localizations/brazil/e-invoice-goods:
E-invoices for goods (NF-e)
***************************
.. important::
The :ref:`Avalara integration <localizations/brazil/avatax-account>` works on a credit-based
@@ -180,7 +322,7 @@ E-Invoice for goods (NF-e)
- :ref:`Invoice cancellation <localizations/brazil/invoice-cancellation>`
- :ref:`Sales refund via credit note <localizations/brazil/credit-notes>`
- :ref:`Sales complementary invoice via debit note <localizations/brazil/debit-notes>`
- :ref:`Invalidate invoice number range <localizations/brazil/invalidate-invoice-number>`
- :ref:`Invoice number range invalidation <localizations/brazil/invoice-number-invalidation>`
- Other tax validations.
.. note::
@@ -196,16 +338,16 @@ E-Invoice for goods (NF-e)
| :icon:`fa-arrow-down` 1 credit (tax calculation) + 1 credit (submit invoice)
| **Total: 4 credits**
- :guilabel:`CEST Code`: code for products subject to ICMS tax substitution
- :guilabel:`CEST Code`: tax classification code identifying goods and products subject to tax
substitution under ICMS regulations, and helps determine the applicable tax treatment and
procedures for specific items. The product's applicability to this requirement can be verified at
https://www.codigocest.com.br/.
- :guilabel:`Mercosul NCM Code`: Mercosur Common Nomenclature Product Code
- :guilabel:`Source of Origin`: origin of the product, which can be foreign or domestic, among other
possible options, depending on the specific use case
- :guilabel:`SPED Fiscal Product Type`: fiscal product type according to SPED list table
- :guilabel:`SPED Fiscal Product Type`: fiscal product type according to the SPED list table
- :guilabel:`Purpose of Use`: intended purpose of use for this product
.. image:: brazil/product-configuration.png
:alt: Product configuration.
.. note::
Odoo automatically creates three products to be used for transportation costs associated with
sales. These are named :guilabel:`Freight`, :guilabel:`Insurance`, and :guilabel:`Other Costs`
@@ -215,12 +357,14 @@ E-Invoice for goods (NF-e)
- :guilabel:`Transportation Cost Type`: :guilabel:`Insurance`, :guilabel:`Freight`, or
:guilabel:`Other Costs`
E-Invoice for services (NFS-e)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. _localizations/brazil/e-invoice-services:
E-invoices for services (NFS-e)
*******************************
.. important::
The :ref:`Avalara integration <localizations/brazil/avatax-account>` works on a credit-based
system, where each interaction with Avalara consumes 1 credit. Below are the main
system, where each interaction with Avalara consumes one credit. Below are the main
credit-consuming operations:
**Sales application**
@@ -239,11 +383,11 @@ E-Invoice for services (NFS-e)
- :ref:`Invoice cancellation <localizations/brazil/invoice-cancellation>`
- :ref:`Sales refund via credit note <localizations/brazil/credit-notes>`
- :ref:`Sales complementary invoice via debit note <localizations/brazil/debit-notes>`
- :ref:`Invalidate invoice number range <localizations/brazil/invalidate-invoice-number>`
- :ref:`Invoice number range invalidation <localizations/brazil/invoice-number-invalidation>`
- Other tax validations.
.. note::
If taxes are calculated in the **Sales** app, and the invoice is later issued in the
If taxes are calculated in the **Sales** app and the invoice is later issued in the
**Accounting** app, the calculation happens twice, consuming two credits.
.. example::
@@ -258,197 +402,18 @@ E-Invoice for services (NFS-e)
- :guilabel:`Mercosul NCM Code`: Mercosur Common Nomenclature Product Code
- :guilabel:`Purpose of Use`: intended purpose of use for this product
- :guilabel:`Service Code Origin`: City Service Code where the provider is registered
- :guilabel:`Labor Assignment`: checkbox to select if service involves labor
- :guilabel:`Labor Assignment`: checkbox to select if the service involves labor
- :guilabel:`Transport Cost Type`: type of transport costs to select
- :guilabel:`Service Codes`: City Service Code where the service will be provided; if no code is
added, the :guilabel:`Service Code Origin` will be used.
.. _localizations/brazil/company-and-contacts:
Company and contacts
--------------------
To use all the features of this fiscal localization, the following fields are required on the
:doc:`company record </applications/general/companies>`:
- :guilabel:`Name`
- :guilabel:`Address`: add :guilabel:`City`, :guilabel:`State`, :guilabel:`Zip Code`,
:guilabel:`Country`
- In the :guilabel:`Street` field, enter the street name, number, and any additional address
information.
- In the :guilabel:`Street 2` field, enter the neighborhood.
- :guilabel:`Identification Number`: :guilabel:`CNPJ` or :guilabel:`CPF`
- :guilabel:`Tax ID`: associated with the identification type
- :guilabel:`IE`: State registration
- :guilabel:`IM`: Municipal registration
- :guilabel:`SUFRAMA code`: Superintendence of the Manaus Free Trade Zone - add if applicable
- :guilabel:`Phone`
- :guilabel:`Email`
.. image:: brazil/contact-configuration.png
:alt: Company configuration.
Configure the :guilabel:`Fiscal Information` within the :guilabel:`Sales and Purchase` tab:
- Add the :guilabel:`Fiscal Position` for :ref:`AvaTax Brazil
<localizations/brazil/fiscal-positions>`.
- :guilabel:`Tax Regime`: Federal Tax Regime
- :guilabel:`ICMS Taxpayer Type`: indicates :guilabel:`ICMS regime`, :guilabel:`Exempt status`,
or :guilabel:`Non-Taxpayer`
- :guilabel:`Main Activity Sector`
.. image:: brazil/contact-fiscal-configuration.png
:alt: Company fiscal configuration.
Configure the following extra :guilabel:`Fiscal Information` to issue NFS-e:
- Add the :guilabel:`Fiscal Position` for :ref:`AvaTax Brazil
<localizations/brazil/fiscal-positions>`.
- :guilabel:`COFINS Details`: :guilabel:`Taxable, Not Taxable, Taxable with rate 0%, Exempt,
Suspended`
- :guilabel:`PIS Details` :guilabel:`Taxable, Not Taxable, Taxable with rate 0%, Exempt,
Suspended`
- :guilabel:`CSLL Taxable` if the company is subject to CSLL or not
.. image:: brazil/contact-fiscal-configuration-nfse.png
:alt: Company fiscal configuration for NFSe.
.. note::
If it is a simplified regime, the ICMS rate under :menuselection:`Accounting --> Configuration
--> Settings --> Taxes --> AvaTax Brazil` must be configured.
The same configuration applies to the relevant :doc:`contact <../../essentials/contacts>` form when
using the AvaTax integration.
.. note::
Select the :guilabel:`Company` option for a contact with a tax ID (CNPJ), or check
:guilabel:`Individual` for a contact with a CPF.
.. _localizations/brazil/fiscal-positions:
Fiscal positions
----------------
To compute taxes and send electronic invoices on sales orders and invoices, both the
:guilabel:`Detect Automatically` and the :guilabel:`Use AvaTax Brazil API` options need to be
enabled in the :guilabel:`Fiscal Position`. To do so, go to :menuselection:`Accounting -->
Configuration --> Fiscal Positions`. Then, open :guilabel:`Automatic Tax Mapping (Avalara Brazil)`
and update it accordingly.
.. image:: brazil/fiscal-position-configuration.png
:alt: Fiscal position configuration
The :doc:`fiscal positions <../accounting/taxes/fiscal_positions>` can be configured:
- either on the :ref:`contact <localizations/brazil/company-and-contacts>`, in the :guilabel:`Sales
& Purchase` tab under the :guilabel:`Fiscal Information` section;
- or when creating a sales order or an invoice, in the :guilabel:`Other Info` tab under the
:guilabel:`Invoicing` or :guilabel:`Accounting` section.
.. _localizations/brazil/avatax-account:
AvaTax integration
------------------
Avalara AvaTax is a tax calculation and electronic invoicing provider that can be integrated into
Odoo to compute taxes automatically. It considers the company, contact (customer), product, and
transaction information to retrieve the correct tax to be used and process the e-invoice afterward
with the government.
This integration requires :doc:`In-App-Purchases (IAPs) <../../essentials/in_app_purchase>` to
compute taxes and send electronic invoices. To compute taxes, send an electronic document (NF-e,
NFS-e, etc.), or perform any electronic flow (NF-e Cancellation, Correction letter, Invalidate
invoice number range), an API call is made using credits from the `IAP credit balance
<https://iap.odoo.com/iap/in-app-services/819>`_.
.. note::
- Odoo is a certified partner of Avalara Brazil.
- Buy `IAP credits on odoo.com <https://iap.odoo.com/iap/in-app-services/819>`_.
- On creation, new databases receive 500 free credits.
.. seealso::
:doc:`In-App-Purchases (IAPs) <../../essentials/in_app_purchase>`
.. _localizations/brazil/credential-configuration:
Credential configuration
~~~~~~~~~~~~~~~~~~~~~~~~
To activate AvaTax in Odoo, an account must be created. To do so, go to :menuselection:`Accounting
--> Configuration --> Settings --> Taxes`. In the :guilabel:`AvaTax Brazil` section, add the
administration Email address for the AvaTax portal in :guilabel:`AvaTax Portal Email`, and click
:icon:`fa-plug` :guilabel:`Create account`.
.. warning::
When **testing** or **creating a production** :guilabel:`AvaTax Portal Email` integration in a
sandbox or production database, use a real Email address, as it is needed to log in to the
Avalara Portal and set up the certificates, whether to test or use it on production.
There are two different Avalara Portals, one for testing and one for production:
- Sandbox: https://portal.sandbox.avalarabrasil.com.br/
- Production: https://portal.avalarabrasil.com.br/
When the account is created from Odoo, select the right environment. Moreover, the Email used to
open the account cannot be used to open another account. Save the :guilabel:`API ID` and
:guilabel:`API Key` when the account is created from Odoo.
.. image:: brazil/transfer-api-credentials.png
:alt: Transfer API Credentials.
After the account is created from Odoo, go to the Avalara Portal to set up the password:
#. Access the `Avalara portal <https://portal.avalarabrasil.com.br/Login>`_.
#. Click :guilabel:`Meu primeiro acesso`.
#. Add the Email address used in Odoo to create the Avalara/AvaTax account, and click
:guilabel:`Solicitar Senha`.
#. An Email will then be received with a token and a link to create a password. Click on this link
and copy-paste the token to allocate the desired password.
.. tip::
Start using AvaTax in Odoo for tax computation **only**, without creating a password and
accessing the Avalara portal in the Odoo database. However, to use the electronic invoice
service, you **must** access the AvaTax portal and upload the certificate there.
.. image:: brazil/avatax-account-configuration.png
:alt: AvaTax account configuration.
.. note::
|API| credentials can be transferred. This option should be used only when an account has already
been created in another Odoo instance and must be reused.
.. _localizations/brazil/certificate-upload:
A1 certificate upload
~~~~~~~~~~~~~~~~~~~~~
To issue electronic invoices, a certificate must be uploaded to the `AvaTax portal
<https://portal.avalarabrasil.com.br/Login>`_.
The certificate will be synchronized with Odoo as long as the external identifier number in the
AvaTax portal matches - without special characters - with the CNPJ number, and the
identification number (CNPJ) in Odoo matches the CNPJ in AvaTax.
.. important::
Some cities require the certificate to be linked within the City Portal system before issuing
NFS-e from Odoo.
If an error message from the city that says :guilabel:`Your certificate is not linked
to the user` is received, this process needs to be done in the city portal.
.. _localizations/brazil/tax-computation:
Tax computation
---------------
.. warning::
Actions that trigger |API| calls for tax computation come with a cost. Be mindful of the
actions that trigger these calls to manage costs effectively.
.. seealso::
:doc:`In-App-Purchases (IAPs) <../../essentials/in_app_purchase>`
:ref:`Tax calculation <accounting/avatax/tax-calculation>`
.. _localizations/brazil/tax-calculations:
@@ -465,7 +430,7 @@ any of the following ways:
- **Preview**
Click :guilabel:`Preview`.
- **Email a quotation/sales order**
Send a quotation or sales order to a customer via Email.
Send a quotation or sales order to a customer via email.
- **Online quotation access**
When a customer accesses the quotation online (via the portal view), the |API| call is
triggered.
@@ -510,17 +475,14 @@ Configuration
A *series* number is linked to a sequence number range for electronic invoices. To configure the
series number on a sales journal, go to :menuselection:`Accounting --> Configuration --> Journals`
and set it in the :guilabel:`Series` field. If more than one series is needed, a new sales journal
must be created, and a new series number assigned for each series.
must be created, and a new series number must be assigned for each series.
Enable the :guilabel:`Use Documents?` option as the :guilabel:`Series` field will only be displayed
if the :guilabel:`Use Documents?` field is selected on the journal.
if the :guilabel:`Use Documents?` option is selected on the journal.
When issuing electronic and non-electronic invoices, the :guilabel:`Type` field selects the document
type used when creating the invoice.
.. image:: brazil/journal-configuration.png
:alt: Journal configuration with the Use Documents? field checked.
.. note::
When creating the journal, ensure the :guilabel:`Dedicated Credit Note Sequence` field in the
:guilabel:`Accounting Information` section is unchecked, as in Brazil, sequences between
@@ -534,12 +496,12 @@ Customer invoices
To process an electronic invoice for goods (NF-e) or services (NFS-e), the invoice must be confirmed
and taxes must be computed by Avalara. The following fields must be filled out:
- :guilabel:`Customer`, with all the customer information
- :guilabel:`Payment Method: Brazil`: how the invoice is planned to be paid.
- :guilabel:`Document Type` set as :guilabel:`(55) Electronic Invoice (NF-e)` or :guilabel:`(SE)
- :guilabel:`Customer`, with all customer information
- :guilabel:`Payment Method: Brazil`: Specify the expected payment method.
- :guilabel:`Document Type`: Select :guilabel:`(55) Electronic Invoice (NF-e)` or :guilabel:`(SE)
Electronic Service Invoice (NFS-e)`.
And in the :guilabel:`Other Info` tab:
:guilabel:`Other Info` tab:
- :guilabel:`Fiscal Position` set as :guilabel:`Automatic Tax Mapping (Avalara Brazil)`.
@@ -550,42 +512,34 @@ government when the invoice is submitted:
- :guilabel:`Freight Model` determines how the goods are planned to be transported - domestic.
- :guilabel:`Transporter Brazil` determines who is doing the transportation.
.. image:: brazil/invoice-info-needed.png
:alt: Invoice information needed to process an electronic invoice.
.. image:: brazil/process-electronic-invoice.png
:alt: Process electronic invoice pop-up in Odoo.
Then, click :guilabel:`Send`. In the :guilabel:`Print & Send` window, click :guilabel:`Process
e-invoice` and any other options - :guilabel:`Download` or :guilabel:`Email`. Finally, click
e-invoice` and any other options, such as :guilabel:`Download` or :guilabel:`Email`. Finally, click
:guilabel:`Send` to process the invoice with the government.
.. note::
All fields available on the invoice used to issue an electronic invoice are also available on the
sales order, if needed. When creating the first invoice, the :guilabel:`Document Number` field is
displayed, allocated as the first number to be used sequentially for subsequent invoices.
displayed and allocated as the first number to be used sequentially for subsequent invoices.
.. _localizations/brazil/credit-notes:
Credit notes
~~~~~~~~~~~~
If a sales return needs to be registered, a credit note can be created in Odoo and sent to the
government for validation.
If a sales return needs to be registered, a :ref:`credit note can be created in Odoo
<accounting/credit_notes/issue-credit-note>` and sent to the government for validation.
.. note::
Credit notes are only available for electronic invoices for goods (NF-e).
.. seealso::
:ref:`Issue a credit note <accounting/credit_notes/issue-credit-note>`
.. _localizations/brazil/debit-notes:
Debit Notes
Debit notes
~~~~~~~~~~~
If additional information needs to be included or values that were not accurately provided in the
original invoice need to be corrected, a debit note can be issued.
original invoice need to be corrected, a :ref:`debit note can be issued
<accounting/credit_notes/issue-debit-note>`.
.. note::
- Debit notes are only available for electronic invoices for goods (NF-e).
@@ -594,9 +548,6 @@ original invoice need to be corrected, a debit note can be issued.
the debit note. The purpose of this document is only to declare the amount to be added to the
original invoice for the same or fewer products.
.. seealso::
:ref:`Issue a debit note <accounting/credit_notes/issue-debit-note>`
.. _localizations/brazil/invoice-cancellation:
Invoice cancellation
@@ -615,10 +566,7 @@ E-invoices for goods (NF-e)
To cancel an e-invoice for goods (NF-e) in Odoo, click :guilabel:`Request Cancel` and add a
cancellation :guilabel:`Reason` on the pop-up that appears. To send this cancellation reason to the
customer via Email, enable the :guilabel:`E-mail` checkbox.
.. image:: brazil/invoice-cancellation.png
:alt: Invoice cancellation reason in Odoo.
customer via email, enable the :guilabel:`E-mail` checkbox.
.. note::
This is an electronic cancellation, which means that Odoo will send a request to the government
@@ -629,9 +577,9 @@ customer via Email, enable the :guilabel:`E-mail` checkbox.
E-invoices for services (NFS-e)
*******************************
To cancel an e-invoice for services (NFS-e) in Odoo, click :guilabel:`Request Cancel`. In this case,
there is no electronic cancellation process, as not every city has this service available. The
user needs to manually cancel this NFS-e on the city portal. Once that step is completed, they can
To cancel an e-invoice for services (NFS-e) in Odoo, click :guilabel:`Request Cancel`. There is no
electronic cancellation process in this case, as not every city has this service available. The
user needs to cancel this NFS-e on the city portal manually. Once that step is completed, they can
request the cancellation in Odoo, which will cancel the invoice.
.. _localizations/brazil/correction-letter:
@@ -642,40 +590,29 @@ Correction letter
A correction letter can be created and linked to an electronic invoice for goods (NF-e) that the
government validated.
To do so in Odoo, click :guilabel:`Correction Letter` and add a correction :guilabel:`Reason` on the
pop-up that appears. To send the correction reason to a customer via Email, enable the
:guilabel:`E-mail` checkbox.
.. image:: brazil/correction-letter.png
:alt: Correction letter reason in Odoo.
To do so in Odoo, click :guilabel:`Correction Letter` and add a correction :guilabel:`Reason` to the
pop-up. To send the correction reason to a customer via email, enable the :guilabel:`E-mail`
checkbox.
.. note::
Correction letters are only available for electronic invoices for goods (NF-e).
.. _localizations/brazil/invalidate-invoice-number:
.. _localizations/brazil/invoice-number-invalidation:
Invalidate invoice number range
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Invoice number range invalidation
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A range of sequences that are assigned to sales journals can be invalidated by the government if
they are not currently used **and** will not be used in the future. To do so, open the journal,
click the :icon:`fa-cog` (gear) icon, and select :guilabel:`Invalidate Number Range (BR)`. On the
they are not currently used **and** will not be used in the future. To do so, go to
:menuselection:`Accounting --> Configuration --> Journals`, open the journal, click the
:icon:`fa-cog` (gear) icon, and select :guilabel:`Invalidate Number Range (BR)`. On the
:guilabel:`Invalidate Number Range (BR)` wizard, add the :guilabel:`Initial Number` and
:guilabel:`End Number` of the range that should be cancelled, and enter an invalidation
:guilabel:`Reason`.
.. image:: brazil/range-number-invalidation.png
:alt: Number range invalidation selection in Odoo.
.. image:: brazil/range-number-invalidation-wizard.png
:alt: Number range invalidation wizard in Odoo.
.. note::
Invalidate invoice number range documents are only available for electronic invoices for goods
(NF-e).
.. note::
The journal's chatter records the log of the cancelled numbers, along with the XML file.
- Invoice number range invalidation is only available for electronic invoices for goods (NF-e).
- The journal's chatter records the log of the cancelled numbers, along with the XML file.
.. _localizations/brazil/vendor-bills:
@@ -683,12 +620,12 @@ Vendor bills
------------
When receiving an invoice from a supplier, encode the bill in Odoo by adding all the commercial
information, together with the same Brazilian-specific information that is recorded on the
:ref:`customer invoices <localizations/brazil/electronic-documents>`.
information and the same Brazilian-specific information recorded on the :ref:`customer invoices
<localizations/brazil/electronic-documents>`.
These Brazilian-specific fields are:
- :guilabel:`Payment Method: Brazil`: how the invoice is planned to be paid
- :guilabel:`Payment Method: Brazil`: Specify the expected payment method.
- :guilabel:`Document Type`: used by the vendor
- :guilabel:`Document Number`: the invoice number from the supplier
- :guilabel:`Freight Model`: **NF-e specific** how goods are planned to be transported - domestic
@@ -699,25 +636,26 @@ These Brazilian-specific fields are:
Point of sale NFC-e
===================
The NFC-e is a legal document that supports selling goods or merchandise to the final customer.
Like the :ref:`NF-e <localizations/brazil/e-invoice-goods-nf-e>`, the electronic customer invoice is
also issued in XML file format and has an auxiliary document (DANFC-e) known as the *NFC-e Summary*.
This electronic document can be issued through **Odoo Point of Sale app**.
The NFC-e is a legal document that supports selling goods or merchandise to the final customer. Like
the :ref:`NF-e <localizations/brazil/e-invoice-goods-nf-e>`, the electronic customer invoice is also
issued in XML file format and has an auxiliary document (DANFC-e) known as the *NFC-e Summary*. This
electronic document can be issued through **Odoo Point of Sale**.
Its legal validity is guaranteed by the digital signature and by each Brazilian state's SEFAZ
(Secretaria da Fazenda).
.. important::
The :ref:`Avalara integration <localizations/brazil/avatax-account>` operates on a credit-based
system. Each operation that involves communication with Avalara consumes one credit. The following
operations within the **Point of Sale** (POS) application are subject to credit consumption:
system. Each operation that involves communication with Avalara consumes one credit. The
following operations within the **Point of Sale** (POS) application are subject to credit
consumption:
- Tax calculation at the time of sale
- Electronic invoice issuance (NFC-e)
.. note::
Each step is billed separately. For example, calculating taxes and issuing an invoice for the
same POS transaction consume two credits.
same POS transaction consumes two credits.
.. seealso::
:doc:`Point of Sale <../../sales/point_of_sale>`
@@ -728,83 +666,73 @@ Configuration
-------------
:ref:`Install <general/install>` the :guilabel:`Brazilian Accounting EDI for POS` (`l10nbr_edi_pos`)
module.
module and make sure to activate :doc:`AvaTax <../accounting/taxes/avatax>`.
.. _localizations/brazil/pos-csc-details:
CSC details
-----------
Go to :menuselection:`Accounting --> Configuration --> Settings`, scroll to the :guilabel:`Taxes`
Go to :menuselection:`Accounting --> Configuration --> Settings` and scroll to the :guilabel:`Taxes`
section. In the :guilabel:`NFC-e configuration` section, complete the following CSC (Taxpayer
Security Code) fields:
- :guilabel:`CSC ID`: The *CSC ID* or *CSC Token* is an identification of the taxpayer security
code, which can have 1 to 6 digits and is available on your state's website of State Department of
Finance (SEFAZ).
code, which can have 1 to 6 digits and is available on the official website of your states
Department of Finance (SEFAZ).
- :guilabel:`CSC Number`: The *CSC Number* is a code of up to 36 characters that only you and the
Department of Finance know. It is used to generate the QR Code of the NFC-e and ensure the
authenticity of the DANFE.
.. note::
The information required for these fields can be generated through the SEFAZ website of each
Brazilian state by the company's accountant.
Brazilian State by the company's accountant.
.. _localizations/brazil/pos-product:
Product configuration
---------------------
First, :doc:`create a new product in POS <../../sales/point_of_sale/configuration>`, then in the
:guilabel:`Sales` tab, configure the following :guilabel:`Brazil Accounting` fields:
- :guilabel:`CEST Code`: A tax classification code identifying goods and products subject to tax
substitution under ICMS regulations. It helps determine the applicable tax treatment and
procedures for specific items. Check if the product is subject to this at
https://www.codigocest.com.br/.
- :guilabel:`Mercosul NCM Code`: NCM (Nomenclatura Comun do Mercosul) code from the Mercosur list.
- :guilabel:`Source of Origin`: Indicates whether the product is of foreign or national origin, with
different variations and characteristics depending on the product use case.
- :guilabel:`SPED Fiscal Product Type`: Fiscal product type according to the SPED list table.
- :guilabel:`Purpose of Use`: Shows what this product is used for.
Access the relevant :doc:`product form in POS <../../sales/point_of_sale/configuration>`, then
configure the :ref:`product <localizations/brazil/products>`'s :guilabel:`Brazil Accounting`
fields.
.. _localizations/brazil/pos-shop-configuration:
Shop configuration
------------------
Point of sale
-------------
Go to :menuselection:`Point of Sale --> Configuration --> Point of Sales` and create a
:guilabel:`New` shop. Choose an internal name for the new POS and save.
Then, go to :menuselection:`Point of Sale --> Configuration --> Settings` and make sure that the
correct Point of Sale is :doc:`selected at the top of the screen
<../../sales/point_of_sale/configuration>`. Then, scroll to the :guilabel:`Accounting` section and
configure the :guilabel:`Brazilian EDI` fields:
Go to :menuselection:`Point of Sale --> Configuration --> Settings` and make sure that the relevant
Point of Sale is :doc:`selected at the top of the screen <../../sales/point_of_sale/configuration>`.
Then, scroll to the :guilabel:`Accounting` section and configure the :guilabel:`Brazilian EDI`
fields:
- :guilabel:`Series`
- :guilabel:`Next number`: the next NFC-e number in the sequence to be issued, for instance, if the
last number issued in SEFAZ is `100`, the *Next number* will be `101`.
.. note::
For the production environment, make sure that this information is updated.
.. _localizations/brazil/pos-workflow:
Workflow
--------
.. _localizations/brazil/generate-nfc-e:
Generating an NFC-e
-------------------
~~~~~~~~~~~~~~~~~~~
First, :ref:`open the Shop and make a sale <pos/session-start>`.
To generate an NFC-e, follow these steps:
After validating the payment, Odoo calculates taxes and issues an NFC-e. The valid NFC-e appears on
the right side of the screen.
#. :ref:`Open the relevant point of sale shop and make a sale <pos/session-start>`.
#. Validate the payment to calculate taxes and issue an NFC-e. The valid NFC-e appears on the right
side of the screen.
.. image:: brazil/l10n-br-nfce-succesfully-issued.png
:alt: NFC-e Success in a POS session.
.. note::
It is also possible to issue an NFC-e that identifies the customer by their CPF/CNPJ. To do so,
click :icon:`fa-user` :guilabel:`Customer`, search for the customer if they are already
registered, or click :guilabel:`Create`.
It is also possible to issue an NFC-e that identifies the customer by their CPF/CNPJ. To do
so, click :icon:`fa-user` :guilabel:`Customer`, search for the customer, or create a new one.
The following are mandatory fields to issue a CPF/CNPJ identified NFC-e:
@@ -812,49 +740,39 @@ the right side of the screen.
- :guilabel:`City` and :guilabel:`State` where the invoice is being issued
- :guilabel:`CPF/CNPJ`
After saving the register, click :guilabel:`Validate`. The NFC-e appears, highlighting the
customer's CPF on the print.
Finally, select one of the two options to deliver the invoice to the customer:
- :guilabel:`Print`
- :guilabel:`Send via e-mail`
#. Click :guilabel:`Validate`. The NFC-e appears, highlighting the customer's CPF on the print.
#. Click :guilabel:`Print` or :guilabel:`Send via e-mail` to deliver the invoice to the customer.
.. _localizations/brazil/nfc-e-print:
NFC-e ticket print
------------------
~~~~~~~~~~~~~~~~~~
After :ref:`generating and validating the NFC-e <localizations/brazil/generate-nfc-e>`, click
:guilabel:`Print` to deliver the invoice.
.. example::
.. figure:: brazil/l10n-br-nfc-e-print.png
:alt: Printed NFC-e ticket example.
This is the DANFC-e, the print of NFC-e when it is successfully issued, and shows all the
important information that is legally required.
.. tip::
#. Using an :doc:`Odoo IoT Box <../../general/iot>` to integrate the print NFC-e through the
**Point of Sale** app is unnecessary.
#. The Odoo NFC-e feature works with any thermal printer.
.. note::
The Odoo NFC-e feature is compatible with any thermal printer and does not require an :doc:`Odoo
IoT Box <../../general/iot>`.
.. _localizations/brazil/order-with-nfc-e-error:
Re-issue PoS order with NFC-e error
-----------------------------------
Re-issuing a PoS order with an NFC-e error
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If the NFC-e returns an error, correct the error first. Then, to re-issue the NFC-e, click the
:icon:`fa-bars` :guilabel:`(menu)` icon and select :guilabel:`Orders`.
If the NFC-e returns an error, follow these steps:
Filter the list to show only :guilabel:`Paid` orders and click :guilabel:`Details`. The error will
then be displayed, and the :guilabel:`Send NFC-e` button will be available.
#. Correct the error.
#. Re-issue the NFC-e by clicking the :icon:`fa-bars` :guilabel:`(menu)` icon and selecting
:guilabel:`Orders`.
#. Filter the list to show only :guilabel:`Paid` orders and click :guilabel:`Details`. The error is
displayed.
#. Click :guilabel:`Send NFC-e`.
.. note::
If the error was fixed and the PoS Session was closed, Odoo indicates the tax adjustment on that
journal entry in the chatter. The order's journal entry shows that the taxes were not calculated
correctly. In that case, reprocessing the NFC-e is necessary.
If the error has been corrected and the PoS session is closed, Odoo logs the tax adjustment in
the chatter of the related journal entry. The journal entry for the order indicates that the
taxes were incorrectly calculated. In this case, reprocessing the NFC-e is required.
.. image:: brazil/l10n-br-order-error-screen.png
:alt: Point of sale order view form.
@@ -862,28 +780,18 @@ then be displayed, and the :guilabel:`Send NFC-e` button will be available.
.. _localizations/brazil/nfc-e-refunds-cancellations:
NFC-e refunds & cancellations
-----------------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*Refunds* can be created from Odoo, but *cancellations* must be done from the government portal.
.. important::
SEFAZ only allows cancellation of an NFC-e **within 30 minutes** of its issuance on the SEFAZ
website. After this period, a manual refund must be processed, along with the issuance of a
*Return of Goods NF-e*.
To issue a refund, click the :icon:`fa-bars` :guilabel:`(menu)` icon and select :guilabel:`Orders`.
Filter the list to show only :guilabel:`Paid` orders, open the order, and click :guilabel:`Refund`.
Choose the :guilabel:`Payment method` and :guilabel:`Amount`, then click :guilabel:`Refund payment`.
.. note::
Alternatively, to reimburse and cancel the NFC-e through the backend, go to
:menuselection:`Point of Sale --> Orders --> Orders`. Open the order, select the customer,
and click :guilabel:`Payment` to reimburse. Then click :guilabel:`Invoice` to create the invoice
and issue the *Return of Goods NF-e*.
:ref:`Refunds can be processed directly in Odoo <pos/refund>`, but *cancellations* must be performed
through the official government portal.
When the process is finalized, the approved return NF-e is created, meaning the **previous NFC-e is
canceled**.
.. image:: brazil/l10n-br-return-succeed.png
:alt: Return of Goods NF-e Approved.
.. important::
SEFAZ only allows cancellation of an NFC-e **within 30 minutes** of its issuance on the SEFAZ
website. After this period, a manual refund must be processed, along with the issuance of a
*Return of Goods NF-e*.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

View File

@@ -195,7 +195,8 @@ and region-specific tax calculations when items are sold, purchased, and invoice
.. important::
AvaTax is available for integration with databases/companies that have locations in Canada and/or
the United States. Reference the :ref:`avatax/fiscal_country` documentation for more information.
the United States. Reference the :ref:`accounting/avatax/fiscal_country` documentation for more
information.
.. seealso::
Refer to the documentation articles below to integrate and configure an AvaTax account with an

View File

@@ -249,7 +249,8 @@ tax calculations when items are sold, purchased, and invoiced in the database.
.. important::
AvaTax is available for integration with databases/companies that have locations in the United
States and Canada. Reference the :ref:`avatax/fiscal_country` documentation for more information.
States and Canada. Reference the :ref:`accounting/avatax/fiscal_country` documentation for more
information.
.. seealso::
Refer to the documentation articles below to integrate and configure an AvaTax account with an

View File

@@ -99,24 +99,27 @@ under the related product.
Return and refund products
==========================
To return and refund a product,
To refund a returned product, follow these steps:
#. :ref:`start a session <pos/session-start>` from the **POS dashboard**;
#. click :guilabel:`Refund` and select the corresponding order;
#. select the product and the quantity to refund using the keypad;
#. click :guilabel:`Refund` to go back to the previous screen;
#. once the order is completed, click :guilabel:`Payment` to proceed to the refund;
#. click :guilabel:`Validate` and :guilabel:`New Order` to move on to the next customer.
#. :ref:`Start a session <pos/session-start>` from the **POS dashboard**.
#. Click :guilabel:`Actions`, then :icon:`fa-undo` :guilabel:`Refund`, and select the corresponding
order.
#. Select items, use the keypad to set the quantity to refund, then click :guilabel:`Refund`.
#. Click :guilabel:`Payment` and select the appropriate refund payment method.
#. Click :guilabel:`Validate` and print the receipt if needed.
#. Click :guilabel:`New Order` to proceed to the next customer.
.. image:: point_of_sale/refund.png
:alt: refund view from a POS
.. tip::
- To filter the **orders list** by :guilabel:`Order number`, :guilabel:`Receipt Number`,
:guilabel:`Date`, or :guilabel:`Customer`, enter a value in the search bar and choose the
relevant filter from the dropdown menu.
- When the total amount is negative, adding a gift card to the cart automatically adjusts the
gift card balance to match that amount.
.. note::
- You can filter the **orders list** by :guilabel:`Receipt Number`, :guilabel:`Date` or
:guilabel:`Customer` using the search bar.
- You can also refund a product by selecting the returned product from an open session, and
setting a negative quantity that equals the number of returned products. To do so, click
:guilabel:`Qty` and :guilabel:`+/-`, followed by the quantity of returned products.
Alternatively, a refund can be processed by selecting the returned product(s) from an open
session and setting a negative quantity equal to the number of returned items. To do so, click
:guilabel:`Qty` and :guilabel:`+/-`, and update the quantity accordingly.
Once the return payment is validated, Odoo generates the required credit note, referencing the
original receipt or invoice and partially or fully canceling the document.