Compare commits
24 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7723d2e56e | |||
| 4b6e34efc5 | |||
| 7368ad782b | |||
| c4bfeb9cae | |||
| f4c16bc722 | |||
| aa5d9911b3 | |||
| 5c72ee6f63 | |||
| 123ea24f91 | |||
| 8495357d6e | |||
| 52d8565f02 | |||
| b6e6515fbf | |||
| 49b75e3213 | |||
| bb69f01e71 | |||
| c7fb228d91 | |||
| 75f0258d19 | |||
| 7e375cfd54 | |||
| 853583b0ce | |||
| d7c0cdddbf | |||
| be14393043 | |||
| 6ad97e2fea | |||
| 27acb59d79 | |||
| a94c8ed498 | |||
| b9e82b8c29 | |||
| 7d4f6dc77a |
@@ -120,6 +120,8 @@ You can edit the currency used to enter the transactions.
|
||||
.. seealso::
|
||||
:doc:`get_started/multi_currency`
|
||||
|
||||
.. _accounting/bank/account-number:
|
||||
|
||||
Account number
|
||||
--------------
|
||||
|
||||
|
||||
@@ -44,22 +44,31 @@ goods and services. Make sure the following fields are appropriately completed:
|
||||
upon confirmation.
|
||||
- :guilabel:`Due Date` or :doc:`payment terms <customer_invoices/payment_terms>`: To specify when
|
||||
the customer has to pay the invoice.
|
||||
- :guilabel:`Journal`: Is automatically set and can be changed if needed.
|
||||
- :doc:`Currency <get_started/multi_currency>`
|
||||
- :guilabel:`Product`: Click :guilabel:`Add a line` to add a product.
|
||||
- :guilabel:`Journal`: Automatically set and can be changed if needed.
|
||||
- :doc:`Currency <get_started/multi_currency>`. If the invoice's currency differs from the
|
||||
company's currency, the currency exchange rate is automatically displayed.
|
||||
|
||||
In the :guilabel:`Invoice Lines` tab:
|
||||
|
||||
- :guilabel:`Product`: Click :guilabel:`Add a line`, then search for and select the product.
|
||||
- :guilabel:`Quantity`
|
||||
- :guilabel:`Price`
|
||||
- :doc:`Taxes <taxes>` (if applicable)
|
||||
|
||||
To access the product catalog and view all items in an organized display, click :doc:`Catalog
|
||||
</applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/product_catalog>`.
|
||||
When the products and quantities are selected, click :guilabel:`Back to Invoice` to return to the
|
||||
invoice; the selected catalog items will appear in the invoice lines.
|
||||
|
||||
.. tip::
|
||||
To display the total amount of the invoice in words, go to :menuselection:`Accounting -->
|
||||
Configuration --> Settings` and activate the :guilabel:`Total amount of invoice in letters`
|
||||
option.
|
||||
|
||||
The :guilabel:`Journal Items` tab displays the accounting entries created.
|
||||
Additional invoice information such as the :guilabel:`Customer Reference`, :doc:`Fiscal Positions
|
||||
<taxes/fiscal_positions>`, :doc:`Incoterms <customer_invoices/incoterms>`, and more can be added or
|
||||
modified in the :guilabel:`Other Info` tab.
|
||||
The :guilabel:`Journal Items` tab displays the accounting entries created. Additional invoice
|
||||
information such as the :guilabel:`Customer Reference`, :guilabel:`Payment Reference`, :doc:`Fiscal
|
||||
Positions <taxes/fiscal_positions>`, :doc:`Incoterms <customer_invoices/incoterms>`, and more can be
|
||||
added or modified in the :guilabel:`Other Info` tab.
|
||||
|
||||
.. note::
|
||||
Odoo initially creates invoices in :guilabel:`Draft` status. Draft invoices have no accounting
|
||||
@@ -73,9 +82,9 @@ modified in the :guilabel:`Other Info` tab.
|
||||
Invoice confirmation
|
||||
====================
|
||||
|
||||
Click :guilabel:`Confirm` when the document is completed. The document's status changes to
|
||||
Click :guilabel:`Confirm` when the invoice is completed. The invoice's status changes to
|
||||
:guilabel:`Posted`, and a journal entry is generated based on the invoice configuration. On
|
||||
confirmation, Odoo assigns each document a unique number from a defined
|
||||
confirmation, Odoo assigns each invoice a unique number from a defined
|
||||
:ref:`sequence <accounting/invoice/sequence>`.
|
||||
|
||||
.. note::
|
||||
@@ -89,16 +98,56 @@ confirmation, Odoo assigns each document a unique number from a defined
|
||||
Invoice sending
|
||||
===============
|
||||
|
||||
To send the invoice to the customer, click :guilabel:`Send & Print`. A :guilabel:`Configure your
|
||||
document layout` pop-up window will appear if a :ref:`default invoice layout
|
||||
<studio/pdf-reports/default-layout>` hasn't been customized. Then, select how to send this invoice
|
||||
to the customer in the :guilabel:`Send` window.
|
||||
To set a preferred :guilabel:`Invoice sending` method for a customer, go to
|
||||
:menuselection:`Accounting --> Customers --> Customers` and select the customer. In the
|
||||
:guilabel:`Accounting` tab of the contact form, select the preferred :guilabel:`Invoice sending`
|
||||
method in the :guilabel:`Customer Invoices` section.
|
||||
|
||||
To send and print multiple invoices, go to :menuselection:`Accounting --> Customers --> Invoices`
|
||||
and select them. Then click the :icon:`fa-cog` :guilabel:`Actions` menu and select
|
||||
:guilabel:`Send & Print`. A banner will appear on the selected invoices to indicate they are part of
|
||||
an ongoing send and print batch. This helps prevent the process from being triggered manually again,
|
||||
as it may take some time to complete for exceptionally large batches.
|
||||
.. note::
|
||||
Sending letters in Odoo requires :doc:`In-App Purchase (IAP) <../../essentials/in_app_purchase>`
|
||||
credit or tokens.
|
||||
|
||||
To send the invoice to the customer, navigate back to the invoice record and follow these steps:
|
||||
|
||||
#. Click :guilabel:`Print & Send`.
|
||||
#. If the :ref:`default invoice layout <studio/pdf-reports/default-layout>` has not been customized
|
||||
yet, a :guilabel:`Configure your document layout` pop-up window appears. Configure the layout and
|
||||
click :guilabel:`Continue`.
|
||||
|
||||
.. note::
|
||||
- The document layout can be changed at any time in the general settings.
|
||||
- To add a QR code for banking app payments to the invoice, enable the :guilabel:`QR Code`
|
||||
option in the :guilabel:`Configure Your Document Layout` window. To modify this option, go
|
||||
to :menuselection:`Accounting --> Configuration --> Settings`, scroll down to the
|
||||
:guilabel:`Customer Payments` section, and enable/disable the :guilabel:`QR Codes` option.
|
||||
|
||||
#. In the :guilabel:`Print & Send` window:
|
||||
|
||||
- If a preferred :guilabel:`Invoice sending` method was set in the contact form, it is selected
|
||||
by default. Select another one if needed.
|
||||
- If no preferred :guilabel:`Invoice sending` method was set in the contact form, select the
|
||||
method to use for sending the invoice to the customer.
|
||||
|
||||
#. Click :guilabel:`Print & Send` if the :guilabel:`by Email` option is selected, or click
|
||||
:guilabel:`Print`.
|
||||
|
||||
.. _accounting/invoice/sending-multiple-invoices:
|
||||
|
||||
Sending multiple invoices
|
||||
-------------------------
|
||||
|
||||
To send and print multiple invoices, go to :menuselection:`Accounting --> Customers --> Invoices`,
|
||||
select them in the :guilabel:`Invoices` list view and click :guilabel:`Print & Send`. The
|
||||
:guilabel:`Print & Send` window displays the selected invoice sending methods based on the preferred
|
||||
method set.
|
||||
|
||||
A banner is added to the selected invoices to indicate they are part of an ongoing send and print
|
||||
batch. This helps prevent the process from being triggered manually again, as it may take some time
|
||||
to complete for exceptionally large batches.
|
||||
|
||||
To check all invoices that have not yet been sent, go to :menuselection:`Accounting --> Customers
|
||||
--> Invoices`. In the :guilabel:`Invoices` list view, click into the search bar and filter on
|
||||
:guilabel:`Not Sent`.
|
||||
|
||||
.. _accounting/invoice/paymentandreconciliation:
|
||||
|
||||
@@ -128,11 +177,11 @@ same customer, the actions are performed on the most overdue invoice.
|
||||
Sequence
|
||||
========
|
||||
|
||||
The sequence that Odoo assigns to each document is a unique number made up of a prefix and a number.
|
||||
The prefix combines the journal code and the entry date and is used to group entries by period. The
|
||||
number is unique for each period and is used to identify the entry. The default sequence on customer
|
||||
invoices is INV/YYYY/number. In some specific cases,
|
||||
:ref:`resequencing <accounting/invoice/resequencing>` invoices might be necessary.
|
||||
Odoo assigns each document a unique sequence made up of a prefix and a number. The prefix combines
|
||||
the journal code and the entry date and groups entries by period. The number is unique for each
|
||||
period and is used to identify the entry. The default sequence on customer invoices is
|
||||
INV/YYYY/number. In some specific cases, :ref:`resequencing <accounting/invoice/resequencing>`
|
||||
invoices might be necessary.
|
||||
|
||||
.. _accounting/invoice/resequencing:
|
||||
|
||||
|
||||
@@ -15,10 +15,15 @@ one of the application of EDI.
|
||||
|
||||
Odoo supports e-invoicing in many countries. Refer to the country's page for more details:
|
||||
|
||||
- :doc:`Argentina <electronic_invoicing/argentina>`
|
||||
- :doc:`Austria <electronic_invoicing/austria>`
|
||||
- :doc:`Belgium <electronic_invoicing/belgium>`
|
||||
- :doc:`Brazil <electronic_invoicing/brazil>`
|
||||
- :doc:`Chile <electronic_invoicing/chile>`
|
||||
- :doc:`Colombia <electronic_invoicing/colombia>`
|
||||
- :doc:`Croatia <electronic_invoicing/croatia>`
|
||||
- :doc:`Denmark <electronic_invoicing/denmark>`
|
||||
- :doc:`Ecuador <electronic_invoicing/ecuador>`
|
||||
- :doc:`Estonia <electronic_invoicing/estonia>`
|
||||
- :doc:`Finland <electronic_invoicing/finland>`
|
||||
- :doc:`France <electronic_invoicing/france>`
|
||||
@@ -29,14 +34,17 @@ Odoo supports e-invoicing in many countries. Refer to the country's page for mor
|
||||
- :doc:`Latvia <electronic_invoicing/latvia>`
|
||||
- :doc:`Lithuania <electronic_invoicing/lithuania>`
|
||||
- :doc:`Luxembourg <electronic_invoicing/luxembourg>`
|
||||
- :doc:`Mexico <electronic_invoicing/mexico>`
|
||||
- :doc:`Netherlands <electronic_invoicing/netherlands>`
|
||||
- :doc:`Norway <electronic_invoicing/norway>`
|
||||
- :doc:`Peru <electronic_invoicing/peru>`
|
||||
- :doc:`Poland <electronic_invoicing/poland>`
|
||||
- :doc:`Portugal <electronic_invoicing/portugal>`
|
||||
- :doc:`Romania <electronic_invoicing/romania>`
|
||||
- :doc:`Slovenia <electronic_invoicing/slovenia>`
|
||||
- :doc:`Spain <electronic_invoicing/spain>`
|
||||
- :doc:`Spain - Basque Country <electronic_invoicing/basque_country>`
|
||||
- :doc:`Uruguay <electronic_invoicing/uruguay>`
|
||||
|
||||
.. seealso::
|
||||
:doc:`Fiscal localizations documentation <../../fiscal_localizations>`
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
:orphan:
|
||||
|
||||
======================================
|
||||
Odoo electronic invoicing in Argentina
|
||||
======================================
|
||||
|
||||
Odoo Invoicing is your trusted partner for safe, efficient, and legally compliant e-invoicing
|
||||
solutions tailored to meet Argentina's regulatory standards and compatible with the requirements set
|
||||
forth by the `Administración Federal de Ingresos Públicos (AFIP) <https://www.afip.gob.ar/>`_.
|
||||
|
||||
Legal framework for e-invoicing in Argentina
|
||||
============================================
|
||||
|
||||
In Argentina, e-invoicing is regulated by the :abbr:`AFIP (Administración Federal de Ingresos
|
||||
Públicos)` and is mandatory for most businesses to ensure tax compliance and transparency. The
|
||||
primary regulations governing e-invoicing include:
|
||||
|
||||
- `General Resolution No. 4290/2018 <https://biblioteca.afip.gob.ar/search/query/norma.aspx?p=t:RAG|n:4290|o:3|a:2018|f:02/08/2018>`_
|
||||
which establishes the mandatory use of electronic invoices for specific economic activities and
|
||||
turnover thresholds.
|
||||
- Fiscal code regulations: Requires electronic invoices for all VAT-registered businesses, including
|
||||
B2B, :abbr:`B2G (business-to-government)`, and B2C transactions.
|
||||
- Implementation of :abbr:`CAE (Código de Autorización Electrónico)`: Every electronic invoice must
|
||||
include a :abbr:`CAE (Código de Autorización Electrónico)` issued by the :abbr:`AFIP
|
||||
(Administración Federal de Ingresos Públicos)`, ensuring its validity and authenticity.
|
||||
|
||||
Compliance with Argentinian e-invoicing regulations
|
||||
===================================================
|
||||
|
||||
Odoo Invoicing simplifies the process of adhering to Argentina's e-invoicing regulations, offering
|
||||
features designed to ensure compliance:
|
||||
|
||||
- **Supported formats**: Odoo supports Argentina's authorized e-invoice formats, including :abbr:`FE
|
||||
(Factura Electrónica)` with :abbr:`AFIP (Administración Federal de Ingresos Públicos)`-compliant
|
||||
digital validation, XML with :abbr:`CAE (Código de Autorización Electrónico)` authorization for
|
||||
real-time integration with :abbr:`AFIP (Administración Federal de Ingresos Públicos)`, and
|
||||
digitally signed PDF invoices featuring :abbr:`CAE (Código de Autorización Electrónico)` and
|
||||
QR codes for secure validation.
|
||||
- **Secure storage and retrieval**: Complying with Argentina’s ten-year storage requirement, Odoo
|
||||
provides tamper-proof archiving and easy retrieval for audits or tax inspections.
|
||||
- **Automatic VAT calculation and reporting**: Odoo ensures compliance with Argentina's VAT
|
||||
regulations by automatically calculating VAT, incorporating it into invoices, and adhering to
|
||||
legal reporting requirements for accurate tax submissions.
|
||||
|
||||
.. seealso::
|
||||
:doc:`Argentinian fiscal localization documentation <../../../fiscal_localizations/argentina>`
|
||||
|
||||
.. admonition:: Disclaimer
|
||||
|
||||
This page provides a general overview of Argentine e-invoicing laws and how Odoo’s invoicing
|
||||
module supports compliance with AFIP regulations and the Fiscal Code. It is not intended as legal
|
||||
advice. We recommend consulting with a tax advisor or legal professional familiar with
|
||||
Argentinian e-invoicing regulations to ensure compliance tailored to your specific business
|
||||
needs.
|
||||
@@ -0,0 +1,53 @@
|
||||
:orphan:
|
||||
|
||||
===================================
|
||||
Odoo electronic invoicing in Brazil
|
||||
===================================
|
||||
|
||||
Odoo Invoicing is your trusted partner for safe, efficient, and legally compliant e-invoicing
|
||||
solutions tailored to meet Brazil's regulatory standards and compatible with the requirements set
|
||||
forth by the `Secretaria da Fazenda (SEFAZ) <https://www.gov.br/receitafederal/pt-br>`_.
|
||||
|
||||
Legal framework for e-invoicing in Brazil
|
||||
=========================================
|
||||
|
||||
In Brazil, e-invoicing is highly regulated and mandatory for most businesses to ensure tax
|
||||
compliance and transparency. The key regulations governing e-invoicing include:
|
||||
|
||||
- :abbr:`NF-e (Nota Fiscal Eletrônica)`: A mandatory e-invoice for goods and services used in B2B
|
||||
and :abbr:`B2G (business-to-government)` transactions.
|
||||
- :abbr:`CT-e (Conhecimento de Transporte Eletrônico)`: Specific to freight and logistics services.
|
||||
- :abbr:`NFS-e (Nota Fiscal de Serviços Eletrônica)`: Issued for service-based transactions, with
|
||||
implementation varying by municipality.
|
||||
- Integration with :abbr:`SEFAZ (Secretaria da Fazenda)`: Every electronic invoice must be
|
||||
authorized by :abbr:`SEFAZ (Secretaria da Fazenda)` and issued with a unique authorization code
|
||||
(Autorização de Uso).
|
||||
|
||||
Compliance with Brazilian e-invoicing regulations
|
||||
=================================================
|
||||
|
||||
Odoo Invoicing simplifies the process of adhering to Brazil’s complex e-invoicing regulations,
|
||||
offering features designed to ensure compliance:
|
||||
|
||||
- **Supported formats**: Odoo supports Brazil's authorized e-invoice formats, including :abbr:`NF-e
|
||||
(Nota Fiscal Eletrônica)` for goods and services compliant with :abbr:`SEFAZ (Secretaria da
|
||||
Fazenda)`, :abbr:`NFS-e (Nota Fiscal de Serviços Eletrônica)` customizable for municipal
|
||||
requirements, :abbr:`CT-e (Conhecimento de Transporte Eletrônico)` for logistics and
|
||||
transportation, and digital PDF invoices with :abbr:`SEFAZ (Secretaria da Fazenda)` authorization
|
||||
codes and QR codes.
|
||||
- **Secure storage and retrieval**: Complying with Brazil's five-year storage requirement, Odoo
|
||||
offers tamper-proof archiving for easy retrieval during audits or inspections.
|
||||
- **Automatic tax calculation and reporting**: Odoo automates tax calculations for ICMS, IPI, and
|
||||
ISS, ensuring compliance with regional tax rules and generating reports compatible with
|
||||
:abbr:`SEFAZ (Secretaria da Fazenda)` and municipal requirements.
|
||||
|
||||
.. seealso::
|
||||
:doc:`Brazilian fiscal localization documentation <../../../fiscal_localizations/brazil>`
|
||||
|
||||
.. admonition:: Disclaimer
|
||||
|
||||
This page provides a general overview of Brazilian e-invoicing laws and how Odoo’s invoicing
|
||||
module supports compliance with :abbr:`SEFAZ (Secretaria da Fazenda)` regulations. It is not
|
||||
intended as legal advice. We recommend consulting with a tax advisor or legal professional
|
||||
familiar with Brazilian e-invoicing regulations to ensure compliance tailored to your specific
|
||||
business needs.
|
||||
@@ -0,0 +1,51 @@
|
||||
:orphan:
|
||||
|
||||
==================================
|
||||
Odoo electronic invoicing in Chile
|
||||
==================================
|
||||
|
||||
Odoo Invoicing is your trusted partner for safe, efficient, and legally compliant e-invoicing
|
||||
solutions tailored to meet Chile's regulatory requirements and compatible with standards set by the
|
||||
`Servicio de Impuestos Internos (SII) <https://homer.sii.cl/>`_.
|
||||
|
||||
Legal framework for e-invoicing in Chile
|
||||
========================================
|
||||
|
||||
Chile is a pioneer in mandatory electronic invoicing, with comprehensive regulations to ensure tax
|
||||
compliance and enhance transparency. Key elements include:
|
||||
|
||||
- **Factura Electrónica**: Mandatory for most businesses to issue invoices digitally through the
|
||||
:abbr:`SII (Servicio de Impuestos Internos)`'s system.
|
||||
- **Boleta Electrónica**: Required for retail transactions to report sales and tax information.
|
||||
- **Guía de Despacho Electrónica**: Necessary for tracking the transport of goods.
|
||||
- **Integration with SII**: All electronic invoices must be validated by the :abbr:`SII (Servicio
|
||||
de Impuestos Internos)`, assigned a unique Folio authorization code, and reported for tax
|
||||
purposes.
|
||||
|
||||
Compliance with Chilean e-invoicing regulations
|
||||
===============================================
|
||||
|
||||
Odoo Invoicing simplifies adherence to Chile's e-invoicing requirements with features designed to
|
||||
ensure compliance:
|
||||
|
||||
- **Supported formats**: Odoo supports all major Chilean e-invoice formats, including Factura
|
||||
Electrónica, Boleta Electrónica, and Guía de Despacho Electrónica, ensuring :abbr:`SII (Servicio
|
||||
de Impuestos Internos)` compatibility with digital validation and Folio assignment.
|
||||
- **Integration with SII**: Odoo seamlessly connects with :abbr:`SII (Servicio de Impuestos
|
||||
Internos)`'s systems, automating invoice submission and ensuring real-time validation for
|
||||
compliant issuance.
|
||||
- **Secure storage and retrieval**: Complying with Chile's mandatory storage period of six years,
|
||||
Odoo provides tamper-proof archiving for invoices, enabling easy access for audits or tax
|
||||
inspections.
|
||||
- **Automatic tax calculation and reporting**: Odoo automates calculations for VAT (IVA) and other
|
||||
applicable taxes, ensuring accurate invoicing and adherence to Chile's tax reporting standards.
|
||||
|
||||
.. seealso::
|
||||
:doc:`Chilean fiscal localization documentation <../../../fiscal_localizations/chile>`
|
||||
|
||||
.. admonition:: Disclaimer
|
||||
|
||||
This page provides a general overview of Chilean e-invoicing laws and how Odoo supports
|
||||
compliance with :abbr:`SII (Servicio de Impuestos Internos)` regulations. It is not intended as
|
||||
legal or tax advice. We recommend consulting a tax advisor or legal professional familiar with
|
||||
Chilean e-invoicing regulations to ensure compliance tailored to your specific business needs.
|
||||
@@ -0,0 +1,51 @@
|
||||
:orphan:
|
||||
|
||||
=====================================
|
||||
Odoo electronic invoicing in Colombia
|
||||
=====================================
|
||||
|
||||
Odoo Invoicing is your trusted partner for safe, efficient, and legally compliant e-invoicing
|
||||
solutions tailored to meet Colombia's regulatory requirements and fully compatible with the
|
||||
guidelines established by the `Dirección de Impuestos y Aduanas Nacionales (DIAN)
|
||||
<https://www.dian.gov.co/>`_.
|
||||
|
||||
Legal framework for e-invoicing in Colombia
|
||||
===========================================
|
||||
|
||||
Colombia has implemented mandatory e-invoicing for most businesses to enhance tax compliance and
|
||||
improve transparency. Key elements include:
|
||||
|
||||
- **Factura Electrónica**: Mandatory for B2B, B2C, and :abbr:`B2G (business-to-government)`
|
||||
transactions, requiring compliance with :abbr:`DIAN (Dirección de Impuestos y Aduanas
|
||||
Nacionales)`'s technical specifications.
|
||||
- **Integration with DIAN**: All electronic invoices must be submitted to :abbr:`DIAN (Dirección de
|
||||
Impuestos y Aduanas Nacionales)` for validation, where they are assigned a unique :abbr:`CUFE
|
||||
(Código Único de Factura Electrónica)` authorization code.
|
||||
- **Adoption of XML Standards**: Colombian e-invoicing uses XML as the standard format for
|
||||
electronic invoices, ensuring interoperability and standardized reporting.
|
||||
|
||||
Compliance with Colombian e-invoicing regulations
|
||||
=================================================
|
||||
|
||||
Odoo Invoicing simplifies the complexities of e-invoicing compliance in Colombia, offering tailored
|
||||
features:
|
||||
|
||||
- **Supported formats**: Odoo supports Factura Electrónica in :abbr:`DIAN (Dirección de Impuestos y
|
||||
Aduanas Nacionales)`-compliant XML formats, including legally required :abbr:`CUFE (Código Único
|
||||
de Factura Electrónica)` codes and additional fields for B2B, B2C, and :abbr:`B2G
|
||||
(business-to-government)` transactions.
|
||||
- **Secure storage and retrieval**: In compliance with Colombia's six-year mandatory storage
|
||||
requirement, Odoo provides tamper-proof invoice archiving, ensuring easy access for audits or
|
||||
inspections.
|
||||
- **Automatic tax calculation and reporting**: Odoo automates tax calculations for VAT (IVA) and
|
||||
other applicable taxes, ensuring accuracy and compliance with DIAN's tax reporting standards.
|
||||
|
||||
.. seealso::
|
||||
:doc:`Colombian fiscal localization documentation <../../../fiscal_localizations/colombia>`
|
||||
|
||||
.. admonition:: Disclaimer
|
||||
|
||||
This page provides a general overview of Colombian e-invoicing regulations and how Odoo supports
|
||||
compliance with DIAN requirements. It is not intended as legal or tax advice. We recommend
|
||||
consulting with a tax advisor or legal professional familiar with Colombian e-invoicing
|
||||
regulations to ensure compliance tailored to your specific business needs.
|
||||
@@ -0,0 +1,50 @@
|
||||
:orphan:
|
||||
|
||||
====================================
|
||||
Odoo electronic invoicing in Ecuador
|
||||
====================================
|
||||
|
||||
Odoo Invoicing is your trusted partner for safe, efficient, and legally compliant e-invoicing
|
||||
solutions tailored to meet Ecuador's regulatory requirements and fully compatible with the
|
||||
guidelines established by the `Servicio de Rentas Internas (SRI)
|
||||
<https://www.sri.gob.ec/web/intersri/home>`_.
|
||||
|
||||
Legal framework for e-invoicing in Ecuador
|
||||
==========================================
|
||||
|
||||
Ecuador has implemented mandatory electronic invoicing for most businesses aimed to enhance tax
|
||||
compliance and transparency. Key elements include:
|
||||
|
||||
- **Factura Electrónica**: All businesses must issue electronic invoices in XML format for B2B, B2C,
|
||||
and :abbr:`B2G (business-to-government)` transactions, ensuring compliance with :abbr:`SRI
|
||||
(Servicio de Rentas Internas)`'s technical specifications.
|
||||
- **Transmission Requirements**: E-invoices must be transmitted to the SRI within 24 hours of
|
||||
issuance.
|
||||
- **Record Storage**: E-invoices, including the :abbr:`SRI (Servicio de Rentas Internas)`'s
|
||||
acceptance messages, must be stored for a minimum of seven years.
|
||||
|
||||
Compliance with Ecuadorian e-invoicing regulations
|
||||
==================================================
|
||||
|
||||
Odoo Invoicing simplifies compliance with Ecuador's e-invoicing requirements by offering tailored
|
||||
features:
|
||||
|
||||
- **Supported formats**: Odoo supports the Ecuadorian e-invoice format (XML) and ensures
|
||||
compatibility with the :abbr:`SRI (Servicio de Rentas Internas)`'s system for validation and
|
||||
authorization, including the necessary digital signature.
|
||||
- **Secure storage and retrieval**: In compliance with Ecuador's seven-year storage requirement,
|
||||
Odoo offers tamper-proof archiving so that invoices can be easily accessed during audits or
|
||||
inspections.
|
||||
- **Automatic tax calculation and reporting**: Odoo automates tax calculations for VAT (IVA) and
|
||||
other applicable taxes, ensuring accurate invoicing and adherence to Ecuador's tax reporting
|
||||
standards.
|
||||
|
||||
.. seealso::
|
||||
:doc:`Ecuadorian fiscal localization documentation <../../../fiscal_localizations/ecuador>`
|
||||
|
||||
.. admonition:: Disclaimer
|
||||
|
||||
This page provides a general overview of Ecuadorian e-invoicing regulations and how Odoo supports
|
||||
compliance with SRI requirements. It is not intended as legal or tax advice. We recommend
|
||||
consulting with a tax advisor or legal professional familiar with Ecuador's e-invoicing
|
||||
regulations to ensure compliance tailored to your specific business needs.
|
||||
@@ -0,0 +1,57 @@
|
||||
:orphan:
|
||||
|
||||
===================================
|
||||
Odoo electronic invoicing in Mexico
|
||||
===================================
|
||||
|
||||
Odoo Invoicing is your trusted partner for safe, efficient, and legally compliant e-invoicing
|
||||
solutions tailored to meet Mexico's regulatory requirements and fully compatible with the guidelines
|
||||
established by the :abbr:`SAT (Servicio de Administración Tributaria)`.
|
||||
|
||||
Legal framework for e-invoicing in Mexico
|
||||
=========================================
|
||||
|
||||
Mexico has one of the most advanced e-invoicing systems globally, with electronic invoicing
|
||||
:abbr:`CFDI (Comprobante Fiscal Digital por Internet)` being mandatory for most taxpayers. Key
|
||||
elements include:
|
||||
|
||||
- **CFDI**: A mandatory electronic invoice format for B2B, B2C, and :abbr:`B2G
|
||||
(business-to-government)` transactions, fully compliant with SAT requirements.
|
||||
- **Digital tax receipt validation**: All :abbr:`CFDIs (Comprobante Fiscal Digital por Internet)`
|
||||
must be digitally signed and validated by :abbr:`SAT (Servicio de Administración
|
||||
Tributaria)`-authorized :abbr:`PACs (authorized certification providers)` before issuance.
|
||||
- **Complementos**: Specific complements are required for certain transaction types, such as
|
||||
payroll or foreign trade.
|
||||
- **XML Format**: The XML format is mandatory, ensuring interoperability and compliance with
|
||||
:abbr:`SAT (Servicio de Administración Tributaria)`'s technical standards.
|
||||
|
||||
Compliance with Mexican e-invoicing regulations
|
||||
===============================================
|
||||
|
||||
Odoo Invoicing simplifies compliance with Mexico’s e-invoicing requirements by offering tailored
|
||||
features:
|
||||
|
||||
- **Supported formats**: Odoo supports :abbr:`CFDI (Comprobante Fiscal Digital por Internet)` in
|
||||
:abbr:`SAT (Servicio de Administración Tributaria)`-compliant XML formats, including all
|
||||
mandatory fields, digital signatures, and complements for specialized transactions.
|
||||
- **Integration with PACs**: Odoo integrates with :abbr:`SAT (Servicio de Administración
|
||||
Tributaria)`-authorized :abbr:`PACs (authorized certification providers)` to automate the
|
||||
validation, certification, and issuance of :abbr:`CFDIs (Comprobante Fiscal Digital por
|
||||
Internet)`, ensuring real-time compliance.
|
||||
- **Secure storage and retrieval**: In compliance with Mexico's five-year mandatory storage
|
||||
requirement, Odoo provides tamper-proof archiving for easy access to invoices during audits
|
||||
or inspections.
|
||||
- **Automatic tax calculation and reporting**: Odoo automates tax calculations for VAT (IVA) and
|
||||
other applicable taxes, ensuring accuracy and compliance with :abbr:`SAT (Servicio de
|
||||
Administración Tributaria)`'s tax reporting standards.
|
||||
|
||||
.. seealso::
|
||||
:doc:`Mexican fiscal localization documentation <../../../fiscal_localizations/mexico>`
|
||||
|
||||
.. admonition:: Disclaimer
|
||||
|
||||
This page provides a general overview of Mexican e-invoicing regulations and how Odoo supports
|
||||
compliance with :abbr:`SAT (Servicio de Administración Tributaria)` requirements. It is not
|
||||
intended as legal or tax advice. We recommend consulting with a tax advisor or legal professional
|
||||
familiar with Mexico's e-invoicing regulations to ensure compliance tailored to your specific
|
||||
business needs.
|
||||
@@ -0,0 +1,55 @@
|
||||
:orphan:
|
||||
|
||||
=================================
|
||||
Odoo electronic invoicing in Peru
|
||||
=================================
|
||||
|
||||
Odoo Invoicing provides secure, efficient, and legally compliant e-invoicing solutions tailored to
|
||||
meet Peru’s regulatory requirements and fully compatible with the guidelines established by the
|
||||
`Superintendencia Nacional de Aduanas y de Administración Tributaria (SUNAT)
|
||||
<https://www.sunat.gob.pe/>`_.
|
||||
|
||||
Legal framework for e-invoicing in Peru
|
||||
=======================================
|
||||
|
||||
Peru has mandated electronic invoicing for most taxpayers to enhance tax compliance, reduce fraud,
|
||||
and improve transparency. Key elements include:
|
||||
|
||||
- **Comprobante de Pago Electrónico (CPE)**: A mandatory electronic document required for B2B, B2C,
|
||||
and :abbr:`B2G (business-to-government)` transactions, fully compliant with :abbr:`SUNAT
|
||||
(Superintendencia Nacional de Aduanas y de Administración Tributaria)`'s technical specifications.
|
||||
- **Integration with SUNAT**: E-invoices must be submitted to :abbr:`SUNAT (Superintendencia
|
||||
Nacional de Aduanas y de Administración Tributaria)` for validation and authorization. Upon
|
||||
approval, :abbr:`SUNAT (Superintendencia Nacional de Aduanas y de Administración Tributaria)`
|
||||
assigns a unique identification code to the invoice.
|
||||
- **XML Format**: All electronic invoices must be issued in XML format, ensuring standardization and
|
||||
interoperability.
|
||||
- **Mandatory adoption timeline**: Electronic invoicing is mandatory for most businesses, with
|
||||
specific deadlines for smaller entities.
|
||||
|
||||
Compliance with Peruvian e-invoicing regulations
|
||||
================================================
|
||||
|
||||
Odoo Invoicing simplifies compliance with Peru’s e-invoicing requirements by offering tailored
|
||||
features:
|
||||
|
||||
- **Supported formats**: Odoo supports the Peruvian :abbr:`CPE (Comprobante de Pago Electrónico` in
|
||||
:abbr:`SUNAT (Superintendencia Nacional de Aduanas y de Administración Tributaria)`-compliant XML
|
||||
formats, including all required fields and authorization codes.
|
||||
- **Secure storage and retrieval**: In compliance with Peru's five-year mandatory storage
|
||||
requirement, Odoo offers tamper-proof archiving, ensuring easy access for audits or inspections.
|
||||
- **Automatic tax calculation and reporting**: Odoo automates tax calculations for :abbr:`IGV
|
||||
(Impuesto General a las Ventas) and other applicable taxes, ensuring accuracy and compliance
|
||||
with :abbr:`SUNAT (Superintendencia Nacional de Aduanas y de Administración Tributaria)`'s
|
||||
reporting standards.
|
||||
|
||||
.. seealso::
|
||||
:doc:`Peruvian fiscal localization documentation <../../../fiscal_localizations/peru>`
|
||||
|
||||
.. admonition:: Disclaimer
|
||||
|
||||
This page provides a general overview of Peruvian e-invoicing regulations and how Odoo supports
|
||||
compliance with :abbr:`SUNAT (Superintendencia Nacional de Aduanas y de Administración
|
||||
Tributaria)` requirements. It is not intended as legal or tax advice. We recommend consulting
|
||||
with a tax advisor or legal professional familiar with Peru's e-invoicing regulations to ensure
|
||||
compliance tailored to your specific business needs.
|
||||
@@ -0,0 +1,57 @@
|
||||
:orphan:
|
||||
|
||||
====================================
|
||||
Odoo electronic invoicing in Uruguay
|
||||
====================================
|
||||
|
||||
Odoo Invoicing is your trusted partner for safe, efficient, and legally compliant e-invoicing
|
||||
solutions tailored to meet Uruguay's regulatory requirements and fully compatible with the
|
||||
guidelines established by the `Dirección General Impositiva (DGI)
|
||||
<https://www.gub.uy/direccion-general-impositiva/>`_.
|
||||
|
||||
Legal framework for e-invoicing in Uruguay
|
||||
==========================================
|
||||
|
||||
Uruguay has mandated electronic invoicing under the :abbr:`CFE (Comprobante Fiscal Electrónico)`
|
||||
system, which applies to most businesses to promote tax transparency and streamline financial
|
||||
transactions. Key elements include:
|
||||
|
||||
- **Comprobante Fiscal Electrónico**: A mandatory e-invoice format required for B2B, B2C, and
|
||||
:abbr:`B2G (business-to-government)` transactions, fully compliant with :abbr:`DGI (Dirección
|
||||
General Impositiva)`'s technical standards.
|
||||
- **Integration with DGI**: All :abbr:`CFE (Comprobante Fiscal Electrónico)` must be submitted to
|
||||
the :abbr:`DGI (Dirección General Impositiva)` for validation. Upon approval, the :abbr:`CFE
|
||||
(Comprobante Fiscal Electrónico)` receives a unique identification code and authorization for
|
||||
issuance.
|
||||
- **XML Format**: Uruguay mandates the use of XML as the standard format for e-invoices, ensuring
|
||||
compatibility and interoperability with various systems.
|
||||
- **Adoption Timeline**: E-invoicing is mandatory for most businesses, with specific deadlines for
|
||||
smaller enterprises to transition into the system.
|
||||
|
||||
Compliance with Uruguayan e-invoicing regulations
|
||||
=================================================
|
||||
|
||||
Odoo Invoicing simplifies the complexities of compliance with Uruguay's e-invoicing requirements by
|
||||
offering tailored features:
|
||||
|
||||
- **Supported formats**: Odoo supports the :abbr:`CFE (Comprobante Fiscal Electrónico)` format in
|
||||
:abbr:`DGI (Dirección General Impositiva)`-compliant XML, including all legally required fields,
|
||||
such as the unique identification code, authorization number, and digital signature. Odoo allows
|
||||
the automated submission, validation, and issuance through the :abbr:`DGI (Dirección General
|
||||
Impositiva)`'s e-invoicing platform to ensure compliance in real time.
|
||||
- **Secure storage and retrieval**: In line with Uruguay’s mandatory five-year storage requirement,
|
||||
Odoo provides tamper-proof archiving solutions, ensuring easy access to invoices for audits or
|
||||
inspections.
|
||||
- **Automatic tax calculation and reporting**: Odoo automates tax calculations for IVA (Value-Added
|
||||
Tax) and other applicable taxes, ensuring accuracy and compliance with :abbr:`DGI (Dirección
|
||||
General Impositiva)`'s reporting standards.
|
||||
|
||||
.. seealso::
|
||||
:doc:`Uruguayan fiscal localization documentation <../../../fiscal_localizations/uruguay>`
|
||||
|
||||
.. admonition:: Disclaimer
|
||||
|
||||
This page provides a general overview of Uruguayan e-invoicing regulations and how Odoo supports
|
||||
compliance with DGI requirements. It is not intended as legal or tax advice. We recommend
|
||||
consulting with a tax advisor or legal professional familiar with Uruguay's e-invoicing
|
||||
regulations to ensure full compliance tailored to your specific business requirements.
|
||||
@@ -20,39 +20,110 @@ for use at a later date:
|
||||
- `Odoo Tutorials: Bank Configuration
|
||||
<https://www.odoo.com/slides/slide/bank-configuration-6832>`_
|
||||
|
||||
.. _accounting/payments/payment-methods:
|
||||
|
||||
Payment methods
|
||||
===============
|
||||
|
||||
Several payment methods are available in Odoo to allow different configurations for different types
|
||||
of payments. Examples of payment methods include manual payments (such as cash), :doc:`checks
|
||||
<payments/pay_checks>`, and batch payment files (such as :ref:`NACHA
|
||||
<l10n_us/ach-electronic-transfers>` and :doc:`SEPA <payments/pay_sepa>`). Payment methods can be
|
||||
configured in the :guilabel:`Incoming Payments` and :guilabel:`Outgoing Payments` tabs of a bank or
|
||||
cash journal.
|
||||
|
||||
.. seealso::
|
||||
:doc:`../../sales/point_of_sale/payment_methods` for Point of Sale
|
||||
|
||||
.. _accounting/payments/preferred-payment-methods:
|
||||
|
||||
Preferred payment method
|
||||
------------------------
|
||||
|
||||
A contact's preferred payment method can be set so that when a payment is created for that contact,
|
||||
the payment method is automatically selected by default. Invoices and bills can be filtered by
|
||||
:guilabel:`Payment Method` to simplify :ref:`group <accounting/payments/group-payments>` payments.
|
||||
|
||||
To set a preferred :guilabel:`Payment Method` for a customer or a vendor, go to
|
||||
:menuselection:`Accounting --> Customers --> Customers` or :menuselection:`Accounting --> Vendors
|
||||
--> Vendors` and select the customer or vendor. In the :guilabel:`Sales & Purchase` tab of the
|
||||
contact form, select the preferred :guilabel:`Payment Method` in the :guilabel:`Sales` section for
|
||||
invoice payments or for vendor bill payments in the :guilabel:`Purchase` section.
|
||||
|
||||
.. tip::
|
||||
Access a full list of all contacts from the :guilabel:`Customers` or :guilabel:`Vendors` list
|
||||
view by removing the :guilabel:`Customers` or :guilabel:`Vendors` filter. Alternatively, access
|
||||
the full contact list through the Contacts app.
|
||||
|
||||
.. _accounting/payments/from-invoice-bill:
|
||||
|
||||
Registering payment from an invoice or bill
|
||||
===========================================
|
||||
|
||||
When clicking :guilabel:`Register payment` in a customer invoice or vendor bill, it generates a new
|
||||
journal entry and changes the amount due according to the payment amount. The counterpart is
|
||||
reflected in an :ref:`outstanding <accounting/bank/outstanding-accounts>` **receipts** or
|
||||
**payments** account. At this point, the customer invoice or vendor bill is marked as :guilabel:`In
|
||||
payment`. Then, when the outstanding account is reconciled with a bank transaction line, the invoice
|
||||
or vendor bill changes to the :guilabel:`Paid` status.
|
||||
To register a payment for an invoice or a bill, follow these steps:
|
||||
|
||||
The :icon:`fa-info-circle` information icon next to the payment line displays more
|
||||
information about the payment. To access additional information, such as the related journal, click
|
||||
:guilabel:`View`.
|
||||
#. Click :guilabel:`Pay` on a customer invoice or vendor bill. In the :guilabel:`Pay` window, select
|
||||
the :guilabel:`Journal` and the :guilabel:`Payment Date`.
|
||||
#. If previously set, the contact's preferred :guilabel:`Payment Method` is automatically selected
|
||||
by default but can be updated if necessary.
|
||||
#. If using :doc:`payment terms <customer_invoices/payment_terms>`, the :guilabel:`Amount` is
|
||||
automatically set based on the installment amounts defined by the payment term. To pay the full
|
||||
amount instead, click :guilabel:`full amount`.
|
||||
#. If necessary, edit the :guilabel:`Memo`.
|
||||
#. Click :guilabel:`Create Payment`.
|
||||
|
||||
.. image:: payments/information-icon.png
|
||||
:alt: See detailed information of a payment.
|
||||
After the payment is registered, the customer invoice or vendor bill is marked as
|
||||
:guilabel:`In payment`.
|
||||
|
||||
.. note::
|
||||
- The customer invoice or vendor bill must be in the :guilabel:`Posted` status to register the
|
||||
payment.
|
||||
- If a payment is unreconciled, it still appears in the books but is no longer linked to the
|
||||
invoice.
|
||||
- If a payment is (un)reconciled in a different currency, a journal entry is automatically
|
||||
created to post the currency exchange gains/losses (reversal) amount.
|
||||
- If a payment is (un)reconciled and an invoice with cash-basis taxes, a journal entry is
|
||||
automatically created to post the cash-basis tax (reversal) amount.
|
||||
.. tabs::
|
||||
|
||||
.. tip::
|
||||
If the main bank account is set as an :ref:`outstanding account
|
||||
<accounting/bank/outstanding-accounts>`, and the payment is registered in Odoo (not through a
|
||||
related bank transaction), invoices and bills are directly registered as :guilabel:`Paid`.
|
||||
.. group-tab:: Without outstanding accounts
|
||||
|
||||
If no :ref:`outstanding accounts <accounting/bank/outstanding-accounts>` are configured, no
|
||||
journal entry is created. To display more information about the payment, click the
|
||||
:guilabel:`Payments` smart button.
|
||||
|
||||
When the invoice or vendor bill is :doc:`reconciled <bank/reconciliation>` with a bank
|
||||
transaction, its status is updated to :guilabel:`Paid`.
|
||||
|
||||
.. note::
|
||||
- If a bank transaction is reconciled in a different currency, a journal entry is
|
||||
automatically created to post the currency exchange gains/loss amount.
|
||||
- When a bank transaction is reconciled with an invoice with cash-basis, a journal entry is
|
||||
automatically created to post the cash-basis tax amount.
|
||||
|
||||
.. group-tab:: Using outstanding accounts
|
||||
|
||||
By default, payments in Odoo do not create journal entries, but they can easily be configured
|
||||
to create journal entries using :ref:`outstanding accounts
|
||||
<accounting/bank/outstanding-accounts>`.
|
||||
|
||||
Registering a payment on a customer invoice or vendor bill generates a new journal entry and
|
||||
reduces the :guilabel:`Amount Due` based on the payment amount. The counterpart is
|
||||
reflected in an :ref:`outstanding <accounting/bank/outstanding-accounts>` **receipts** or
|
||||
**payments** account. At this point, the customer invoice or vendor bill is marked as
|
||||
:guilabel:`In payment`. Then, when the payment is :doc:`reconciled <bank/reconciliation>` with
|
||||
a bank transaction, the invoice or vendor bill status changes to :guilabel:`Paid`.
|
||||
|
||||
The :icon:`fa-info-circle` information icon next to the payment line displays more
|
||||
information about the payment. To access additional information, such as the related journal,
|
||||
click :guilabel:`View`.
|
||||
|
||||
.. image:: payments/information-icon.png
|
||||
:alt: See detailed information of a payment.
|
||||
|
||||
.. note::
|
||||
- Unreconciling a payment unlinks it from the invoice or bill but does not delete the
|
||||
payment.
|
||||
- If a payment is (un)reconciled in a different currency, a journal entry is automatically
|
||||
created to post the currency exchange gains/losses (reversal) amount.
|
||||
- If a payment is (un)reconciled on an invoice with cash-basis taxes, a journal entry is
|
||||
automatically created to post the cash-basis tax (reversal) amount.
|
||||
|
||||
.. tip::
|
||||
If the main bank account is set as the outstanding account on the bank journal's payment
|
||||
method, registering the full payment on an invoice or bill moves the invoice/bill directly
|
||||
to the :guilabel:`Paid` status without requiring bank reconciliation.
|
||||
|
||||
.. _accounting/payments/not-tied:
|
||||
|
||||
@@ -60,71 +131,185 @@ Registering payments not tied to an invoice or bill
|
||||
===================================================
|
||||
|
||||
When a new payment is registered via :menuselection:`Customers / Vendors --> Payments`, it is not
|
||||
directly linked to an invoice or bill. Instead, the account receivable or the account payable is
|
||||
matched with the **outstanding account** until it is manually matched with its related invoice or
|
||||
bill.
|
||||
directly linked to an invoice or bill.
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Without outstanding accounts
|
||||
|
||||
Payments that are not linked to an invoice or bill should not be registered without using
|
||||
:ref:`outstanding accounts <accounting/bank/outstanding-accounts>`, as there is no way to
|
||||
associate the payment with the invoice or bill since no journal entry is created for the
|
||||
payment. The amount paid or received is not reflected in the accounting and the
|
||||
:guilabel:`Amount Due` is not updated based on the payment amount.
|
||||
|
||||
.. group-tab:: Using outstanding accounts
|
||||
|
||||
Instead, the payment's journal entry matches the :guilabel:`outstanding account` with the
|
||||
account receivable or the account payable until the payment is manually matched with its
|
||||
related invoice or bill. Then, :doc:`reconciling <bank/reconciliation>` the payment with the
|
||||
bank transaction completes the payment workflow.
|
||||
|
||||
.. _accounting/payments/payments-matching:
|
||||
|
||||
Payments matching
|
||||
-----------------
|
||||
|
||||
.. note::
|
||||
During the :doc:`bank reconciliation <bank/reconciliation>` process, a remaining balance is
|
||||
identified if the total debits and credits do not match when records are compared with bank
|
||||
transactions. This balance must either be reconciled later or written off immediately.
|
||||
|
||||
.. _accounting/payments/matching-invoices-bills:
|
||||
|
||||
Matching invoices and bills with payments
|
||||
-----------------------------------------
|
||||
For a single invoice or bill
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
A blue banner appears when validating a new invoice/bill and an **outstanding payment** exists for
|
||||
this specific customer or vendor. To match it with the invoice or bill, click :guilabel:`ADD`
|
||||
under :guilabel:`Outstanding Credits` or :guilabel:`Outstanding Debits`.
|
||||
.. tabs::
|
||||
|
||||
.. image:: payments/add-option.png
|
||||
:alt: Shows the ADD option to reconcile an invoice or a bill with a payment.
|
||||
.. group-tab:: Without outstanding accounts
|
||||
|
||||
The invoice or bill is now marked as :guilabel:`In payment` until it is reconciled with its
|
||||
corresponding bank transaction.
|
||||
By default, payments in Odoo do not create journal entries. As a result, there is no payment
|
||||
to match.
|
||||
|
||||
.. group-tab:: Using outstanding accounts
|
||||
|
||||
A blue banner appears when validating a new invoice/bill and an **outstanding payment** exists
|
||||
for this specific customer or vendor. To match it with the invoice or bill, click
|
||||
:guilabel:`Add` under :guilabel:`Outstanding Credits` or :guilabel:`Outstanding Debits`.
|
||||
|
||||
.. image:: payments/add-option.png
|
||||
:alt: Shows the Add option to reconcile an invoice or a bill with a payment.
|
||||
|
||||
The invoice or bill is then marked as :guilabel:`In payment` until the payment is
|
||||
:doc:`reconciled <bank/reconciliation>` with its corresponding :doc:`bank transaction(s)
|
||||
<bank/transactions>`.
|
||||
|
||||
.. _accounting/payments/auto-reconcile-tool:
|
||||
|
||||
For multiple invoices or bills
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Without outstanding accounts
|
||||
|
||||
By default, payments in Odoo do not create journal entries. As a result, there is no payment
|
||||
to match, but this feature can still be used to match miscellaneous journal items.
|
||||
|
||||
.. group-tab:: Using outstanding accounts
|
||||
|
||||
The :guilabel:`Payments matching` or :guilabel:`Auto-reconcile` tool allows reconciling
|
||||
journal items with each other (i.e., payments with customer invoices or vendor bills) either
|
||||
individually or in batches. Access the :guilabel:`Accounting Dashboard`, click the
|
||||
:icon:`fa-ellipsis-v` (:guilabel:`ellipsis`) button from the :guilabel:`Customer
|
||||
Invoices` or :guilabel:`Vendor Bills` journals, and select :guilabel:`Payments Matching`.
|
||||
Alternatively, go to :menuselection:`Accounting --> Accounting --> Reconcile`.
|
||||
|
||||
To manually :guilabel:`Reconcile` journal items, select the individual items from the list
|
||||
view and click :guilabel:`Reconcile`.
|
||||
|
||||
.. _accounting/payments/auto-reconcile-feature:
|
||||
|
||||
Auto-Reconcile Feature
|
||||
**********************
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Without outstanding accounts
|
||||
|
||||
To use the :guilabel:`Auto-Reconcile` feature, follow these steps:
|
||||
|
||||
#. In the :guilabel:`Journal Items to reconcile` list view, click :guilabel:`Auto-Reconcile`
|
||||
next to the receivable or payable account (or a specific contact's group of journal items
|
||||
in that account).
|
||||
#. In the :guilabel:`Reconcile automatically` window, click :guilabel:`Reconcile`.
|
||||
|
||||
.. group-tab:: Using outstanding accounts
|
||||
|
||||
To use the :guilabel:`Auto-Reconcile` feature, follow these steps:
|
||||
|
||||
#. In the :guilabel:`Journal Items to reconcile` list view, click :guilabel:`Auto-Reconcile`
|
||||
next to the receivable or payable account (or a specific contact's group of journal items
|
||||
in that account).
|
||||
#. In the :guilabel:`Reconcile Automatically` window, set the
|
||||
:guilabel:`Reconcile` field depending on how you want to match journal items:
|
||||
|
||||
- :guilabel:`Perfect Match`: Each debit journal item will be matched with
|
||||
the corresponding credit journal item of the same value.
|
||||
- :guilabel:`Clear Accounts`: All reconciled journal items will have the same
|
||||
matching number, as they are selected from the same account.
|
||||
|
||||
#. Click :guilabel:`Reconcile`.
|
||||
|
||||
Invoices and bills are automatically matched to their corresponding payments and marked as
|
||||
:guilabel:`In payment` until they are :doc:`reconciled <bank/reconciliation>` with their
|
||||
corresponding :doc:`bank transactions <bank/transactions>`.
|
||||
|
||||
.. _accounting/payments/group-payments:
|
||||
|
||||
Group payments
|
||||
--------------
|
||||
Registering payments on multiple invoices/credit notes or bills/refunds (group payments)
|
||||
========================================================================================
|
||||
|
||||
Group payments allow combining outgoing and incoming payments from the same contact into a single
|
||||
payment to simplify the process and improve payment usability. To register a group payment:
|
||||
To register payments on multiple invoices/credit notes or bills/refunds, follow these steps:
|
||||
|
||||
#. Go to :menuselection:`Accounting --> Customers --> Invoices/Credit Notes` or
|
||||
:menuselection:`Accounting --> Vendors --> Bills/Refunds`.
|
||||
#. Select the relevant invoices/credit notes or bills/refunds linked to a specific contact.
|
||||
#. Click the :icon:`fa-cog` (:guilabel:`Action menu`) icon and select :guilabel:`Register Payment`.
|
||||
#. In the :guilabel:`Register Payment` window, select the :guilabel:`Journal`, the
|
||||
:guilabel:`Payment Method`, and the :guilabel:`Payment Date`.
|
||||
#. Enable the :guilabel:`Group Payments` option and click :guilabel:`Create payment`.
|
||||
#. In the list view, click into the search bar, group by :guilabel:`Payment Method`, select the
|
||||
relevant invoices/credit notes or bills/refunds and click :guilabel:`Pay`.
|
||||
#. In the :guilabel:`Pay` window, select the :guilabel:`Journal` and the :guilabel:`Payment Date`.
|
||||
#. If previously set, the contact's preferred :guilabel:`Payment Method` is automatically selected
|
||||
by default but can be updated if necessary.
|
||||
#. If using :doc:`payment terms <customer_invoices/payment_terms>`, the :guilabel:`Amount` is
|
||||
automatically set based on the installment amounts defined by the payment term. To pay the full
|
||||
amount instead, click :guilabel:`full amount`.
|
||||
#. To combine all payments from the same contact into a single payment, enable the :guilabel:`Group
|
||||
Payments` option, or leave it unchecked to create separate payments.
|
||||
#. Click :guilabel:`Create payment`.
|
||||
|
||||
The invoices or bills are now marked as :guilabel:`In payment` until they are reconciled with the
|
||||
corresponding bank transactions. The credit notes or refunds are marked as :guilabel:`Paid`.
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Without outstanding accounts
|
||||
|
||||
The invoices or bills are then marked as :guilabel:`In payment` until they are
|
||||
:doc:`reconciled <bank/reconciliation>` with the bank transactions.
|
||||
|
||||
.. group-tab:: Using outstanding accounts
|
||||
|
||||
The invoices or bills are then marked as :guilabel:`In payment` until the bank transactions
|
||||
are :doc:`reconciled <bank/reconciliation>` with the payments.
|
||||
|
||||
.. _accounting/payments/batch-payments:
|
||||
|
||||
Batch payments
|
||||
--------------
|
||||
Registering a single payment for multiple customers or vendors (batch payments)
|
||||
===============================================================================
|
||||
|
||||
Batch payments allow grouping payments from multiple contacts to ease
|
||||
:doc:`reconciliation <bank/reconciliation>`. They are also useful when depositing :doc:`checks
|
||||
<payments/checks>` to the bank or for :doc:`SEPA payments <payments/pay_sepa>`. To do so, go to
|
||||
:menuselection:`Accounting --> Customers --> Batch Payments` or :menuselection:`Accounting -->
|
||||
Vendors --> Batch Payments`. In the list view of payments, to group several payments in a
|
||||
batch, select them and click :menuselection:`Action --> Create Batch Payment`.
|
||||
Batch payments allow grouping payments from multiple contacts to ease :doc:`reconciliation
|
||||
<bank/reconciliation>`. They are also useful when depositing :doc:`checks <payments/checks>` to the
|
||||
bank or for generating bank payment files such as :doc:`SEPA <payments/pay_sepa>` or :ref:`NACHA
|
||||
<l10n_us/nacha>`. To do so, go to :menuselection:`Accounting --> Customers --> Payments` or
|
||||
:menuselection:`Accounting --> Vendors --> Payments`. In the payments list view, select the payments
|
||||
to be grouped in a batch, click :icon:`fa-cog` :guilabel:`Actions`, and select :guilabel:`Create
|
||||
Batch Payment`.
|
||||
|
||||
.. note::
|
||||
All payments in a batch must have the same :ref:`payment method
|
||||
<accounting/payments/payment-methods>`.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`payments/batch`
|
||||
- :doc:`payments/batch_sdd`
|
||||
- :doc:`payments/batch`
|
||||
- :doc:`payments/batch_sdd`
|
||||
|
||||
.. _accounting/payments/matching:
|
||||
|
||||
Payments matching
|
||||
-----------------
|
||||
|
||||
The :guilabel:`Payments matching` tool opens all unreconciled customer invoices or vendor bills and
|
||||
allows them to be processed individually, matching all payments and invoices in one place. Go to the
|
||||
:guilabel:`Accounting Dashboard`, click the :icon:`fa-ellipsis-v` (:guilabel:`dropdown menu`)
|
||||
button from the :guilabel:`Customer Invoices` or :guilabel:`Vendor Bills` journals, and select
|
||||
:guilabel:`Payments Matching`, or go to :menuselection:`Accounting --> Accounting -->
|
||||
Reconciliation`.
|
||||
The :guilabel:`Payments matching` tool opens all unreconciled journal items and allows them to be
|
||||
processed individually, matching all payments and journal items. Go to the
|
||||
:guilabel:`Accounting Dashboard`, go to :menuselection:`Accounting --> Accounting --> Reconcile` or
|
||||
click the :icon:`fa-ellipsis-v` (:guilabel:`ellipsis`) button from the :guilabel:`Customer
|
||||
Invoices` or :guilabel:`Vendor Bills` journals, and select :guilabel:`Payments Matching`.
|
||||
|
||||
.. image:: payments/payments-journal.png
|
||||
:alt: Payments matching menu in the drop-down menu.
|
||||
@@ -134,47 +319,56 @@ Reconciliation`.
|
||||
not match, there is a remaining balance. This either needs to be reconciled at a later date or
|
||||
written off directly.
|
||||
|
||||
.. _accounting/payments/batch-payments-matching:
|
||||
|
||||
Batch payments matching
|
||||
-----------------------
|
||||
|
||||
Use the batch reconciliation feature to reconcile several outstanding payments or invoices
|
||||
simultaneously for a specific customer or vendor. Go to :menuselection:`Accounting --> Reporting -->
|
||||
Aged Receivable / Aged Payable`. All transactions that have not yet been reconciled for that
|
||||
contact are visible, and when a customer or vendor is selected, the :guilabel:`Reconcile` option is
|
||||
displayed.
|
||||
|
||||
.. image:: payments/reconcile-option.png
|
||||
:alt: The batch payment reconcile option.
|
||||
|
||||
.. _accounting/payments/partial-payment:
|
||||
|
||||
Registering a partial payment
|
||||
=============================
|
||||
|
||||
To register a partial payment, click on :guilabel:`Register Payment` from the related invoice or
|
||||
bill. In the case of a partial payment (when the :guilabel:`Amount` paid is less than the total
|
||||
remaining amount on the invoice or the bill), the :guilabel:`Payment Difference` field displays the
|
||||
outstanding balance. There are two options:
|
||||
To register a partial payment, click on :guilabel:`Pay` from the related invoice or bill.
|
||||
|
||||
- :guilabel:`Keep open`: Keep the invoice or the bill open and mark it with a :guilabel:`Partial`
|
||||
banner;
|
||||
- :guilabel:`Mark as fully paid`: Select an account in the :guilabel:`Post Difference In` field and
|
||||
change the :guilabel:`Label` if needed. A journal entry will be created to balance the accounts
|
||||
payable or receivable with the selected account.
|
||||
.. tabs::
|
||||
|
||||
.. image:: payments/partial-payment.png
|
||||
:alt: register a partial payment
|
||||
.. group-tab:: Without outstanding accounts
|
||||
|
||||
In the case of a partial payment (when the :guilabel:`Amount` paid is less than the total
|
||||
remaining amount on the invoice or the bill), fill in the :guilabel:`Amount` in the
|
||||
:guilabel:`Pay` window.
|
||||
|
||||
.. group-tab:: Using outstanding accounts
|
||||
|
||||
In the case of a partial payment (when the :guilabel:`Amount` paid is less than the total
|
||||
remaining amount on the invoice or the bill), the :guilabel:`Payment Difference` field
|
||||
displays the outstanding balance. There are two options:
|
||||
|
||||
- :guilabel:`Keep open`: Keep the invoice or the bill open and mark it with a
|
||||
:guilabel:`Partial` banner;
|
||||
- :guilabel:`Mark as fully paid`: Select an account in the :guilabel:`Post Difference In`
|
||||
field and change the :guilabel:`Label` if needed. A journal entry will be created to balance
|
||||
the accounts payable or receivable with the selected account.
|
||||
|
||||
.. image:: payments/partial-payment.png
|
||||
:alt: register a partial payment
|
||||
|
||||
.. _accounting/payments/reconciling-payments:
|
||||
|
||||
Reconciling payments with bank transactions
|
||||
===========================================
|
||||
|
||||
Once a payment has been registered, the status of the invoice or bill is :guilabel:`In payment`. The
|
||||
next step is :doc:`reconciling <bank/reconciliation>` it with the related bank transaction line to
|
||||
finalize the payment workflow and mark the invoice or bill as :guilabel:`Paid`.
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Without outstanding accounts
|
||||
|
||||
Once a payment has been registered, the status of the invoice or bill is :guilabel:`In
|
||||
payment`. The next step is :doc:`reconciling <bank/reconciliation>` the related :doc:`bank
|
||||
transaction <bank/transactions>` line with the invoice or bill to finalize the payment
|
||||
workflow and mark the invoice or bill as :guilabel:`Paid`.
|
||||
|
||||
.. group-tab:: Using outstanding accounts
|
||||
|
||||
Once a payment has been registered, the status of the invoice or bill is :guilabel:`In
|
||||
payment`. The next step is :doc:`reconciling <bank/reconciliation>` the payment with the
|
||||
related :doc:`bank transaction <bank/transactions>` line to finalize the payment workflow and
|
||||
mark the invoice or bill as :guilabel:`Paid`.
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 9.0 KiB After Width: | Height: | Size: 8.0 KiB |
|
Before Width: | Height: | Size: 32 KiB |
@@ -62,7 +62,7 @@ Then, to close the fiscal year:
|
||||
<accounting/reporting/aged-payable>` reports.
|
||||
- Audit all accounts, being sure to fully understand all transactions and their nature, making
|
||||
sure to include loans and fixed assets.
|
||||
- Optionally, run :ref:`payments matching <accounting/payments/matching>` to validate any open
|
||||
- Optionally, :ref:`match payments <accounting/payments/auto-reconcile-tool>` to validate any open
|
||||
vendor bills and customer invoices with their payments. While this step is optional, it could
|
||||
assist the year-end closing process if all outstanding payments and invoices are reconciled,
|
||||
potentially finding errors or mistakes in the system.
|
||||
|
||||
@@ -37,7 +37,7 @@ appropriately completed:
|
||||
- :guilabel:`Vendor`: Odoo automatically fills some information based on the vendor's registered
|
||||
information, previous purchase orders, or bills.
|
||||
- :guilabel:`Bill Reference`: add the sales order reference provided by the vendor and is used to do
|
||||
the :ref:`matching <accounting/payments/matching>` when you receive the products.
|
||||
the :ref:`matching <accounting/payments/payments-matching>` when you receive the products.
|
||||
- :guilabel:`Auto-Complete`: select a past bill/purchase order to automatically complete the
|
||||
document. The :guilabel:`Vendor` field should be completed prior to completing this field.
|
||||
- :guilabel:`Bill Date`: is the issuance date of the document.
|
||||
|
||||
@@ -11,7 +11,10 @@ Below you can find videos with a general description of the localization, and ho
|
||||
- `eCommerce - Localización de Argentina <https://www.youtube.com/watch?v=5gUi2WWfRuI>`_.
|
||||
|
||||
.. seealso::
|
||||
`Smart Tutorial - Localización de Argentina <https://www.odoo.com/slides/smart-tutorial-localizacion-de-argentina-130>`_
|
||||
- `Smart Tutorial - Localización de Argentina
|
||||
<https://www.odoo.com/slides/smart-tutorial-localizacion-de-argentina-130>`_
|
||||
- :doc:`Documentation on e-invoicing's legality and compliance in Argentina
|
||||
<../accounting/customer_invoices/electronic_invoicing/argentina>`
|
||||
|
||||
Configuration
|
||||
=============
|
||||
@@ -45,6 +48,9 @@ localization:
|
||||
- `l10n_ar_website_sale`
|
||||
- (optional) Allows the user to see Identification Type and AFIP Responsibility in the
|
||||
eCommerce checkout form in order to create electronic invoices.
|
||||
* - :ref:`Argentina - Payment Withholdings <l10n_ar/payment-withholdings>`
|
||||
- `l10n_ar_withholding`
|
||||
- Allows registering withholdings during the payment of an invoice.
|
||||
|
||||
.. _argentina/configure-your-company:
|
||||
|
||||
@@ -678,6 +684,147 @@ the invoice can then be validated.
|
||||
:align: center
|
||||
:alt: Enter the perception amount.
|
||||
|
||||
.. _l10n_ar/payment-withholdings:
|
||||
|
||||
Withholding management
|
||||
----------------------
|
||||
|
||||
The Argentinean fiscal localization module is already loaded with the necessary withholdings
|
||||
records, which can be seen by navigating to :menuselection:`Accounting app --> Configuration -->
|
||||
Taxes` and removing the default :guilabel:`Sale or Purchase` filter. To verify these records, the
|
||||
**Argentina Payment Withholdings** (`l10n_ar_withholding`) module must be :ref:`installed
|
||||
<general/install>`:
|
||||
|
||||
Journal entries are *not* created when payments are posted unless :ref:`outstanding accounts
|
||||
<accounting/bank/outstanding-accounts>` are set up. Thus, for this feature to work properly, it is
|
||||
important to verify that *all* payment methods within the bank journals have an outstanding payment
|
||||
and receipt account set.
|
||||
|
||||
.. image:: argentina/l10n-ar-outstanding-payments.png
|
||||
:alt: An outstanding payment account must be set.
|
||||
|
||||
This configuration is crucial for the proper accounting of withholding transactions with clients
|
||||
and vendors.
|
||||
|
||||
.. note::
|
||||
In Argentina, withholdings represent the cancellation of a specific portion of the total debt
|
||||
owed to a supplier or a reduction in the total payment to be collected from a customer.
|
||||
Therefore, one or multiple withholdings can be recorded for each payment applied to an invoice.
|
||||
|
||||
Configuration
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
While Odoo already creates most of the required withholdings inside the :guilabel:`Taxes`
|
||||
menu, in several cases, it is necessary to apply or modify certain configurations to correctly
|
||||
calculate the withholding amount on vendor payments. The following withholding types are available:
|
||||
|
||||
- :ref:`Earnings <l10n_ar/earnings-withholdings>`
|
||||
- :ref:`Earnings Scale <l10n_ar/earnings-scale-withholdings>`
|
||||
- :ref:`IIBB Total Amount <l10n_ar/iib-total-amount-withholdings>`
|
||||
- :ref:`IIBB Non-Taxable <l10n_ar/iib-nontax-withholdings>`
|
||||
|
||||
.. _l10n_ar/earnings-withholdings:
|
||||
|
||||
Earnings
|
||||
********
|
||||
|
||||
For :guilabel:`Earnings` withholdings, Odoo already has a record for each regime group, which is
|
||||
stated under the name of the tax and the AFIP code.
|
||||
|
||||
Each of these records are ready to be used. As a good practice, the configuration should be double
|
||||
checked to make sure the configuration is updated and well-applied. The fields to validate are:
|
||||
|
||||
- :guilabel:`Amount`: This is the percentage of the total payment amount which is withheld.
|
||||
- :guilabel:`Non-Taxable Amount`: Up to this amount, the withholding does not apply.
|
||||
- :guilabel:`Minimum Withholding`: If the calculated withholding amount is smaller than this value,
|
||||
the total withholding amount is set to `0.0`.
|
||||
- :guilabel:`Withholding Sequence`: This field helps to automate the capture of a withholding number
|
||||
under the payment line. If this field is not set, a number is manually captured while adding a
|
||||
withholding to a payment.
|
||||
|
||||
.. image:: argentina/l10n-ar-earnings.png
|
||||
:alt: Earnings withholding type.
|
||||
|
||||
.. _l10n_ar/earnings-scale-withholdings:
|
||||
|
||||
Earnings Scale
|
||||
**************
|
||||
|
||||
In this particular case, a percentage does not need to be set. Instead, this withholding is
|
||||
calculated based on the value of the :guilabel:`Scale` field.
|
||||
|
||||
To view, modify, or create new scales, navigate to :menuselection:`Accounting app --> Configuration
|
||||
--> Earnings Scale`. By default, the Argentinian localization is preconfigured with two main scales.
|
||||
However, scales should be created and updated as necessary to suit a business's needs.
|
||||
|
||||
.. note::
|
||||
Earnings scales are cumulative, which means that Odoo keeps track of the different records
|
||||
created for a bill and automatically calculates the proper withholding amount.
|
||||
|
||||
.. _l10n_ar/iib-total-amount-withholdings:
|
||||
|
||||
IIBB Total Amount
|
||||
*****************
|
||||
|
||||
In this case, the necessary records related to the applicable province need to be created. The
|
||||
withholding amount is calculated based on the percentage :guilabel:`Amount` set on the tax
|
||||
configuration. Since Odoo does not automatically synchronize the percentages applicable to each
|
||||
province, this information needs to be manually updated.
|
||||
|
||||
The recommendation, in this case, is to always duplicate and apply the different configurations for
|
||||
each record to safeguard any technical configurations that allow the proper calculation and
|
||||
accounting of the withholding.
|
||||
|
||||
.. _l10n_ar/iib-nontax-withholdings:
|
||||
|
||||
IIBB Untaxed
|
||||
************
|
||||
|
||||
The configuration of non-taxable gross income withholdings is very similar to that of a :ref:`total
|
||||
amount withholding <l10n_ar/iib-total-amount-withholdings>`, so the percentage :guilabel:`Amount` in
|
||||
each of the records needs to be maintained. However, Odoo comes preconfigured with several records
|
||||
that apply to different provinces. The difference, in this case, is that it is not necessary to
|
||||
establish a non-taxable amount or minimum withholding for this record type.
|
||||
|
||||
Partner withholding assignation
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Once the proper configuration is set on each possible withholding for partners, the applicable
|
||||
withholdings need to be assigned to each contact. To do this, open the :guilabel:`Contacts` app and
|
||||
select the desired partner. In the :guilabel:`Accounting` tab, find the :guilabel:`Purchase
|
||||
Withholdings` table.
|
||||
|
||||
By using the additional fields :guilabel:`From Date` and :guilabel:`To Date`, the applicability of
|
||||
multiple withholdings can be automated across different date ranges. The :guilabel:`ref` field
|
||||
allows you to apply an internal control number to each withholding line, which is just for internal
|
||||
reference, so it does not affect any transactions and is not visible on them. These fields are
|
||||
accessible from the :icon:`oi-settings-adjust` :guilabel:`(adjust settings)` menu.
|
||||
|
||||
- :guilabel:`From Date`: the start of the withholding date range.
|
||||
- :guilabel:`To Date`: the end of the withholding date range.
|
||||
- :guilabel:`ref`: apply an internal control number to each withholding line that is only visible
|
||||
for internal reference and does not affect any transactions.
|
||||
|
||||
Automatic withholding calculation and application per payment
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
By applying new payments to vendor bills, Odoo automatically applies and calculates the proper
|
||||
withholding into the payment. Based on the record's configuration, it may be necessary to use a
|
||||
reference number for each withholding line.
|
||||
|
||||
More withholdings can be added, or computed withholdings can be edited if necessary.
|
||||
|
||||
.. image:: argentina/l10n-ar-payment.png
|
||||
:alt: Payment with applied withholdings.
|
||||
|
||||
.. important::
|
||||
The total amount of the debt to be canceled is the total amount of the payment. However, Odoo
|
||||
still captures the net amount (i.e. the amount to be reconciled with the bank), which will be
|
||||
represented as the payment amount after the withholding application.
|
||||
|
||||
.. image:: argentina/l10n-ar-payment-registered.png
|
||||
:alt: Payment registered form.
|
||||
|
||||
Check management
|
||||
----------------
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 21 KiB |
@@ -34,6 +34,8 @@ needed.
|
||||
<https://youtube.com/playlist?list=PL1-aSABtP6ADqexw4YNCbKPmpFggajxlX&si=RgmZR3Jco3223Np4>`_.
|
||||
- `YouTube playlist - Tutoriais Odoo em Português
|
||||
<https://youtube.com/playlist?list=PL1-aSABtP6ACGOW2UREePGjHQ2Bgdy-UZ&si=j6tiI36eB7BoKVQB>`_.
|
||||
- :doc:`Documentation on e-invoicing's legality and compliance in Brazil
|
||||
<../accounting/customer_invoices/electronic_invoicing/brazil>`
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
@@ -15,6 +15,8 @@ Chile
|
||||
- `Chilean localization app tour <https://www.youtube.com/watch?v=3qYkgbmBYHw>`_
|
||||
- `Chilean localization smart tutorial
|
||||
<https://www.odoo.com/slides/smart-tutorial-localizacion-de-chile-131>`_
|
||||
- :doc:`Documentation on e-invoicing's legality and compliance in Chile
|
||||
<../accounting/customer_invoices/electronic_invoicing/chile>`
|
||||
|
||||
.. _chile/configuration:
|
||||
|
||||
|
||||
@@ -24,9 +24,11 @@ solution with Odoo:
|
||||
|
||||
.. seealso::
|
||||
- For more information on how to complete the certification process for the |DIAN| module, review
|
||||
the following `webinar <https://www.youtube.com/watch?v=l0G6iDc7NQA>`_.
|
||||
the following `webinar <https://www.youtube.com/watch?v=l0G6iDc7NQA>`_
|
||||
- `Smart Tutorial - Colombian Localization
|
||||
<https://www.odoo.com/slides/smart-tutorial-localizacion-de-colombia-132>`_.
|
||||
<https://www.odoo.com/slides/smart-tutorial-localizacion-de-colombia-132>`_
|
||||
- :doc:`Documentation on e-invoicing's legality and compliance in Colombia
|
||||
<../accounting/customer_invoices/electronic_invoicing/colombia>`
|
||||
|
||||
.. _localization/colombia/configuration:
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 8.5 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 17 KiB |
@@ -705,3 +705,60 @@ Then, to ensure :doc:`Odoo Point of Sale </applications/sales/point_of_sale>` is
|
||||
fiscal printer, go to :menuselection:`Point of Sale --> Configuration --> Settings`. In the
|
||||
:guilabel:`Connected Devices` section, add the IP address in the :guilabel:`Italian Fiscal Printer
|
||||
IP address` and enable :guilabel:`Use HTTPS`.
|
||||
|
||||
Ri.Ba. (Ricevuta Bancaria)
|
||||
==========================
|
||||
|
||||
:abbr:`Ri.Ba. (Ricevuta Bancaria)` is a payment method widely used in Italy where vendors request
|
||||
payments through their bank, which forwards the request to the customer's own bank and takes
|
||||
responsibility for the collection. This enables payment automation and reduces risks for the vendor.
|
||||
|
||||
The vendor generally uploads a fixed-format text file with the list of payments to the bank's web
|
||||
portal.
|
||||
|
||||
.. note::
|
||||
- Ri.Ba. are exclusively for **domestic payments** in Italy. For recurring international
|
||||
payments, please use `SEPA Direct Debt (SDD) <../accounting/payments/batch_sdd>`_
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
#. Check that the `l10n_it_riba` module is :ref:`installed <general/install>`.
|
||||
#. Go to :menuselection:`Settings --> Users & Companies --> Companies` and select the company that
|
||||
will use Ri.Ba.
|
||||
#. Fill out the required :guilabel:`SIA Code`.
|
||||
|
||||
.. image:: italy/sia-code.png
|
||||
:alt: The company's SIA code
|
||||
|
||||
.. note::
|
||||
The :guilabel:`SIA Code` identifies businesses within the Italian banking network and is used
|
||||
to receive money through specific payment methods. It consists of one letter and four digits
|
||||
(e.g., T1234) and can usually be found on the bank's portal or obtained by contacting the bank.
|
||||
|
||||
#. Ensure the Company's bank account has an Italian IBAN.
|
||||
|
||||
.. seealso::
|
||||
How to configure :doc:`Bank Accounts <../accounting/bank>`
|
||||
|
||||
Accept Ri.Ba. for your invoices
|
||||
-------------------------------
|
||||
|
||||
Payments of type :abbr:`Ri.Ba. (Ricevuta Bancaria)` can be registered from the :guilabel:`Invoices`
|
||||
(:menuselection:`Accounting --> Customers --> Invoices`).
|
||||
|
||||
.. important::
|
||||
Make sure that your invoice involves a Partner that has a bank account with an Italian IBAN.
|
||||
|
||||
Then, all Payments must be grouped in a **Batch Payment**.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`Batch Payments <../accounting/payments>`
|
||||
- :doc:`Create a Batch Payment <../accounting/payments/batch>`
|
||||
|
||||
Once you press the :guilabel:`Validate` button for the Batch Payment, the :abbr:`Ri.Ba. (Ricevuta
|
||||
Bancaria)` file is generated and attached to the Batch Payment, so you can download it and upload it
|
||||
through your bank's web portal.
|
||||
|
||||
.. image:: italy/riba-attachment.png
|
||||
:alt: The Ri.Ba. file attached
|
||||
|
||||
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 14 KiB |
@@ -36,6 +36,10 @@ enables foreign trade, and the creation of delivery guides).
|
||||
In order to electronically sign any documents in Odoo, ensure the *Sign* application is
|
||||
installed.
|
||||
|
||||
.. seealso::
|
||||
:doc:`Documentation on e-invoicing's legality and compliance in Mexico
|
||||
<../accounting/customer_invoices/electronic_invoicing/mexico>`
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
|
||||
@@ -81,6 +81,8 @@ Peruvian localization.
|
||||
- `App Tour - Localización de Peru <https://youtu.be/Ic3mGovkf8Y>`_
|
||||
- `Smart Tutorial - Localización de Peru (videos for workflows and configurations)
|
||||
<https://www.odoo.com/slides/smart-tutorial-localizacion-de-peru-133>`_
|
||||
- :doc:`Documentation on e-invoicing's legality and compliance in Peru
|
||||
<../accounting/customer_invoices/electronic_invoicing/peru>`
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
@@ -25,6 +25,10 @@ The supported documents are:
|
||||
The localization requires an Uruware account, which enables users to generate electronic documents
|
||||
within Odoo.
|
||||
|
||||
.. seealso::
|
||||
:doc:`Documentation on e-invoicing's legality and compliance in Uruguay
|
||||
<../accounting/customer_invoices/electronic_invoicing/uruguay>`
|
||||
|
||||
Glossary
|
||||
--------
|
||||
|
||||
|
||||
@@ -2,55 +2,271 @@
|
||||
Vietnam
|
||||
=======
|
||||
|
||||
Add Vietnamese QR banking codes to invoices
|
||||
===========================================
|
||||
.. _SInvoice: https://www.sinvoice.vn/
|
||||
|
||||
.. _localizations/vietnam/modules:
|
||||
|
||||
Modules
|
||||
=======
|
||||
|
||||
The following modules are installed automatically with the Vietnamese localization:
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Name
|
||||
- Technical name
|
||||
- Description
|
||||
* - :guilabel:`Vietnam - Accounting`
|
||||
- `l10n_vn`
|
||||
- This module includes the default
|
||||
:ref:`fiscal localization package <fiscal_localizations/packages>`.
|
||||
* - :guilabel:`Vietnam - E-invoicing`
|
||||
- `l10n_vn_edi_viettel`
|
||||
- This module includes the features required for integration with :ref:`SInvoice
|
||||
<localizations/vietnam/sinvoice>`.
|
||||
|
||||
.. note::
|
||||
In some cases, such as when upgrading to a version with additional modules, it is possible that
|
||||
modules may not be installed automatically. Any missing modules can be manually :ref:`installed
|
||||
<general/install>`.
|
||||
|
||||
.. _localizations/vietnam/company:
|
||||
|
||||
Company
|
||||
=======
|
||||
|
||||
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`, including the :guilabel:`City`, :guilabel:`State`, :guilabel:`Zip Code`,
|
||||
and :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:`Tax ID`: tax identification number.
|
||||
|
||||
.. _localizations/vietnam/sinvoice:
|
||||
|
||||
E-invoicing with SInvoice
|
||||
=========================
|
||||
|
||||
SInvoice_ is an e-invoice service platform provided by Viettel, one of the biggest e-invoice service
|
||||
providers in Vietnam. Odoo supports integration with SInvoice to submit invoices generated in Odoo.
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
SInvoice platform
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
To send electronic invoices to SInvoice, the following must be created on SInvoice_:
|
||||
|
||||
- :ref:`SInvoice account <localizations/vietname/sinvoice-registration>`
|
||||
- :ref:`Invoice template <localizations/vietname/sinvoice-template>`
|
||||
- :ref:`Invoice symbol <localizations/vietname/sinvoice-symbol>`
|
||||
- :ref:`Invoice issuance notice <localizations/vietname/sinvoice-notice>`
|
||||
|
||||
.. _localizations/vietname/sinvoice-registration:
|
||||
|
||||
SInvoice registration
|
||||
*********************
|
||||
|
||||
To create an account, go to SInvoice_ and register for the desired plan. Fill in the form that
|
||||
opens to be contacted by SInvoice_ to create an account.
|
||||
|
||||
Once you have an account, log into SInvoice_ using your :guilabel:`Username` and
|
||||
:guilabel:`Password`.
|
||||
|
||||
.. _localizations/vietname/sinvoice-template:
|
||||
|
||||
Invoice template creation
|
||||
*************************
|
||||
|
||||
#. On the left side of the overview page, in the :guilabel:`Release management` menu, click
|
||||
:guilabel:`Create business information`.
|
||||
#. In the :guilabel:`Update key information` step, fill in the following fields and other optional
|
||||
information if needed: :guilabel:`Unit name`, :guilabel:`Address`, :guilabel:`Contact person`,
|
||||
:guilabel:`Type of representative documents`.
|
||||
#. Click :guilabel:`Update`.
|
||||
#. In the :guilabel:`Look up digital certificate` step, click :guilabel:`Add new` to add a digital
|
||||
certificate.
|
||||
#. Select the :guilabel:`Branch/Enterprise` and the :guilabel:`Type of digital certificate`, then
|
||||
fill in the required fields for each type:
|
||||
|
||||
- :guilabel:`Supplier`: CloudCA
|
||||
- :guilabel:`Signer ID`: CloudCA
|
||||
- :guilabel:`Digital Certificate`: CloudCA
|
||||
- :guilabel:`How to download file`: HSM
|
||||
- :guilabel:`File Upload`: HSM, USB-TOKEN
|
||||
|
||||
#. Click :guilabel:`Generate key pair` to generate encryption keys for authentication, and
|
||||
:guilabel:`Save`.
|
||||
#. In the :guilabel:`Manage invoice templates` step, add a new :guilabel:`Invoice template`.
|
||||
#. Select the :guilabel:`Invoice type` and fill in the :guilabel:`Invoice template code`,
|
||||
:guilabel:`Invoice template name`, and other optional information if needed.
|
||||
#. Click :guilabel:`Update`.
|
||||
|
||||
.. seealso::
|
||||
`SInvoice documentation on electronic invoice template creation
|
||||
<https://www.sinvoice.vn/2021/02/hdsd-tai-lieu-nghiep-vu-tao-mau-hoa-don-dien-tu.html?debug=1>`_
|
||||
|
||||
.. _localizations/vietname/sinvoice-symbol:
|
||||
|
||||
Invoice symbol creation
|
||||
***********************
|
||||
|
||||
On the left side of the main screen, in the :guilabel:`Release management` menu, click
|
||||
:guilabel:`Invoice symbol` and follow these steps:
|
||||
|
||||
#. Click :guilabel:`Add new` and select the :guilabel:`Invoice template`.
|
||||
#. Set the :guilabel:`Status` to :guilabel:`Active` to activate the symbol and fill in the
|
||||
:guilabel:`Invoice symbol`.
|
||||
#. Enable :guilabel:`Stop automatic sending to tax authorities` and :guilabel:`Default for built-in
|
||||
API` based on preference.
|
||||
#. Click :guilabel:`Save`.
|
||||
|
||||
.. _localizations/vietname/sinvoice-notice:
|
||||
|
||||
Invoice issuance notice
|
||||
***********************
|
||||
|
||||
On the left side of the main screen, in the :guilabel:`Release management` menu, click
|
||||
:guilabel:`Create issuance notice` and follow these steps:
|
||||
|
||||
#. Click :guilabel:`Add new`, select the :guilabel:`Name of the business unit to issue an e-invoice`
|
||||
and the :guilabel:`Tax agency name`. Based on the business unit and tax agency selected, the
|
||||
:guilabel:`Tax code`, :guilabel:`Address`, :guilabel:`Phone number`, and :guilabel:`Separator
|
||||
used` are automatically filled and uneditable.
|
||||
#. Click :guilabel:`Select the invoice type for issuance`, and then select and fill in the
|
||||
following information :
|
||||
|
||||
- :guilabel:`Invoice type`: The invoice type on which to declare an issuance notice.
|
||||
- :guilabel:`Invoice template`: Select from the list of templates available based on the invoice
|
||||
type.
|
||||
- :guilabel:`Symbol`: Select from the list of symbols available based on the invoice type.
|
||||
- :guilabel:`Quantity`: Total number of invoices to issue for the selected type. Based on the
|
||||
type and template selected, this field is filled in automatically. It can be changed if needed.
|
||||
- :guilabel:`Start date of use`: The date from which the invoice template, range, and quantity
|
||||
are used for the issuance notice.
|
||||
|
||||
#. Click :guilabel:`Save` and select more invoice types if necessary by repeating the steps above.
|
||||
Click :guilabel:`Save` to finish drafting the notice.
|
||||
#. Click :guilabel:`Send to tax authorities` for approval. Once approved, the notice's
|
||||
:guilabel:`Status` is changed to :guilabel:`Active`.
|
||||
|
||||
.. _localizations/vietnam/sinvoice-odoo:
|
||||
|
||||
Odoo database
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
Link Odoo to SInvoice
|
||||
*********************
|
||||
|
||||
To connect Odoo with SInvoice, go to :menuselection:`Accounting --> Configuration --> Settings`.
|
||||
In the :guilabel:`Vietnamese Integration` section, fill in your SInvoice :guilabel:`Username` and
|
||||
:guilabel:`Password`. Add a :guilabel:`Default symbol` to generate a prefix for the invoice number
|
||||
managed in SInvoice if needed.
|
||||
|
||||
Invoice template
|
||||
****************
|
||||
|
||||
To create SInvoice templates, go to :menuselection:`Accounting --> Configuration --> Templates`.
|
||||
Click :guilabel:`New` and add a :guilabel:`Template code` and a :guilabel:`Template Invoice Type`.
|
||||
The :guilabel:`Template code` is the initial sequence of digits in the name assigned by SInvoice.
|
||||
For example, if the invoice template is `1/001 - Hóa đơn GTGT - ND123`, the :guilabel:`Template
|
||||
code` is `1/001`. The SInvoice templates in Odoo must match the ones in SInvoice.
|
||||
|
||||
To add :guilabel:`Invoice Symbols`, click :guilabel:`Add a new line`.
|
||||
|
||||
Sending invoices to SInvoice
|
||||
----------------------------
|
||||
|
||||
Invoices can be sent to SInvoice once they have been confirmed. To do so, follow the
|
||||
:ref:`invoice sending <accounting/invoice/sending>` steps. In the :guilabel:`Send` popup, enable
|
||||
:guilabel:`Send to SInvoice` and click :guilabel:`Send & Print`.
|
||||
|
||||
Once the invoice has been successfully submitted to SInvoice, the :guilabel:`SInvoice Status` field
|
||||
in the :guilabel:`SInvoice` tab of the invoice is updated to :guilabel:`Sent`. The
|
||||
:guilabel:`SInvoice Number`, :guilabel:`Issue Date`, :guilabel:`Secret Code` and :guilabel:`eInvoice
|
||||
Number` fields are also updated. The same information is available on SInvoice.
|
||||
|
||||
Replacement or adjustment invoices
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
A replacement invoice is issued to correct an invoice that has **yet to be tax declared**, whereas
|
||||
an adjustment invoice is issued to correct one that has **already been tax declared**. Follow these
|
||||
steps to issue a replacement or adjustment invoice:
|
||||
|
||||
#. Open the invoice and click :guilabel:`Credit Note`.
|
||||
#. In the :guilabel:`Credit Note` popup, fill in the following fields:
|
||||
|
||||
- :guilabel:`Reason displayed on Credit Note`
|
||||
- :guilabel:`Adjustment type`
|
||||
- :guilabel:`Agreement Name`
|
||||
- :guilabel:`Agreement Date`
|
||||
- :guilabel:`Journal`
|
||||
- :guilabel:`Reversal date`
|
||||
|
||||
#. Click :guilabel:`Reverse and Create Invoice` to issue a replacement invoice, or
|
||||
:guilabel:`Reverse` to issue an adjustment invoice.
|
||||
|
||||
The :guilabel:`SInvoice Status` in the :guilabel:`SInvoice` invoice tab is updated to
|
||||
:guilabel:`Replaced` for a replacement invoice or :guilabel:`Adjusted` for an adjustment invoice.
|
||||
|
||||
Invoice cancellation
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
If an invoice needs to be canceled, open the invoice and click :guilabel:`Request Cancel`. In the
|
||||
:guilabel:`Invoice Cancellation` popup, enter the cancellation :guilabel:`Reason`,
|
||||
:guilabel:`Agreement Name`, and :guilabel:`Agreement Date`, and click :guilabel:`Request
|
||||
Cancellation`.
|
||||
|
||||
The :guilabel:`SInvoice Status` in the :guilabel:`SInvoice` invoice tab is updated to
|
||||
:guilabel:`Canceled`.
|
||||
|
||||
.. _localizations/vietnam/qrcode:
|
||||
|
||||
QR banking codes
|
||||
================
|
||||
|
||||
Vietnamese QR banking is a payment service platform that allows customers to make instant domestic
|
||||
payments to individuals and merchants in Vietnamese dong via online and mobile banking.
|
||||
|
||||
Activate QR codes
|
||||
-----------------
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
Go to :menuselection:`Accounting --> Configuration --> Settings`. Under the :guilabel:`Customer
|
||||
Payments` section, activate the :guilabel:`QR Codes` feature.
|
||||
To activate QR banking codes, go to :menuselection:`Accounting --> Configuration --> Settings` and
|
||||
enable :guilabel:`QR Codes` in the :guilabel:`Customer Payments` section.
|
||||
|
||||
Vietnamese QR banking bank account configuration
|
||||
------------------------------------------------
|
||||
Bank account
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Go to :menuselection:`Contacts --> Configuration --> Bank Accounts` and select the bank account for
|
||||
which you want to activate Vietnamese QR banking. Set the :guilabel:`Bank Identifier Code` on the
|
||||
bank. Then set the :guilabel:`Proxy Type` and fill in the :guilabel:`Proxy Value` field depending on
|
||||
the type you chose.
|
||||
To activate QR banking for a bank account, go to :menuselection:`Contacts --> Configuration -->
|
||||
Bank Accounts` and select the bank account. Fill in the :guilabel:`Bank Identifier Code`,
|
||||
:guilabel:`Proxy Type` (based on the information used to identify the :guilabel:`Merchant Account`,
|
||||
such as the card number and bank account numbers), and :guilabel:`Proxy Value` fields.
|
||||
|
||||
Enable :guilabel:`Include Reference` to include the invoice number in the QR code.
|
||||
|
||||
.. important::
|
||||
- The account holder's country must be set to `Vietnam` on its contact form.
|
||||
- The account holder's city is mandatory.
|
||||
- You could also include the invoice number in the QR code by checking the :guilabel:`Include
|
||||
Reference` checkbox.
|
||||
|
||||
.. image:: vietnam/vn-paynow-bank-setting.png
|
||||
:alt: Vietnamese QR banking bank account configuration
|
||||
- The account holder's country must be set to `Vietnam`, and their city must be specified on the
|
||||
contact form.
|
||||
- The :ref:`account number <accounting/bank/account-number>` and bank must be set on the
|
||||
:guilabel:`Bank` journal.
|
||||
|
||||
.. seealso::
|
||||
:doc:`../accounting/bank`
|
||||
|
||||
Bank journal configuration
|
||||
--------------------------
|
||||
Generating QR codes on invoices
|
||||
-------------------------------
|
||||
|
||||
Go to :menuselection:`Accounting --> Configuration --> Journals`, open the bank journal, then fill
|
||||
out the :guilabel:`Account Number` and :guilabel:`Bank` under the :guilabel:`Journal Entries` tab.
|
||||
When creating a new invoice, open the :guilabel:`Other Info` tab and select :guilabel:`EMV
|
||||
Merchant-Presented QR-code` in the :guilabel:`Payment QR-code` field.
|
||||
|
||||
.. image:: vietnam/vn-bank-account-journal-setting.png
|
||||
:alt: Bank Account's journal configuration
|
||||
|
||||
Issue invoices with Vietnamese QR banking QR codes
|
||||
--------------------------------------------------
|
||||
|
||||
When creating a new invoice, open the :guilabel:`Other Info` tab and set the :guilabel:`Payment
|
||||
QR-code` option to *EMV Merchant-Presented QR-code*.
|
||||
|
||||
.. image:: vietnam/vn-qr-code-invoice-setting.png
|
||||
:alt: Select EMV Merchant-Presented QR-code option
|
||||
|
||||
Ensure that the :guilabel:`Recipient Bank` is the one you configured, as Odoo uses this field to
|
||||
generate the Vietnamese QR banking QR code.
|
||||
.. note::
|
||||
Ensure the :guilabel:`Recipient Bank` is configured, as Odoo uses this field to generate QR
|
||||
codes.
|
||||
|
||||
|
Before Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 2.8 KiB |
@@ -2,42 +2,56 @@
|
||||
Inventory adjustments
|
||||
=====================
|
||||
|
||||
.. |Ia| replace:: Inventory adjustments
|
||||
.. |ia| replace:: inventory adjustments
|
||||
|
||||
In any warehouse management system, the recorded inventory counts in the database might not always
|
||||
match the actual inventory counts in the warehouse. The discrepancy between the two counts can be
|
||||
due to damages, human errors, theft, or other factors. As such, inventory adjustments must be made
|
||||
to reconcile the differences, and ensure that the recorded counts in the database match the actual
|
||||
match the actual inventory counts in the warehouse. Discrepancy between counts can be due to
|
||||
damage, human error, theft, or other factors. As such, inventory adjustments must be made to
|
||||
reconcile the differences, and ensure that the recorded counts in the database match the actual
|
||||
counts in the warehouse.
|
||||
|
||||
Inventory Adjustments page
|
||||
==========================
|
||||
|
||||
To view the *Inventory Adjustments* page, navigate to :menuselection:`Inventory app --> Operations
|
||||
--> Inventory Adjustments`.
|
||||
To view the :guilabel:`Inventory Adjustments` page, navigate to :menuselection:`Inventory app -->
|
||||
Operations --> Physical Inventory`.
|
||||
|
||||
.. image:: count_products/inventory-adjustments-page.png
|
||||
:align: center
|
||||
:alt: In stock products listed on the Inventory adjustments page.
|
||||
|
||||
On the :guilabel:`Inventory Adjustments` page, all products that are currently in stock are listed,
|
||||
with each product line containing the following information:
|
||||
The :guilabel:`Inventory Adjustments` page lists all products that are currently in stock.
|
||||
|
||||
- :guilabel:`Location`: the specific location in the warehouse where a product is stored.
|
||||
.. note::
|
||||
Only products with a quantity greater than zero are listed on the :guilabel:`Inventory
|
||||
Adjustments` page. To view product lines with zero current quantity, go to
|
||||
:menuselection:`Inventory app --> Reporting --> Stock`.
|
||||
|
||||
For each product line, the following information is listed:
|
||||
|
||||
- :guilabel:`Location`: the specific location in the warehouse where a product is stored. This
|
||||
column is **only** visible if :doc:`Storage Locations <use_locations>` are enabled.
|
||||
- :guilabel:`Favorite`: identifies products that have been favorited.
|
||||
- :guilabel:`Product`: the product whose quantity is listed on the inventory adjustment line.
|
||||
- :guilabel:`Lot/Serial Number`: the tracking identifier assigned to the specific product listed. It
|
||||
can contain letters, numbers, or a combination of both.
|
||||
|
||||
.. note::
|
||||
If a specific product has a quantity of more than `1.00` in stock, and more than one serial
|
||||
number (or lot number) assigned to it, each uniquely-identified product is displayed on its own
|
||||
number, or lot number, assigned to it, each uniquely-identified product is displayed on its own
|
||||
product line with its own lot/serial number, displayed under the :guilabel:`Lot/Serial Number`
|
||||
column.
|
||||
|
||||
- :guilabel:`Expiration Date`: the date on which the goods with this serial number are due to
|
||||
expire.
|
||||
- :guilabel:`Last Count Date`: the last time the quantity was updated.
|
||||
- :guilabel:`Package`: the package containing the quantity listed.
|
||||
- :guilabel:`On Hand Quantity`: the quantity of the product currently recorded in the database.
|
||||
- :guilabel:`UoM`: the *unit of measure* in which the product is measured. Unless otherwise
|
||||
specified (i.e., in :guilabel:`Pounds` or :guilabel:`Ounces`), the default :abbr:`UoM (Unit of
|
||||
- :guilabel:`Unit`: the *unit of measure* in which the product is measured. Unless otherwise
|
||||
specified (e.g., in :guilabel:`Pounds` or :guilabel:`Ounces`), the default :abbr:`UoM (Unit of
|
||||
Measure)` is :guilabel:`Units`.
|
||||
- :guilabel:`Counted Quantity`: the real quantity counted during an inventory count. This field is
|
||||
left blank by default, but can be changed, depending on if it matches the :guilabel:`On Hand
|
||||
left blank by default but can be changed, depending on if it matches the :guilabel:`On Hand
|
||||
Quantity` or not.
|
||||
- :guilabel:`Difference`: the difference between the :guilabel:`On Hand Quantity` and
|
||||
:guilabel:`Counted Quantity`, once an inventory adjustment is made. The difference is
|
||||
@@ -46,47 +60,45 @@ with each product line containing the following information:
|
||||
this date will default to the 31st of December of the current year.
|
||||
- :guilabel:`User`: the person assigned to the count in the database. This can either be the person
|
||||
physically counting the inventory, or applying the count in the database.
|
||||
- :guilabel:`Product Category`: the category assigned internally to a specific product. Unless
|
||||
otherwise specified (i.e., as :guilabel:`Consumable` or :guilabel:`Rental`), the default *Product
|
||||
Category* is set to :guilabel:`All`.
|
||||
- :guilabel:`Available Quantity`: the quantity of a specific product that is currently available,
|
||||
based on any outstanding/uncompleted sales orders, purchase orders, or manufacturing orders that
|
||||
might change the available quantity once fulfilled.
|
||||
- :guilabel:`Accounting Date`: the date on which the adjustments will be accounted in the Odoo
|
||||
*Accounting* app.
|
||||
- :guilabel:`Company`: the company whose database these inventory adjustments are being made on. The
|
||||
company is listed in the top right corner of the database, next to the user currently logged in.
|
||||
|
||||
.. tip::
|
||||
Some columns are hidden by default. To reveal these columns, click the :guilabel:`additional
|
||||
options` button (three dots icon) to the far right of the form's top row, and select any desired
|
||||
column to reveal by clicking the checkbox next to that option.
|
||||
Additional columns are hidden by default. To reveal these columns, click the
|
||||
:icon:`oi-settings-adjust` :guilabel:`(adjust)` icon to the far right of the form's top row, and
|
||||
reveal any desired column by ticking the checkbox next to that option.
|
||||
|
||||
.. _inventory/create-adjustment:
|
||||
|
||||
Create an inventory adjustment
|
||||
------------------------------
|
||||
|
||||
To create a new inventory adjustment from the :menuselection:`Inventory Adjustments` page, click
|
||||
:guilabel:`Create`. Doing so creates a new, blank inventory adjustment line at the bottom of the
|
||||
page.
|
||||
:guilabel:`New`. Doing so creates a new, blank inventory adjustment line at the bottom of the page.
|
||||
|
||||
.. tip::
|
||||
|Ia| can also be created from the :guilabel:`Forecasted Report` on an individual
|
||||
product record. To open the report, navigate to a product record and click the
|
||||
:guilabel:`Forecasted` smart button. Then, at the top of the page, click :guilabel:`Update
|
||||
Quantity`, then :guilabel:`New`.
|
||||
|
||||
.. image:: count_products/forecast-report.png
|
||||
:alt: The Update Quantities button on a Forecast report in the Inventory app.
|
||||
|
||||
On this blank inventory adjustment line, click the drop-down menu under the :guilabel:`Product`
|
||||
column, and select a product. If the selected product is tracked using either lots or serial
|
||||
numbers, the desired lot or serial number can also be chosen from the drop-down menu under the
|
||||
numbers, the desired lot or serial number needs to be chosen from the drop-down menu under the
|
||||
:guilabel:`Lot/Serial Number` column.
|
||||
|
||||
.. tip::
|
||||
The inventory adjustment line can also be used to create or record lots and serial numbers.
|
||||
|
||||
Next, set the value in the :guilabel:`Counted Quantity` column to the quantity counted for that
|
||||
product during the inventory adjustment process.
|
||||
|
||||
.. note::
|
||||
The :guilabel:`Counted Quantity` for new inventory adjustments is set to `0.00` by default. An
|
||||
inventory move with `0.00` :guilabel:`Quantity Done` is recorded in the product's inventory
|
||||
adjustment history, so it should be set to reflect the actual quantity counted.
|
||||
|
||||
To the right of the :guilabel:`Counted Quantity` column, the :guilabel:`Scheduled Date` and
|
||||
:guilabel:`User` can also be changed via their respective drop-down menus. Changing the
|
||||
:guilabel:`Scheduled Date` changes the date that the inventory adjustment should be processed on,
|
||||
and selecting a responsible :guilabel:`User` assigns a user to the specific inventory adjustment
|
||||
(for traceability purposes).
|
||||
for traceability purposes.
|
||||
|
||||
Once all changes have been made to the new inventory adjustment line, click away from the line.
|
||||
Doing so saves the adjustment, and moves the line to the top of the page.
|
||||
@@ -94,25 +106,29 @@ Doing so saves the adjustment, and moves the line to the top of the page.
|
||||
If the :guilabel:`Counted Quantity` is greater than the :guilabel:`On Hand Quantity`, the value in
|
||||
the :guilabel:`Difference` column is **green**. If the :guilabel:`Counted Quantity` is less than the
|
||||
:guilabel:`On Hand Quantity`, the value in the :guilabel:`Difference` column is **red**. If the
|
||||
quantities match, and haven't been changed at all, no value appears in the :guilabel:`Difference`
|
||||
quantities match, and have not been changed at all, no value appears in the :guilabel:`Difference`
|
||||
column.
|
||||
|
||||
.. image:: count_products/difference-column.png
|
||||
:align: center
|
||||
:alt: Difference column on inventory adjustments page.
|
||||
|
||||
At this stage, the count (:dfn:`inventory adjustment`) is recorded, but not yet applied. This means
|
||||
that the quantity on hand before the adjustment has not yet been updated to match the new, real
|
||||
counted quantity.
|
||||
|
||||
There are two ways to apply the new inventory adjustment. The first way is to click the
|
||||
:guilabel:`Apply` button on the line at the far right of the page. The second way is to click the
|
||||
.. _inventory/apply-adjustment:
|
||||
|
||||
Apply adjusted count
|
||||
--------------------
|
||||
|
||||
|Ia| can be completed in several ways. The first way is to click the
|
||||
:guilabel:`Apply` button on the line at the far right of the page. The second way is to tick the
|
||||
checkbox on the far left of the line. Doing so reveals new button options at the top of the page,
|
||||
one of which is an :guilabel:`Apply` button. Clicking this button instead causes an
|
||||
:guilabel:`Inventory Adjustment Reference / Reason` pop-up window to appear.
|
||||
:guilabel:`Inventory Adjustment` pop-up window to appear.
|
||||
|
||||
From this pop-up menu, a reference or reason can be assigned to the inventory adjustment. By
|
||||
default, the :guilabel:`Inventory Reference / Reason` field is pre-populated with the date the
|
||||
default, the :guilabel:`Inventory Reason` field is pre-populated with today's date, the date the
|
||||
adjustment is being made on, but can be changed to reflect whatever reference or reason is desired.
|
||||
|
||||
Once ready, click :guilabel:`Apply` to apply the inventory adjustment.
|
||||
@@ -122,19 +138,49 @@ Once ready, click :guilabel:`Apply` to apply the inventory adjustment.
|
||||
<../reporting/moves_history>` in the *Moves History* report for traceability.
|
||||
|
||||
.. image:: count_products/apply-inventory-adjustment.png
|
||||
:align: center
|
||||
:alt: Apply all option applies the inventory adjustment once a reason is specified.
|
||||
|
||||
Relocate products
|
||||
=================
|
||||
|
||||
|Ia| can also be used to relocate products to different storage locations, or to
|
||||
different packages. To relocate a product, tick the checkbox at the far left of the line for the
|
||||
desired product. At the top of the page, click the :guilabel:`Relocate` button. Doing so opens a
|
||||
pop-up.
|
||||
|
||||
.. image:: count_products/relocate-popup.png
|
||||
:alt: The Relocate products pop-up on the Inventory Adjustments page.
|
||||
|
||||
On the resulting pop-up, enter the following information:
|
||||
|
||||
- :guilabel:`To Location`: the new location for the products.
|
||||
- :guilabel:`To Package`: the new package for the products.
|
||||
- :guilabel:`Reason for relocation`: the reason for the move.
|
||||
|
||||
.. important::
|
||||
Product relocations **only** work on internal locations. Products **cannot** be moved between
|
||||
companies.
|
||||
|
||||
Only users with *Administrator* rights can perform product relocations.
|
||||
|
||||
Set to zero
|
||||
===========
|
||||
|
||||
|Ia| can also be used to clear inventory counts by setting the quantity to zero. To do this, tick
|
||||
the checkbox at the far left of the line for the desired product. At the top of the page, click the
|
||||
:icon:`fa-gear` :guilabel:`Actions` button to open a drop-down menu. Click :guilabel:`Set to 0`.
|
||||
Once this is complete, :ref:`apply <inventory/apply-adjustment>` the adjusted count.
|
||||
|
||||
Count products
|
||||
==============
|
||||
|
||||
Counting products is a recurring activity in a warehouse. Once a count is complete, go to
|
||||
:menuselection:`Inventory app --> Operations --> Inventory Adjustments` to update the
|
||||
:menuselection:`Inventory app --> Operations --> Physical Inventory` to update the
|
||||
:guilabel:`Counted Quantity` column for each product line.
|
||||
|
||||
On each product line, identify whether the value in the :guilabel:`On Hand Quantity` column recorded
|
||||
in the database matches the newly-counted value. If the recorded value and the counted value do
|
||||
match, click the :guilabel:`Set` button (target icon) at the far right of the product line.
|
||||
match, click the :icon:`fa-bullseye` :guilabel:`Set` icon at the far right of the product line.
|
||||
|
||||
Doing so copies the value from the :guilabel:`On Hand Quantity` column over to the
|
||||
:guilabel:`Counted Quantity` column, and sets the value of the :guilabel:`Difference` column to
|
||||
@@ -142,12 +188,11 @@ Doing so copies the value from the :guilabel:`On Hand Quantity` column over to t
|
||||
recorded in the product's inventory adjustment history.
|
||||
|
||||
.. image:: count_products/zero-move.png
|
||||
:align: center
|
||||
:alt: Zero count inventory adjustment move.
|
||||
|
||||
If the newly-counted value for a given product does **not** match the value in the :guilabel:`On
|
||||
Hand Quantity` recorded in the database, instead of clicking the :guilabel:`Set` button, record the
|
||||
real value in the field in the :guilabel:`Counted Quantity` column.
|
||||
Hand Quantity` recorded in the database, instead of clicking the :icon:`fa-bullseye` :guilabel:`Set`
|
||||
icon, record the real value in the field in the :guilabel:`Counted Quantity` column.
|
||||
|
||||
To do so, click the field in the :guilabel:`Counted Quantity` column on the specific inventory
|
||||
adjustment line for the product whose count is being changed. This automatically assigns a
|
||||
@@ -160,16 +205,23 @@ away from the line. Doing so saves the adjustment, and automatically adjusts the
|
||||
If the :guilabel:`Counted Quantity` is greater than the :guilabel:`On Hand Quantity`, the value in
|
||||
the :guilabel:`Difference` column is **green**. If the :guilabel:`Counted Quantity` is less than the
|
||||
:guilabel:`On Hand Quantity`, the value in the :guilabel:`Difference` column is **red**. If the
|
||||
quantities match, and haven't been changed at all, no value appears in the :guilabel:`Difference`
|
||||
quantities match, and have not been changed at all, no value appears in the :guilabel:`Difference`
|
||||
column.
|
||||
|
||||
Subsequently, once applied, a move with the difference between the :guilabel:`On Hand Quantity` and
|
||||
the :guilabel:`Counted Quantity` is recorded in the product's inventory adjustment history.
|
||||
|
||||
.. image:: count_products/history-inventory-adjustments.png
|
||||
:align: center
|
||||
:alt: Inventory Adjustments History dashboard detailing a list of prior product moves.
|
||||
|
||||
The :guilabel:`Actions` menu appears when one or more products' checkboxes are selected. The
|
||||
:guilabel:`Actions` menu includes the option to :guilabel:`Set to quantity on hand`, which sets the
|
||||
selected products' :guilabel:`Counted Quantity` to the :guilabel:`On Hand Quantity`, and
|
||||
:guilabel:`Set to 0`, which sets the selected products' :guilabel:`Counted Quantity` to zero.
|
||||
|
||||
.. image:: count_products/inventory-adjustment-actions.png
|
||||
:alt: Inventory Adjustments Actions menu.
|
||||
|
||||
.. important::
|
||||
Sometimes a count occurs, but cannot be applied in the database right away. In the time between
|
||||
the actual count and applying the inventory adjustment, product moves can occur. In that case,
|
||||
@@ -177,23 +229,40 @@ the :guilabel:`Counted Quantity` is recorded in the product's inventory adjustme
|
||||
quantity. As an extra precaution, Odoo asks for confirmation before applying the inventory
|
||||
adjustment.
|
||||
|
||||
Revert an inventory adjustment
|
||||
==============================
|
||||
|
||||
To revert the changes made in an inventory adjustment, navigate to :menuselection:`Inventory -->
|
||||
Reporting --> Moves History`.
|
||||
|
||||
Tick the checkbox at the far left of the line for the desired product. At the top of the page, click
|
||||
the :icon:`fa-gear` :guilabel:`Actions` button to open a drop-down menu, and click :guilabel:`Revert
|
||||
Inventory Adjustment`.
|
||||
|
||||
.. note::
|
||||
After an inventory adjustment is reverted, the line is not removed from the :guilabel:`Moves
|
||||
History` report. Instead, an additional line is added, this time with the word `[reverted]` added
|
||||
to the :guilabel:`Reference` column.
|
||||
|
||||
.. image:: count_products/reverted-adjustment.png
|
||||
:alt: The reference fields on the Moves History report in the Inventory app.
|
||||
|
||||
Change inventory count frequency
|
||||
================================
|
||||
|
||||
By default, the *scheduled date* for inventory adjustments are always scheduled for the 31st of
|
||||
December of the current year. However, for some companies, it is crucial that they have an accurate
|
||||
inventory count at all times. In such cases, the default scheduled date can be modified.
|
||||
By default, the *scheduled date* for |ia| are always scheduled for the 31st of December of the
|
||||
current year. However, for some companies, it is crucial that they have an accurate inventory count
|
||||
at all times. In such cases, the default scheduled date can be modified.
|
||||
|
||||
To modify the default scheduled date, go to :menuselection:`Inventory app --> Configuration -->
|
||||
Settings`. Then, in the :guilabel:`Operations` section, locate the :guilabel:`Annual Inventory Day
|
||||
and Month` setting, which includes a drop-down menu that is set to `31 December` by default.
|
||||
|
||||
.. image:: count_products/annual-inventory.png
|
||||
:align: center
|
||||
:alt: Adjust the next inventory count date with the Annual Inventory Day and Month setting.
|
||||
|
||||
To change the day, click the :guilabel:`31`, and change it to a day within the range `1-31`,
|
||||
depending on the desired month of the year.
|
||||
To change the day, click the `31`, enter a number from `1-31`, depending on the desired month of the
|
||||
year.
|
||||
|
||||
Then, to change the month, click :guilabel:`December` to reveal the drop-down menu, and select the
|
||||
desired month.
|
||||
@@ -204,23 +273,22 @@ Plan big inventory counts
|
||||
-------------------------
|
||||
|
||||
To plan big inventory counts, such as a full count of everything currently in stock, first navigate
|
||||
to :menuselection:`Inventory app --> Operations --> Inventory Adjustments`.
|
||||
to :menuselection:`Inventory app --> Operations --> Physical Inventory`.
|
||||
|
||||
Then, select the desired products to be counted by clicking the checkbox on the far left of each
|
||||
Then, select the desired products to be counted by ticking the checkbox on the far left of each
|
||||
product line.
|
||||
|
||||
.. tip::
|
||||
To request a count of **all** products currently in stock, click the checkbox at the very top of
|
||||
the table, in the header row next to the :guilabel:`Location` label. This selects **all** product
|
||||
To request a count of **all** products currently in stock, tick the checkbox at the top of the
|
||||
table, in the header row next to the :guilabel:`Location` label. This selects **all** product
|
||||
lines.
|
||||
|
||||
.. image:: count_products/count-popup.png
|
||||
:align: center
|
||||
:alt: Request a count popup on inventory adjustments page.
|
||||
:alt: Request a count pop-up on inventory adjustments page.
|
||||
|
||||
Once all desired products have been selected, click the :guilabel:`Request a Count` button at the
|
||||
top of the page. This causes a :guilabel:`Request a Count` pop-up window to appear. From this
|
||||
pop-up, fill in the following information:
|
||||
top of the page. Doing so opens the :guilabel:`Request a Count` pop-up window, where the following
|
||||
information can be filled:
|
||||
|
||||
- :guilabel:`Inventory Date`: the planned date of the count.
|
||||
- :guilabel:`User`: the user responsible for the count.
|
||||
@@ -229,11 +297,50 @@ pop-up, fill in the following information:
|
||||
:guilabel:`Leave Empty`. To pre-fill the on-hand quantity of each product line with the current
|
||||
value recorded in the database, select :guilabel:`Set Current Value`.
|
||||
|
||||
.. note::
|
||||
The :guilabel:`Leave Empty` option forces the employee conducting the audit to manually type in
|
||||
the number they counted, while the :guilabel:`Set Current Value` option only requires the
|
||||
employee to *verify* the counted quantity and click :guilabel:`Apply`.
|
||||
|
||||
Finally, once ready, click :guilabel:`Confirm` to request the count.
|
||||
|
||||
.. image:: count_products/count-popup.png
|
||||
:alt: Request a count popup on inventory adjustments page.
|
||||
|
||||
.. important::
|
||||
In the Odoo *Barcode* app, users can only view inventory counts that are assigned to **them**,
|
||||
and are scheduled for **today** or **earlier**.
|
||||
In the Odoo **Barcode** app, users can only view inventory counts that are assigned to *them*,
|
||||
and are scheduled for *today* or *earlier*.
|
||||
|
||||
Sometimes a count occurs, but cannot be applied in the database right away. In the time between
|
||||
the actual count and applying the inventory adjustment, product moves can occur. In that case,
|
||||
the on-hand quantity in the database can change and no longer be consistent with the counted
|
||||
quantity. As an extra precaution, Odoo asks for confirmation before applying the inventory
|
||||
adjustment.
|
||||
|
||||
Adjustment history
|
||||
==================
|
||||
|
||||
Details regarding inventory adjustment can be viewed by clicking the :icon:`fa-history`
|
||||
:guilabel:`History` icon.
|
||||
|
||||
The user who performed the count is listed in parenthesis in the :guilabel:`Reference` field, while
|
||||
the user who applied the count is listed in the :guilabel:`Done By`.
|
||||
|
||||
.. image:: count_products/adjustment-history.png
|
||||
:alt: The history record for an inventory adjustment.
|
||||
|
||||
Inventory audit
|
||||
---------------
|
||||
|
||||
An inventory audit can be accessed from the :guilabel:`Inventory Adjustment` page. This audit
|
||||
includes an inventory record both before and after a count is completed, to track what changed.
|
||||
|
||||
On the :guilabel:`Inventory Adjustment` page, tick the checkbox at the top-left of the page to
|
||||
select all of the lines. Then click the :guilabel:`Request a Count` button. On the pop-up, set
|
||||
:guilabel:`Count` to :guilabel:`Set Current Value`, then click :guilabel:`Confirm`.
|
||||
|
||||
After returning to the :guilabel:`Inventory Adjustment` page, select all of the lines again. Click
|
||||
:menuselection:`Print --> Count Sheet`. The :guilabel:`Count Sheet` exports in PDF form.
|
||||
|
||||
.. seealso::
|
||||
:doc:`cycle_counts`
|
||||
|
||||
|
After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 6.4 KiB |
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 9.5 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 4.8 KiB |
@@ -8,35 +8,75 @@ Replenishment
|
||||
.. |MTO| replace:: :abbr:`MTO (Make to Oder)`
|
||||
.. |PO| replace:: :abbr:`PO (Purchase Order)`
|
||||
.. |MO| replace:: :abbr:`MO (Manufacturing Order)`
|
||||
.. |POs| replace:: :abbr:`POs (Purchase Orders)`
|
||||
.. |MOs| replace:: :abbr:`MOs (Manufacturing Orders)`
|
||||
.. |SO| replace:: :abbr:`SO (Sales Order)`
|
||||
|
||||
In Odoo, there are two strategies for automatically replenishing inventory: *reordering rules* and
|
||||
the *make to order (MTO)* route. Although these strategies differ slightly, they both have similar
|
||||
consequences: triggering the automatic creation of a |PO| or |MO|. The choice of which strategy to
|
||||
use depends on the business's manufacturing and delivery processes.
|
||||
In Odoo, stock can be replenished one of three ways: *reordering rules*, the *make to order* (MTO)
|
||||
route, or using the *master production schedule* (MPS).
|
||||
|
||||
Terminology
|
||||
===========
|
||||
Each replenishment mechanism triggers the creation or suggestion of a purchase order (PO) or
|
||||
manufacturing order (MO), with the best choice depending on the business process.
|
||||
|
||||
.. cards::
|
||||
|
||||
.. card:: Reordering rules
|
||||
:target: replenishment/reordering_rules
|
||||
:tag: Recommended
|
||||
:large:
|
||||
|
||||
Automatically suggest or generate POs or MOs when stock falls below a minimum level.
|
||||
|
||||
.. card:: MTO
|
||||
:target: replenishment/mto
|
||||
:tag: Beginner-friendly
|
||||
|
||||
Automatically generate POs or MOs when sales orders are confirmed.
|
||||
|
||||
.. card:: MPS
|
||||
:target: ../../manufacturing/workflows/use_mps
|
||||
|
||||
Manage long-term replenishment based on inputted sales forecasts, via a dashboard.
|
||||
|
||||
Replenishment strategies
|
||||
========================
|
||||
|
||||
Replenishment report and reordering rules
|
||||
-----------------------------------------
|
||||
|
||||
The replenishment report is a list of all products that have a negative forecast quantity.
|
||||
Reordering rules are rules that can be set up to maintain a minimum stock level. They are often
|
||||
configured to support manufacturing or sales requirements. When a product's stock falls at or below
|
||||
the minimum level, Odoo generates (or suggests) a purchase or manufacturing order to replenish stock
|
||||
to the maximum level.
|
||||
|
||||
*Reordering rules* are used to ensure there's always a minimum amount of a product in-stock, in
|
||||
order to manufacture products and/or fulfill sales orders. When the stock level of a product reaches
|
||||
its minimum, Odoo automatically generates a purchase order with the quantity needed to reach the
|
||||
maximum stock level.
|
||||
When using automatic reordering rules, Odoo generates a new order. When using manual, Odoo suggests
|
||||
orders on the replenishment report. For detailed guidance, refer to the :doc:`replenishment report
|
||||
<replenishment/report>` and :doc:`reordering rules <replenishment/reordering_rules>`.
|
||||
|
||||
Reordering rules can be created and managed in the replenishment report, or from the product form.
|
||||
Key points include:
|
||||
|
||||
- :ref:`Automatic reordering rules <inventory/warehouses_storage/auto-rr>`: Automatically create
|
||||
|POs| or |MOs| when stock falls below the minimum level. While this is convenient, it is less
|
||||
flexible.
|
||||
- :ref:`Manual reordering rules <inventory/warehouses_storage/manual-rr>`: Generate suggestions in
|
||||
the replenishment report for user review, allowing adjustments and batch orders while meeting
|
||||
deadlines.
|
||||
- :ref:`Just-in-time logic <inventory/warehouses_storage/just-in-time>`: A strategy to replenish
|
||||
only what is needed to prevent overstocking.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`replenishment/reordering_rules`
|
||||
- :doc:`replenishment/report`
|
||||
|
||||
.. _inventory/management/products/strategies:
|
||||
|
||||
Make to order
|
||||
-------------
|
||||
|
||||
*Make to order (MTO)* is a procurement route that creates a draft purchase order (or manufacturing
|
||||
order) each time a sales order is confirmed, **regardless of the current stock level**.
|
||||
An |MTO| strategy means that procurement or production is triggered only after a sales order has
|
||||
been confirmed. This strategy is recommended when products are customizable, demand is
|
||||
unpredictable, there is limited storage capacity, and when products are high in value and low in
|
||||
demand. In such cases, it does not make sense to keep on-hand inventory.
|
||||
|
||||
Unlike products replenished using reordering rules, Odoo automatically links the sales order to the
|
||||
|PO| or |MO| generated by the |MTO| route.
|
||||
@@ -51,158 +91,28 @@ as the |PO| or |MO| is not confirmed.
|
||||
The |MTO| route is the best replenishment strategy for products that are customized, and/or for
|
||||
products that have no stock kept on-hand.
|
||||
|
||||
.. seealso::
|
||||
:doc:`replenishment/mto`
|
||||
|
||||
Configuration
|
||||
=============
|
||||
Master production schedule
|
||||
--------------------------
|
||||
|
||||
Replenishment report and reordering rules
|
||||
-----------------------------------------
|
||||
The :abbr:`MPS (Master Production Schedule)` is a dashboard where products and their forecasted
|
||||
quantities are entered. Based on confirmed manufacturing and purchase orders, the dashboard
|
||||
recommends amounts to order or produce.
|
||||
|
||||
To access the replenishment report, go to :menuselection:`Inventory app --> Operations -->
|
||||
Replenishment.`
|
||||
This a useful **manual** tool for keeping track of quantities. The :abbr:`MPS (Master Production
|
||||
Schedule)` **should absolutely not** be used alongside reordering rules, as the automated workflow
|
||||
disrupts its manual replenishment method.
|
||||
|
||||
By default, the replenishment report dashboard shows every product that needs to be manually
|
||||
reordered. If there is no specific rule for a product, Odoo assumes the :guilabel:`Min Quantity` and
|
||||
:guilabel:`Max Quantity` stock are both `0.00`
|
||||
|
||||
.. note::
|
||||
For products that don't have a set reordering rule, Odoo calculates the forecast based on
|
||||
confirmed sales orders, deliveries, and receipts. For products that have a set reordering rule,
|
||||
Odoo calculates the forecast normally, but also takes into account the purchase/manufacturing
|
||||
lead time and security lead time.
|
||||
|
||||
.. important::
|
||||
Before creating a new reordering rule, make sure the product has a *vendor* or a *bill of
|
||||
materials* configured on the product form. To check this, go to :menuselection:`Inventory app
|
||||
--> Products --> Products`, and select the product to open its product form. The vendor, if
|
||||
configured, is listed in the :guilabel:`Purchase` tab, and the bill on materials, if configured,
|
||||
is found in the :guilabel:`Bill of Materials` smart button at the top of the form.
|
||||
|
||||
The :guilabel:`Product Type`, located in the :guilabel:`General Information` tab on the product
|
||||
form, **must** be set to :guilabel:`Storable Product`. By definition, a consumable product does
|
||||
not have its inventory levels tracked, so Odoo cannot account for a consumable product in the
|
||||
replenishment report.
|
||||
|
||||
.. image:: replenishment/replenishment/replenishment-report-dashboard.png
|
||||
:align: center
|
||||
:alt: Replenishment report listing all items needing to be purchased to meet current needs.
|
||||
|
||||
To create a new reordering rule from the replenishment report, go to :menuselection:`Inventory app
|
||||
--> Operations --> Replenishment`, click :guilabel:`Create`, and select the desired product from the
|
||||
drop-down menu in the :guilabel:`Product` column. If necessary, a :guilabel:`Min Quantity` and a
|
||||
:guilabel:`Max Quantity` can be configured in the corresponding columns on the
|
||||
:guilabel:`Replenishment` report page, as well.
|
||||
|
||||
To create a new reordering rule from the product form, go to :menuselection:`Inventory app -->
|
||||
Products --> Products`, and select a product to open its product form. Click the
|
||||
:guilabel:`Reordering Rules` smart button, click :guilabel:`Create`, and fill out the fields.
|
||||
|
||||
Replenishment report fields
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The following fields are on the :guilabel:`Replenishment` report. If any of these fields are not
|
||||
visible, click the :guilabel:`⋮ (additional options)` icon on the far right side of the report, then
|
||||
click the checkbox next to a field to make it visible.
|
||||
|
||||
- :guilabel:`Product`: the product that requires a replenishment.
|
||||
- :guilabel:`Location`: the specific location where the product is stored.
|
||||
- :guilabel:`Warehouse`: the warehouse where the product is stored.
|
||||
- :guilabel:`On Hand`: the amount of product currently available.
|
||||
- :guilabel:`Forecast`: the amount of product available after all current orders (sales,
|
||||
manufacturing, purchase, etc.) are taken into account.
|
||||
- :guilabel:`Preferred Route`: how the product is procured, either :guilabel:`Buy`,
|
||||
:guilabel:`Manufactured`, :guilabel:`Dropship`, etc.
|
||||
- :guilabel:`Vendor`: the company from which the product is acquired.
|
||||
- :guilabel:`Bill of Materials`: the bill of materials for the product (if one is configured).
|
||||
- :guilabel:`Trigger`: how the replenishment is created, either :guilabel:`Auto` (automatically,
|
||||
once the :guilabel:`On Hand` quantity goes below the :guilabel:`Min Quantity`) or
|
||||
:guilabel:`Manual` (only when the replenishment is requested).
|
||||
- :guilabel:`Procurement Group`: the reference number for how the product is being acquired, such as
|
||||
a sales order, purchase order, or manufacturing order.
|
||||
- :guilabel:`Min Quantity`: the minimum amount of product that should be available. When inventory
|
||||
levels goes below this number, the replenishment is triggered.
|
||||
- :guilabel:`Max Quantity`: the amount of product that should be available after replenishing the
|
||||
product.
|
||||
- :guilabel:`Multiple Quantity`: if the product should be ordered in specific quantities, enter the
|
||||
number that should be ordered. For example, if the :guilabel:`Multiple Quantity` is set to `5`,
|
||||
and only 3 are needed, 5 products are replenished.
|
||||
- :guilabel:`To Order`: the amount of product that is currently needed, and will be ordered, if the
|
||||
:guilabel:`Order Once` or :guilabel:`Automate Orders` button is clicked.
|
||||
- :guilabel:`UoM`: the unit of measure used to acquire the product.
|
||||
- :guilabel:`Company`: the company for which the product is acquired.
|
||||
|
||||
By default, the quantity in the :guilabel:`To Order` field is the quantity required to reach the set
|
||||
:guilabel:`Max Quantity`. However, the :guilabel:`To Order` quantity can be adjusted by clicking on
|
||||
the field and changing the value. To replenish a product manually, click :guilabel:`Order Once`.
|
||||
|
||||
To automate a replenishment from the :guilabel:`Replenishment` page, click :guilabel:`Automate
|
||||
Orders` on the right-side of the line, represented by a :guilabel:`🔄 (circular arrow)` icon.
|
||||
|
||||
When this button is clicked, Odoo will automatically generate a draft |PO|/|MO| every time the
|
||||
forecasted stock level falls below the set :guilabel:`Min Quantity` of the reordering rule.
|
||||
|
||||
On the :guilabel:`Replenishment` page, a reordering rule or manual replenishment can be temporarily
|
||||
deactivated for a given period, by clicking the :guilabel:`🔕 (snooze)` icon on the far-right of the
|
||||
line.
|
||||
|
||||
.. image:: replenishment/replenishment/reordering-rule-snooze-settings.png
|
||||
:align: center
|
||||
:alt: Snooze options to turn off notifications for reordering for a period of time.
|
||||
|
||||
A |PO| or |MO| created by a manual replenishment has a :guilabel:`Replenishment Report` as the
|
||||
source document. A |PO| or |MO| created by an automated reordering rule has the |SO| reference
|
||||
number(s) that triggered the rule as the source document.
|
||||
|
||||
.. image:: replenishment/replenishment/rfq-source-document.png
|
||||
:align: center
|
||||
:alt: Quote request list shows which quotes are directly from the replenishment report.
|
||||
|
||||
Make to order (MTO) route
|
||||
=========================
|
||||
|
||||
Since the |MTO| route is recommended for customized products, the route is hidden by default.
|
||||
|
||||
To activate the |MTO| route in Odoo:
|
||||
#. Go to :menuselection:`Inventory app --> Configuration --> Settings`.
|
||||
#. Activate the :guilabel:`Multi-Step Routes` setting, located under the :guilabel:`Warehouse`
|
||||
section, and click :guilabel:`Save`.
|
||||
#. Then, go to :menuselection:`Inventory app --> Configuration --> Routes`.
|
||||
#. Click on :menuselection:`Filters --> Archived` to show archived routes.
|
||||
#. Select the checkbox next to :guilabel:`Replenish on Order (MTO)`, and click on
|
||||
:menuselection:`Action --> Unarchive`.
|
||||
|
||||
.. note::
|
||||
Activating the :guilabel:`Multi-Step Routes` setting also activates :guilabel:`Storage
|
||||
Locations`. If these features aren't applicable to the warehouse, disable these settings after
|
||||
unarchiving the |MTO| route.
|
||||
|
||||
To set a product's procurement route to |MTO|, go to :menuselection:`Inventory app --> Products -->
|
||||
Products`, and click on the desired product to open its product form.
|
||||
|
||||
Then, click the :guilabel:`Inventory` tab, and in the :guilabel:`Routes` section of options, select
|
||||
:guilabel:`Replenish on Order (MTO)`.
|
||||
|
||||
For products purchased directly from a vendor, make sure the :guilabel:`Buy` route is selected, in
|
||||
addition to the :guilabel:`Replenish on Order (MTO)` route. Also, make sure a vendor is configured
|
||||
in the :guilabel:`Purchase` tab of the product form.
|
||||
|
||||
For products manufactured in-house, make sure the :guilabel:`Manufacture` route is selected, in
|
||||
addition to the :guilabel:`Replenish on Order (MTO)` route. Also, make sure a bill of materials is
|
||||
configured for the product, which is accessible via the :guilabel:`Bill of Materials` smart button
|
||||
on the product form.
|
||||
|
||||
.. note::
|
||||
The |MTO| route cannot be selected alone. |MTO| **only** works if the :guilabel:`Manufacture` or
|
||||
:guilabel:`Buy` route is also selected.
|
||||
|
||||
.. image:: replenishment/replenishment/acoustic-block-screen-replenish.png
|
||||
:align: center
|
||||
:alt: Replenish on Order selected on the product form.
|
||||
.. seealso::
|
||||
:doc:`../../manufacturing/workflows/use_mps`
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
replenishment/mto
|
||||
replenishment/reordering_rules
|
||||
replenishment/report
|
||||
replenishment/lead_times
|
||||
replenishment/resupply_warehouses
|
||||
|
||||
@@ -2,14 +2,15 @@
|
||||
Lead times
|
||||
==========
|
||||
|
||||
.. |MO| replace:: :abbr:`MO (Manufacturing Order)`
|
||||
.. |MOs| replace:: :abbr:`MOs (Manufacturing Orders)`
|
||||
.. |BoM| replace:: :abbr:`BoM (Bill of Materials)`
|
||||
.. |BoMs| replace:: :abbr:`BoMs (Bills of Materials)`
|
||||
.. |RFQ| replace:: :abbr:`RFQ (Request for Quotation)`
|
||||
|
||||
Accurately forecasting delivery dates is vital for fulfilling customer expectations. In Odoo, the
|
||||
*Inventory* app allows for comprehensive lead time configuration, allowing coordination and planning
|
||||
of manufacturing orders, deliveries, and receptions.
|
||||
**Inventory** app allows for comprehensive lead time configuration, allowing coordination and planning
|
||||
of manufacturing orders, deliveries, and receipts.
|
||||
|
||||
Lead time types
|
||||
===============
|
||||
@@ -18,52 +19,50 @@ Different lead times for different operations can impact various stages of the o
|
||||
process. Here's a summary of the types of lead times in Odoo:
|
||||
|
||||
.. image:: lead_times/all-lead-times.png
|
||||
:align: center
|
||||
:alt: Show graphic of all lead times working together.
|
||||
|
||||
- :ref:`Customer lead time <inventory/shipping_receiving/customer-lt>`: default time frame for
|
||||
- :ref:`Customer lead time <inventory/warehouses_storage/customer-lt>`: default time frame for
|
||||
fulfilling customer orders. The customer lead time is the number of days from the date the sales
|
||||
order (SO) is confirmed to the date the products are shipped from the warehouse. This is also
|
||||
known as *delivery lead time*.
|
||||
|
||||
- :ref:`Sales security lead time <inventory/shipping_receiving/sales-security-lt>`: moves the
|
||||
- :ref:`Sales security lead time <inventory/warehouses_storage/sales-security-lt>`: moves the
|
||||
*scheduled delivery date* forward by a specified number of days. This serves as a buffer to allow
|
||||
ample time to prepare the outgoing shipment earlier, considering the possibility of delays in the
|
||||
fulfillment process.
|
||||
|
||||
- :ref:`Purchase lead time <inventory/shipping_receiving/purchase-lt>`: number of days from the
|
||||
- :ref:`Purchase lead time <inventory/warehouses_storage/purchase-lt>`: number of days from the
|
||||
confirmation of a purchase order (PO) to the receipt of products. It provides insight on the time
|
||||
it takes for products to arrive at the warehouse, facilitating effective scheduling and planning
|
||||
of supplier deliveries.
|
||||
|
||||
- :ref:`Purchase security lead time <inventory/shipping_receiving/purchase-security-lt>`: advances
|
||||
- :ref:`Purchase security lead time <inventory/warehouses_storage/purchase-security-lt>`: advances
|
||||
the order deadline on a :abbr:`PO (Purchase Order)` by a specified number of days. This proactive
|
||||
approach of placing orders earlier mitigates the risk of vendor or shipping delays. Thus, for
|
||||
products that are set to replenish to order, the need appears on the *Replenishment report*
|
||||
earlier, according to the specified number of days.
|
||||
|
||||
- :ref:`Days to Purchase <inventory/shipping_receiving/days-to-purchase>`: days needed for the
|
||||
- :ref:`Days to Purchase <inventory/warehouses_storage/days-to-purchase>`: days needed for the
|
||||
vendor to receive a request for quotation (RFQ) and confirm it. It advances the deadline to
|
||||
schedule a |RFQ| by a specified number of days.
|
||||
|
||||
- :ref:`Manufacturing lead time <inventory/shipping_receiving/manuf-lt>`: number of days needed to
|
||||
- :ref:`Manufacturing lead time <inventory/warehouses_storage/manuf-lt>`: number of days needed to
|
||||
complete a manufacturing order (MO) from the date of confirmation. This lead time includes
|
||||
weekends (non-working hours in Odoo), and is used to forecast an approximate production date for a
|
||||
finished good.
|
||||
|
||||
- :ref:`Days to prepare manufacturing order
|
||||
<inventory/shipping_receiving/prepare-manufacturing-order>`: number of days needed to replenish
|
||||
<inventory/warehouses_storage/prepare-manufacturing-order>`: number of days needed to replenish
|
||||
components, or manufacture sub-assemblies of the product. Either set one directly on the bill of
|
||||
materials (BoM), or click *Compute* to sum up purchase and manufacturing lead times of components
|
||||
in the |BoM|.
|
||||
|
||||
- :ref:`Manufacturing security lead time <inventory/shipping_receiving/manuf-security-lt>`: moves
|
||||
the scheduled date of the :abbr:`MO (Manufacturing Order)` forward by a specified number of days.
|
||||
When used in conjunction with :ref:`replenish to order
|
||||
<inventory/management/products/strategies>`, the security lead time makes the need appear earlier
|
||||
on the replenishment report.
|
||||
- :ref:`Manufacturing security lead time <inventory/warehouses_storage/manuf-security-lt>`: moves
|
||||
the scheduled date of the |MO| forward by a specified number of days. When used in conjunction
|
||||
with :ref:`replenish to order <inventory/management/products/strategies>`, the security lead time
|
||||
makes the need appear earlier on the replenishment report.
|
||||
|
||||
.. _inventory/shipping_receiving/customer-lt:
|
||||
.. _inventory/warehouses_storage/customer-lt:
|
||||
|
||||
Sales lead times
|
||||
================
|
||||
@@ -81,7 +80,6 @@ not be feasible to fulfill the order by that time, which would impact other ware
|
||||
1 day. Based on the lead time inputs, Odoo suggests a delivery date in 15 days, on July 26th.
|
||||
|
||||
.. image:: lead_times/scheduled-date.png
|
||||
:align: center
|
||||
:alt: Set *Delivery Date* in a sales order. Enables delivery lead times feature.
|
||||
|
||||
The following sections demonstrate how to automatically compute expected delivery dates.
|
||||
@@ -100,10 +98,9 @@ in the number of calendar days required to fulfill the delivery order from start
|
||||
Time` field.
|
||||
|
||||
.. image:: lead_times/customer.png
|
||||
:align: center
|
||||
:alt: Set *Customer Lead Time* on the product form.
|
||||
|
||||
.. _inventory/shipping_receiving/sales-security-lt:
|
||||
.. _inventory/warehouses_storage/sales-security-lt:
|
||||
|
||||
Sales security lead time
|
||||
------------------------
|
||||
@@ -124,7 +121,6 @@ team to prepare for outgoing shipments earlier than the scheduled date.
|
||||
the new scheduled date for the delivery order would be April 5th.
|
||||
|
||||
.. image:: lead_times/sales-security.png
|
||||
:align: center
|
||||
:alt: View of the security lead time for sales configuration from the sales settings.
|
||||
|
||||
Deliver several products
|
||||
@@ -143,7 +139,6 @@ and set the :guilabel:`Shipping Policy` to:
|
||||
date to the longest lead time among the products in the order.
|
||||
|
||||
.. image:: lead_times/shipping-policy.png
|
||||
:align: center
|
||||
:alt: Show *Shipping Policy* field in the *Other Info* tab of a quotation.
|
||||
|
||||
.. example::
|
||||
@@ -154,7 +149,7 @@ and set the :guilabel:`Shipping Policy` to:
|
||||
delivery date is 5 days from today: April 7th. On the other hand, selecting :guilabel:`When all
|
||||
products are ready` configures the scheduled date to be 8 days from today: April 10th.
|
||||
|
||||
.. _inventory/shipping_receiving/purchase-lt:
|
||||
.. _inventory/warehouses_storage/purchase-lt:
|
||||
|
||||
Purchase lead times
|
||||
===================
|
||||
@@ -171,11 +166,10 @@ This deadline is the date by which the order should be confirmed, in order to en
|
||||
by the expected receipt date.
|
||||
|
||||
.. image:: lead_times/vendor-lead-times.png
|
||||
:align: center
|
||||
:alt: Visualization of PO deadline and receipt date used with vendor lead times.
|
||||
|
||||
.. seealso::
|
||||
:ref:`PO scheduling with reordering rules <inventory/management/reordering_rules>`
|
||||
:doc:`PO scheduling with reordering rules <reordering_rules>`
|
||||
|
||||
Vendor lead time
|
||||
----------------
|
||||
@@ -197,7 +191,6 @@ pricelist, click the :guilabel:`Add a line` button to add vendor details, such a
|
||||
vendor is set to `10 days.`
|
||||
|
||||
.. image:: lead_times/set-vendor.png
|
||||
:align: center
|
||||
:alt: Add delivery lead times to vendor pricelist on a product.
|
||||
|
||||
By setting the vendor lead time, the expected arrival date of the item is automatically determined
|
||||
@@ -212,14 +205,12 @@ timeframe.
|
||||
from the :guilabel:`Receipt` smart button, located on the :guilabel:`PO (Purchase Order)`.
|
||||
|
||||
.. image:: lead_times/receipt-date.png
|
||||
:align: center
|
||||
:alt: Show expected *Receipt Date* of the product from the vendor.
|
||||
|
||||
.. image:: lead_times/scheduled-date-receipt.png
|
||||
:align: center
|
||||
:alt: Show expected *Scheduled Date* of arrival of the product from the vendor.
|
||||
|
||||
.. _inventory/shipping_receiving/purchase-security-lt:
|
||||
.. _inventory/warehouses_storage/purchase-security-lt:
|
||||
|
||||
Purchase security lead time
|
||||
---------------------------
|
||||
@@ -240,24 +231,18 @@ set to account for potential delays in supplier deliveries. Then, click :guilabe
|
||||
the receipt would be April 8th.
|
||||
|
||||
.. image:: lead_times/vendor-security.png
|
||||
:align: center
|
||||
:alt: Set security lead time for purchase from the Inventory > Configuration > Settings.
|
||||
|
||||
.. _inventory/shipping_receiving/days-to-purchase:
|
||||
.. _inventory/warehouses_storage/days-to-purchase:
|
||||
|
||||
Days to purchase
|
||||
----------------
|
||||
Days to purchase lead time
|
||||
--------------------------
|
||||
|
||||
To set up the *days to purchase* lead time, go to :menuselection:`Inventory app --> Configuration
|
||||
--> Settings`. Under the :guilabel:`Advanced Scheduling` section, in the :guilabel:`Days to
|
||||
Purchase` field, specify the number of days required for the vendor to confirm a |RFQ| after
|
||||
receiving it from the company.
|
||||
To set it up, go to :menuselection:`Inventory app --> Configuration --> Settings`. Under the
|
||||
:guilabel:`Advanced Scheduling` section, in the :guilabel:`Days to Purchase` field, specify the
|
||||
number of days required for the vendor to confirm a |RFQ| after receiving it from the company.
|
||||
|
||||
.. image:: lead_times/days-to-purchase.png
|
||||
:align: center
|
||||
:alt: Show "Days to Purchase" configuration in the Settings page.
|
||||
|
||||
.. _inventory/shipping_receiving/manuf-lt:
|
||||
.. _inventory/warehouses_storage/manuf-lt:
|
||||
|
||||
Manufacturing lead times
|
||||
========================
|
||||
@@ -265,12 +250,11 @@ Manufacturing lead times
|
||||
Lead times can help simplify the procurement process for consumable materials and components used in
|
||||
manufactured products with bills of materials (BoMs).
|
||||
|
||||
The :abbr:`MO (Manufacturing Order)` deadline, which is the deadline to begin the manufacturing
|
||||
process to complete the product by the scheduled delivery date, can be determined by configuring the
|
||||
manufacturing lead times and manufacturing security lead times.
|
||||
The |MO| deadline, which is the deadline to begin the manufacturing process to complete the product
|
||||
by the scheduled delivery date, can be determined by configuring the manufacturing lead times and
|
||||
manufacturing security lead times.
|
||||
|
||||
.. image:: lead_times/manuf-lead-times.png
|
||||
:align: center
|
||||
:alt: Visualization of the determination of planned MO date manufacturing lead times.
|
||||
|
||||
Manufacturing lead time
|
||||
@@ -285,7 +269,6 @@ On the |BoM| form, click the :guilabel:`Miscellaneous` tab. Change the value (in
|
||||
:guilabel:`Manuf. Lead Time` field to specify the calendar days needed to manufacture the product.
|
||||
|
||||
.. image:: lead_times/set-manufacturing.png
|
||||
:align: center
|
||||
:alt: Manuf. Lead Time value specified on a product's Bill of Material form.
|
||||
|
||||
.. note::
|
||||
@@ -295,12 +278,11 @@ On the |BoM| form, click the :guilabel:`Miscellaneous` tab. Change the value (in
|
||||
If the |BoM| product is subcontracted, the :guilabel:`Manuf. Lead Time` can be used to determine
|
||||
the date at which components should be sent to the subcontractor.
|
||||
|
||||
Establish a :abbr:`MO (Manufacturing Order)` deadline, based on the *expected delivery date*,
|
||||
indicated in the :guilabel:`Scheduled Date` field of the :abbr:`DO (Delivery Order)`.
|
||||
Establish a |MO| deadline, based on the *expected delivery date*, indicated in the
|
||||
:guilabel:`Scheduled Date` field of the :abbr:`DO (Delivery Order)`.
|
||||
|
||||
The :abbr:`MO (Manufacturing Order)` deadline, which is the :guilabel:`Scheduled Date` field on the
|
||||
:abbr:`MO (Manufacturing Order)`, is calculated as the *expected delivery date* subtracted by the
|
||||
manufacturing lead time.
|
||||
The |MO| deadline, which is the :guilabel:`Scheduled Date` field on the |MO|, is calculated as the
|
||||
*expected delivery date* subtracted by the manufacturing lead time.
|
||||
|
||||
This ensures the manufacturing process begins on time, in order to meet the delivery date.
|
||||
|
||||
@@ -317,7 +299,7 @@ performed at the work center simultaneously`).
|
||||
product requires 14 days to manufacture. So, the latest date to start the :abbr:`MO
|
||||
(Manufacturing Order)` to meet the commitment date is August 1st.
|
||||
|
||||
.. _inventory/shipping_receiving/prepare-manufacturing-order:
|
||||
.. _inventory/warehouses_storage/prepare-manufacturing-order:
|
||||
|
||||
Days to prepare manufacturing order
|
||||
-----------------------------------
|
||||
@@ -343,7 +325,7 @@ manufacture semi-finished products.
|
||||
purchase lead time of four days. The :guilabel:`Days to prepare Manufacturing Order` is four
|
||||
days.
|
||||
|
||||
.. _inventory/shipping_receiving/manuf-security-lt:
|
||||
.. _inventory/warehouses_storage/manuf-security-lt:
|
||||
|
||||
Manufacturing security lead time
|
||||
--------------------------------
|
||||
@@ -356,15 +338,13 @@ Next, enter the desired number of calendar days. By configuring the security lea
|
||||
set to account for potential delays in the manufacturing process. Then, click :guilabel:`Save`.
|
||||
|
||||
.. image:: lead_times/manuf-security.png
|
||||
:align: center
|
||||
:alt: View of the security lead time for manufacturing from the manufacturing app settings.
|
||||
|
||||
.. example::
|
||||
A product has a scheduled shipment date on the :abbr:`DO (Delivery Order)` set for August 15th.
|
||||
The manufacturing lead time is 7 days, and manufacturing security lead time is 3 days. So, the
|
||||
:guilabel:`Scheduled Date` on the :abbr:`MO (Manufacturing Order)` reflects the latest date to
|
||||
begin the manufacturing order. In this example, the planned date on the :abbr:`MO (Manufacturing
|
||||
Order)` is August 5th.
|
||||
:guilabel:`Scheduled Date` on the |MO| reflects the latest date to begin the manufacturing order.
|
||||
In this example, the planned date on the |MO| is August 5th.
|
||||
|
||||
Global example
|
||||
==============
|
||||
@@ -383,7 +363,6 @@ date from the warehouse is on September 20th. Odoo uses lead times and automated
|
||||
schedule the necessary operations, based on the outgoing shipment delivery date, September 20th:
|
||||
|
||||
.. image:: lead_times/global-example.png
|
||||
:align: center
|
||||
:alt: Show timeline of how lead times work together to schedule warehouse operations.
|
||||
|
||||
- **September 1st**: Sales order created, confirmed by salesperson.
|
||||
|
||||
@@ -2,64 +2,106 @@
|
||||
Reordering rules
|
||||
================
|
||||
|
||||
.. _inventory/management/reordering_rules:
|
||||
.. |SO| replace:: :abbr:`SO (sales order)`
|
||||
.. |PO| replace:: :abbr:`PO (purchase order)`
|
||||
.. |SO| replace:: :abbr:`SO (Sales Order)`
|
||||
.. |SOs| replace:: :abbr:`SOs (Sales Orders)`
|
||||
.. |RFQ| replace:: :abbr:`RFQ (Request for Quotation)`
|
||||
.. |RFQs| replace:: :abbr:`RFQs (Requests for Quotations)`
|
||||
.. |PO| replace:: :abbr:`PO (Purchase Order)`
|
||||
.. |POs| replace:: :abbr:`POs (Purchase Orders)`
|
||||
.. |MO| replace:: :abbr:`MO (Manufacturing Order)`
|
||||
.. |MOs| replace:: :abbr:`MOs (Manufacturing Orders)`
|
||||
.. |BoM| replace:: :abbr:`BoM (Bill of Materials)`
|
||||
.. |BoMs| replace:: :abbr:`BoMs (Bills of Materials)`
|
||||
.. |adjust| replace:: :icon:`oi-settings-adjust` :guilabel:`(adjust)` icon
|
||||
|
||||
*Reordering rules* are used to keep forecasted stock levels above a certain threshold without
|
||||
exceeding a specified upper limit. This is accomplished by specifying a minimum quantity that stock
|
||||
should not fall below and a maximum quantity that stock should not exceed.
|
||||
|
||||
Reordering rules can be configured for each product based on the route used to replenish it. If a
|
||||
product uses the *Buy* route, then a Request for Quotation (RFQ) is created when the reordering rule
|
||||
is triggered. If a product uses the *Manufacture* route, then a Manufacturing Order (MO) is created
|
||||
instead. This is the case regardless of the selected replenishment route.
|
||||
product uses the *Buy* route, then a *request for quotation* (RFQ) is created when the reordering
|
||||
rule is triggered. If a product uses the *Manufacture* route, then a *manufacturing order* (MO) is
|
||||
created instead. This is the case regardless of the selected replenishment route.
|
||||
|
||||
.. seealso::
|
||||
- `Odoo Tutorials: Automatic Reordering Rules <https://www.youtube.com/watch?v=XEJZrCjoXaU>`_
|
||||
- `Odoo Tutorials: Manual Reordering Rules <https://www.youtube.com/watch?v=deIREJ1FFj4>`_
|
||||
|
||||
Configure products for reordering rules
|
||||
=======================================
|
||||
To set up reordering rules for the first time, refer to:
|
||||
|
||||
In order to use reordering rules for a product, it must first be correctly configured. Begin by
|
||||
navigating to :menuselection:`Inventory app --> Products --> Products`, then select an existing
|
||||
product, or create a new one by clicking :guilabel:`New`.
|
||||
- :ref:`Reordering rules setup <inventory/warehouses_storage/configure-rr>`
|
||||
- :ref:`Trigger <inventory/product_management/trigger>`
|
||||
- :ref:`Preferred route <inventory/warehouses_storage/route>`
|
||||
|
||||
On the product form, under the :guilabel:`General Information` tab, make sure the
|
||||
:guilabel:`Track Inventory` checkbox is ticked. This is necessary for Odoo to track the product's
|
||||
stock levels and trigger reordering rules.
|
||||
To understand and optimize replenishment using advanced features, see:
|
||||
|
||||
- :ref:`Just-in-time logic <inventory/warehouses_storage/just-in-time>`
|
||||
- :ref:`Visibility days <inventory/product_management/visibility-days>`
|
||||
|
||||
.. _inventory/warehouses_storage/configure-rr:
|
||||
|
||||
Reordering rules setup
|
||||
======================
|
||||
|
||||
To configure automatic and manual reordering rules, complete the following:
|
||||
|
||||
#. :ref:`Product type configuration <inventory/warehouses_storage/set-product-type>`
|
||||
#. :ref:`Replenishment method <inventory/warehouses_storage/set-method>`
|
||||
#. :ref:`Create rule <inventory/warehouses_storage/rr-fields>`
|
||||
|
||||
.. _inventory/warehouses_storage/set-product-type:
|
||||
|
||||
Product type configuration
|
||||
--------------------------
|
||||
|
||||
A product must be configured correctly to use reordering rules. Begin by navigating to
|
||||
:menuselection:`Inventory app --> Products --> Products`, then select an existing product, or create
|
||||
a new one by clicking :guilabel:`New`.
|
||||
|
||||
On the product form, under the :guilabel:`General Information` tab, set the :guilabel:`Product Type`
|
||||
to :guilabel:`Goods`, and make sure the :guilabel:`Track Inventory` checkbox is ticked. This is
|
||||
necessary for Odoo to track the product's stock levels and trigger reordering rules.
|
||||
|
||||
.. image:: reordering_rules/product-type.png
|
||||
:alt: Set the Product Type as Storable.
|
||||
:alt: Product Type and Track Inventory configurations.
|
||||
|
||||
Next, click on the :guilabel:`Inventory` tab and select one or more routes from the
|
||||
:guilabel:`Routes` section. Doing so tells Odoo which route to use to replenish the product.
|
||||
.. _inventory/warehouses_storage/set-method:
|
||||
|
||||
.. image:: reordering_rules/select-routes.png
|
||||
:alt: Select one or more routes on the Inventory tab.
|
||||
Replenishment method
|
||||
--------------------
|
||||
|
||||
If the product is reordered using the :guilabel:`Buy` route, confirm that the :guilabel:`Can be
|
||||
Purchased` checkbox is enabled under the product name. This makes the :guilabel:`Purchase` tab
|
||||
appear. Click on the :guilabel:`Purchase` tab, and specify at least one vendor, and the price that
|
||||
they sell the product for, so that Odoo knows which company the product should be purchased from.
|
||||
Next, configure the replenishment method (e.g., buy or manufacture) by going to the
|
||||
:guilabel:`Inventory` tab and select one or more routes from the :guilabel:`Routes` section.
|
||||
|
||||
.. image:: reordering_rules/specify-vendor.png
|
||||
:alt: Specify a vendor and price on the Purchase tab.
|
||||
If the product is purchased, :ref:`install <general/install>` the **Purchase** app, and confirm that
|
||||
the :guilabel:`Purchase` checkbox is enabled under the product name. In the :guilabel:`Purchase`
|
||||
tab, add at least one vendor to the :doc:`vendor pricelist <../../../purchase/products/pricelist>`.
|
||||
Odoo uses the vendor at the top of the list to generate |RFQs| when reordering rules are triggered.
|
||||
|
||||
If the product is replenished using the :guilabel:`Manufacture` route, it needs to have at least one
|
||||
Bill of Materials (BoM) associated with it. This is necessary because Odoo only creates
|
||||
manufacturing orders for products with a :abbr:`BoM (Bill of Materials)`.
|
||||
In the :guilabel:`Inventory` tab's :guilabel:`Routes` field, tick the :guilabel:`Buy` checkbox.
|
||||
|
||||
If a :abbr:`BoM (Bill of Materials)` does not already exist for the product, select the
|
||||
:guilabel:`Bill of Materials` smart button at the top of the product form, then click
|
||||
:guilabel:`New` to configure a new :abbr:`BoM (Bill of Materials)`.
|
||||
.. seealso::
|
||||
- :doc:`Buy route <../../../purchase/manage_deals/rfq>`
|
||||
- :doc:`Vendor pricelist <../../../purchase/products/pricelist>`
|
||||
|
||||
.. image:: reordering_rules/bom-smart-button.png
|
||||
:alt: The Bill of Materials smart button on a product form.
|
||||
If the product is manufactured, :ref:`install <general/install>` the **Manufacturing** app, and in
|
||||
the :guilabel:`Inventory` tab's :guilabel:`Routes` field, tick the :guilabel:`Manufacture` checkbox.
|
||||
|
||||
Next, ensure at least one :doc:`bill of materials
|
||||
<../../../manufacturing/basic_setup/bill_configuration>` (BoM) is displayed in the :guilabel:`Bill
|
||||
of Materials` smart button at the top of the product form. This is necessary because Odoo only
|
||||
creates manufacturing orders for products with a |BoM|.
|
||||
|
||||
If a |BoM| does not already exist for the product, click the :guilabel:`Bill of Materials` smart
|
||||
button, then click :guilabel:`New` to configure a new |BoM|.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`Manufacture route <../../../manufacturing/basic_setup/bill_configuration>`
|
||||
|
||||
.. _inventory/warehouses_storage/rr-fields:
|
||||
|
||||
Create new reordering rules
|
||||
===========================
|
||||
---------------------------
|
||||
|
||||
To create a new reordering rule, navigate to :menuselection:`Inventory app --> Operations -->
|
||||
Replenishment`, then click :guilabel:`New`, and fill out the following fields for the new reordering
|
||||
@@ -71,36 +113,36 @@ rule line item:
|
||||
triggered. When forecasted stock falls below this number, a replenishment order for the product is
|
||||
created.
|
||||
- :guilabel:`Max`: The maximum quantity at which the stock is replenished.
|
||||
- :guilabel:`To Order`: The number of units, according to the *UoM*, that should be replenished for
|
||||
this reordering rule (e.g., a product could be replenished in batches of 20).
|
||||
- :guilabel:`UoM`: The unit of measure used for reordering the product. This value can simply be
|
||||
`Units` or a specific unit of measurement for weight, length, etc.
|
||||
- :guilabel:`Multiple Quantity`: If the product should be ordered in specific quantities, enter the
|
||||
number that should be ordered. For example, if the :guilabel:`Multiple Quantity` is set to `5`,
|
||||
and only 3 are needed, 5 products are replenished.
|
||||
|
||||
.. image:: reordering_rules/reordering-rule-form.png
|
||||
.. figure:: reordering_rules/reordering-rule-form.png
|
||||
:alt: The form for creating a new reordering rule.
|
||||
|
||||
.. note::
|
||||
Two other fields are automatically populated: :guilabel:`On Hand` (the number of units currently
|
||||
available in inventory) and :guilabel:`Forecast` (the number of units expected to be available in
|
||||
inventory after all orders are taken into account). These numbers will only change when an
|
||||
:doc:`inventory adjustment <../inventory_management/count_products>` is made.
|
||||
|
||||
Also, additional fields can be accessed by clicking the :icon:`oi-settings-adjust`
|
||||
:guilabel:`(additional options slider icon)`. For example, :guilabel:`Multiple Quantity`
|
||||
specifies if the product should be replenished in batches of a certain quantity (e.g., a product
|
||||
could be replenished in batches of 20).
|
||||
The form for creating a new reordering rule.
|
||||
|
||||
.. tip::
|
||||
Reordering rules can also be created from each product form. To do so, navigate to
|
||||
:menuselection:`Inventory app --> Products --> Products`, and select a product. Then, click the
|
||||
:guilabel:`Reordering Rules` smart button, and click :guilabel:`New` to fill out the new line, as
|
||||
detailed above.
|
||||
Reordering rules can also be created from the :guilabel:`Reordering Rules` smart button on the
|
||||
product form.
|
||||
|
||||
.. note::
|
||||
To learn how the :guilabel:`On Hand`, :guilabel:`Forecast`, and :guilabel:`To Order` fields are
|
||||
calculated using on-hand quantities and future demand, see the :ref:`Just-in-time logic
|
||||
<inventory/warehouses_storage/just-in-time>` section.
|
||||
|
||||
For advanced usage of reordering rules, learn about the following reordering rule fields:
|
||||
|
||||
- :ref:`Trigger <inventory/product_management/trigger>`
|
||||
- :ref:`Preferred route <inventory/warehouses_storage/route>`
|
||||
- :ref:`Vendor <inventory/warehouses_storage/set-vendor>`
|
||||
- :ref:`Bill of materials <inventory/warehouses_storage/set-bom-field>`
|
||||
- :ref:`Procurement group <inventory/warehouses_storage/procurement-grp>`
|
||||
- :ref:`Visibility days <inventory/product_management/visibility-days>`
|
||||
- :ref:`Route <inventory/product_management/route>`
|
||||
|
||||
.. note::
|
||||
The fields above are not available by default, and must be enabled by selecting the |adjust| in
|
||||
the far-right corner and selecting the desired column from the drop-down menu.
|
||||
|
||||
.. _inventory/warehouses_storage/zero-zero:
|
||||
|
||||
@@ -169,40 +211,43 @@ quantity of the product to fall below the :guilabel:`Min Quantity` of `0.00`, th
|
||||
Trigger
|
||||
=======
|
||||
|
||||
When stock falls below the reordering rule's minimum, set the reordering rule's *trigger* to
|
||||
*automatic* to automatically create purchase or manufacturing orders to replenish stock.
|
||||
A reordering rule's *trigger* can be set to *automatic* or *manual*. While both function the same
|
||||
way, the difference between the two types of reordering rules is how the rule is launched:
|
||||
|
||||
Alternatively, setting the reordering rule's trigger to *manual* displays the product and forecasted
|
||||
stock on the *replenishment dashboard*, where the procurement manager can review the stock levels,
|
||||
lead times, and forecasted dates of arrival.
|
||||
- :ref:`Auto <inventory/warehouses_storage/auto-rr>`: A purchase or manufacturing order is
|
||||
automatically created when the forecasted stock falls below the reordering rule's minimum
|
||||
quantity. By default, the :guilabel:`Auto` trigger is selected.
|
||||
- :ref:`Manual <inventory/warehouses_storage/manual-rr>`: The :doc:`Replenishment report <report>`
|
||||
lists products needing replenishment, showing current/forecasted stock, lead times, and arrival
|
||||
dates. Users can review forecasts before clicking *Order*.
|
||||
|
||||
.. seealso::
|
||||
:doc:`../replenishment`
|
||||
|
||||
.. tip::
|
||||
The replenishment dashboard is accessible by going to :menuselection:`Inventory app -->
|
||||
Operations --> Replenishment`.
|
||||
|
||||
To enable the :guilabel:`Trigger` field, go to :menuselection:`Inventory app --> Configuration -->
|
||||
Reordering Rules`. Then, click the :guilabel:`(slider)` icon, located to the far-right of the column
|
||||
titles, and enable the :guilabel:`Trigger` option from the additional options drop-down menu that
|
||||
appears.
|
||||
|
||||
.. image:: reordering_rules/enable-trigger.png
|
||||
:alt: Enable the Trigger field by toggling it in the additional options menu
|
||||
To enable the :guilabel:`Trigger` field, go to :menuselection:`Inventory app --> Operations -->
|
||||
Replenishment`. Then, click the |adjust|, located to the far-right of the column titles, and tick
|
||||
the :guilabel:`Trigger` checkbox.
|
||||
|
||||
In the :guilabel:`Trigger` column, select :guilabel:`Auto` or :guilabel:`Manual`. Refer to the
|
||||
sections below to learn about the different types of reordering rules.
|
||||
|
||||
.. _inventory/warehouses_storage/auto-rr:
|
||||
|
||||
Auto
|
||||
----
|
||||
|
||||
Automatic reordering rules, configured by setting the reordering rule's :guilabel:`Trigger` field to
|
||||
:guilabel:`Auto`, generates purchase or manufacturing orders when:
|
||||
*Automatic reordering rules*, enabled by setting the reordering rule's :guilabel:`Trigger` field to
|
||||
:guilabel:`Auto`, generate purchase or manufacturing orders when either:
|
||||
|
||||
#. the scheduler runs, and the *On Hand* quantity is below the minimum
|
||||
#. a sales order is confirmed, and lowers the *Forecasted* quantity of the product below the
|
||||
minimum
|
||||
#. The scheduler runs, and the *Forecasted* quantity is below the minimum, or
|
||||
#. A sales order is confirmed, and lowers the *Forecasted* quantity of the product below the
|
||||
minimum.
|
||||
|
||||
If the :guilabel:`Buy` route is selected, then an |RFQ| is generated. To view and manage |RFQs|,
|
||||
navigate to :menuselection:`Purchase app --> Orders --> Requests for Quotation`.
|
||||
|
||||
If the :guilabel:`Manufacture` route is selected, then an |MO| is generated. To view and manage
|
||||
|MOs|, navigate to :menuselection:`Manufacturing app --> Operations --> Manufacturing Orders`.
|
||||
|
||||
When no route is selected, Odoo selects the :guilabel:`Route` specified in the :guilabel:`Inventory`
|
||||
tab of the product form.
|
||||
|
||||
.. tip::
|
||||
The scheduler is set to run once a day, by default.
|
||||
@@ -222,112 +267,47 @@ Automatic reordering rules, configured by setting the reordering rule's :guilabe
|
||||
.. image:: reordering_rules/auto.png
|
||||
:alt: Show automatic reordering rule from the Reordering Rule page.
|
||||
|
||||
If the :guilabel:`Buy` route is selected, then an :abbr:`RFQ (Request for Quotation)` is generated.
|
||||
To view and manage :abbr:`RFQs (Requests for Quotation)`, navigate to :menuselection:`Purchase app
|
||||
--> Orders --> Requests for Quotation`.
|
||||
|
||||
If the :guilabel:`Manufacture` route is selected, then an :abbr:`MO (Manufacturing Order)` is
|
||||
generated. To view and manage :abbr:`MOs (Manufacturing Orders)`, navigate to
|
||||
:menuselection:`Manufacturing app --> Operations --> Manufacturing Orders`.
|
||||
|
||||
When no route is selected, Odoo selects the :guilabel:`Route` specified in the :guilabel:`Inventory`
|
||||
tab of the product form.
|
||||
|
||||
.. _inventory/product_management/manual-rr:
|
||||
.. _inventory/warehouses_storage/manual-rr:
|
||||
|
||||
Manual
|
||||
------
|
||||
|
||||
Manual reordering rules, configured by setting the reordering rule's :guilabel:`Trigger` field to
|
||||
:guilabel:`Manual`, lists a product on the replenishment dashboard when the forecasted quantity
|
||||
falls below a specified minimum. Products on this dashboard are called *needs*, because they are
|
||||
needed to fulfill upcoming sales orders, but the forecasted quantity is not enough.
|
||||
*Manual reordering rules*, configured by setting the reordering rule's :guilabel:`Trigger` field to
|
||||
:guilabel:`Manual`, list a product on the :doc:`replenishment dashboard <report>` when the
|
||||
forecasted quantity falls below a specified minimum. Products on this dashboard are called *needs*,
|
||||
because they are needed to fulfill upcoming sales orders, for which the forecasted quantity is not
|
||||
enough.
|
||||
|
||||
The replenishment dashboard, accessible by navigating to :menuselection:`Inventory app -->
|
||||
Operations --> Replenishment`, considers sales order deadlines, forecasted stock levels, and vendor
|
||||
lead times. It displays needs **only** when it is time to reorder items.
|
||||
lead times. It displays needs **only** when it is time to reorder items, thanks to the :guilabel:`To
|
||||
Reorder` filter.
|
||||
|
||||
.. note::
|
||||
If the one-day window for ordering products is too short, skip to the :ref:`visibility days
|
||||
<inventory/product_management/visibility-days>` section to make the need appear on the
|
||||
replenishment dashboard a specified number of days in advance.
|
||||
|
||||
When a product appears on the replenishment dashboard, clicking the :guilabel:`Order Once` button
|
||||
When a product appears on the replenishment dashboard, clicking the :guilabel:`Order` button
|
||||
generates the purchase or manufacturing order with the specified amounts :guilabel:`To Order`.
|
||||
|
||||
.. image:: reordering_rules/manual.png
|
||||
:alt: Click the Order Once button on the replenishment dashboard to replenish stock.
|
||||
:alt: Click the Order button on the replenishment dashboard to replenish stock.
|
||||
|
||||
.. _inventory/product_management/visibility-days:
|
||||
|
||||
Visibility days
|
||||
===============
|
||||
|
||||
.. important::
|
||||
Ensure :doc:`lead times <lead_times>` are understood before proceeding with this section.
|
||||
|
||||
When :ref:`manual reordering rules <inventory/product_management/manual-rr>` are assigned to a
|
||||
product, *visibility days* make the product appear on the replenishment dashboard
|
||||
(:menuselection:`Inventory app --> Operations --> Replenishment`) a certain number of days in
|
||||
advance.
|
||||
|
||||
.. example::
|
||||
A product has a manual reordering rule set to trigger when the stock level falls below four
|
||||
units. The current on-hand quantity is ten units.
|
||||
|
||||
The current date is February 20th, and the *delivery date* on a sales order (in the
|
||||
:guilabel:`Other Info` tab) is March 3rd — twelve days from the current date.
|
||||
|
||||
The :ref:`vendor lead time <inventory/shipping_receiving/purchase-lt>` is four days, and the
|
||||
:ref:`purchase security lead time <inventory/shipping_receiving/purchase-security-lt>` is one
|
||||
day.
|
||||
|
||||
When the :guilabel:`Visibility Days` field of the reordering rule is set to zero, the product
|
||||
appears on the replenishment dashboard five days before the delivery date, which, in this case,
|
||||
is February 27th.
|
||||
|
||||
.. image:: reordering_rules/need-dates.png
|
||||
:alt: Graphic representing when the need appears on the replenishment dashboard: Feb 27th.
|
||||
|
||||
To see the product on the replenishment dashboard for the current date, February 20, set the
|
||||
:guilabel:`Visibility Days` to `7.00`.
|
||||
|
||||
To determine the amount of visibility days needed to see a product on the replenishment dashboard,
|
||||
subtract *today's date* from the *date the need appears* on the replenishment dashboard.
|
||||
|
||||
.. math::
|
||||
|
||||
Visibility~days = Need~appears~date - Today's~date
|
||||
|
||||
.. example::
|
||||
Referring to the example above, today's date is February 20th, and the need for the product
|
||||
appears on February 27th.
|
||||
|
||||
(February 27 - February 20 = 7 days)
|
||||
|
||||
Incorrectly setting the :guilabel:`Visibility Days` fewer than seven days in this case results in
|
||||
the need **not** appearing on the replenishment dashboard.
|
||||
|
||||
.. image:: reordering_rules/visibility-days.png
|
||||
:alt: Show the replenishment dashboard with the correct and incorrect visibility days set.
|
||||
|
||||
.. _inventory/product_management/route:
|
||||
.. _inventory/warehouses_storage/route:
|
||||
|
||||
Route
|
||||
=====
|
||||
|
||||
Odoo allows for multiple routes to be selected under the :guilabel:`Inventory` tab on each product
|
||||
form. For instance, it is possible to select both :guilabel:`Buy` and :guilabel:`Manufacture`, thus
|
||||
enabling the functionality of both routes.
|
||||
Odoo allows for multiple routes to be selected as replenishment methods under the
|
||||
:guilabel:`Inventory` tab on each product form. For instance, it is possible to select both
|
||||
:guilabel:`Buy` and :guilabel:`Manufacture`, indicating to Odoo that the product can be bought or
|
||||
manufactured.
|
||||
|
||||
Odoo also enables users to set a preferred route for a product's reordering rule. This is the route
|
||||
that the rule defaults to, if multiple are selected. To select a preferred route, begin by
|
||||
navigating to :menuselection:`Inventory app --> Configuration --> Reordering Rules`.
|
||||
Odoo also enables users to set a preferred route for a product's reordering rule. This is the
|
||||
replenishment method (e.g., buying or manufacturing) that the rule defaults to, if multiple are
|
||||
available.
|
||||
|
||||
By default, the :guilabel:`Route` column is hidden on the :guilabel:`Reordering Rules` page.
|
||||
To specify a preferred route, begin by navigating to :menuselection:`Inventory app --> Operations
|
||||
--> Replenishment`.
|
||||
|
||||
Reveal the :guilabel:`Route` column by selecting the :guilabel:`(slider)` icon to the far-right of
|
||||
the column titles, and checking the :guilabel:`Route` option from the drop-down menu that appears.
|
||||
By default, the :guilabel:`Route` column is hidden. To reveal it, select the |adjust| to the
|
||||
far-right of the column titles, and ticking :guilabel:`Route` from the drop-down menu that appears.
|
||||
|
||||
Click inside of the column on the row of a reordering rule, and a drop-down menu shows all available
|
||||
routes for that rule. Select one to set it as the preferred route.
|
||||
@@ -337,5 +317,243 @@ routes for that rule. Select one to set it as the preferred route.
|
||||
|
||||
.. important::
|
||||
If multiple routes are enabled for a product but no preferred route is set for its reordering
|
||||
rule, the product is reordered using the selected route that is listed first on the
|
||||
:guilabel:`Inventory` tab of the product form.
|
||||
rule, the product is reordered using the *Buy* route, then *Manufacture*.
|
||||
|
||||
Advanced uses
|
||||
-------------
|
||||
|
||||
Pairing :guilabel:`Route` with one of the following fields on the replenishment report unlocks
|
||||
advanced configurations of reordering rules. Consider the following:
|
||||
|
||||
.. _inventory/warehouses_storage/set-vendor:
|
||||
|
||||
- :guilabel:`Vendor`: When the selected :guilabel:`Route` is :guilabel:`Buy`, setting the
|
||||
:guilabel:`Vendor` field to one of the multiple vendors on the vendor pricelist indicates to Odoo
|
||||
that the vendor is automatically populated on |RFQs| when a reordering rule triggers the creation
|
||||
of a purchase order.
|
||||
|
||||
.. _inventory/warehouses_storage/set-bom-field:
|
||||
|
||||
- :guilabel:`Bill of Materials`: When the :guilabel:`Route` is set to :guilabel:`Manufacture`, and
|
||||
there are multiple |BoMs| in use, specifying the desired |BoM| in the replenishment report, draft
|
||||
manufacturing orders are created with this |BoM| in use.
|
||||
|
||||
.. _inventory/warehouses_storage/procurement-grp:
|
||||
|
||||
- :guilabel:`Procurement Group`: This is a way to group related |POs| or |MOs| that are tied to
|
||||
fulfilling a specific demand, like an |SO| or a project. It helps organize and track which orders
|
||||
are linked to a particular demand.
|
||||
|
||||
.. note::
|
||||
Procurement groups link replenishment methods to demand, enabling smart buttons to appear when
|
||||
using the :doc:`MTO route <mto>`.
|
||||
|
||||
.. figure:: reordering_rules/po-smartbutton.png
|
||||
:alt: Showing smart button to PO.
|
||||
|
||||
Sales order (demand) with a linked purchase order (replenishment method).
|
||||
|
||||
In the context of reordering rules:
|
||||
|
||||
- Reordering rules do not automatically assign a procurement group, which is why there are no
|
||||
smart buttons that link |SOs| to |POs|, unlike the :abbr:`MTO (Make to Order)` route.
|
||||
- To enable smart buttons for products replenished by reordering rules (not :abbr:`MTO (Make to
|
||||
Order)`), with specific quantities linked to specific demands (e.g. |SOs|), assign a procurement
|
||||
group.
|
||||
- Without a procurement group, demands for the same product can be combined into a single |RFQ|,
|
||||
even if the reordering rule is executed multiple times for those demands. This allows for more
|
||||
efficient procurement by consolidating demands into fewer orders.
|
||||
|
||||
Selecting a procurement group in the :guilabel:`Procurement Group` field on the replenishment
|
||||
report ensures that all linked orders are grouped under the same demand, based on the defined
|
||||
route.
|
||||
|
||||
.. exercise::
|
||||
How can you set the *Procurement Group*, *Vendor*, and *Route* fields on the replenishment
|
||||
report to generate a single |RFQ| for five different products in sales order SO35, given they
|
||||
share the same vendor, Azure Interior, and ensure other demands for these products are handled
|
||||
separately?
|
||||
|
||||
.. spoiler:: View the answer
|
||||
|
||||
#. Set the :guilabel:`Procurement Group` to `SO35`, in the reordering rule for all five
|
||||
products. This groups the demands for `SO35` in the same |RFQ| or |MO|.
|
||||
#. Set the :guilabel:`Vendor` to `Azure Interior` to ensure the |RFQ| is created for the
|
||||
same supplier.
|
||||
#. Set the :guilabel:`Route` to :guilabel:`Buy` to generate an |RFQ|.
|
||||
#. Click the :guilabel:`Order` button to generate a single |RFQ| for the five products tied
|
||||
to `SO35`.
|
||||
|
||||
| After placing the order, remove `SO35` from the :guilabel:`Procurement Group` field of the
|
||||
five products' reordering rules. This ensures future demands for these products are
|
||||
managed separately and assigned to different |RFQs| (the usual behavior).
|
||||
|
||||
.. _inventory/warehouses_storage/just-in-time:
|
||||
|
||||
Just-in-time logic
|
||||
==================
|
||||
|
||||
*Just-in-time logic* in Odoo minimizes storage costs by placing orders precisely to meet deadlines.
|
||||
This is achieved using the :ref:`forecasted date <inventory/warehouses_storage/forecasted-date>`,
|
||||
which determines when replenishment is necessary to avoid overstocking.
|
||||
|
||||
The forecasted date is the **earliest possible date** to receive a product if the replenishment
|
||||
process starts immediately. It is calculated by summing the lead times linked to the replenishment
|
||||
process, such as :ref:`vendor lead times <inventory/warehouses_storage/purchase-lt>` and
|
||||
:ref:`purchasing delays <inventory/warehouses_storage/purchase-security-lt>` for purchases, or
|
||||
:ref:`manufacturing lead times <inventory/warehouses_storage/manuf-lt>` for production. Both
|
||||
automatic and manual reordering rules work this way.
|
||||
|
||||
.. example::
|
||||
For a product with a 5-day total lead time and a sales order delivery date in 10 days, Odoo waits
|
||||
5 days to place the order, ensuring it arrives just in time for delivery.
|
||||
|
||||
Important considerations:
|
||||
|
||||
- **If this feels risky**, consider adding buffer time or :doc:`adjusting lead times <lead_times>`
|
||||
for more flexibility.
|
||||
- While lead times and just-in-time logic provide additional control, **reordering rules work
|
||||
perfectly fine without them**. Keeping delivery dates on sales orders as their *creation date*
|
||||
ensures purchases are immediately triggered when needed
|
||||
|
||||
.. _inventory/warehouses_storage/forecasted-date:
|
||||
|
||||
Forecasted date and To Order quantity
|
||||
-------------------------------------
|
||||
|
||||
To view the *forecasted date*, go to the replenishment report and click the :icon:`fa-info-circle`
|
||||
:guilabel:`(info)` icon for the desired reordering rule. The :guilabel:`Replenishment Information`
|
||||
pop-up window displays the :guilabel:`Forecasted Date` and various lead times.
|
||||
|
||||
The *forecasted date* is the total time needed to procure a product in Odoo. It is calculated by
|
||||
summing the lead times linked to the product's replenishment process. The total of these lead times,
|
||||
added to the current date, determines when Odoo checks for demanded stock.
|
||||
|
||||
.. important::
|
||||
The forecasted date is the **earliest possible date** the customer can receive the product if the
|
||||
replenishment process began right **now**. It is calculated by adding all lead times related to
|
||||
the product to the current date.
|
||||
|
||||
.. example::
|
||||
A manual reordering rule is set up with no minimum or maximum quantities.
|
||||
|
||||
- Vendor lead time is 4 days, the purchase security lead time is 1 day, and the days to purchase
|
||||
is 2 days.
|
||||
- Today's date is November 26.
|
||||
- These add up to 7 days, making the forecasted date, December 3rd.
|
||||
|
||||
A confirmed |SO| for 5 units has a delivery date of December 3rd (7 days from today). This demand
|
||||
will appear on the replenishment report today, in the **To Order** field.
|
||||
|
||||
However, if the delivery date were later than December 3rd, it would not yet appear on the
|
||||
report. Odoo only displays quantities to replenish when they fall within the forecasted date
|
||||
window, ensuring orders are placed precisely when needed.
|
||||
|
||||
.. image:: reordering_rules/replenishment-info.png
|
||||
:alt: Show forecasted date in Odoo.
|
||||
|
||||
The *just-in-time* logic ensures replenishment happens only when it's necessary for the forecasted
|
||||
date's demand, helping avoid overstocking.
|
||||
|
||||
For example:
|
||||
|
||||
- If the forecasted quantity drops below the minimum **on** the forecasted date, replenishment must
|
||||
begin immediately to avoid shortages.
|
||||
- If the quantity drops below the minimum **after** the forecasted date, replenishment can wait.
|
||||
|
||||
The **To Order** quantity is the total demand on the forecasted date.
|
||||
|
||||
By timing purchase orders based on the combined lead times, Odoo optimizes stock levels, keeping
|
||||
inventory minimal while ensuring future requirements are ordered at the last possible
|
||||
moment—strategic procrastination without the stress!
|
||||
|
||||
Common confusion about forecasted quantities
|
||||
--------------------------------------------
|
||||
|
||||
|SOs| due **after** the :guilabel:`Forecasted Date` are not accounted for in the
|
||||
:guilabel:`Forecast` quantities of the reordering rule.
|
||||
|
||||
They are, however, accounted for on the forecasted report that is opened by clicking the
|
||||
:icon:`fa-area-chart` :guilabel:`(graph)` icon on the replenishment report, as this one represents
|
||||
the **long-term forecasted quantity**.
|
||||
|
||||
.. example::
|
||||
|
||||
.. figure:: report/zero-forecast.png
|
||||
:alt: Forecast and To Order quantities is zero.
|
||||
|
||||
Continuing the above example, when the sales order's deadline is adjusted to December 4th, the
|
||||
:guilabel:`Forecast` and :guilabel:`To Order` quantities are zero.
|
||||
|
||||
.. figure:: report/five-forecast.png
|
||||
:alt: Show forecasted report.
|
||||
|
||||
Opening the :guilabel:`Forecasted Report` shows the :guilabel:`Forecasted` units is `5.00`.
|
||||
|
||||
.. _inventory/product_management/visibility-days:
|
||||
|
||||
Visibility days
|
||||
===============
|
||||
|
||||
*Visibility days* enable the ability to determine if additional quantities should be added to the
|
||||
planned replenishment. Odoo checks if forecasted stock on the forecasted date will drop below the
|
||||
minimum in the reordering rule. **Only if** it is time to reorder, visibility days check additional
|
||||
future demand by the specified number of days.
|
||||
|
||||
This feature helps consolidate orders by grouping immediate and near-future needs, reducing
|
||||
transport costs and enabling supplier discounts for larger orders.
|
||||
|
||||
To set visibility days to incorporate orders for a specified number of days in the future, navigate
|
||||
to :menuselection:`Inventory app --> Operations --> Replenishment`, or by clicking the *Reordering
|
||||
Rules* smart button from the product form.
|
||||
|
||||
Next, enable the :guilabel:`Visibility Days` field by clicking the |adjust| to the far right and
|
||||
choosing the feature from the drop-down menu. Then, enter the desired visibility days.
|
||||
|
||||
.. important::
|
||||
The forecasted date is never pushed forward or extended; Odoo only checks the extra visibility
|
||||
days if the stock falls below the minimum threshold on the forecasted date.
|
||||
|
||||
Example where visibility days is triggered
|
||||
------------------------------------------
|
||||
|
||||
A product shipped from Asia has a combined vendor lead time of 30 days and a shipping cost of $100
|
||||
(including :doc:`landed costs <../../product_management/inventory_valuation/landed_costs>` and
|
||||
tariffs).
|
||||
|
||||
- November 4: Current date. The forecasted date is December 4 (30 days later).
|
||||
- |SO| 1: Requires the product by Dec 4. Odoo places the order today, costing $100.
|
||||
- |SO| 2: Requires the product by Dec 19. Normally, Odoo would order on Nov 19, costing an
|
||||
additional $100.
|
||||
- |SO| 3: Requires the product by Dec 25. Normally, Odoo would order on Nov 25, costing another
|
||||
$100.
|
||||
|
||||
Ordering separately for these sales orders totals $300 in shipping costs.
|
||||
|
||||
.. image:: report/forecasted-date.png
|
||||
:alt: Show forecasted date visualization.
|
||||
|
||||
Setting :guilabel:`Visibility Days` to `20.0` allows Odoo to "look ahead" 20 days from December 4
|
||||
(|SO| 1's forecasted date) to December 24.
|
||||
|
||||
- It groups |SO| 2's order with |SO| 1, reducing shipping costs by consolidating orders.
|
||||
- |SO| 3, which is due on Dec 25, is one day late and is not grouped with the other two orders.
|
||||
|
||||
.. image:: report/visibility-days.png
|
||||
:alt: Visibility days visualization.
|
||||
|
||||
Counterexample where visibility days is not triggered
|
||||
-----------------------------------------------------
|
||||
|
||||
Considering the example above, if |SO| 1 does not exist, then:
|
||||
|
||||
- **November 4**: Current date. The forecasted date is December 4 (30 days later).
|
||||
- **November 5**: The forecasted date shifts to December 5.
|
||||
- |SO| 2: Requires the product by December 19. Odoo will only trigger the order on November 19,
|
||||
meaning the user will not see a replenishment notification until then.
|
||||
|
||||
This shows that visibility days complement just-in-time logic by optimizing it to balance
|
||||
replenishment costs more effectively.
|
||||
|
||||
.. image:: reordering_rules/counterexample.png
|
||||
:alt: Example where the visibility days does not trigger.
|
||||
|
||||
|
Before Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
|
Before Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 14 KiB |
@@ -0,0 +1,52 @@
|
||||
====================
|
||||
Replenishment report
|
||||
====================
|
||||
|
||||
.. |SO| replace:: :abbr:`SO (Sales Order)`
|
||||
.. |SOs| replace:: :abbr:`SOs (Sales Orders)`
|
||||
|
||||
The *replenishment report* is an interactive dashboard that uses :doc:`manual reordering rules
|
||||
<reordering_rules>`, lead times, and upcoming demands to forecast quantities of products that need
|
||||
restocking.
|
||||
|
||||
Reordering rules used on this dashboard are normal reordering rules, but the user benefits from a
|
||||
monitoring menu with extra options to manage suggestions for replenishment.
|
||||
|
||||
This enables users to anticipate future needs, keep less products on hand without the risk of
|
||||
running out, plan and consolidate orders.
|
||||
|
||||
To access the replenishment report, go to :menuselection:`Inventory app --> Operations -->
|
||||
Replenishment.`
|
||||
|
||||
The fields and features unique to the replenishment dashboard are displayed below. For definitions
|
||||
of the other fields, go to the :ref:`Create reordering rules section
|
||||
<inventory/warehouses_storage/rr-fields>`.
|
||||
|
||||
By default, the quantity in the :guilabel:`To Order` field is the quantity required to reach the set
|
||||
:guilabel:`Max Quantity`. However, the :guilabel:`To Order` quantity can be adjusted by clicking on
|
||||
the field and changing the value. To replenish a product manually, click :icon:`fa-truck`
|
||||
:guilabel:`Order Once`.
|
||||
|
||||
Clicking :icon:`fa-bell-slash` :guilabel:`Snooze` temporarily deactivates the reordering rule for
|
||||
the set period, hiding the entry from the replenishment dashboard, when it is supposed to appear.
|
||||
|
||||
.. tip::
|
||||
Defining a :guilabel:`Vendor` allows filtering or grouping demands by the vendor. This simplifies
|
||||
the process of identifying products to order and can reduce shipment costs.
|
||||
|
||||
.. image:: report/replenishment-dashboard.png
|
||||
:alt: Replenishment report that displays recommended quantities to order.
|
||||
|
||||
.. note::
|
||||
Automatic reordering rules appear on this menu, too but are hidden by default.
|
||||
|
||||
Replenishment information
|
||||
=========================
|
||||
|
||||
In each line of the replenishment report, clicking the :icon:`fa-info-circle` :guilabel:`(info)`
|
||||
icon opens the :guilabel:`Replenishment Information` pop-up window, which displays the *lead times*
|
||||
and *forecasted date*.
|
||||
|
||||
For detailed information on how to use this feature for replenishment, go to the :ref:`Just in time
|
||||
logic <inventory/warehouses_storage/just-in-time>` section.
|
||||
|
||||
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 8.2 KiB |
|
After Width: | Height: | Size: 30 KiB |
@@ -144,7 +144,7 @@ Below is a list of commonly-used fields when importing vendor pricelists:
|
||||
* - Quantity
|
||||
- The minimum quantity required to receive the product at the specified price.
|
||||
- :guilabel:`Quantity` field in the vendor pricelist. (If not visible, enable it by clicking
|
||||
the :icon:`oi-settings-adjust` :guilabel:`(settings)` icon, and tick the :guilabel:`Quantity`
|
||||
the :icon:`oi-settings-adjust` :guilabel:`(adjust)` icon, and tick the :guilabel:`Quantity`
|
||||
checkbox)
|
||||
- `min_qty`
|
||||
* - Unit Price
|
||||
@@ -152,8 +152,8 @@ Below is a list of commonly-used fields when importing vendor pricelists:
|
||||
- :guilabel:`Price` field in the vendor pricelist.
|
||||
- `price`
|
||||
* - Delivery Lead Time
|
||||
- :ref:`Number of days <inventory/shipping_receiving/purchase-lt>` before receiving the
|
||||
product after confirming a purchase order.
|
||||
- :ref:`Number of days <inventory/warehouses_storage/purchase-lt>` before receiving the product
|
||||
after confirming a purchase order.
|
||||
- :guilabel:`Delivery Lead Time` field on the vendor pricelist.
|
||||
- `delay`
|
||||
* - Sequence
|
||||
|
||||
@@ -27,7 +27,6 @@ Next, click :guilabel:`Select a project` and select (or create) an API project t
|
||||
in, and store credentials. Click :guilabel:`New Project`.
|
||||
|
||||
.. image:: google/new-api-project.png
|
||||
:align: center
|
||||
:alt: Create a new API project to store credentials.
|
||||
|
||||
.. tip::
|
||||
@@ -40,14 +39,12 @@ Now, click on :guilabel:`Enabled APIs and Services` in the left menu. Select :gu
|
||||
and Services` again if the :guilabel:`Search bar` doesn't appear.
|
||||
|
||||
.. image:: google/enable-apis-services.png
|
||||
:align: center
|
||||
:alt: Enable APIs and Services on the API Project.
|
||||
|
||||
After that, search for `Google Calendar API` using the search bar and select :guilabel:`Google
|
||||
Calendar API` from the search results. Click :guilabel:`Enable`.
|
||||
|
||||
.. image:: google/enable-google-cal-api.png
|
||||
:align: center
|
||||
:alt: Enable the Google Calendar API.
|
||||
|
||||
OAuth consent screen
|
||||
@@ -97,7 +94,6 @@ Under :menuselection:`Create OAuth Client ID`, select :guilabel:`Website applica
|
||||
`/google_account/authentication`. Finally, click :guilabel:`Create`.
|
||||
|
||||
.. image:: google/uri.png
|
||||
:align: center
|
||||
:alt: Add the authorized JavaScript origins and the authorized redirect URIs.
|
||||
|
||||
A :guilabel:`Client ID` and :guilabel:`Client Secret` will appear, copy these to a notepad.
|
||||
@@ -106,17 +102,21 @@ Setup in Odoo
|
||||
=============
|
||||
|
||||
Once the *Client ID* and the *Client Secret* are located, open the Odoo database and go to
|
||||
:menuselection:`Settings --> General Settings --> Integrations --> Google Calendar`. Check the box
|
||||
next to :guilabel:`Google Calendar`.
|
||||
:menuselection:`Settings --> Calendar` to find the :guilabel:`Google Calendar` feature. Tick the
|
||||
checkbox labeled :guilabel:`Google Calendar`.
|
||||
|
||||
.. image:: google/settings-google-cal.png
|
||||
:align: center
|
||||
:alt: The Google Calendar checkbox in General Settings.
|
||||
|
||||
Next, copy and paste the *Client ID* and the *Client Secret* from the Google Calendar API
|
||||
credentials page into their respective fields below the :guilabel:`Google Calendar` checkbox. Then,
|
||||
click :guilabel:`Save`.
|
||||
|
||||
.. note::
|
||||
Tick the :guilabel:`Pause Synchronization` checkbox to temporarily pause events from being
|
||||
updated. This allows for testing and troubleshooting without removing credentials or uninstalling
|
||||
the synchronization. To resume the sync, clear the checkbox and save.
|
||||
|
||||
Sync calendar in Odoo
|
||||
=====================
|
||||
|
||||
@@ -124,7 +124,6 @@ Finally, open the :menuselection:`Calendar` app in Odoo and click on the :guilab
|
||||
button to sync Google Calendar with Odoo.
|
||||
|
||||
.. image:: google/sync-google.png
|
||||
:align: center
|
||||
:alt: Click the Google sync button in Odoo Calendar to sync Google Calendar with Odoo.
|
||||
|
||||
.. note::
|
||||
@@ -134,7 +133,6 @@ button to sync Google Calendar with Odoo.
|
||||
give permission for the transfer of data)`.
|
||||
|
||||
.. image:: google/trust-odoo.png
|
||||
:align: center
|
||||
:alt: Give Odoo permission to access Google Calendar.
|
||||
|
||||
Now, Odoo Calendar is successfully synced with Google Calendar!
|
||||
@@ -166,7 +164,6 @@ app --> Manage Users`. Then, select the user to modify the calendar, and click t
|
||||
:guilabel:`Calendar` tab.
|
||||
|
||||
.. image:: google/google-reset.png
|
||||
:align: center
|
||||
:alt: Reset buttons highlighted on the calendar tab of the user.
|
||||
|
||||
Next, click :guilabel:`Reset Account` under the correct calendar.
|
||||
@@ -177,7 +174,6 @@ Reset options
|
||||
The following reset options are available for troubleshooting Google calendar sync with Odoo:
|
||||
|
||||
.. image:: google/reset-calendar.png
|
||||
:align: center
|
||||
:alt: Google calendar reset options in Odoo.
|
||||
|
||||
:guilabel:`User's Existing Events`:
|
||||
@@ -201,9 +197,9 @@ synchronization.
|
||||
Google OAuth FAQ
|
||||
================
|
||||
|
||||
At times there can be misconfigurations that take place, and troubleshooting is needed to resolve
|
||||
the issue. Below are the most common errors that may occur when configuring the *Google Calendar*
|
||||
for use with Odoo.
|
||||
At times there can be configuration errors that occur, and troubleshooting is needed to resolve the
|
||||
issue. Below are the most common errors that may occur when configuring the *Google Calendar* for
|
||||
use with Odoo.
|
||||
|
||||
Production vs. testing publishing status
|
||||
----------------------------------------
|
||||
@@ -225,7 +221,6 @@ If no test users are added to the :guilabel:`OAuth consent screen`, then an :gui
|
||||
access_denied` populates.
|
||||
|
||||
.. image:: google/403-error.png
|
||||
:align: center
|
||||
:alt: 403 Access Denied Error.
|
||||
|
||||
To correct this error, return to the :guilabel:`OAuth consent screen`, under :guilabel:`APIs &
|
||||
@@ -239,7 +234,6 @@ selected for the :guilabel:`Application Type`, an :guilabel:`Authorization Error
|
||||
(:guilabel:`Error 400:redirect_uri_mismatch`).
|
||||
|
||||
.. image:: google/error-400.png
|
||||
:align: center
|
||||
:alt: Error 400 Redirect URI Mismatch.
|
||||
|
||||
To correct this error, delete the existing credentials, and create new credentials, by selecting
|
||||
|
||||
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 21 KiB |