diff --git a/content/applications/finance/fiscal_localizations/peru.rst b/content/applications/finance/fiscal_localizations/peru.rst index 035321e4b..7d0731e7a 100644 --- a/content/applications/finance/fiscal_localizations/peru.rst +++ b/content/applications/finance/fiscal_localizations/peru.rst @@ -2,6 +2,11 @@ Peru ==== +.. |SUNAT| replace:: :abbr:`SUNAT (Superintendencia Nacional de Aduanas y de Administración Tributaria)` +.. |GRE| replace:: :abbr:`GRE (Guía de Remisión Electrónica)` +.. |RUS| replace:: :abbr:`RUS (Régimen Único Simplificado)` +.. |EDI| replace:: :abbr:`EDI (Electronic Data Interchange)` + Introduction ============ @@ -78,6 +83,8 @@ The chart of accounts for Peru is based on the most updated version of the :abbr Contable General Empresarial)`, which is grouped in several categories and is compatible with NIIF accounting. +.. _peru/accounting-settings: + Accounting Settings ------------------- @@ -239,6 +246,8 @@ directly to its services and get the currency rate either automatically or manua Please refer to the next section in our documentation for more information about :doc:`multicurrencies <../accounting/get_started/multi_currency>`. +.. _peru/master_data: + Configure Master data --------------------- @@ -588,3 +597,276 @@ As part of the Peruvian localization, besides creating credit notes from an exis you can also create debit Notes. For this just use the button “Add Debit Note”. By default the Debit Note is set in the document type. + +.. _peru/edg: + +Electronic delivery guide 2.0 +----------------------------- + +The *Guía de Remisión Electrónica* (GRE) is an electronic document generated by the shipper to +support the transportation or transfer of goods from one place to another, such as a warehouse or +establishment. In Odoo, there are several configuration steps needed before you can successfully use +this feature. + +The use of the *guía de remisión electrónica* electronic document is mandatory and required by +|SUNAT| for taxpayers who need to transfer their products, except those under the *Single Simplified +Regime* (régimen único simplificado or RUS). + +Delivery guide types +~~~~~~~~~~~~~~~~~~~~ + +Sender +****** + +The *Sender* delivery guide type is issued when a sale is made, a service is rendered (including +processing), goods are assigned for use, or goods are transferred between premises of the same +company and others. + +This delivery guide is issued by the owner of the goods (i.e., the sender) at the beginning of the +shipment. The sender delivery guide is supported in Odoo. + +.. seealso:: + `SUNAT guía de remisión `_ + +Carrier +******* + +The *Carrier* delivery guide type justifies the transportation service the driver (or carrier) +performs. + +This delivery guide is issued by the carrier and must be issued to each shipper when the shipment +goes through public transport. + +.. important:: + The carrier delivery guide is **not** supported in Odoo. + +.. seealso:: + `SUNAT guía de remisión transportista + `_ + +Transportation types +~~~~~~~~~~~~~~~~~~~~ + +Private +******* + +The *Private* transportation type option is used when the owner transfers goods using their own +vehicles. In this case, a sender's delivery guide must be issued. + +Public +****** + +The *Public* transportation type option is used when an external carrier moves the goods. In +this case, two delivery guides must be issued: the sender's delivery guide and the carrier's +delivery guide. + +Direct submission to SUNAT +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The creation of the |GRE| delivery guide in Odoo **must** be sent directly to the |SUNAT|, +regardless of the electronic document provider: IAP, Digiflow, or |SUNAT|. + +Required information +~~~~~~~~~~~~~~~~~~~~ + +Version 2.0 of the electronic delivery guide requires additional information on the general +configuration, vehicles, contacts, and products. In the general configuration, it is necessary to +add new credentials that you can retrieve from the |SUNAT| portal. + +Cancellations +~~~~~~~~~~~~~ + +**Both** the sender and the carrier can cancel the electronic waybill as long as the following +conditions are met: + +- The shipment has not been initiated. +- If the shipment has been initiated, the receiver **must** be changed before reaching the final + destination. + +.. important:: + The |SUNAT| no longer uses the term "Anula", but now uses the term "Dar de baja" for + cancellations. + +Testing +~~~~~~~ + +The |SUNAT| does not support a test environment. This means that any delivery guides that were +generated by mistake **will** be sent to the |SUNAT|. + +If, by mistake, the waybill was created in this environment, it is necessary to delete it from the +|SUNAT| portal. + +Configuration +~~~~~~~~~~~~~ + +.. important:: + - Electronic sender's |GRE| is currently the only supported type of waybill in Odoo. + - The delivery guide is dependent on the Odoo *Inventory* app, the :guilabel:`l10n_pe_edi` and + :guilabel:`l10n_pe` modules. + - A second user **must** be added for the creation of electronic documents. + +After following the steps to configure the :ref:`electronic invoicing ` +and the :ref:`master data `, :ref:`install ` the +:guilabel:`Peruvian - Electronic Delivery Note 2.0` module (`l10n_pe_edi_stock_20`). + +Next, you need to retrieve the *client ID* and *client secret* from |SUNAT|. To do so, follow the +`manual de servicios web plataforma nueva GRE +`_. + +.. note:: + In the |SUNAT| portal, it is important to have the correct access rights enabled, as they may + differ from the user set for electronic invoicing. + +These credentials should be used to configure the delivery guide general settings from +:menuselection:`Accounting --> Configuration --> Settings --> Peruvian Electronic Invoicing`. + +.. image:: peru/gre-fields-example.png + :alt: Example for the SUNAT Delivery Guide API section configuration. + +.. note:: + It is required to follow the format `RUC + UsuarioSol` (e.g., `20557912879SOLUSER`) for the + :guilabel:`Guide SOL User` field, depending on the user selected when generating the |GRE| API + credentials in the |SUNAT| portal. + +Operator +******** + +The *operator* is the vehicle's driver in cases where the delivery guide is through *private* +transport. + +To create a new operator, navigate to :menuselection:`Contacts --> Create` and fill out the contact +information. + +First, select :guilabel:`Individual` as the :guilabel:`Company Type`. Then, add the +:guilabel:`Operator License` in the :guilabel:`Accounting` tab of the contact form. + +For the customer address, make sure the following fields are complete: + +- :guilabel:`District` +- :guilabel:`Tax ID` (:guilabel:`DNI`/:guilabel:`RUC`) +- :guilabel:`Tax ID Number` + +.. image:: peru/operator-configuration.png + :alt: Individual type operator configurations in the Contact form. + +Carrier +******* + +The *carrier* is used when the delivery guide is through *public* transport. + +To create a new carrier, navigate to :menuselection:`Contacts --> Create` and fill out the contact +information. + +First, select :guilabel:`Company` as the :guilabel:`Company Type`. Then, add the :guilabel:`MTC +Registration Number`, :guilabel:`Authorization Issuing Entity`, and the :guilabel:`Authorization +Number`. + +For the company address, make sure the following fields are complete: + +- :guilabel:`District` +- :guilabel:`Tax ID` (:guilabel:`DNI`/:guilabel:`RUC`) +- :guilabel:`Tax ID Number` + +.. image:: peru/company-operator-configuration.png + :alt: Company type operator configurations in the Contact form. + +Vehicles +******** + +To configure the available vehicles, navigate to :menuselection:`Inventory --> Configuration --> +Vehicles` and fill in the vehicle form with the information needed for the vehicle: + +- :guilabel:`Vehicle Name` +- :guilabel:`License Plate` +- :guilabel:`Is M1 or L?` +- :guilabel:`Special Authorization Issuing Entity` +- :guilabel:`Authorization Number` +- :guilabel:`Default Operator` +- :guilabel:`Company` + +.. important:: + It is important to check the :guilabel:`Is M1 or L?` checkbox if the vehicle has fewer than four + wheels or fewer than eight seats. + +.. image:: peru/vehicle-not-m1-or-l-pe.png + :alt: Vehicle not selected as an M1 or L type with extra fields shown. + +Products +******** + +To configure the available products, navigate to :menuselection:`Inventory --> Products` and open +the product to be configured. + +Make sure that the applicable information in the product form is fully configured. The +:guilabel:`Partida Arancelaria` (Tariff Item) field needs to be completed. + +Generating a GRE +~~~~~~~~~~~~~~~~ + +Once the delivery from inventory is created during the sales workflow, make sure you complete the +|GRE| fields on the top-right section of the transfer form for the fields: + +- :guilabel:`Transport Type` +- :guilabel:`Reason for Transfer` +- :guilabel:`Departure start date` + +It is also required to complete the :guilabel:`Vehicle` and :guilabel:`Operator` fields under the +:guilabel:`Guia de Remision PE` tab. + +The delivery transfer has to be marked as *Done* for the :guilabel:`Generar Guia de Remision` button +to appear on the left menu of the transfer form. + +.. image:: peru/generate-gre-transferview.png + :alt: Generar Guia de Remision button on a transfer form in the Done stage. + +Once the transfer form is correctly validated by |SUNAT|, the generated XML file becomes available +in the chatter. You can now print the delivery slip that shows the transfer details and the QR +code validated by |SUNAT|. + +.. image:: peru/gre-delivery-slip.png + :alt: Transfer details and QR code on generated delivery slip. + +Common errors +~~~~~~~~~~~~~ + +- `Diferente prefijo para productos (T001 en algunos, T002 en otros)` + + At the moment, Odoo does not support the automation of prefixes for products. This can be done + manually for each product output. This can also be done for non-storable products. However, keep + in mind that there will be no traceability. +- `2325 - GrossWeightMeasure - El dato no cumple con el formato establecido "Hace falta el campo" + "Peso"" en el producto` + + This error occurs when the weight on the product is set as `0.00`. To fix this, you need to cancel + the waybill and recreate it. Make sure that you fix the weight on the product before creating the + new waybill, or it will result in the same error. +- `JSONDecodeError: Expecting value: line 1 column 1 (char 0) when creating a Delivery Guide` + + This error is typically generated due to SOL user issues. Verify the user's connection with the + |SUNAT|; the SOL user must be established with the company RUT + user ID. For example + `2012188549JOHNSMITH`. +- `El número de documento relacionado al traslado de mercancía no cumple con el formato establecido: + error: documento relacionado` + + The *Related Document Type* and *Related Document Number* fields only apply to invoices and + receipts. +- `400 Client error: Bad Request for URL` + + This error is not solvable from Odoo; it is advised you reach out to the |SUNAT| and verify the + user. It may be necessary to create a new user. + +- `Invalid content was found starting with element 'cac:BuyerCustomerParty'` + + This error occurs when the transfer reason is set as *other*. Please select another option. + Following to the official documentation of the |SUNAT|'s waybill guide, the transfer reasons *03 + (sale with shipment to third party)* or *12 (others)* does not work in Odoo, since you should not + have an empty or blank customer. +- `Duda cliente: consumo de créditos IAP al usar GRE 2.0` + + For live clients using IAP, no credit is consumed (in theory) because it does not go through the + OSE, i.e., these documents are directly sent to the |SUNAT|. +- `Errores con formato credenciales GRE 2.0 (traceback error)` + + Odoo currently throws an error with a traceback instead of a message that the credentials are not + correctly configured in the database. If this occurs on your database, please verify your + credentials. diff --git a/content/applications/finance/fiscal_localizations/peru/company-operator-configuration.png b/content/applications/finance/fiscal_localizations/peru/company-operator-configuration.png new file mode 100644 index 000000000..b510c45b8 Binary files /dev/null and b/content/applications/finance/fiscal_localizations/peru/company-operator-configuration.png differ diff --git a/content/applications/finance/fiscal_localizations/peru/configuration-api-sunat-confirmation.png b/content/applications/finance/fiscal_localizations/peru/configuration-api-sunat-confirmation.png new file mode 100644 index 000000000..4b1a133e4 Binary files /dev/null and b/content/applications/finance/fiscal_localizations/peru/configuration-api-sunat-confirmation.png differ diff --git a/content/applications/finance/fiscal_localizations/peru/configuration-api-sunat.png b/content/applications/finance/fiscal_localizations/peru/configuration-api-sunat.png new file mode 100644 index 000000000..ee3616084 Binary files /dev/null and b/content/applications/finance/fiscal_localizations/peru/configuration-api-sunat.png differ diff --git a/content/applications/finance/fiscal_localizations/peru/generate-gre-transferview.png b/content/applications/finance/fiscal_localizations/peru/generate-gre-transferview.png new file mode 100644 index 000000000..74b88560b Binary files /dev/null and b/content/applications/finance/fiscal_localizations/peru/generate-gre-transferview.png differ diff --git a/content/applications/finance/fiscal_localizations/peru/gre-delivery-slip.png b/content/applications/finance/fiscal_localizations/peru/gre-delivery-slip.png new file mode 100644 index 000000000..5ce08e3b1 Binary files /dev/null and b/content/applications/finance/fiscal_localizations/peru/gre-delivery-slip.png differ diff --git a/content/applications/finance/fiscal_localizations/peru/gre-fields-example.png b/content/applications/finance/fiscal_localizations/peru/gre-fields-example.png new file mode 100644 index 000000000..82da7c373 Binary files /dev/null and b/content/applications/finance/fiscal_localizations/peru/gre-fields-example.png differ diff --git a/content/applications/finance/fiscal_localizations/peru/menu-api-sunat.png b/content/applications/finance/fiscal_localizations/peru/menu-api-sunat.png new file mode 100644 index 000000000..f2b349dc5 Binary files /dev/null and b/content/applications/finance/fiscal_localizations/peru/menu-api-sunat.png differ diff --git a/content/applications/finance/fiscal_localizations/peru/operator-configuration.png b/content/applications/finance/fiscal_localizations/peru/operator-configuration.png new file mode 100644 index 000000000..b48ff6582 Binary files /dev/null and b/content/applications/finance/fiscal_localizations/peru/operator-configuration.png differ diff --git a/content/applications/finance/fiscal_localizations/peru/vehicle-not-m1-or-l-pe.png b/content/applications/finance/fiscal_localizations/peru/vehicle-not-m1-or-l-pe.png new file mode 100644 index 000000000..e89fc4bca Binary files /dev/null and b/content/applications/finance/fiscal_localizations/peru/vehicle-not-m1-or-l-pe.png differ