[IMP] accounting: l10n update brazilian page with new template
closes odoo/documentation#13619 Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
@@ -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
|
||||
---------------
|
||||
|
||||
@@ -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
|
||||
===============
|
||||
|
||||
|
||||
@@ -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 state’s
|
||||
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*.
|
||||
|
||||
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 6.5 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 51 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 33 KiB |
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||