Compare commits
29 Commits
16.0-plaus
...
16.0-postg
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cc1475db75 | ||
|
|
a4b3008101 | ||
|
|
c1fe28dd50 | ||
|
|
33a9e1f017 | ||
|
|
4b7668d6a8 | ||
|
|
4118cb9bf9 | ||
|
|
2377fa1bb8 | ||
|
|
71446b0668 | ||
|
|
3ead6e0f99 | ||
|
|
a149164866 | ||
|
|
620508fb29 | ||
|
|
8707609b38 | ||
|
|
e413418e1e | ||
|
|
12670b1299 | ||
|
|
4e2b634a50 | ||
|
|
56cda37610 | ||
|
|
32900efbb9 | ||
|
|
5612ce8dd8 | ||
|
|
75c24e7e88 | ||
|
|
78713f1637 | ||
|
|
b96de8b50e | ||
|
|
1a11e3c35c | ||
|
|
f38bae5e8d | ||
|
|
cd11937f43 | ||
|
|
d287d0807a | ||
|
|
a11fa7e5b2 | ||
|
|
815f4c89b7 | ||
|
|
9081e45aab | ||
|
|
1a32165180 |
@@ -225,7 +225,7 @@ PostgreSQL user.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo -u postgres createuser -s $USER
|
||||
$ sudo -u postgres createuser -d -R -S $USER
|
||||
$ createdb $USER
|
||||
|
||||
.. note::
|
||||
@@ -250,7 +250,7 @@ PostgreSQL user.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo -u postgres createuser -s $USER
|
||||
$ sudo -u postgres createuser -d -R -S $USER
|
||||
$ createdb $USER
|
||||
|
||||
.. note::
|
||||
|
||||
@@ -210,6 +210,8 @@ upgrade goes live.
|
||||
#. Scheduled actions are disabled.
|
||||
#. Outgoing mail servers are disabled by archiving the existing ones and adding a fake one.
|
||||
#. Payment providers and delivery carriers are reset to the test environment.
|
||||
#. Bank synchronization is disabled. Should you want to test the synchronization, contact your
|
||||
bank synchronization provider to get sandbox credentials.
|
||||
|
||||
Testing as many of your business flows as possible is strongly recommended to ensure they are
|
||||
working correctly and to get more familiar with the new version.
|
||||
|
||||
@@ -187,7 +187,8 @@ Send yourself a sample invoice by email to make sure everything is correctly con
|
||||
* :doc:`get_started/chart_of_accounts`
|
||||
* :doc:`bank/bank_synchronization`
|
||||
* :doc:`../fiscal_localizations`
|
||||
* `Odoo Tutorials: Accounting Basics <https://www.odoo.com/r/lsZ>`_
|
||||
* `Odoo Tutorials: Accounting and Invoicing - Getting started [video]
|
||||
<https://www.odoo.com/slides/slide/getting-started-1692>`_
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
@@ -129,6 +129,8 @@ Example
|
||||
|
||||
.. placeholder
|
||||
|
||||
.. _cheat_sheet/journals:
|
||||
|
||||
Journal entries
|
||||
===============
|
||||
|
||||
|
||||
@@ -220,6 +220,42 @@ To match the letter `C` or `D` in a prefix and not use it as a suffix, use an em
|
||||
| `21D\\()`
|
||||
| This formula matches accounts whose code starts with `21D`, regardless of their balance sign.
|
||||
|
||||
In addition to using code prefixes to include accounts, you can also match them with **account
|
||||
tags**. This is especially useful, for example, if your country lacks a standardized chart of
|
||||
accounts, where the same prefix might be used for different purposes across companies.
|
||||
|
||||
.. example::
|
||||
| `tag(25)`
|
||||
| This formula matches accounts whose associated tags contain the one with id *25*.
|
||||
|
||||
If the tag you reference is defined in a data file, an xmlid can be used instead of the id.
|
||||
|
||||
.. example::
|
||||
| `tag(my_module.my_tag)`
|
||||
| This formula matches accounts whose associated tags include the tag denoted by
|
||||
*my_module.my_tag*.
|
||||
|
||||
You can also use arithmetic expressions with tags, possibly combining them with prefix selections.
|
||||
|
||||
.. example::
|
||||
| `tag(my_module.my_tag) + tag(42) + 10`
|
||||
| The balances of accounts tagged as *my_module.my_tag* will be summed with those of accounts
|
||||
linked to the tag with ID *42* and accounts with the code prefix `10`
|
||||
|
||||
`C` and `D` suffixes can be used in the same way with tags.
|
||||
|
||||
.. example::
|
||||
| `tag(my_module.my_tag)C`
|
||||
| This formula matches accounts with the tag *my_module.my_tag* and a credit balance.
|
||||
|
||||
Prefix exclusion also works with tags.
|
||||
|
||||
.. example::
|
||||
| `tag(my_module.my_tag)\\(10)`
|
||||
| This formula matches accounts with the tag *my_module.my_tag* and a code not starting with
|
||||
`10`.
|
||||
|
||||
|
||||
'External Value' engine
|
||||
-----------------------
|
||||
|
||||
|
||||
@@ -4,15 +4,16 @@ Colombia
|
||||
|
||||
.. |DIAN| replace:: :abbr:`DIAN (Dirección de Impuestos y Aduanas Nacionales)`
|
||||
|
||||
Odoo's Colombian localization package provides accounting, fiscal and legal features in Colombia
|
||||
such as chart of accounts, taxes and electronic invoicing.
|
||||
Odoo's Colombian localization package provides accounting, fiscal, and legal features for databases
|
||||
in Colombia – such as chart of accounts, taxes, and electronic invoicing.
|
||||
|
||||
In addition, we have a series of videos covering how to start from scratch, configuration, main
|
||||
workflows, and specific use cases.
|
||||
In addition, a series of videos on the subject is also available. These videos cover how to start
|
||||
from scratch, set up configurations, complete common workflows, and provide in-depth looks at some
|
||||
specific use cases as well.
|
||||
|
||||
.. seealso::
|
||||
`Odoo Colombian localization videos
|
||||
<https://www.youtube.com/playlist?list=PL1-aSABtP6ABxZshems3snMjx7bj_7ZsZ>`_.
|
||||
`Smart Tutorial - Colombian Localization
|
||||
<https://www.odoo.com/slides/smart-tutorial-localizacion-de-colombia-132>`_.
|
||||
|
||||
.. _colombia/configuration:
|
||||
|
||||
@@ -36,74 +37,78 @@ localization:
|
||||
- `l10n_co`
|
||||
- Default :ref:`fiscal localization package <fiscal_localizations/packages>`. This module adds
|
||||
the base accounting features for the Colombian localization: chart of accounts, taxes,
|
||||
withholdings, identification document type.
|
||||
withholdings, and identification document type.
|
||||
* - :guilabel:`Colombian - Accounting Reports`
|
||||
- `l10n_co_reports`
|
||||
- Includes accounting reports for sending certifications to suppliers for withholdings applied.
|
||||
* - :guilabel:`Electronic invoicing for Colombia with Carvajal`
|
||||
- `l10n_co_edi`
|
||||
- This module includes the features that are required for the integration with Carvajal and
|
||||
generates the electronic invoices and support document related to the vendor bills based on
|
||||
- This module includes the features required for integration with Carvajal, and
|
||||
generates the electronic invoices and support documents related to the vendor bills, based on
|
||||
|DIAN| regulations.
|
||||
* - :guilabel:`Colombian - Point of Sale`
|
||||
- `l10n_co_pos`
|
||||
- Includes Point of Sale Receipt for Colombian Localization.
|
||||
- Includes Point of Sale receipts for Colombian localization.
|
||||
|
||||
.. note::
|
||||
When a database is created from scratch selecting :guilabel:`Colombia` as the country, Odoo
|
||||
automatically installs the base modules *Colombia - Accounting* and *Colombia - Accounting
|
||||
Reports*.
|
||||
When `Colombia` is selected for a company's :guilabel:`Fiscal Localization`, Odoo automatically
|
||||
installs certain modules.
|
||||
|
||||
Company configuration
|
||||
---------------------
|
||||
|
||||
To configure your company information, go to the :menuselection:`Contacts` app and search for your
|
||||
company. Alternatively, activate :ref:`developer mode <developer-mode>` and navigate to
|
||||
To configure your company information, go to the :menuselection:`Contacts` app, and search for your
|
||||
company.
|
||||
|
||||
Alternatively, activate :ref:`developer mode <developer-mode>` and navigate to
|
||||
:menuselection:`General Setting --> Company --> Update Info --> Contact`. Then, edit the contact
|
||||
form to configure the following information:
|
||||
form and configure the following information:
|
||||
|
||||
- :guilabel:`Company Name`.
|
||||
- :guilabel:`Address`: Including :guilabel:`City`, :guilabel:`Department` and :guilabel:`Zip Code`.
|
||||
- :guilabel:`Tax ID`: When it is a `NIT`, it must have the *verification digit* at the end of the ID
|
||||
followed by a hyphen (`-`).
|
||||
- :guilabel:`Address`: Including :guilabel:`City`, :guilabel:`Department` and :guilabel:`ZIP` code.
|
||||
- :guilabel:`Identification Number`: Select the :guilabel:`Identification Type` (`NIT`, `Cédula de
|
||||
Ciudadanía`, `Registro Civil`, etc.). When the :guilabel:`Identification Type` is `NIT`, the
|
||||
:guilabel:`Identification Number` **must** have the *verification digit* at the end of the ID
|
||||
prefixed by a hyphen (`-`).
|
||||
|
||||
Next, configure the :guilabel:`Fiscal Information` in the :guilabel:`Sales & Purchase` tab:
|
||||
|
||||
- :guilabel:`Obligaciones y Responsabilidades`: Select the fiscal responsibility for the company
|
||||
(:guilabel:`O-13` Gran Contribuyente, :guilabel:`O-15` Autorretenedor, :guilabel:`O-23` Agente de
|
||||
retención IVA, :guilabel:`O-47` Regimen de tributación simple, :guilabel:`R-99-PN` No Aplica).
|
||||
(`O-13` Gran Contribuyente, `O-15` Autorretenedor, `O-23` Agente de retención IVA, `O-47` Regimen
|
||||
de tributación simple, `R-99-PN` No Aplica).
|
||||
- :guilabel:`Gran Contribuyente`: If the company is *Gran Contribuyente* this option should be
|
||||
selected.
|
||||
- :guilabel:`Fiscal Regimen`: Select the Tribute Name for the company (:guilabel:`IVA`,
|
||||
:guilabel:`INC`, :guilabel:`IVA e INC`, :guilabel:`No Aplica`)
|
||||
- :guilabel:`Fiscal Regimen`: Select the Tribute Name for the company (`IVA`, `INC`, `IVA e INC`,
|
||||
or `No Aplica`)
|
||||
- :guilabel:`Commercial Name`: If the company uses a specific commercial name, and it needs to be
|
||||
displayed in the invoice.
|
||||
|
||||
Carjaval credentials configuration
|
||||
----------------------------------
|
||||
|
||||
Once the modules installed, the user credentials must be configured in order to connect with
|
||||
Carvajal Web Service. Navigate to :menuselection:`Accounting --> Configuration --> Settings` and
|
||||
scroll to the :guilabel:`Colombian Electronic Invoicing` section. Then, fill in the required
|
||||
configuration information provided by Carvajal:
|
||||
Once the modules are installed, the user credentials **must** be configured, in order to connect
|
||||
with Carvajal Web Service. To do so, navigate to :menuselection:`Accounting --> Configuration -->
|
||||
Settings` and scroll to the :guilabel:`Colombian Electronic Invoicing` section. Then, fill in the
|
||||
required configuration information provided by Carvajal:
|
||||
|
||||
- :guilabel:`Username` and :guilabel:`Password`: Correspond to the username and password provided
|
||||
by Carvajal to the company.
|
||||
- :guilabel:`Username` and :guilabel:`Password`: Username and password (provided by Carvajal) to the
|
||||
company.
|
||||
- :guilabel:`Company Registry`: Company's NIT number *without* the verification code.
|
||||
- :guilabel:`Account ID`: Company ID followed by `_01`.
|
||||
- :guilabel:`Colombia Template Code`: Select one of the two available templates (:guilabel:`CGEN03`
|
||||
or :guilabel:`CGNE04`) to be used in the PDF format of the electronic invoice.
|
||||
- :guilabel:`Account ID`: Company's NIT number followed by `_01`.
|
||||
- :guilabel:`Colombia Template Code`: Select one of the two available templates (`CGEN03` or
|
||||
`CGNE04`) to be used in the PDF format of the electronic invoice.
|
||||
|
||||
Enable the :guilabel:`Test mode` checkbox to connect with the Carvajal testing environment.
|
||||
|
||||
Once Odoo and Carvajal are fully configured and ready for production, deactivate the :guilabel:`Test
|
||||
mode` checkbox to use the production database.
|
||||
|
||||
.. image:: colombia/carvajal-configuration.png
|
||||
:align: center
|
||||
:alt: Configure credentials for Carvajal web service in Odoo.
|
||||
|
||||
.. note::
|
||||
Check the :guilabel:`Test mode` checkbox to connect with the Carvajal testing environment. Once
|
||||
Odoo and Carvajal are fully configured and ready for production, uncheck the :guilabel:`Test
|
||||
mode` checkbox to use the production database.
|
||||
|
||||
.. important::
|
||||
:guilabel:`Test mode` must be used **only** on replicated databases, **not** the production
|
||||
:guilabel:`Test mode` must **only** be used on duplicated databases, **not** the production
|
||||
environment.
|
||||
|
||||
Report data configuration
|
||||
@@ -112,8 +117,17 @@ Report data configuration
|
||||
Report data can be defined for the fiscal section and bank information of the PDF as part of the
|
||||
configurable information sent in the XML.
|
||||
|
||||
Navigate to :menuselection:`Accounting --> Configuration --> Settings` and scroll to the
|
||||
:guilabel:`Colombian Electronic Invoicing` section.
|
||||
Navigate to :menuselection:`Accounting --> Configuration --> Settings`, and scroll to the
|
||||
:guilabel:`Colombian Electronic Invoicing` section, in order to find the :guilabel:`Report
|
||||
Configuration` fields. Here the header information for each report type can be configured.
|
||||
|
||||
- :guilabel:`Gran Contribuyente`
|
||||
- :guilabel:`Tipo de Régimen`
|
||||
- :guilabel:`Retenedores de IVA`
|
||||
- :guilabel:`Autorretenedores`
|
||||
- :guilabel:`Resolución Aplicable`
|
||||
- :guilabel:`Actividad Económica`
|
||||
- :guilabel:`Bank Information`
|
||||
|
||||
.. _colombia/master-data:
|
||||
|
||||
@@ -123,67 +137,85 @@ Master data configuration
|
||||
Partner
|
||||
~~~~~~~
|
||||
|
||||
Partner contacts can be created in the *Contacts* app. To do so, navigate to
|
||||
:menuselection:`Contacts`, and click the :guilabel:`Create` button.
|
||||
|
||||
Then, name the contact, and using the radio buttons, select the contact type, either
|
||||
:guilabel:`Individual` or :guilabel:`Company`.
|
||||
|
||||
Complete the full :guilabel:`Address`, including the :guilabel:`City`, :guilabel:`State`, and
|
||||
:guilabel:`ZIP` code. Then, complete the identification and fiscal information.
|
||||
|
||||
Identification information
|
||||
**************************
|
||||
|
||||
Document types defined by the |DIAN| are available on the partner form as part of the Colombian
|
||||
localization. Colombian partners must have their :guilabel:`Identification Number` (VAT) and
|
||||
:guilabel:`Document Type` set.
|
||||
Identification types, defined by the |DIAN|, are available on the partner form, as part of the
|
||||
Colombian localization. Colombian partners **must** have their :guilabel:`Identification Number`
|
||||
(VAT) and :guilabel:`Document Type` set.
|
||||
|
||||
.. tip::
|
||||
When the :guilabel:`Document Type` is `NIT`, the :guilabel:`Identification Number` needs to be
|
||||
configured in Odoo, including the *verification digit*; Odoo splits this number when the data to
|
||||
is sent to the third party.
|
||||
configured in Odoo, including the *verification digit at the end of the ID, prefixed by a hyphen
|
||||
(`-`)*.
|
||||
|
||||
Fiscal information
|
||||
******************
|
||||
|
||||
The partner's responsibility codes (section 53 in the RUT document) are included as part of the
|
||||
electronic invoicing module, as it is required by the |DIAN|.
|
||||
The partner's responsibility codes (section 53 in the :abbr:`RUT (Registro único tributario)`
|
||||
document) are included as part of the electronic invoicing module, as it is required by the |DIAN|.
|
||||
|
||||
The required fields can be found under :menuselection:`Partner --> Sales & Purchase Tab --> Fiscal
|
||||
Information`:
|
||||
Information section`:
|
||||
|
||||
- :guilabel:`Obligaciones y Responsabilidades`: Select the fiscal responsibility for the company
|
||||
(:guilabel:`O-13` Gran Contribuyente, :guilabel:`O-15` Autorretenedor, :guilabel:`O-23` Agente de
|
||||
retención IVA, :guilabel:`O-47` Regimen de tributación simple, :guilabel:`R-99-PN` No Aplica).
|
||||
(`O-13` Gran Contribuyente, `O-15` Autorretenedor, `O-23` Agente de retención IVA, `O-47` Regimen
|
||||
de tributación simple, or `R-99-PN` No Aplica).
|
||||
- :guilabel:`Gran Contribuyente`: If the company is *Gran Contribuyente* this option should be
|
||||
selected.
|
||||
- :guilabel:`Fiscal Regimen`: Select the Tribute Name for the company (:guilabel:`IVA`,
|
||||
:guilabel:`INC`, :guilabel:`IVA e INC`, :guilabel:`No Aplica`)
|
||||
- :guilabel:`Fiscal Regimen`: Select the tribute name for the company (`IVA`, `INC`, `IVA e INC`, or
|
||||
`No Aplica`)
|
||||
- :guilabel:`Commercial Name`: If the company uses a specific commercial name, and it needs to be
|
||||
displayed in the invoice.
|
||||
|
||||
Products
|
||||
~~~~~~~~
|
||||
|
||||
In addition to adding general information (in the :guilabel:`General Information` tab) on the
|
||||
product form, either the :guilabel:`UNSPSC Category`, :guilabel:`Barcode`, or :guilabel:`Internal
|
||||
Reference` field must also be configured.
|
||||
To manage products, navigate to :menuselection:`Accounting --> Customers --> Products`, then click
|
||||
on a product.
|
||||
|
||||
When adding general information on the product form, it is required that either the
|
||||
:guilabel:`UNSPSC Category` (:guilabel:`Accounting` tab), or :guilabel:`Internal Reference`
|
||||
(:guilabel:`General Information` tab) field is configured. Be sure to :guilabel:`Save` the product
|
||||
once configured.
|
||||
|
||||
Taxes
|
||||
~~~~~
|
||||
|
||||
If sales transactions include products with taxes, the :guilabel:`Value Type` field in the
|
||||
:guilabel:`Advanced Options` tab needs to be configured per tax. To do so, go to
|
||||
:menuselection:`Accounting --> Configuration --> Taxes`, and select the related tax.
|
||||
To create or modify taxes, go to :menuselection:`Accounting --> Configuration --> Taxes`, and select
|
||||
the related tax.
|
||||
|
||||
Retention tax types (:guilabel:`ICA`, :guilabel:`IVA`, :guilabel:`Fuente`) are also included. This
|
||||
configuration is used to display taxes in the invoice PDF correctly.
|
||||
If sales transactions include products with taxes, the :guilabel:`Value Type` field in the
|
||||
:guilabel:`Advanced Options` tab needs to be configured per tax. Retention tax types
|
||||
(:guilabel:`ICA`, :guilabel:`IVA`, :guilabel:`Fuente`) are also included. This configuration is used
|
||||
to display taxes correctly in the invoice PDF.
|
||||
|
||||
.. image:: colombia/retention-tax-types.png
|
||||
:align: center
|
||||
:alt: The ICA, IVA and Fuente fields in the Advanced Options tab in Odoo.
|
||||
|
||||
.. _co-journals:
|
||||
|
||||
Sales journals
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
.. _co-journals:
|
||||
|
||||
Once the |DIAN| has assigned the official sequence and prefix for the electronic invoice resolution,
|
||||
the sales journals related to the invoice documents must be updated in Odoo. To do so, navigate to
|
||||
:menuselection:`Accounting --> Configuration --> Journals`.
|
||||
the sales journals related to the invoice documents **must** be updated in Odoo. To do so, navigate
|
||||
to :menuselection:`Accounting --> Configuration --> Journals`, and select an existing sales journal,
|
||||
or create a new one with the :guilabel:`Create` button.
|
||||
|
||||
Configure the following data in the :guilabel:`Advanced Settings` tab:
|
||||
On the sales journal form, input the :guilabel:`Journal Name`, :guilabel:`Type`, and set a unique
|
||||
:guilabel:`Short Code` in the :guilabel:`Journals Entries` tab. Then, configure the following data
|
||||
in the :guilabel:`Advanced Settings` tab:
|
||||
|
||||
- :guilabel:`Electronic invoicing`: Enable :guilabel:`UBL 2.1 (Colombia)`.
|
||||
- :guilabel:`Invoicing Resolution`: Resolution number issued by |DIAN| to the company.
|
||||
@@ -193,32 +225,31 @@ Configure the following data in the :guilabel:`Advanced Settings` tab:
|
||||
- :guilabel:`Range of Numbering (maximum)`: Last authorized invoice number.
|
||||
|
||||
.. note::
|
||||
The sequence and resolution of the journal must match the one configured in Carvajal and the
|
||||
The sequence and resolution of the journal **must** match the one configured in Carvajal and the
|
||||
|DIAN|.
|
||||
|
||||
Invoice sequence
|
||||
****************
|
||||
|
||||
The invoice sequence and prefix must be correctly configured when the first document is created.
|
||||
The invoice sequence and prefix **must** be correctly configured when the first document is created.
|
||||
|
||||
.. note::
|
||||
Odoo automatically assigns a prefix and sequence to the following documents.
|
||||
Odoo automatically assigns a prefix and sequence to the following invoices.
|
||||
|
||||
Purchase journals
|
||||
*****************
|
||||
|
||||
Once the |DIAN| has assigned the official sequence and prefix for the support document related to
|
||||
Once the |DIAN| has assigned the official sequence and prefix for the *support document* related to
|
||||
vendor bills, the purchase journals related to their supporting documents need to be updated in
|
||||
Odoo. The process is similar to the configuration of the :ref:`sales journals <co-journals>`.
|
||||
|
||||
Chart of accounts
|
||||
*****************
|
||||
|
||||
The :doc:`chart of accounts
|
||||
</applications/finance/accounting/get_started/chart_of_accounts>` is installed by default as part of
|
||||
the localization module, the accounts are mapped automatically in taxes, default account payable,
|
||||
and default account receivable. The chart of accounts for Colombia is based on the PUC (Plan Unico
|
||||
de Cuentas).
|
||||
The :doc:`chart of accounts </applications/finance/accounting/get_started/chart_of_accounts>` is
|
||||
installed by default as part of the localization module, the accounts are mapped automatically in
|
||||
taxes, default account payable, and default account receivable. The chart of accounts for Colombia
|
||||
is based on the PUC (Plan Unico de Cuentas).
|
||||
|
||||
.. _colombia/workflows:
|
||||
|
||||
@@ -228,18 +259,38 @@ Main workflows
|
||||
Electronic invoices
|
||||
-------------------
|
||||
|
||||
The following is a breakdown of the main workflow for electronic invoices with the Colombian
|
||||
localization:
|
||||
|
||||
#. Sender creates an invoice.
|
||||
#. Electronic invoice provider generates the legal XML file.
|
||||
#. Electronic invoice provider creates the CUFE (Invoice Electronic Code) with the electronic
|
||||
signature.
|
||||
#. Electronic invoice provider sends a notification to |DIAN|.
|
||||
#. |DIAN| validates the invoice.
|
||||
#. |DIAN| accepts or rejects the invoice.
|
||||
#. Electronic invoice provider generates the PDF invoice with a QR code.
|
||||
#. Electronic invoice provider sends invoice to the acquirer.
|
||||
#. Acquirer sends a receipt of acknowledgement, and accepts or rejects the invoice.
|
||||
#. Sender downloads a :file:`.zip` file with the PDF and XML.
|
||||
|
||||
.. image:: colombia/workflow-electronic-invoice.png
|
||||
:align: center
|
||||
:alt: Electronic invoice workflow for Colombian localization.
|
||||
|
||||
.. _colombia/invoice-creation:
|
||||
|
||||
Invoice creation
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
.. note::
|
||||
The functional workflow taking place before an invoice validation does not alter the main changes
|
||||
introduced with the electronic invoice.
|
||||
The functional workflow taking place before an invoice validation does **not** alter the main
|
||||
changes introduced with the electronic invoice.
|
||||
|
||||
Electronic invoices are generated and sent to both the |DIAN| and customer through Carvajal's web
|
||||
service integration. These documents can be created from your sales order or manually. Go to
|
||||
:menuselection:`Accounting --> Customers --> Invoices` and configure:
|
||||
service integration. These documents can be created from your sales order or manually generated. To
|
||||
create a new invoice, go to :menuselection:`Accounting --> Customers --> Invoices`, and select
|
||||
:guilabel:`Create`. On the invoice form configure the following fields:
|
||||
|
||||
- :guilabel:`Customer`: Customer's information.
|
||||
- :guilabel:`Journal`: Journal used for electronic invoices.
|
||||
@@ -259,9 +310,10 @@ invoice is then processed asynchronously by the E-invoicing service UBL 2.1 (Col
|
||||
also displayed in the chatter.
|
||||
|
||||
.. image:: colombia/invoice-sent.png
|
||||
:align: center
|
||||
:alt: Carvajal XML invoice file in Odoo chatter.
|
||||
|
||||
The :guilabel:`Electronic Invoice Name` field is now displayed in the :guilabel:`EDI Documents` tab
|
||||
The :guilabel:`Electronic Invoice Name` field is now displayed in the :guilabel:`EDI Documents` tab,
|
||||
with the name of the XML file. Additionally, the :guilabel:`Electronic Invoice Status` field is
|
||||
displayed with the initial value :guilabel:`To Send`. To process the invoice manually, click on the
|
||||
:guilabel:`Process Now` button.
|
||||
@@ -271,7 +323,7 @@ displayed with the initial value :guilabel:`To Send`. To process the invoice man
|
||||
Reception of legal XML and PDF
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The electronic invoice vendor (Carvajal) receives the XML file and proceeds to validate its
|
||||
The electronic invoice vendor (Carvajal) receives the XML file, and proceeds to validate its
|
||||
structure and information.
|
||||
|
||||
After validating the electronic invoice, proceed to generate a legal XML which includes a digital
|
||||
@@ -279,10 +331,11 @@ signature and a unique code (CUFE), a PDF invoice that includes a QR code and th
|
||||
generated. If everything is correct the :guilabel:`Electronic Invoicing` field value changes to
|
||||
:guilabel:`Sent`.
|
||||
|
||||
A ZIP containing the legal electronic invoice in XML format and the invoice in PDF format is
|
||||
downloaded and displayed in the invoice chatter:
|
||||
A :file:`.zip` containing the legal electronic invoice (in XML format) and the invoice in (PDF
|
||||
format) is downloaded and displayed in the invoice chatter:
|
||||
|
||||
.. image:: colombia/invoice-zip.png
|
||||
:align: center
|
||||
:alt: ZIP file displayed in the invoice chatter in Odoo.
|
||||
|
||||
The electronic invoice status changes to :guilabel:`Accepted`.
|
||||
@@ -292,7 +345,7 @@ Credit notes
|
||||
|
||||
The process for credit notes is the same as for invoices. To create a credit note with reference to
|
||||
an invoice, go to :menuselection:`Accounting --> Customers --> Invoices`. On the invoice, click
|
||||
:guilabel:`Add Credit Note` and complete the following information:
|
||||
:guilabel:`Add Credit Note`, and complete the following information:
|
||||
|
||||
- :guilabel:`Credit Method`: Select the type of credit method.
|
||||
|
||||
@@ -316,7 +369,7 @@ Debit notes
|
||||
|
||||
The process for debit notes is similar to credit notes. To create a debit note with reference to an
|
||||
invoice, go to :menuselection:`Accounting --> Customers --> Invoices`. On the invoice, click the
|
||||
:guilabel:`Add Debit Note` button and complete the following information:
|
||||
:guilabel:`Add Debit Note` button, and enter the following information:
|
||||
|
||||
- :guilabel:`Reason`: Type the reason for the debit note.
|
||||
- :guilabel:`Debit note date`: Select the specific options.
|
||||
@@ -331,7 +384,7 @@ Support document for vendor bills
|
||||
---------------------------------
|
||||
|
||||
With master data, credentials, and the purchase journal configured for support documents related to
|
||||
vendor bills, you can start using support documents.
|
||||
vendor bills, you can start using *support documents*.
|
||||
|
||||
Support documents for vendor bills can be created from your purchase order or manually. Go to
|
||||
:menuselection:`Accounting --> Vendors --> Bills` and fill in the following data:
|
||||
@@ -372,6 +425,7 @@ Commerce (ICA) tax. The report can be found under :menuselection:`Accounting -->
|
||||
Colombian Statements --> Certificado de Retención en ICA`.
|
||||
|
||||
.. image:: colombia/ica-report.png
|
||||
:align: center
|
||||
:alt: Certificado de Retención en ICA report in Odoo Accounting.
|
||||
|
||||
Certificado de Retención en IVA
|
||||
@@ -382,6 +436,7 @@ can be found under :menuselection:`Accounting --> Reporting --> Colombian Statem
|
||||
de Retención en IVA`.
|
||||
|
||||
.. image:: colombia/iva-report.png
|
||||
:align: center
|
||||
:alt: Certificado de Retención en IVA report in Odoo Accounting.
|
||||
|
||||
Certificado de Retención en la Fuente
|
||||
@@ -392,4 +447,5 @@ be found under :menuselection:`Accounting --> Reporting --> Colombian Statements
|
||||
Retención en Fuente`.
|
||||
|
||||
.. image:: colombia/fuente-report.png
|
||||
:align: center
|
||||
:alt: Certificado de Retención en Fuente report in Odoo Accounting.
|
||||
|
||||
|
After Width: | Height: | Size: 24 KiB |
@@ -5,6 +5,11 @@ PayPal
|
||||
`Paypal <https://www.paypal.com/>`_ is an American online payment provider available worldwide, and
|
||||
one of the few that does not charge a subscription fee.
|
||||
|
||||
.. note::
|
||||
While PayPal is available in `over 200 countries/regions
|
||||
<https://www.paypal.com/webapps/mpp/country-worldwide>`_, only `a selection of currencies are
|
||||
supported <https://developer.paypal.com/docs/reports/reference/paypal-supported-currencies>`_.
|
||||
|
||||
Settings in PayPal
|
||||
==================
|
||||
|
||||
|
||||
@@ -2,18 +2,18 @@
|
||||
Sign
|
||||
====
|
||||
|
||||
**Odoo Sign** allows you to send, sign and approve documents online, using electronic signatures.
|
||||
**Odoo Sign** allows you to send, sign, and approve documents online, using electronic signatures.
|
||||
|
||||
An **electronic signature** shows a person's agreement to the content of a document. Just like a
|
||||
handwritten signature, the electronic one represents a legal bounding by the terms of the signed
|
||||
document.
|
||||
|
||||
With Sign, you can upload any PDF file and add fields to it. These fields are automatically filled
|
||||
in with the user's details present in your database.
|
||||
With Sign, you can upload any PDF file and add fields to it. These fields can be automatically
|
||||
filled in with the user's details present in your database.
|
||||
|
||||
.. seealso::
|
||||
- `Odoo Sign: product page <https://www.odoo.com/app/sign>`_
|
||||
- `Odoo Tutorials: Sign <https://www.odoo.com/slides/sign-61>`_
|
||||
- `Odoo Tutorials: Sign [video] <https://www.odoo.com/slides/sign-61>`_
|
||||
|
||||
Validity of electronic signatures
|
||||
=================================
|
||||
@@ -82,16 +82,60 @@ Overall, to be recognized as valid, electronic signatures have to meet five crit
|
||||
is up-to-date. We advise contacting a local attorney for legal advice regarding electronic
|
||||
signature compliance and validity.
|
||||
|
||||
Send a document to sign
|
||||
=======================
|
||||
|
||||
One-time signature
|
||||
------------------
|
||||
|
||||
You can click :guilabel:`Upload a PDF to sign` from your dashboard for a one-time signature. Select
|
||||
your document, open it, and drag and drop the required :ref:`fields <sign/fields>` in your document.
|
||||
You can modify the :ref:`role <sign/role>` assigned to a field by clicking on it and selecting the
|
||||
one you want.
|
||||
|
||||
When ready, click :guilabel:`Send`, and fill in the required fields. Once sent, your document
|
||||
remains available. Go to :menuselection:`Documents --> All Documents` to see your document
|
||||
and the status of the signatures.
|
||||
|
||||
.. image:: sign/signature-status.png
|
||||
:alt: Signature status
|
||||
|
||||
Templates
|
||||
---------
|
||||
|
||||
You can create document templates when you have to send the same document several times. From your
|
||||
dashboard, click :guilabel:`Upload a PDF template`. Select the document and add the required
|
||||
:ref:`fields <sign/fields>`. You can modify the :ref:`role <sign/role>` of a field by clicking on it
|
||||
and selecting the one you want.
|
||||
|
||||
Click :guilabel:`Template Properties` to add :guilabel:`Tags` to your template, define a
|
||||
:guilabel:`Signed Document Workspace`, add :guilabel:`Signed Document Tags`, set a
|
||||
:guilabel:`Redirect Link` that will be available in the signature confirmation message received
|
||||
after the signature, or define :guilabel:`Authorized Users` if you want to restrict the use of your
|
||||
template to specific authorized users or groups.
|
||||
|
||||
Your templates are visible by default on your dashboard. You can click :guilabel:`Send` to quickly
|
||||
send a document template to a signer or :guilabel:`Sign Now` if you are ready to sign your document
|
||||
immediately.
|
||||
|
||||
.. tip::
|
||||
You can **create a template from a document that was previously sent**. To do so, go to
|
||||
:menuselection:`Documents --> All Documents`. On the document you want to retrieve, click on
|
||||
⋮, then :guilabel:`Template`. Click on ⋮ again, then :guilabel:`Restore`. Your document now
|
||||
appears on your dashboard next to your other templates.
|
||||
|
||||
.. _sign/role:
|
||||
|
||||
Roles
|
||||
=====
|
||||
|
||||
Each field in a Sign document is related to a role that corresponds to a specific person. When a
|
||||
document is being signed, the person assigned to the role needs to fill in their assigned fields and
|
||||
Each field in a Sign document is related to a role corresponding to a specific person. When a
|
||||
document is being signed, the person assigned to the role must fill in their assigned fields and
|
||||
sign it.
|
||||
|
||||
Roles are available by going to :menuselection:`Sign --> Configuration --> Roles`.
|
||||
|
||||
It is possible to update existing roles or to create new roles by clicking on :guilabel:`Create`.
|
||||
It is possible to update existing roles or to create new roles by clicking on :guilabel:`New`.
|
||||
Choose a :guilabel:`Role Name`, add an :guilabel:`Extra Authentication Step` to confirm the
|
||||
identity of the signing person, and if the document can be reassigned to another contact, select
|
||||
:guilabel:`Change Authorized` for the role. A :guilabel:`Color` can also be chosen for the role.
|
||||
@@ -101,79 +145,133 @@ template.
|
||||
Secured identification
|
||||
----------------------
|
||||
|
||||
As the owner of a document, you may request an :guilabel:`Extra Authentication Step` through an SMS
|
||||
verification or via Itsme® (available in Belgium and the Netherlands). Both authentication options
|
||||
require :ref:`credits <iap/buying_credits>`. If you do not have any credits left, the authentication
|
||||
steps will be skipped.
|
||||
As the owner of a document, you may request an :guilabel:`Extra Authentication Step` through
|
||||
:ref:`SMS verification <sign/sms>` or via :ref:`Itsme® <sign/itsme>` (available in Belgium and the
|
||||
Netherlands). Both authentication options require :ref:`credits <iap/buying_credits>`. If you do not
|
||||
have any credits left, the authentication steps will be skipped.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`In-App Purchase (IAP) <../general/in_app_purchase>`
|
||||
- :doc:`SMS pricing and FAQ <../marketing/sms_marketing/pricing/pricing_and_faq>`
|
||||
|
||||
.. _sign/sms:
|
||||
|
||||
SMS verification
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
Go to :menuselection:`Sign --> Configuration --> Roles`. Click in the :guilabel:`Extra
|
||||
Authentication Step` column for the role, and select :guilabel:`Unique Code Via SMS`.
|
||||
|
||||
.. note::
|
||||
Before being able to send SMS Text Messages, you need to register your phone number. To do so, go
|
||||
to :menuselection:`Sign --> Configuration --> Settings` and click :guilabel:`Buy credits` under
|
||||
:guilabel:`Authenticate by SMS`.
|
||||
|
||||
Go to the document to sign, add the field for which the SMS verification is required, for example,
|
||||
the :guilabel:`Signature` field, and click :guilabel:`Send`. On the new page, select the
|
||||
:guilabel:`customer` and click :guilabel:`Send`.
|
||||
|
||||
The person signing the document fills in the :guilabel:`Signature` field, then :guilabel:`Sign`, and
|
||||
clicks :guilabel:`Validate & Send Completed Document`. A :guilabel:`Final Validation` page pops up
|
||||
where to add their phone number. One-time codes are sent by SMS.
|
||||
|
||||
.. image:: sign/sms-verification.png
|
||||
:align: center
|
||||
:alt: Add a hash to your document
|
||||
|
||||
Go to the document to sign, add the field for which the SMS verification is required, for example
|
||||
the :guilabel:`Signature` field, and click :guilabel:`Send`. A page pops up, select the customer,
|
||||
and click :guilabel:`Send`.
|
||||
|
||||
The person signing the document fills in the :guilabel:`Signature` field and clicks
|
||||
:guilabel:`Validate & Send Completed Document`. A :guilabel:`Final Validation` page pops up where to
|
||||
add their phone number. One-time codes are sent by SMS.
|
||||
|
||||
.. image:: sign/final-validation.png
|
||||
:align: center
|
||||
:alt: fill in your phone number for final validation
|
||||
|
||||
.. note::
|
||||
- This feature is enabled by default.
|
||||
- As soon as the :guilabel:`Extra Authentication Step` applies to a role, this validation step is
|
||||
requested for any field assigned to this role.
|
||||
|
||||
.. _sign/itsme:
|
||||
|
||||
Itsme®
|
||||
~~~~~~
|
||||
|
||||
Go to :menuselection:`Sign --> Configuration --> Settings` and enable :guilabel:`Identify with
|
||||
itsme®`.
|
||||
Itsme® authentication can be used to allow signatories to provide their identity using itsme®. This
|
||||
feature is only available in **Belgium** and the **Netherlands**.
|
||||
|
||||
Then, go to :menuselection:`Sign --> Configuration --> Roles`. Click in the :guilabel:`Extra
|
||||
Authentication Step` column for the role, and select :guilabel:`Via itsme®`.
|
||||
The feature can be enabled in :guilabel:`Sign Settings` and applies automatically to the
|
||||
:guilabel:`Customer (identified with itsme®)` role. To enable it for other roles, go to
|
||||
:menuselection:`Sign --> Configuration --> Roles`. Click in the :guilabel:`Extra Authentication
|
||||
Step` column for the role, and select :guilabel:`Via itsme®`.
|
||||
|
||||
Go to the document that needs to be signed and add the :guilabel:`Signature` field. Switch the role
|
||||
to :guilabel:`customer (identified with itsme®)`, and click :guilabel:`Validate`, and
|
||||
:guilabel:`Send`.
|
||||
Go to the document that needs to be signed and add the :guilabel:`Signature` field. Switch to any
|
||||
role configured to use the feature, and click :guilabel:`Validate` and :guilabel:`Send`.
|
||||
|
||||
.. image:: sign/itsme-identification.png
|
||||
:align: center
|
||||
:alt: select customer identified with itsme®
|
||||
|
||||
The person signing the document fills in the :guilabel:`Signature` field and clicks
|
||||
:guilabel:`Validate & Send Completed Document`. A :guilabel:`Final Validation` page pops up, and the
|
||||
person must authenticate with itsme®.
|
||||
Upon signing the document, the signer completes the :guilabel:`Signature` field and proceeds by
|
||||
clicking on :guilabel:`Validate & Send Completed Document`, triggering a
|
||||
:guilabel:`Final verification` page where authentication via itsme® is required.
|
||||
|
||||
.. note::
|
||||
This feature is only available in Belgium and the Netherlands.
|
||||
Signatory hash
|
||||
==============
|
||||
|
||||
Each time someone signs a document, a **hash** - a unique digital signature of the operation - is
|
||||
generated to ensure traceability, integrity, and inalterability. This process guarantees that any
|
||||
changes made after a signature is affixed can be easily detected, maintaining the document's
|
||||
authenticity and security throughout its lifecycle.
|
||||
|
||||
A visual security frame displaying the beginning of the hash is added to the signatures. Internal
|
||||
users can hide or show it by turning the :guilabel:`Frame` option on or off when signing the
|
||||
document.
|
||||
|
||||
.. image:: sign/sign-hash.png
|
||||
:alt: Adding the visual security frame to a signature.
|
||||
|
||||
.. _sign/field-types:
|
||||
|
||||
Field Types
|
||||
Tags
|
||||
====
|
||||
|
||||
Tags can be used to categorize and organize documents, allowing users to search for and filter
|
||||
documents based on specific criteria quickly.
|
||||
|
||||
You can manage tags by going to :menuselection:`Configuration --> Tags`. To create a tag, click
|
||||
:guilabel:`New`. On the new line, add the :guilabel:`Tag Name` and select a :guilabel:`Color Index`
|
||||
for your tag.
|
||||
|
||||
To apply a tag to a document, use the dropdown list available in your document.
|
||||
|
||||
Sign order
|
||||
==========
|
||||
|
||||
When a document needs to be signed by different parties, the signing order lets you control the
|
||||
order in which your recipients receive it for signature.
|
||||
|
||||
By going to :menuselection:`Configuration --> Settings`, you can :guilabel:`Enable Signing Order`.
|
||||
Each recipient receives the signature request notification only once the previous recipient has
|
||||
completed their action.
|
||||
|
||||
Add at least two :guilabel:`Signature` fields with different roles to your document. Click
|
||||
:guilabel:`Send`, go to the :guilabel:`Options` tab, and tick the :guilabel:`Specify signing order`
|
||||
box.
|
||||
|
||||
Add the signer's :guilabel:`Name or email` information. You can decide on the :guilabel:`Sign Order`
|
||||
by typing :guilabel:`1` or :guilabel:`2` in the :guilabel:`Sign Order` column.
|
||||
|
||||
.. seealso::
|
||||
`Odoo Quick Tips: Sign order [video] <https://www.youtube.com/watch?v=2KUq7RPt1cU/>`_
|
||||
|
||||
.. _sign/fields:
|
||||
|
||||
Field types
|
||||
===========
|
||||
|
||||
Various field types can be used to sign documents (placeholder, autocompletion, ...). By configuring
|
||||
your own field types, also known as signature item types, the signing process can be even faster for
|
||||
your customers, partners, and employees.
|
||||
Fields are used in a document to indicate what information must be completed by the signers. You can
|
||||
add fields to your document simply by dragging and dropping them for the left column into your
|
||||
document.
|
||||
|
||||
Various field types can be used to sign documents (placeholder, autocompletion, etc.). By
|
||||
configuring your own field types, also known as signature item types, the signing process can be
|
||||
even faster for your customers, partners, and employees.
|
||||
|
||||
To create and edit field types, go to :menuselection:`Sign --> Configuration --> Settings -->
|
||||
Edit field types`.
|
||||
|
||||
You can select an existing field by clicking on it or you can :guilabel:`Create` a new one. First,
|
||||
You can select an existing field by clicking on it, or you can :guilabel:`Create` a new one. First,
|
||||
edit the :guilabel:`Field Name`. Then, select a :guilabel:`Field Type`:
|
||||
|
||||
- :guilabel:`Signature`: users are asked to enter their signature either by drawing it, generating
|
||||
@@ -199,10 +297,10 @@ the person signing the document. To do so, enter the contact model field's techn
|
||||
document.
|
||||
|
||||
The size of the fields can also be changed by editing the :guilabel:`Default Width` and
|
||||
:guilabel:`Default Height`. Both sizes are defined as a percentage of the full-page expressed as a
|
||||
decimal, with 1 equalling the full-page's width or height. By default, the width of new fields you
|
||||
create is set to 15% (0.150) of a full-page's width, while their height is set to 1.5% (0.015) of a
|
||||
full-page's height.
|
||||
:guilabel:`Default Height`. Both sizes are defined as a percentage of the full page expressed as a
|
||||
decimal, with 1 equalling the full page's width or height. By default, the width of new fields you
|
||||
create is set to 15% (0.150) of a full page's width, while their height is set to 1.5% (0.015) of a
|
||||
full page's height.
|
||||
|
||||
Next, write a :guilabel:`Tip`. Tips are displayed inside arrows on the left-hand side of the user's
|
||||
screen during the signing process to help them understand what the step entails (e.g., "Sign here"
|
||||
@@ -210,23 +308,4 @@ or “Fill in your birthdate”). You can also use a :guilabel:`Placeholder` tex
|
||||
the field before it is completed.
|
||||
|
||||
.. image:: sign/tip-placeholder.png
|
||||
:align: center
|
||||
:alt: Tip and placeholder example in Odoo Sign
|
||||
|
||||
Signatory hash
|
||||
==============
|
||||
|
||||
A :guilabel:`hash` can be added to a document that is shared (attached to an email or printed, for
|
||||
example) to indicate that the signature is electronic and that there is some traceability behind
|
||||
it. The :guilabel:`hash` corresponds to a unique ID number related to the signed document.
|
||||
|
||||
If you are an :doc:`internal user <../general/users/manage_users>`,
|
||||
you can choose to tick or untick the frame option when signing the document. Tick the box to have
|
||||
the frame and hash visible.
|
||||
|
||||
.. image:: sign/sign-hash.png
|
||||
:align: center
|
||||
:alt: Add a hash to your document
|
||||
|
||||
.. note::
|
||||
The :guilabel:`hash` is only applicable to the signature field.
|
||||
|
||||
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 34 KiB |
BIN
content/applications/finance/sign/signature-status.png
Normal file
|
After Width: | Height: | Size: 6.2 KiB |
|
Before Width: | Height: | Size: 8.4 KiB After Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
@@ -2,8 +2,8 @@
|
||||
Reporting
|
||||
=========
|
||||
|
||||
You can find under the :guilabel:`Reporting` menu of most apps several reports that let you analyze
|
||||
and visualize your records' data.
|
||||
You can find several reports under the :guilabel:`Reporting` menu of most apps that let you analyze
|
||||
and visualize the data of your records.
|
||||
|
||||
.. _reporting/views:
|
||||
|
||||
@@ -25,7 +25,6 @@ but can be found elsewhere. Click the **graph view button** located at the top r
|
||||
it.
|
||||
|
||||
.. image:: reporting/graph-button.png
|
||||
:align: center
|
||||
:alt: Selecting the graph view
|
||||
|
||||
.. _reporting/views/pivot:
|
||||
@@ -38,7 +37,6 @@ down for analysis. The view is often found under the :guilabel:`Reporting` menu
|
||||
found elsewhere. Click the **pivot view button** located at the top right to access it.
|
||||
|
||||
.. image:: reporting/pivot-button.png
|
||||
:align: center
|
||||
:alt: Selecting the pivot view
|
||||
|
||||
.. _reporting/choosing-measures:
|
||||
@@ -65,7 +63,6 @@ grouped by *Date > Month*, which is used to analyze the evolution of a measure o
|
||||
When you filter a single time period, the option to compare it against another one appears.
|
||||
|
||||
.. image:: reporting/comparison.png
|
||||
:align: center
|
||||
:alt: Using the comparison option
|
||||
|
||||
.. example::
|
||||
@@ -79,7 +76,6 @@ grouped by *Date > Month*, which is used to analyze the evolution of a measure o
|
||||
selected.
|
||||
|
||||
.. image:: reporting/measures.png
|
||||
:align: center
|
||||
:alt: Selecting different measures on the Sales Analysis report
|
||||
|
||||
.. tab:: Group measures
|
||||
@@ -88,7 +84,6 @@ grouped by *Date > Month*, which is used to analyze the evolution of a measure o
|
||||
previous Sales Analysis report example.
|
||||
|
||||
.. image:: reporting/single-group.png
|
||||
:align: center
|
||||
:alt: Adding a group on the Sales Analysis report
|
||||
|
||||
.. _reporting/using-pivot:
|
||||
@@ -111,7 +106,6 @@ subgroups.
|
||||
group on the :guilabel:`All / Saleable / Office Furniture` product category.
|
||||
|
||||
.. image:: reporting/multiple-groups.png
|
||||
:align: center
|
||||
:alt: Adding multiple groups on the Sales Analysis report
|
||||
|
||||
.. tip::
|
||||
@@ -124,7 +118,7 @@ subgroups.
|
||||
Using the graph view
|
||||
====================
|
||||
|
||||
Three graphs are available, the bar, line, and pie charts.
|
||||
Three graphs are available: the bar, line, and pie charts.
|
||||
|
||||
**Bar charts** are used to show the distribution or a comparison of several categories. They are
|
||||
especially useful as they can deal with larger data sets.
|
||||
@@ -139,19 +133,16 @@ when they form a meaningful whole.
|
||||
.. tab:: Bar chart
|
||||
|
||||
.. image:: reporting/bar.png
|
||||
:align: center
|
||||
:alt: Viewing the Sales Analysis report as a bar chart
|
||||
|
||||
.. tab:: Line chart
|
||||
|
||||
.. image:: reporting/line.png
|
||||
:align: center
|
||||
:alt: Viewing the Sales Analysis report as a line chart
|
||||
|
||||
.. tab:: Pie chart
|
||||
|
||||
.. image:: reporting/pie.png
|
||||
:align: center
|
||||
:alt: Viewing the Sales Analysis report as a pie chart
|
||||
|
||||
.. tip::
|
||||
@@ -163,25 +154,21 @@ when they form a meaningful whole.
|
||||
.. tab:: Stacked bar chart
|
||||
|
||||
.. image:: reporting/stacked-bar.png
|
||||
:align: center
|
||||
:alt: Stacked bar chart example
|
||||
|
||||
.. tab:: Regular bar chart
|
||||
|
||||
.. image:: reporting/non-stacked-bar.png
|
||||
:align: center
|
||||
:alt: Non-stacked bar chart example
|
||||
|
||||
.. tab:: Stacked line chart
|
||||
|
||||
.. image:: reporting/stacked-line.png
|
||||
:align: center
|
||||
:alt: Stacked line chart example
|
||||
|
||||
.. tab:: Regular line chart
|
||||
|
||||
.. image:: reporting/non-stacked-line.png
|
||||
:align: center
|
||||
:alt: Non-stacked line chart example
|
||||
|
||||
For **line** charts, you can use the cumulative option to sum values, which is especially useful
|
||||
@@ -192,11 +179,9 @@ when they form a meaningful whole.
|
||||
.. tab:: Cumulative line chart
|
||||
|
||||
.. image:: reporting/cumulative.png
|
||||
:align: center
|
||||
:alt: Cumulative line chart example
|
||||
|
||||
.. tab:: Regular line chart
|
||||
|
||||
.. image:: reporting/non-cumulative.png
|
||||
:align: center
|
||||
:alt: Regular line chart example
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
:show-content:
|
||||
|
||||
=======
|
||||
Payroll
|
||||
=======
|
||||
|
||||
@@ -13,3 +13,4 @@ Daily operations
|
||||
operations/transfers_scratch
|
||||
operations/barcode_nomenclature
|
||||
operations/gs1_nomenclature
|
||||
operations/gs1_usage
|
||||
|
||||
@@ -2,11 +2,24 @@
|
||||
GS1 barcode nomenclature
|
||||
========================
|
||||
|
||||
`GS1 nomenclature <https://www.gs1us.org/>`_ consolidates multiple pieces of information in a single
|
||||
barcode. Each piece needs to follow a specific barcode pattern—which is a defined format of numbers,
|
||||
letters, special characters, and character length—to ensure proper interpretation of the barcode. By
|
||||
scanning the barcode on an unopened box, GS1 nomenclature can identify the product, lot number,
|
||||
number of units contained, and more.
|
||||
.. _barcode/operations/gs1:
|
||||
|
||||
.. |AI| replace:: :abbr:`A.I. (Application Identifier)`
|
||||
.. |GTIN| replace:: :abbr:`GTIN (Global Trade Item Number)`
|
||||
.. |GTINs| replace:: :abbr:`GTINs (Global Trade Item Numbers)`
|
||||
|
||||
|
||||
`GS1 nomenclature <https://www.gs1us.org/>`_ consolidates various product and supply chain data into
|
||||
a single barcode. Odoo takes in `unique Global Trade Item Numbers
|
||||
<https://www.gs1.org/standards/get-barcodes>`_ (GTIN), purchased by businesses, to enable global
|
||||
shipping, sales, and eCommerce product listing.
|
||||
|
||||
Configure GS1 nomenclature to scan barcodes of sealed boxes and identify essential product
|
||||
information, such as |GTIN|, lot number, quantity information, and more.
|
||||
|
||||
.. important::
|
||||
|GTINs| are unique product identification that **must** be `purchased from GS1
|
||||
<https://www.gs1.org/standards/get-barcodes>`_ to use GS1 barcodes.
|
||||
|
||||
.. seealso::
|
||||
- `All GS1 barcodes <https://www.gs1.org/standards/barcodes/application-identifiers>`_
|
||||
@@ -25,233 +38,74 @@ barcode nomenclature options.
|
||||
|
||||
.. image:: gs1_nomenclature/setup-gs1-nomenclature.png
|
||||
:align: center
|
||||
:alt: Choose GS1 from dropdown and click the internal link to see the list of GS1 rules.
|
||||
:alt: Choose GS1 from dropdown and click the external link to see the list of GS1 rules.
|
||||
|
||||
To view and edit a list of GS1 *rules* and *barcode patterns* Odoo supports by default, click the
|
||||
:guilabel:`➡️ (External link)` icon to the right of the :guilabel:`Barcode Nomenclature` selection.
|
||||
The list of GS1 *rules* and *barcode patterns* Odoo supports by default is accessible by clicking
|
||||
the :guilabel:`➡️ (arrow)` icon to the right of the :guilabel:`Barcode Nomenclature` selection.
|
||||
|
||||
Opening the pop-up table provides an editable view of GS1 :guilabel:`Rule Names` available in Odoo.
|
||||
The table contains all the information that can be condensed with a GS1 barcode, along with the
|
||||
corresponding :guilabel:`Barcode Pattern`.
|
||||
In the :guilabel:`Open: Nomenclature` pop-up table, view and edit the GS1 :guilabel:`Rule Names`
|
||||
available in Odoo. The table contains all the information that can be condensed with a GS1 barcode,
|
||||
along with the corresponding :guilabel:`Barcode Pattern`.
|
||||
|
||||
.. tip::
|
||||
After setting GS1 as the barcode nomenclature, :menuselection:`Barcode Nomenclatures` can also be
|
||||
accessed by first enabling :ref:`developer mode <developer-mode>`. Navigate to
|
||||
:menuselection:`Inventory app --> Configuration --> Barcode Nomenclatures` and finally, select
|
||||
:guilabel:`Default GS1 Nomenclature`.
|
||||
After setting GS1 as the barcode nomenclature, the :menuselection:`Barcode Nomenclatures`
|
||||
settings can also be accessed by a hidden menu that's discoverable after enabling :ref:`developer
|
||||
mode <developer-mode>`. Once enabled, navigate to the :menuselection:`Inventory app -->
|
||||
Configuration --> Barcode Nomenclatures` menu and finally, select :guilabel:`Default GS1
|
||||
Nomenclature`.
|
||||
|
||||
.. _barcode/operations/create-GS1-barcode:
|
||||
|
||||
Use GS1 barcode
|
||||
===============
|
||||
Use GS1 barcodes in Odoo
|
||||
========================
|
||||
|
||||
To build GS1 barcodes in Odoo, combine multiple pieces of information using the specified barcode
|
||||
pattern. The `application identifier
|
||||
<https://www.gs1.org/standards/barcodes/application-identifiers>`_ (A.I.) serves as the universal
|
||||
prefix for GS1 for barcode identification. Odoo uses regular expressions to describe barcode
|
||||
patterns concisely. Each barcode pattern begins with a required 2-4 digit :abbr:`A.I. (application
|
||||
identifier)`, which corresponds to the rule defined in the system's :ref:`barcode nomenclature list
|
||||
<barcode/operations/set-up-barcode-nomenclature>`. By including the appropriate :abbr:`A.I.
|
||||
(application identifier)` from the list, Odoo can accurately interpret GS1 barcodes. While most
|
||||
barcode patterns have a flexible length, some specific patterns, such as barcodes for dates, have
|
||||
defined length requirements.
|
||||
For product identification using GS1 barcodes in Odoo, businesses obtain a `unique GTIN
|
||||
<https://www.gs1.org/standards/get-barcodes>`_ as an internationally distinct product identifier
|
||||
purchased from GS1. This |GTIN| is combined with specific product details following GS1's designated
|
||||
*barcode pattern*. The barcode pattern's arrangement of numbers and letters must adhere to GS1
|
||||
conventions for accurate interpretation by global systems along the supply chain.
|
||||
|
||||
Every barcode starts with a 2-4 digit `application identifier
|
||||
<https://www.gs1.org/standards/barcodes/application-identifiers>`_ (A.I.). This required prefix
|
||||
universally indicates what kind of information the barcode contains. Odoo follows GS1 rules for
|
||||
identifying information, as detailed in the :ref:`default GS1 rules list
|
||||
<barcode/operations/default-gs1-nomenclature-list>`. Including the relevant |AI| from the list
|
||||
enables Odoo to correctly interpret GS1 barcodes. While most barcode patterns have a fixed length
|
||||
requirement, certain ones, such as lots and serial numbers, have flexible length.
|
||||
|
||||
.. tip::
|
||||
Use the FNC1 separator (`\x1D`) to end the barcode without needing to reach the maximum character
|
||||
length.
|
||||
For flexible-length barcode patterns not placed at the end of the GS1 barcode, use the FNC1
|
||||
separator (`\\x1D`) to end the barcode.
|
||||
|
||||
Example: The barcode pattern for lot numbers is 20 characters long. Instead of creating a
|
||||
20-character lot number barcode, like `LOT00000000000000001`, use the FNC1 separator to make it
|
||||
shorter: `LOT001\x1D`.
|
||||
|
||||
Refer to the :ref:`GS1 nomenclature list <barcode/operations/default-gs1-nomenclature-list>` to see
|
||||
a comprehensive list of all barcode patterns and rules to follow. Otherwise, the following section
|
||||
contains examples of how to generate a barcode for common items in a warehouse.
|
||||
|
||||
Product + quantity + lot
|
||||
------------------------
|
||||
|
||||
To build a GS1 barcode for a box that contains a product, number of units in it, and the lot number,
|
||||
the following barcode patterns are used:
|
||||
|
||||
+------------+--------------------------+------+----------------------------------+------------------------------------------+
|
||||
| Name | Rule Name | A.I. | Barcode Pattern | Field in Odoo |
|
||||
+============+==========================+======+==================================+==========================================+
|
||||
| Product | Global Trade Item Number | 01 | (01)(\\d{14}) | :guilabel:`Barcode` field on product form|
|
||||
| | (GTIN) | | | |
|
||||
+------------+--------------------------+------+----------------------------------+------------------------------------------+
|
||||
| Quantity | Variable count of items | 30 | (30)(\\d{0,8}) | :guilabel:`Units` field on transfer form |
|
||||
+------------+--------------------------+------+----------------------------------+------------------------------------------+
|
||||
| Lot Number | Batch or lot number | 10 | (10)([!"%-/0-9:-?A-Z_a-z]{0,20}) | :guilabel:`Lot` on Detailed Operations |
|
||||
| | | | | pop-up |
|
||||
+------------+--------------------------+------+----------------------------------+------------------------------------------+
|
||||
|
||||
.. _barcode/operations/lot-setup:
|
||||
|
||||
Configuration
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
To track products using lots, first enable the :ref:`Lots and Serial Numbers
|
||||
<inventory/management/track_products_by_lots>` feature. To do so, navigate to
|
||||
:menuselection:`Inventory app --> Configuration --> Settings`. Next, under the
|
||||
:guilabel:`Traceability` heading, check the box for :guilabel:`Lots & Serial Numbers`.
|
||||
|
||||
Then, set up the product barcode by navigating to the intended product form in
|
||||
:menuselection:`Inventory app --> Products --> Products` and selecting the product. On the product
|
||||
form, click :guilabel:`Edit`. Then, in the :guilabel:`General Information` tab, fill in the
|
||||
:guilabel:`Barcode` field with the 14-digit `Global Trade Item Number (GTIN)
|
||||
<https://www.gs1.org/standards/get-barcodes>`_, which is a universal and unique identifying number
|
||||
from GS1.
|
||||
|
||||
.. important::
|
||||
On the product form, omit the :abbr:`A.I. (application identifier)` `01` for GTIN product barcode
|
||||
pattern, as it is only used to encode multiple barcodes into a single barcode that contains
|
||||
detailed information about the package contents.
|
||||
|
||||
.. example::
|
||||
To create a barcode for the product, `Fuji Apple`, enter the 14-digit GTIN `12345678901231` in
|
||||
the :guilabel:`Barcode` field on the product form.
|
||||
|
||||
.. image:: gs1_nomenclature/barcode-field.png
|
||||
:align: center
|
||||
:alt: Enter 14-digit GTIN into the Barcode field on product form.
|
||||
|
||||
.. tip::
|
||||
It is also possible to view a list of all products and barcodes. To access this list, go to
|
||||
:menuselection:`Inventory --> Configuration --> Settings`. Under the :guilabel:`Barcode` heading,
|
||||
click on the :guilabel:`Configure Product Barcodes` button under the :guilabel:`Barcode Scanner`
|
||||
section. Enter the 14-digit GTIN into the :guilabel:`Barcode` column, then click
|
||||
:guilabel:`Save`.
|
||||
|
||||
.. image:: gs1_nomenclature/product-barcodes-page.png
|
||||
:align: center
|
||||
:alt: View the Product Barcodes page from inventory settings.
|
||||
|
||||
.. _barcode/operations/lot-setup-on-product:
|
||||
|
||||
Next, enable lots and serial number tracking on the product. Select the :guilabel:`Inventory` tab on
|
||||
the product form. Under :guilabel:`Tracking`, choose the :guilabel:`By Lots` radio button.
|
||||
|
||||
.. image:: gs1_nomenclature/track-by-lots.png
|
||||
:align: center
|
||||
:alt: Enable product tracking by lots in the "Inventory" tab of the product form.
|
||||
|
||||
Scan barcode on receipt
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
To ensure accurate lot interpretation in Odoo on product barcodes scanned during a receipt
|
||||
operation, navigate to the :menuselection:`Barcode` app to manage the :ref:`receipt picking process
|
||||
<barcode/operations/scan-received-products>`.
|
||||
|
||||
From the :guilabel:`Barcode Scanning` dashboard, click the :guilabel:`Operations` button, then the
|
||||
:guilabel:`Receipts` button to view the list of vendor receptions to process. Receipts generated
|
||||
from :abbr:`POs (Purchase Orders)` are listed, but new receipt operations can also be created
|
||||
directly through the :menuselection:`Barcode` app using the :guilabel:`Create` button.
|
||||
|
||||
On the list of receipts, click on the warehouse operation (`WH/IN`) and scan product barcodes and
|
||||
lot numbers with a barcode scanner. The scanned product then appears on the list. Use the
|
||||
:guilabel:`✏️ (pencil)` button to open a window and manually enter quantities for specific lot
|
||||
numbers.
|
||||
|
||||
.. example::
|
||||
After placing a :abbr:`PO (Purchase Order)` for 50 apples, navigate to the associated receipt.
|
||||
Scan the product barcode, and Odoo will prompt for the lot number.
|
||||
|
||||
.. image:: gs1_nomenclature/receive-50-apples.png
|
||||
:align: center
|
||||
:alt: Scan the barcode for a product on the reception picking page in the *Barcode* app.
|
||||
|
||||
Scan the lot number to process 1 of 50 apples. To avoid scanning 49 remaining barcodes, click
|
||||
the :guilabel:`✏️ (pencil)` button next to the desired lot number.
|
||||
|
||||
.. image:: gs1_nomenclature/scan-apple-lot-number.png
|
||||
:align: center
|
||||
:alt: Scan lot number and click the pencil to edit quantities.
|
||||
|
||||
Doing so opens a mobile-friendly keypad page to specify received quantities. Use the keypad to
|
||||
specify the :guilabel:`Units` for the lot number. When finished, click :guilabel:`Confirm`.
|
||||
|
||||
.. image:: gs1_nomenclature/edit-lot-quantities.png
|
||||
:align: center
|
||||
:alt: Change scanned quantities using pencil button.
|
||||
|
||||
Repeat this process to specify additional lot numbers and quantities in this receipt. Once the
|
||||
:guilabel:`Units` are all accounted for, finish the reception by clicking the :guilabel:`Validate`
|
||||
button.
|
||||
|
||||
Alternatively, scan the barcode containing the product, lot number, and quantity to complete the
|
||||
receipt operation in fewer steps.
|
||||
|
||||
Product + non-unit quantity
|
||||
---------------------------
|
||||
|
||||
To build a GS1 barcode that contains products measured in a non-unit quantity, like kilograms, for
|
||||
example, the following barcode patterns are used:
|
||||
|
||||
+-------------+--------------------------+----------+--------------------+----------------------------+
|
||||
| Name | Rule Name | A.I. | Barcode Pattern | Field in Odoo |
|
||||
+=============+==========================+==========+====================+============================+
|
||||
| Product | Global Trade Item Number | 01 | (01)(\\d{14}) | :guilabel:`Barcode` field |
|
||||
| | (GTIN) | | | on product form |
|
||||
+-------------+--------------------------+----------+--------------------+----------------------------+
|
||||
| Quantity in | Variable count of items | 310[0-5] | (310[0-5])(\\d{6}) | :guilabel:`Units` field on |
|
||||
| kilograms | | | | transfer form |
|
||||
+-------------+--------------------------+----------+--------------------+----------------------------+
|
||||
|
||||
Scan barcode on receipt
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
To confirm that quantities are correctly interpreted in Odoo, place an order in the *Purchase* app
|
||||
using the appropriate unit of measure (:guilabel:`UoM`) for the quantity of products to be
|
||||
purchased.
|
||||
a comprehensive list of all barcode patterns and rules to follow. Otherwise, refer to :ref:`this
|
||||
GS1 usage doc <barcode/operations/gs1_usage>` for specific examples of combining |GTIN| to product
|
||||
information and configuring the workflow.
|
||||
|
||||
.. seealso::
|
||||
:ref:`Simplify vendor unit conversions with UoMs <inventory/management/uom-example>`
|
||||
|
||||
After the order is placed, navigate to the :menuselection:`Barcode` app to :ref:`receive the vendor
|
||||
shipment <barcode/operations/scan-received-products>`.
|
||||
|
||||
.. example::
|
||||
On the receipt in the *Barcode* app, receive an order for `52.1 kg` of peaches by scanning the
|
||||
barcode. If `52.1 / 52.1` :guilabel:`kg` appears on the page, this means the reception was
|
||||
processed without issue. Finally, press :guilabel:`Validate`.
|
||||
|
||||
Note: the :abbr:`A.I. (application identifier)` for kilograms, `310` + `1`, was used to represent
|
||||
`52.1` kg as a barcode: `000521`. This is because the `1` represents how many digits from the
|
||||
right to place the decimal point.
|
||||
|
||||
.. image:: gs1_nomenclature/scan-barcode-peaches.png
|
||||
:align: center
|
||||
:alt: Scan barcode screen for a reception operation in the Barcode app.
|
||||
|
||||
For additional verification purposes, the quantities of received products are also recorded on the
|
||||
:guilabel:`Product Moves` report, accessible by navigating to :menuselection:`Inventory app -->
|
||||
Reporting --> Product Moves`.
|
||||
|
||||
The items on the :guilabel:`Product Moves` report are grouped by product by default. To confirm the
|
||||
received quantities, click on a product line to open its collapsible drop-down menu, which displays
|
||||
a list of *stock move lines* for the product. The latest stock move matches the warehouse reception
|
||||
reference number (e.g. `WH/IN/00013`) and quantity processed in the barcode scan, demonstrating that
|
||||
the records processed in the *Barcode* app were properly stored in *Inventory*.
|
||||
|
||||
.. image:: gs1_nomenclature/stock-moves-peach.png
|
||||
:align: center
|
||||
:alt: Reception stock move record for 52.1 kg of peaches.
|
||||
- :ref:`Lots workflow <barcode/operations/gs1-lots>`
|
||||
- :ref:`Non-unit quantities workflow <barcode/operations/quantity-ex>`
|
||||
|
||||
.. _barcode/operations/create-new-rules:
|
||||
|
||||
Create rules
|
||||
------------
|
||||
|
||||
If a supplier uses a GS1 barcode with a field not supported by Odoo's :ref:`default GS1 list
|
||||
<barcode/operations/default-gs1-nomenclature-list>`, Odoo will fail to interpret the entire barcode.
|
||||
To ensure the complete reading of the barcode, it is necessary to add the missing barcode to Odoo's
|
||||
list.
|
||||
GS1 rules are a specific format of information contained in the barcode, beginning with an |AI| and
|
||||
containing a defined length of characters. Scanning GS1 barcodes from the :ref:`default GS1 list
|
||||
<barcode/operations/default-gs1-nomenclature-list>` auto-fills corresponding data in the Odoo
|
||||
database.
|
||||
|
||||
.. important::
|
||||
While the new field will be read, the information won't link to an existing field in Odoo without
|
||||
developer customizations. However, adding new rules is still useful to ensure the rest of the
|
||||
fields in the barcode are interpreted correctly.
|
||||
Adding GS1 barcode rules in Odoo ensures accurate interpretation of unique, non-standard GS1
|
||||
formats.
|
||||
|
||||
Begin by turning on :ref:`developer mode <developer-mode>` and navigating to the :guilabel:`Barcode
|
||||
Nomenclatures` list in :menuselection:`Inventory app --> Configuration --> Barcode Nomenclatures`.
|
||||
Then, select the :guilabel:`Default GS1 Nomenclature` list item.
|
||||
To do so, begin by turning on :ref:`developer mode <developer-mode>` and navigating to the
|
||||
:guilabel:`Barcode Nomenclatures` list in :menuselection:`Inventory app --> Configuration -->
|
||||
Barcode Nomenclatures`. Then, select the :guilabel:`Default GS1 Nomenclature` list item.
|
||||
|
||||
On the :guilabel:`Default GS1 Nomenclature` page, select :guilabel:`Add a line` at the bottom of the
|
||||
table, which opens a window to create a new rule. The :guilabel:`Rule Name` field is used internally
|
||||
@@ -289,6 +143,23 @@ not working as expected:
|
||||
the barcode nomenclature for Odoo to read the barcode. :ref:`This section
|
||||
<barcode/operations/create-new-rules>` details how to add new rules in the barcode nomenclature.
|
||||
|
||||
#. Test barcodes containing multiple encoded fields, piece by piece, to figure out which field is
|
||||
causing the issue.
|
||||
|
||||
.. example::
|
||||
When testing a barcode containing the |GTIN|, lot number, and quantity, start by scanning the
|
||||
|GTIN| alone. Then, test the |GTIN| with the lot number, and finally, try scanning the whole
|
||||
barcode.
|
||||
|
||||
#. After diagnosing the encoded field is unknown, :ref:`add new rules
|
||||
<barcode/operations/create-new-rules>` to Odoo's default list to recognize GS1 barcodes with
|
||||
unique specifications.
|
||||
|
||||
.. important::
|
||||
While the new field will be read, the information won't link to an existing field in Odoo
|
||||
without developer customizations. However, adding new rules is necessary to ensure the rest of
|
||||
the fields in the barcode are interpreted correctly.
|
||||
|
||||
.. _barcode/operations/default-gs1-nomenclature-list:
|
||||
|
||||
GS1 nomenclature list
|
||||
|
||||
|
Before Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 9.7 KiB |
@@ -0,0 +1,236 @@
|
||||
=================
|
||||
GS1 barcode usage
|
||||
=================
|
||||
|
||||
.. _barcode/operations/gs1_usage:
|
||||
|
||||
.. |AI| replace:: :abbr:`A.I. (Application Identifier)`
|
||||
.. |GTIN| replace:: :abbr:`GTIN (Global Trade Item Number)`
|
||||
|
||||
GS1 barcodes provide a standardized format that barcode scanners can interpret. They encode
|
||||
information in a :ref:`specific structure recognized globally <barcode/operations/gs1>`, allowing
|
||||
scanners to understand and process supply chain data consistently.
|
||||
|
||||
Odoo *Barcode* interprets and prints GS1 barcodes, automating product identification and tracking
|
||||
in warehouse operations such as receiving, picking, and shipping.
|
||||
|
||||
The following sections contain examples of how Odoo uses GS1 barcodes provided by the business to
|
||||
identify common warehouse items and automate certain warehouse workflows.
|
||||
|
||||
.. important::
|
||||
Odoo **does not** create GS1 barcodes. Businesses must purchase a unique Global Trade Item Number
|
||||
(GTIN) from GS1. Then, they can combine their existing GS1 barcodes with product and supply chain
|
||||
information (also provided by GS1) to create barcodes in Odoo.
|
||||
|
||||
.. seealso::
|
||||
- `Purchase GTINs <https://www.gs1.org/standards/get-barcodes>`_
|
||||
- :ref:`GS1 nomenclature <barcode/operations/gs1>`
|
||||
|
||||
.. _barcode/operations/gs1-lots:
|
||||
|
||||
Configure barcodes for product, quantity, and lots
|
||||
==================================================
|
||||
|
||||
To build a GS1 barcode that contains information about a product, its quantities, and the lot
|
||||
number, the following barcode patterns and Application Identifiers (A.I.) are used:
|
||||
|
||||
+------------+--------------------------+------+----------------------------------+------------------------------------------+
|
||||
| Name | Rule Name | A.I. | Barcode Pattern | Field in Odoo |
|
||||
+============+==========================+======+==================================+==========================================+
|
||||
| Product | Global Trade Item Number | 01 | (01)(\\d{14}) | :guilabel:`Barcode` field on product form|
|
||||
| | (GTIN) | | | |
|
||||
+------------+--------------------------+------+----------------------------------+------------------------------------------+
|
||||
| Quantity | Variable count of items | 30 | (30)(\\d{0,8}) | :guilabel:`Units` field on transfer form |
|
||||
+------------+--------------------------+------+----------------------------------+------------------------------------------+
|
||||
| Lot Number | Batch or lot number | 10 | (10)([!"%-/0-9:-?A-Z_a-z]{0,20}) | :guilabel:`Lot` on Detailed Operations |
|
||||
| | | | | pop-up |
|
||||
+------------+--------------------------+------+----------------------------------+------------------------------------------+
|
||||
|
||||
.. _barcode/operations/lot-setup:
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
First, :ref:`enable product tracking using lots <inventory/management/track_products_by_lots>` by
|
||||
navigating to :menuselection:`Inventory app --> Configuration --> Settings`, and checking the box
|
||||
for :guilabel:`Lots & Serial Numbers` under the :guilabel:`Traceability` heading.
|
||||
|
||||
Then, set up the product barcode by navigating to the intended product form in
|
||||
:menuselection:`Inventory app --> Products --> Products` and selecting the product. On the product
|
||||
form, click :guilabel:`Edit`. Then, in the :guilabel:`General Information` tab, fill in the
|
||||
:guilabel:`Barcode` field with the unique 14-digit `Global Trade Item Number (GTIN)
|
||||
<https://www.gs1.org/standards/get-barcodes>`_, which is a universally recognized identifying number
|
||||
that is provided by GS1.
|
||||
|
||||
.. important::
|
||||
On the product form, omit the |AI| `01` for |GTIN| product barcode pattern, as it is only used to
|
||||
encode multiple barcodes into a single barcode that contains detailed information about the
|
||||
package contents.
|
||||
|
||||
.. example::
|
||||
|
||||
To record the GS1 barcode for the product, `Fuji Apple`, enter the 14-digit |GTIN|
|
||||
`20611628936004` in the :guilabel:`Barcode` field on the product form.
|
||||
|
||||
.. image:: gs1_usage/barcode-field.png
|
||||
:align: center
|
||||
:alt: Enter 14-digit GTIN into the Barcode field on product form.
|
||||
|
||||
.. tip::
|
||||
To view a list of *all* products and their corresponding barcodes in the Odoo database, navigate
|
||||
to :menuselection:`Inventory app --> Configuration --> Settings`. Under the :guilabel:`Barcode`
|
||||
heading, click on the :guilabel:`Configure Product Barcodes` button under the :guilabel:`Barcode
|
||||
Scanner` section. Enter the 14-digit |GTIN| into the :guilabel:`Barcode` column, then click
|
||||
:guilabel:`Save`.
|
||||
|
||||
.. image:: gs1_usage/product-barcodes-page.png
|
||||
:align: center
|
||||
:alt: View the Product Barcodes page from inventory settings.
|
||||
|
||||
.. _barcode/operations/lot-setup-on-product:
|
||||
|
||||
After activating tracking by lots and serial numbers from the settings page, specify that this
|
||||
feature is to be applied on each product by navigating to the :guilabel:`Inventory` tab on the
|
||||
product form. Under :guilabel:`Tracking`, choose the :guilabel:`By Lots` radio button.
|
||||
|
||||
.. image:: gs1_usage/track-by-lots.png
|
||||
:align: center
|
||||
:alt: Enable product tracking by lots in the "Inventory" tab of the product form.
|
||||
|
||||
Scan barcode on receipt
|
||||
-----------------------
|
||||
|
||||
To ensure accurate lot interpretation in Odoo on product barcodes scanned during a receipt
|
||||
operation, navigate to the :menuselection:`Barcode` app to manage the :ref:`receipt picking process
|
||||
<barcode/operations/scan-received-products>`.
|
||||
|
||||
From the :guilabel:`Barcode Scanning` dashboard, click the :guilabel:`Operations` button, then the
|
||||
:guilabel:`Receipts` button to view the list of vendor receipts to process. Receipts generated from
|
||||
:abbr:`POs (Purchase Orders)` are listed, but new receipt operations can also be created directly
|
||||
through the :menuselection:`Barcode` app using the :guilabel:`Create` button.
|
||||
|
||||
On the list of receipts, click on the warehouse operation (`WH/IN`) and scan product barcodes and
|
||||
lot numbers with a barcode scanner. The scanned product then appears on the list. Use the
|
||||
:guilabel:`✏️ (pencil)` button to open a window and manually enter quantities for specific lot
|
||||
numbers.
|
||||
|
||||
.. example::
|
||||
After placing a :abbr:`PO (Purchase Order)` for fifty apples, navigate to the associated receipt
|
||||
in the *Barcode* app.
|
||||
|
||||
Scan the barcode containing the |GTIN|, quantity, and lot number. For testing with a barcode
|
||||
scanner, below is an example barcode for the fifty Fuji apples in Lot 2.
|
||||
|
||||
.. list-table::
|
||||
:widths: 50 50
|
||||
:header-rows: 1
|
||||
:stub-columns: 1
|
||||
|
||||
* - 50 Fuji apples in Lot0002
|
||||
-
|
||||
* - 2D Matrix
|
||||
- .. image:: gs1_usage/fuji-apples-barcode.png
|
||||
:alt: 2D matrix of GS1 barcode of 50 fuji apples with an assigned lot number.
|
||||
* - |AI| (product)
|
||||
- 01
|
||||
* - GS1 Barcode (product)
|
||||
- 20611628936004
|
||||
* - |AI| (quantity)
|
||||
- 30
|
||||
* - GS1 Barcode (quantity)
|
||||
- 00000050
|
||||
* - |AI| (lot)
|
||||
- 10
|
||||
* - GS1 Barcode (lot #)
|
||||
- LOT0002
|
||||
* - Full GS1 barcode
|
||||
- 01206116289360043 000000050 10LOT0002
|
||||
|
||||
:ref:`If the configuration is correct <barcode/operations/troubleshooting>`, `50/50`
|
||||
:guilabel:`Units` processed will be displayed and the :guilabel:`Validate` button turns green.
|
||||
Click the :guilabel:`Validate` button to complete the reception.
|
||||
|
||||
.. image:: gs1_usage/receive-50-apples.png
|
||||
:align: center
|
||||
:alt: Scan the barcode for a product on the reception picking page in the *Barcode* app.
|
||||
|
||||
.. _barcode/operations/quantity-ex:
|
||||
|
||||
Configure barcode for product and non-unit quantity
|
||||
===================================================
|
||||
|
||||
To build a GS1 barcode that contains products measured in a non-unit quantity, like kilograms, for
|
||||
example, the following barcode patterns are used:
|
||||
|
||||
+-------------+--------------------------+----------+--------------------+----------------------------+
|
||||
| Name | Rule Name | A.I. | Barcode Pattern | Field in Odoo |
|
||||
+=============+==========================+==========+====================+============================+
|
||||
| Product | Global Trade Item Number | 01 | (01)(\\d{14}) | :guilabel:`Barcode` field |
|
||||
| | (GTIN) | | | on product form |
|
||||
+-------------+--------------------------+----------+--------------------+----------------------------+
|
||||
| Quantity in | Variable count of items | 310[0-5] | (310[0-5])(\\d{6}) | :guilabel:`Units` field on |
|
||||
| kilograms | | | | transfer form |
|
||||
+-------------+--------------------------+----------+--------------------+----------------------------+
|
||||
|
||||
Scan barcode on receipt
|
||||
-----------------------
|
||||
|
||||
To confirm that quantities are correctly interpreted in Odoo, place an order in the *Purchase* app
|
||||
using the appropriate unit of measure (:guilabel:`UoM`) for the quantity of products to be
|
||||
purchased.
|
||||
|
||||
.. seealso::
|
||||
:ref:`Simplify vendor unit conversions with UoMs <inventory/management/uom-example>`
|
||||
|
||||
After the order is placed, navigate to the :menuselection:`Barcode` app to :ref:`receive the vendor
|
||||
shipment <barcode/operations/scan-received-products>`.
|
||||
|
||||
.. example::
|
||||
On the receipt in the *Barcode* app, receive an order for `52.1 kg` of peaches by scanning the
|
||||
barcode containing the |GTIN| and quantity of peaches in kilograms.
|
||||
|
||||
.. list-table::
|
||||
:widths: 50 50
|
||||
:header-rows: 1
|
||||
:stub-columns: 1
|
||||
|
||||
* - 52.1 kg of Peaches
|
||||
-
|
||||
* - 2D Matrix
|
||||
- .. image:: gs1_usage/peaches-barcode.png
|
||||
:alt: 2D matrix of GS1 barcode of 52.1 kg of peaches.
|
||||
* - |AI| (product)
|
||||
- 01
|
||||
* - GS1 Barcode (product)
|
||||
- 00614141000012
|
||||
* - |AI| (kg, 1 decimal point)
|
||||
- 3101
|
||||
* - GS1 Barcode (quantity)
|
||||
- 000521
|
||||
* - Full GS1 barcode
|
||||
- 0100614141000012 3101000521
|
||||
|
||||
:ref:`If the configuration is correct <barcode/operations/troubleshooting>`, `52.1 / 52.1`
|
||||
:guilabel:`kg` will be displayed and the :guilabel:`Validate` button turns green. Finally, press
|
||||
:guilabel:`Validate` to complete the validation.
|
||||
|
||||
.. image:: gs1_usage/scan-barcode-peaches.png
|
||||
:align: center
|
||||
:alt: Scan barcode screen for a reception operation in the Barcode app.
|
||||
|
||||
Verify product moves
|
||||
====================
|
||||
|
||||
For additional verification, the quantities of received products are also recorded on the
|
||||
:guilabel:`Product Moves` report, accessible by navigating to :menuselection:`Inventory app -->
|
||||
Reporting --> Product Moves`.
|
||||
|
||||
The items on the :guilabel:`Product Moves` report are grouped by product by default. To confirm the
|
||||
received quantities, click on a product line to open its collapsible drop-down menu, which displays
|
||||
a list of *stock move lines* for the product. The latest stock move matches the warehouse reception
|
||||
reference number (e.g. `WH/IN/00013`) and quantity processed in the barcode scan, demonstrating that
|
||||
the records processed in the *Barcode* app were properly stored in *Inventory*.
|
||||
|
||||
.. image:: gs1_usage/stock-moves-peach.png
|
||||
:align: center
|
||||
:alt: Reception stock move record for 52.1 kg of peaches.
|
||||
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 7.8 KiB |
|
After Width: | Height: | Size: 8.9 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
@@ -4,64 +4,84 @@ Set up your barcode scanner
|
||||
|
||||
.. _barcode/setup/hardware:
|
||||
|
||||
Getting started with barcode scanning in Odoo is fairly easy. Yet, a
|
||||
good user experience relies on an appropriate hardware setup. This guide
|
||||
will help you through the task of choosing and configuring the barcode
|
||||
scanner.
|
||||
Follow this guide to choose and set up a barcode scanner compatible with Odoo's *Inventory* and
|
||||
*Barcode* apps.
|
||||
|
||||
Find the barcode scanner that suits your needs
|
||||
==============================================
|
||||
.. figure:: hardware/barcode-scanner.png
|
||||
:align: center
|
||||
:alt: An image of an example barcode scanner.
|
||||
|
||||
The 3 recommended type of barcode scanners to work with the Odoo
|
||||
**Inventory** and **Barcode Scanning** apps are the **USB scanner**, **the bluetooth
|
||||
scanner** and the **mobile computer scanner**.
|
||||
An image of an example barcode scanner.
|
||||
|
||||
.. image:: hardware/hardware02.png
|
||||
:align: center
|
||||
Scanner types
|
||||
=============
|
||||
|
||||
- If you scan products at a computer location, the **USB scanner** is the
|
||||
way to go. Simply plug it in the computer to start scanning. Just
|
||||
make sure when you buy it that the scanner is compatible with
|
||||
your keyboard layout or can be configured to be so.
|
||||
Before setting up a barcode scanner, it is important to determine which scanner type best meets the
|
||||
needs of the business. There are three main types, each with their own benefits and use cases:
|
||||
|
||||
- The **bluetooth scanner** can be paired with a smartphone or a tablet and
|
||||
is a good choice if you want to be mobile but don't need a big
|
||||
investment. An approach is to log in Odoo on you smartphone, pair
|
||||
the bluetooth scanner with the smartphone and work in the
|
||||
warehouse with the possibility to check your smartphone
|
||||
from time to time and use the software 'manually'.
|
||||
- **USB scanners** are connected to a computer, and are suitable for businesses that scan products
|
||||
at a fixed location, like at the checkout in a grocery store. Ensure the chosen USB scanner is
|
||||
compatible with the keyboard layout of the computer.
|
||||
|
||||
- For heavy use, the **mobile computer scanner** is the handiest solution.
|
||||
It consists of a small computer with a built-in barcode scanner.
|
||||
This one can turn out to be a very productive solution, however
|
||||
you need to make sure that is is capable of running Odoo smoothly.
|
||||
The most recent models using Android + Google Chrome or Windows +
|
||||
Internet Explorer Mobile should do the job. However, due to the
|
||||
variety of models and configurations on the market, it is
|
||||
essential to test it first.
|
||||
- **Bluetooth scanners** pair with a smartphone or tablet, making them an ideal cost-effective and
|
||||
portable barcode scanner option. In this scenario, Odoo is installed on the smartphone, allowing
|
||||
warehouse operators to handle operations, and check stock directly through their mobile devices.
|
||||
|
||||
Configure your barcode scanner
|
||||
==============================
|
||||
- **Mobile computer scanners** are mobile devices with a built-in barcode scanner. First, ensure the
|
||||
device can run the Odoo mobile app properly. Recent models that use Android OS with the Google
|
||||
Chrome browser, or Windows OS with Microsoft Edge, should work. However, testing is crucial due to
|
||||
the variety of available models and configurations.
|
||||
|
||||
.. seealso::
|
||||
`Compatible hardware with Odoo Inventory <https://www.odoo.com/app/inventory-hardware>`_
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
When setting up the barcode scanner, make sure the following configurations are correct so the
|
||||
scanner can properly interpret barcodes with Odoo.
|
||||
|
||||
Keyboard layout
|
||||
---------------
|
||||
|
||||
.. image:: hardware/hardware01.png
|
||||
:align: center
|
||||
When using a USB barcode scanner, match its keyboard layout with the operating system's layout for
|
||||
proper interpretation of characters. Generally, the scanning mode should be set to accept a USB
|
||||
keyboard (HID), with the language set based on the keyboard that is in use.
|
||||
|
||||
An USB barcode scanner needs to be configured to use the same keyboard
|
||||
layout as your operating system. Otherwise, your scanner won't translate
|
||||
characters correctly (replacing a 'A' with a 'Q' for example). Most
|
||||
scanners are configured by scanning the appropriate barcode in the user
|
||||
manual.
|
||||
To configure the keyboard layout for a **Zebra** scanner, scan the keyboard wedge barcode for the
|
||||
desired language in the scanner's user manual.
|
||||
|
||||
.. figure:: hardware/keyboard-barcode.png
|
||||
:alt: Example of a user manual for keyboard layout.
|
||||
|
||||
Examples of keyboard language settings in the Zebra scanner user manual.
|
||||
|
||||
Automatic carriage return
|
||||
-------------------------
|
||||
|
||||
By default, Odoo has a 50 milliseconds delay between each successive
|
||||
scan (it helps avoid accidental double scanning). If you want to
|
||||
suppress this delay, you can configure your scanner to insert a carriage
|
||||
return at the end of each barcode. This is usually the default
|
||||
configuration and can be explicitly configured by scanning a specific
|
||||
barcode in the user manual ('CR suffix ON', 'Apply Enter for suffix',
|
||||
etc.).
|
||||
Odoo has a default 50-millisecond delay between scans to prevent accidental double scanning. To
|
||||
synchronize with the barcode scanner, set it to include a *carriage return* (:dfn:`character like
|
||||
the "Enter" key on a keyboard`) after each scan. Odoo interprets the carriage return as the end of
|
||||
the barcode input; so Odoo accepts the scan, and waits for the next one.
|
||||
|
||||
Typically, on the scanner, a carriage return is included by default. Ensure it is set by scanning a
|
||||
specific barcode in the user manual, like `CR suffix ON` or `Apply Enter for suffix`.
|
||||
|
||||
Zebra scanner
|
||||
-------------
|
||||
|
||||
When using Zebra scanners, ensure the following keystroke configurations are set to prevent errors.
|
||||
|
||||
Begin on the Zebra scanner's home screen, and select the :guilabel:`DataWedge` app (the icon for the
|
||||
app is a light blue barcode). On the :guilabel:`DataWedge Profiles` page, select the profile option
|
||||
to access the Zebra scanner's settings.
|
||||
|
||||
Scroll down to the :guilabel:`Keyboard Output` option, and ensure the :guilabel:`Enable/disable
|
||||
keystroke output` option is :guilabel:`Enabled`.
|
||||
|
||||
.. image:: hardware/enable-keystroke.png
|
||||
:align: center
|
||||
:alt: Show keystroke option in the Zebra scanner's DataWedge app.
|
||||
|
||||
Now, go back to the :guilabel:`Profile` options page, and select :guilabel:`Key event options`.
|
||||
Here, ensure the :guilabel:`Send Characters as Events` option is checked.
|
||||
|
||||
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 492 KiB |
|
After Width: | Height: | Size: 43 KiB |
@@ -43,6 +43,8 @@ directly at creation on the product form.
|
||||
the template product. Otherwise, you won’t be able to differentiate
|
||||
them.
|
||||
|
||||
.. _barcode/setup/location:
|
||||
|
||||
Set Locations Barcodes
|
||||
======================
|
||||
|
||||
|
||||
@@ -11,3 +11,4 @@ Miscellaneous Operations
|
||||
misc/owned_stock
|
||||
misc/batch_transfers
|
||||
misc/wave_transfers
|
||||
misc/cluster_picking
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
Batch picking
|
||||
=============
|
||||
|
||||
.. _inventory/misc/batch_picking:
|
||||
|
||||
*Batch picking* enables a single picker to handle multiple orders at once, reducing the time needed
|
||||
to navigate to the same location in a warehouse.
|
||||
|
||||
|
||||
@@ -0,0 +1,243 @@
|
||||
===============
|
||||
Cluster picking
|
||||
===============
|
||||
|
||||
.. _inventory/misc/cluster_picking:
|
||||
|
||||
.. |SO| replace:: :abbr:`SO (Sales Order)`
|
||||
.. |SOS| replace:: :abbr:`SOs (Sales Orders)`
|
||||
|
||||
Cluster picking is an advanced order fulfillment approach derived from :ref:`batch picking
|
||||
<inventory/misc/batch_picking>`.
|
||||
|
||||
In this strategy, pickers load a cart with multiple packages, each designated for a specific *sales
|
||||
order* (SO). Then, the picker travels to each storage location, and places the products directly in
|
||||
the package of the associated order.
|
||||
|
||||
This method is most efficient for medium-sized companies, with high order volumes, and relatively
|
||||
few unique products, since the method eliminates the need for sorting products into packages for
|
||||
customers after picking.
|
||||
|
||||
However, cluster picking does have some disadvantages. For instance, urgent orders cannot be
|
||||
prioritized, and optimized batches must be manually created beforehand. As a result, the picking
|
||||
process can lead to bottlenecks.
|
||||
|
||||
.. _inventory/misc/cluster_picking/example:
|
||||
|
||||
.. example::
|
||||
#. |SO| 1 calls for one apple and orange
|
||||
#. |SO| 2 calls for one apple and banana
|
||||
#. |SO| 3 calls for one apple, orange, and banana
|
||||
|
||||
Apples are stored in Shelf A, oranges in Shelf B, and bananas in Shelf C.
|
||||
|
||||
To pick products for three orders at once, the cart is loaded with three empty packages.
|
||||
|
||||
Starting at Shelf A, the picker places apples into each package. Next, the picker navigates to
|
||||
Shelf B, and places oranges in the packages designated for |SO| 1 and |SO| 3. Finally, the picker
|
||||
pushes the cart to Shelf C, and loads packages for |SO| 2 and |SO| 3 with a banana, each.
|
||||
|
||||
With the packages for all three |SOS| packed, the picker pushes the cart to the output location,
|
||||
where the packages are sealed and prepared for shipment.
|
||||
|
||||
.. image:: cluster_picking/cluster-example.png
|
||||
:align: center
|
||||
:alt: Show example of fulfilling sales orders 2 and 3 at once.
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
To enable cluster picking, begin by navigating to :menuselection:`Inventory app --> Configuration
|
||||
--> Settings`. Under the :guilabel:`Operations` heading, activate the :guilabel:`Packages` and
|
||||
:guilabel:`Batch Transfers` options.
|
||||
|
||||
.. image:: cluster_picking/configs.png
|
||||
:align: center
|
||||
:alt: Activate *Packages* and *Batch Transfers* features in the settings.
|
||||
|
||||
Since batch picking is used to optimize the *pick* operation in Odoo, the :guilabel:`Storage
|
||||
Locations` and :guilabel:`Multi-Step Routes` options, under the :guilabel:`Warehouse` heading, must
|
||||
also be checked on this settings page.
|
||||
|
||||
*Storage locations* allow products to be stored in specific locations they can be picked from, while
|
||||
*multi-step routes* enable the picking operation itself.
|
||||
|
||||
When finished, click :guilabel:`Save`.
|
||||
|
||||
.. image:: cluster_picking/locations-routes-checkbox.png
|
||||
:align: center
|
||||
:alt: Enable *Storage Locations* and *Multi-Step Routes* Inventory > Configuration > Settings.
|
||||
|
||||
.. _inventory/misc/create-package:
|
||||
|
||||
Packages setup
|
||||
--------------
|
||||
|
||||
After the :guilabel:`Packages` feature is enabled, navigate to :menuselection:`Inventory app -->
|
||||
Products --> Packages`, and click the :guilabel:`New` button to create a new package.
|
||||
|
||||
On the new package form, the :guilabel:`Package Reference` is pre-filled with the next available
|
||||
`PACK` number in the system. :guilabel:`Pack Date` is automatically set to the creation date of the
|
||||
form.
|
||||
|
||||
For the :guilabel:`Package Use` field, the :guilabel:`Disposable Box` option should be selected if
|
||||
the package is used for a shipping. Alternatively, the :guilabel:`Reusable Box` option should be
|
||||
selected if the package is simply used as a method of grouping products from the same |SO| together
|
||||
before they are moved to the intended shipping box at the output location.
|
||||
|
||||
.. seealso::
|
||||
:ref:`Packages <inventory/management/packages>`
|
||||
|
||||
.. example::
|
||||
A package intended for cluster picking is named `CLUSTER-PACK-3` for easy identification. For
|
||||
this workflow, the products are directly packed using their intended shipping boxes, so
|
||||
:guilabel:`Package Use` is set to :guilabel:`Disposable Box`.
|
||||
|
||||
.. image:: cluster_picking/cluster-package.png
|
||||
:align: center
|
||||
:alt: Create new package form.
|
||||
|
||||
Create cluster batch
|
||||
====================
|
||||
|
||||
To see how cluster picking works in Odoo, navigate to the :menuselection:`Sales` app, and create
|
||||
|SOS| that will be fulfilled together in the same batch. After confirming an |SO|, the
|
||||
:guilabel:`Delivery` smart button becomes visible. Displayed inside the icon is a number
|
||||
representing the amount of steps in the outgoing shipment process.
|
||||
|
||||
.. example::
|
||||
Begin by creating three |SOS| for the apples, oranges, and bananas, as shown in the :ref:`example
|
||||
above <inventory/misc/cluster_picking/example>`.
|
||||
|
||||
After confirming the |SO|, the :guilabel:`Delivery` smart button displays the number `2`,
|
||||
indicating there are two operations to complete: `Pick` and `Delivery`.
|
||||
|
||||
.. image:: cluster_picking/create-sales-order.png
|
||||
:align: center
|
||||
:alt: Example sales order for an apple, orange, and banana.
|
||||
|
||||
With the |SOS| created, orders now must be grouped into batches. To do so, navigate to the
|
||||
*Inventory* dashboard and select the operation type card, :guilabel:`Delivery Orders` or
|
||||
:guilabel:`Pick` (whichever is the first operation in the delivery flow).
|
||||
|
||||
Doing so displays a filtered list of outgoing operations with the :guilabel:`Ready` status,
|
||||
indicating that all the products in the |SO| are in stock.
|
||||
|
||||
.. note::
|
||||
Cluster pick batches can be created for outgoing shipments in one, two, or three steps.
|
||||
|
||||
.. seealso::
|
||||
- :ref:`Delivery in one step <inventory/receipts_delivery_one_step>`
|
||||
- :ref:`Delivery in two steps <inventory/receipts_delivery_two_steps>`
|
||||
- :ref:`Delivery in three steps <inventory/delivery_three_steps>`
|
||||
|
||||
Click the checkbox to the left of the corresponding outgoing operation to add them to the batch.
|
||||
With the desired pickings selected, click the :guilabel:`⚙️ Actions (gear)` button, and select the
|
||||
:guilabel:`Add to batch` option from the resulting drop-down menu.
|
||||
|
||||
.. example::
|
||||
To create a cluster batch, as shown in the :ref:`example above
|
||||
<inventory/misc/cluster_picking/example>`, in a warehouse configured with two-step outgoing
|
||||
shipments, the following pick operations are selected:
|
||||
|
||||
- `WH/PICK/00007`: linked to |SO| 88 for one apple and orange.
|
||||
- `WH/PICK/00008`: linked to |SO| 89 for one apple and banana.
|
||||
- `WH/PICK/00009`: linked to |SO| 90 for one apple, orange, and banana.
|
||||
|
||||
.. image:: cluster_picking/select-picks.png
|
||||
:align: center
|
||||
:alt: Use *Add to batch* button, from the *Action* button's list.
|
||||
|
||||
Doing so opens an :guilabel:`Add to batch` pop-up window, wherein the employee
|
||||
:guilabel:`Responsible` for the picking can be assigned.
|
||||
|
||||
Choose from the two options in the :guilabel:`Add to` field to either: add to :guilabel:`an existing
|
||||
batch transfer`, or create :guilabel:`a new batch transfer`.
|
||||
|
||||
To create draft batch pickings to be confirmed at a later date, select the :guilabel:`Draft`
|
||||
checkbox.
|
||||
|
||||
Conclude the process by clicking :guilabel:`Confirm`.
|
||||
|
||||
.. image:: cluster_picking/add-to-batch-window.png
|
||||
:align: center
|
||||
:alt: Show *Add to batch* window to create a batch transfer.
|
||||
|
||||
Process batches
|
||||
===============
|
||||
|
||||
To process batches, navigate to :menuselection:`Inventory app --> Operations --> Batch Transfers`.
|
||||
Click on a batch to select it.
|
||||
|
||||
In the :guilabel:`Detailed Operations` tab, products that are to be picked are grouped by location.
|
||||
|
||||
Under the :guilabel:`Source Package` or :guilabel:`Destination Package` field, enter the package
|
||||
used for the picking.
|
||||
|
||||
.. note::
|
||||
Use the :guilabel:`Source Package` field when the picking package is configured as *reusable* on
|
||||
the :ref:`package form <inventory/misc/create-package>`. This means the products are temporarily
|
||||
placed in a container during picking, before getting transferred to their final shipping box.
|
||||
|
||||
Alternatively, use the :guilabel:`Destination Package` field when the product is directly placed
|
||||
in its *disposable* shipping box during picking.
|
||||
|
||||
.. example::
|
||||
Process the cluster batch for the three orders of apples, oranges, and bananas :ref:`example
|
||||
<inventory/misc/cluster_picking/example>` by assigning each picking to a dedicated package.
|
||||
|
||||
At the storage location for apples, `WH/Stock/Shelf A`, assign the apples in all three pickings
|
||||
to one of the three disposable packages, `CLUSTER-PACK-1`, `CLUSTER-PACK-2`, or `CLUSTER-PACK-3`.
|
||||
|
||||
Record this in Odoo using the :guilabel:`Destination Package` field in the :guilabel:`Detailed
|
||||
Operations` tab.
|
||||
|
||||
.. image:: cluster_picking/cluster-batch-example.png
|
||||
:align: center
|
||||
:alt: Example of processing cluster pickings in *Inventory*.
|
||||
|
||||
In Barcode
|
||||
----------
|
||||
|
||||
To process cluster pickings directly from the *Barcode* app, select the :guilabel:`Batch Transfers`
|
||||
button from the *Barcode* dashboard. Then, select the desired batch.
|
||||
|
||||
On the batch transfer screen, the products in the picking are grouped by location, and each line is
|
||||
color-coded to associate products in the same picking together.
|
||||
|
||||
Then, follow the prompt to :guilabel:`Scan the source location` barcode for the storage location of
|
||||
the first product. Then, scan the barcode for the product and package to process the transfer.
|
||||
|
||||
Repeat this for all products, and click the :guilabel:`Validate` button.
|
||||
|
||||
.. note::
|
||||
To find the package barcode, navigate to :menuselection:`Inventory app --> Products -->
|
||||
Packages`, select the desired package, click the :guilabel:`⚙️ (gear)` icon at the top of the
|
||||
package form, and select the :guilabel:`Print` option.
|
||||
|
||||
Next, select one of the three print options to generate the package barcode from the
|
||||
:guilabel:`Package Reference` field.
|
||||
|
||||
.. image:: cluster_picking/find-package-barcode.png
|
||||
:align: center
|
||||
:alt: Display where the package barcode can be generated.
|
||||
|
||||
.. example::
|
||||
Begin processing the cluster picking by going to the first storage location, `Shelf A`, and
|
||||
scanning the :ref:`location barcode <barcode/setup/location>`. Doing so highlights all the
|
||||
pickings that need products from this particular location.
|
||||
|
||||
Scan the barcode for the apple, which highlights the picking (labeled in red) for the product
|
||||
`Apple`, for the picking, `WH/PICK/00007`.
|
||||
|
||||
Then, scan the `CLUSTER-PACK-1` package barcode, and place the product in the designated package.
|
||||
|
||||
.. image:: cluster_picking/batch-barcode.png
|
||||
:align: center
|
||||
:alt: Example of cluster batch from the *Barcode* app.
|
||||
|
||||
.. tip::
|
||||
After creating a batch transfer and assigning a package to a picking, Odoo suggests the specified
|
||||
package by displaying the name *in italics* under the product name, ensuring pickers place
|
||||
products into the correct boxes.
|
||||
|
||||
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 9.8 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 22 KiB |
@@ -60,6 +60,8 @@ the :guilabel:`Unit of Measure`. Then, when the product is received by clicking
|
||||
.. seealso::
|
||||
:ref:`Use Different Units of Measure <inventory/management/products/units_of_measure>`
|
||||
|
||||
.. _inventory/management/packages:
|
||||
|
||||
Packages
|
||||
========
|
||||
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
How to invoice the shipping cost to the customer?
|
||||
=================================================
|
||||
|
||||
.. _inventory/shipping/invoice:
|
||||
|
||||
Overview
|
||||
========
|
||||
|
||||
|
||||
@@ -1,100 +1,213 @@
|
||||
===============================
|
||||
How to setup a delivery method?
|
||||
===============================
|
||||
================
|
||||
Delivery methods
|
||||
================
|
||||
|
||||
Overview
|
||||
========
|
||||
When activated in Odoo, the *Delivery Methods* setting adds the option of calculating the cost of
|
||||
shipping on sales orders and e-commerce shopping carts.
|
||||
|
||||
Odoo can handle various delivery methods, but it is not activated by
|
||||
default. Delivery methods can be used for your sale orders, your
|
||||
deliveries but also on your e-commerce.
|
||||
When integrated with a :ref:`third-party carrier <inventory/shipping/third_party>`, shipping prices
|
||||
are calculated based on the carrier's pricing and packaging information.
|
||||
|
||||
Delivery methods allow you to manage the transport company, the price
|
||||
and the destination. You can even integrate Odoo with external shippers
|
||||
to compute the real price and the packagings.
|
||||
.. seealso::
|
||||
- :ref:`Third-party shipping carrier setup <inventory/shipping/third_party>`
|
||||
- `Odoo Tutorials: Delivery Prices
|
||||
<https://www.odoo.com/slides/slide/delivery-prices-613?fullscreen=1>`_
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
Install the inventory module
|
||||
----------------------------
|
||||
To calculate shipping on sales orders and e-commerce, the *Delivery Costs* module must be installed.
|
||||
To do so, navigate to the :menuselection:`Apps` application from the main Odoo dashboard.
|
||||
|
||||
Delivery methods are handled by the **Delivery costs** module. Go to
|
||||
**Apps** and search for the module. You should remove the **Apps** filter in
|
||||
order to see it :
|
||||
Then, remove the :guilabel:`Apps` filter, and type in `Delivery Costs` in the :guilabel:`Search...`
|
||||
bar. After finding the :guilabel:`Delivery Costs` module, click :guilabel:`Activate` to install it.
|
||||
|
||||
.. image:: delivery_method/setup05.png
|
||||
.. image:: delivery_method/install-module.png
|
||||
:align: center
|
||||
:alt: Install the *Delivery Costs* module.
|
||||
|
||||
Add shipping method
|
||||
===================
|
||||
|
||||
To configure delivery methods, go to :menuselection:`Inventory app --> Configuration --> Shipping
|
||||
Methods`.
|
||||
|
||||
.. note::
|
||||
If you want to integrate delivery methods in your e-commerce,
|
||||
you'll have to install the **eCommerce Delivery** module.
|
||||
If the :guilabel:`Shipping Methods` option is not available from the :guilabel:`Configuration`
|
||||
drop-down menu, verify whether the feature is enabled by following these steps:
|
||||
|
||||
Configure the delivery method
|
||||
-----------------------------
|
||||
#. Go to :menuselection:`Inventory app --> Configuration --> Settings`.
|
||||
#. Scroll to the :guilabel:`Shipping` section and enable the :guilabel:`Delivery Methods` feature
|
||||
by checking the corresponding checkbox.
|
||||
|
||||
To configure your delivery methods, go to the **Inventory** module,
|
||||
click on :menuselection:`Configuration --> Delivery Methods`.
|
||||
.. image:: delivery_method/enable-delivery.png
|
||||
:align: center
|
||||
:alt: Enable the *Delivery Methods* feature by checking the box in Configuration > Settings.
|
||||
|
||||
First set a name and a transporter company.
|
||||
On the :guilabel:`Shipping Methods` page, add a method by clicking :guilabel:`New`. Doing so opens
|
||||
a form to provide details about the shipping provider, including:
|
||||
|
||||
.. image:: delivery_method/setup03.png
|
||||
:align: center
|
||||
- :guilabel:`Shipping Method` (*Required field*): the name of the delivery method (e.g. `flat-rate
|
||||
shipping`, `same day delivery`, etc.).
|
||||
- :guilabel:`Provider` (*Required field*): choose the delivery service, like Fedex, if using a
|
||||
:ref:`third-party carrier <inventory/shipping/third_party>`. Ensure the integration with the
|
||||
shipping carrier is properly installed and select the provider from the drop-down menu.
|
||||
|
||||
Then you'll have to set the pricing. It can be fixed or based on rules.
|
||||
For more details on configuring custom shipping methods, such as :ref:`fixed price
|
||||
<inventory/shipping/fixed>`, :ref:`based on rules <inventory/shipping/rules>`, or :ref:`pickup in
|
||||
store <inventory/shipping/pickup>` options, refer to their respective sections below.
|
||||
- :guilabel:`Website`: configure shipping methods for an e-commerce page. Select the applicable
|
||||
website from the drop-down menu, or leave it blank to apply the method to all web pages.
|
||||
- :guilabel:`Company`: if the shipping method should apply to a specific company, select it from the
|
||||
drop-down menu. Leave the field blank to apply the method to all companies.
|
||||
- :guilabel:`Delivery Product` (*Required field*): the product listed on the :ref:`sales order line
|
||||
<inventory/shipping/sales-order>` as the delivery charge.
|
||||
- :guilabel:`Free if order amount is above`: checking this box enables free shipping if the customer
|
||||
spends above the specified amount.
|
||||
|
||||
- If the price is fixed, tick **Fixed price**. You'll just have to define
|
||||
the price. If you want the delivery to be free above a certain
|
||||
amount, tick the option **Free if Order total is more
|
||||
than** and set a price.
|
||||
For examples on how to configure specific shipping methods, refer to the sections below.
|
||||
|
||||
.. image:: delivery_method/setup06.png
|
||||
:align: center
|
||||
.. _inventory/shipping/fixed:
|
||||
|
||||
- If the price varies according to rules, tick **Based on Rules**. Click
|
||||
on **add an item to a pricing rule**. Choose a condition based on
|
||||
either the weight, the volume, the price or the quantity.
|
||||
Fixed price
|
||||
-----------
|
||||
|
||||
.. image:: delivery_method/setup04.png
|
||||
:align: center
|
||||
To configure a shipping price that is the same for all orders, go to :menuselection:`Inventory app
|
||||
--> Configuration --> Shipping Methods`. Then, click :guilabel:`New`, and on the shipping method
|
||||
form, set the :guilabel:`Provider` to the :guilabel:`Fixed Price` option. Selecting this option
|
||||
makes the :guilabel:`Fixed Price` field become available, which is where the fixed rate shipping
|
||||
amount is defined.
|
||||
|
||||
Finally you can limit the delivery method to a few destinations. The
|
||||
limit can be applied to some countries, states or even zip codes. This
|
||||
feature limits the list of countries on your e-commerce.
|
||||
To enable free shipping if the amount of the order exceeds a specified amount, check the box
|
||||
:guilabel:`Free if order amount is above` and fill in the amount.
|
||||
|
||||
.. image:: delivery_method/setup02.png
|
||||
:align: center
|
||||
.. example::
|
||||
To set up `$20` flat-rate shipping that becomes free if the customer spends over `$100`, fill in
|
||||
the following fields:
|
||||
|
||||
.. note::
|
||||
You can integrate Odoo with external shippers in order to compute the
|
||||
real price and packagings, and handle the printing the shipping labels.
|
||||
See :doc:`third_party_shipper`
|
||||
- :guilabel:`Shipping Method`: `Flat-rate shipping`
|
||||
- :guilabel:`Provider`: :guilabel:`Fixed Price`
|
||||
- :guilabel:`Fixed Price`: `$20.00`
|
||||
- :guilabel:`Free if order amount is above`: `$100.00`
|
||||
- :guilabel:`Delivery Product`: `[SHIP] Flat`
|
||||
|
||||
Delivery process
|
||||
================
|
||||
.. image:: delivery_method/new-shipping-method.png
|
||||
:align: center
|
||||
:alt: Example of filling out a shipping method.
|
||||
|
||||
Sale order
|
||||
----------
|
||||
.. _inventory/shipping/rules:
|
||||
|
||||
.. image:: delivery_method/setup07.png
|
||||
:align: center
|
||||
Based on rules
|
||||
--------------
|
||||
|
||||
You can now choose the **Delivery Method** on your sale order. If you want
|
||||
to invoice the price of the delivery charge on the sale order, click on
|
||||
**Set price**, it will add a line with the name of the delivery method as
|
||||
a product.
|
||||
To calculate the price of shipping based on pricing rules, set the :guilabel:`Provider` field to the
|
||||
:guilabel:`Based on Rules` option. Optionally, adjust :guilabel:`Margin on Rate` and
|
||||
:guilabel:`Additional margin` to include additional shipping costs.
|
||||
|
||||
Delivery
|
||||
--------
|
||||
Create pricing rules
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
You can add or change the delivery method on the delivery itself.
|
||||
Navigate to the :guilabel:`Pricing` tab and click :guilabel:`Add a line`. Doing so opens the
|
||||
:guilabel:`Create Pricing Rules` window, where the :guilabel:`Condition` related to the product
|
||||
weight, volume, price, or quantity is compared to a defined amount to calculate the
|
||||
:guilabel:`Delivery Cost`.
|
||||
|
||||
.. image:: delivery_method/setup01.png
|
||||
:align: center
|
||||
Once finished, click either :guilabel:`Save & New` to add another rule, or :guilabel:`Save & Close`.
|
||||
|
||||
On the delivery, check the **Carrier Information**. The carrier is the
|
||||
chosen delivery method.
|
||||
.. example::
|
||||
To charge customers $20 in shipping for orders with five or fewer products, set the
|
||||
:guilabel:`Condition` to `Quantity <= 5.00`, and the :guilabel:`Delivery Cost` to `$20`.
|
||||
|
||||
.. image:: delivery_method/pricing-rule.png
|
||||
:align: center
|
||||
:alt: Display window to add a pricing rule. Set a condition and delivery cost.
|
||||
|
||||
To restrict shipping to specific destinations on the eCommerce website, in the shipping method form,
|
||||
navigate to the :guilabel:`Destination Availability` tab and define the :guilabel:`Countries`,
|
||||
:guilabel:`States`, and :guilabel:`Zip Prefixes`. Leave these fields empty if all locations apply.
|
||||
|
||||
Calculate delivery cost
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Shipping cost is the :guilabel:`Delivery cost` specified in the rule that satisfies the
|
||||
:guilabel:`Condition`, plus any extra charges from the :guilabel:`Margin on rate` and
|
||||
:guilabel:`Additional margin`.
|
||||
|
||||
.. math::
|
||||
Total = Rule's~Delivery~Cost + (Margin~on~rate \times Rule's~Delivery~Cost) + Additional~margin
|
||||
|
||||
.. example::
|
||||
With the two following rules set up:
|
||||
|
||||
#. If the order contains five or fewer products, shipping is $20
|
||||
#. If the order contains more than five products, shipping is $50.
|
||||
|
||||
:guilabel:`Margin on Rate` is `10%` and :guilabel:`Additional margin` is `$9.00`.
|
||||
|
||||
.. image:: delivery_method/delivery-cost-example.png
|
||||
:align: center
|
||||
:alt: Show example of "Based on rules" shipping method with margins configured.
|
||||
|
||||
When the first rule is applied, the delivery cost is $31 (20 + (0.1 * 20) + 9). When the second
|
||||
rule is applied, the delivery cost is $64 (50 + (0.1 * 50) + 9).
|
||||
|
||||
.. _inventory/shipping/pickup:
|
||||
|
||||
Pickup in store
|
||||
---------------
|
||||
|
||||
To configure in-store pickup, select :guilabel:`Pickup in store` in the :guilabel:`Provider` field
|
||||
and specify the pickup location in :guilabel:`Warehouse`.
|
||||
|
||||
To invoice the customer for the shipping cost to the pickup location, choose the :guilabel:`Get Rate
|
||||
and Create Shipment` option in the :guilabel:`Integration Level` field. Then, pick either the
|
||||
:guilabel:`Estimated cost` or :guilabel:`Real cost` radio options in the :guilabel:`Invoicing
|
||||
Policy` field to decide whether the added shipping charge on the sales order is the precise cost
|
||||
from the shipping carrier.
|
||||
|
||||
.. seealso::
|
||||
* :doc:`third_party_shipper`
|
||||
* :doc:`../operation/invoicing`
|
||||
:ref:`Invoice cost of shipping <inventory/shipping/invoice>`
|
||||
|
||||
.. _inventory/shipping/sales-order:
|
||||
|
||||
Add shipping
|
||||
============
|
||||
|
||||
Shipping methods can be added to sales orders in the form of delivery products, which appear as
|
||||
individual line items. First, navigate to the desired sales order by going to :menuselection:`Sales
|
||||
app --> Orders --> Orders`.
|
||||
|
||||
On the sales order, click the :guilabel:`Add shipping` button, which opens the :guilabel:`Add a
|
||||
shipping method` pop-up window. Then, choose a :guilabel:`Shipping Method` from the list.
|
||||
|
||||
The :guilabel:`Total Order Weight` is pre-filled based on product weights (that are defined in the
|
||||
:guilabel:`Inventory` tab for each product form). Edit the field to specify the exact weight, and
|
||||
then click :guilabel:`Add` to add the shipping method.
|
||||
|
||||
.. note::
|
||||
The amount defined in :guilabel:`Total Order Weight` overwrites the total product weights defined
|
||||
on the product form.
|
||||
|
||||
The shipping cost is added to the *sales order line* as the :guilabel:`Delivery Product` detailed on
|
||||
the shipping method form.
|
||||
|
||||
.. example::
|
||||
`Furniture Delivery`, a delivery product with a fixed rate of `$200`, is added to sales order
|
||||
`S00088`.
|
||||
|
||||
.. image:: delivery_method/delivery-product.png
|
||||
:align: center
|
||||
:alt: Show delivery order on the sales order line.
|
||||
|
||||
Delivery order
|
||||
--------------
|
||||
|
||||
The shipping method added to the sales order is linked to the shipping carrier details on the
|
||||
delivery order. To add or change the delivery method on the delivery itself, go to the
|
||||
:guilabel:`Additional Info` tab and modify the :guilabel:`Carrier` field.
|
||||
|
||||
.. image:: delivery_method/delivery-order.png
|
||||
:align: center
|
||||
:alt: Shipping carrier information on the delivery form.
|
||||
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 6.0 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 9.0 KiB |
|
After Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 10 KiB |
@@ -2,6 +2,8 @@
|
||||
How to integrate a third party shipper?
|
||||
=======================================
|
||||
|
||||
.. _inventory/shipping/third_party:
|
||||
|
||||
Overview
|
||||
========
|
||||
|
||||
|
||||
@@ -2,13 +2,15 @@
|
||||
Add new equipment
|
||||
=================
|
||||
|
||||
In Odoo, **equipment** refers to any item that is used in everyday operations, including the
|
||||
.. _maintenance/equipment_management/add_new_equipment:
|
||||
|
||||
In Odoo, *equipment* refers to any item that is used in everyday operations, including the
|
||||
manufacturing of products. This can mean a piece of machinery on a production line, a tool that is
|
||||
used in different locations, or a computer in an office space. Equipment registered in Odoo can be
|
||||
owned by the company that uses the Odoo database, or by a third party, such as a vendor in the case
|
||||
of equipment rentals.
|
||||
|
||||
Using Odoo **Maintenance**, it is possible to track individual pieces of equipment, along with
|
||||
Using Odoo *Maintenance*, it is possible to track individual pieces of equipment, along with
|
||||
information about their maintenance requirements. To add a new piece of equipment, navigate to the
|
||||
:guilabel:`Maintenance` module, select :menuselection:`Equipments --> Machines & Tools --> Create`,
|
||||
and configure the equipment as follows:
|
||||
|
||||
@@ -8,3 +8,6 @@ Quality check types
|
||||
:titlesonly:
|
||||
|
||||
quality_check_types/instructions_check
|
||||
quality_check_types/pass_fail_check
|
||||
quality_check_types/measure_check
|
||||
quality_check_types/picture_check
|
||||
|
||||
@@ -0,0 +1,194 @@
|
||||
=====================
|
||||
Measure quality check
|
||||
=====================
|
||||
|
||||
.. |QCP| replace:: :abbr:`QCP (Quality Control Point)`
|
||||
.. |QCPs| replace:: :abbr:`QCPs (Quality Control Points)`
|
||||
|
||||
In Odoo *Quality*, a *Measure* check is one of the quality check types that can be selected when
|
||||
creating a new quality check or quality control point (QCP). *Measure* checks prompt users to
|
||||
measure a certain aspect of a product and record the measurement in Odoo. For the quality check to
|
||||
pass, the recorded measurement must be within a certain *tolerance* of a *norm* value.
|
||||
|
||||
Create a Measure quality check
|
||||
==============================
|
||||
|
||||
There are two distinct ways that *Measure* quality checks can be created. A single check can be
|
||||
manually created. Alternatively, a |QCP| can be configured that automatically creates checks at a
|
||||
predetermined interval.
|
||||
|
||||
This documentation only details the configuration options that are unique to *Measure* quality
|
||||
checks and |QCPs|. For a full overview of all the configuration options available when creating a
|
||||
single check or a |QCP|, see the documentation on :ref:`quality checks
|
||||
<quality/quality_management/quality-checks>` and :ref:`quality control points
|
||||
<quality/quality_management/quality-control-points>`.
|
||||
|
||||
Quality check
|
||||
-------------
|
||||
|
||||
To create a single *Measure* quality check, navigate to :menuselection:`Quality --> Quality Control
|
||||
--> Quality Checks`, and click :guilabel:`New`. Fill out the new quality check form as follows:
|
||||
|
||||
- In the :guilabel:`Type` drop-down field, select the :guilabel:`Measure` quality check type.
|
||||
- In the :guilabel:`Team` drop-down field, select the quality team responsible for managing the
|
||||
check.
|
||||
- In the :guilabel:`Instructions` text field of the :guilabel:`Notes` tab, enter instructions for
|
||||
how the picture should be taken.
|
||||
|
||||
.. image:: measure_check/measure-check-form-1.png
|
||||
:align: center
|
||||
:alt: A quality check form configured for a Measure quality check.
|
||||
|
||||
Quality control point (QCP)
|
||||
---------------------------
|
||||
|
||||
To create a |QCP| that generates *Measure* quality checks automatically, navigate to
|
||||
:menuselection:`Quality --> Quality Control --> Control Points`, and click :guilabel:`New`. Fill out
|
||||
the new |QCP| form as follows:
|
||||
|
||||
- In the :guilabel:`Type` drop-down field, select the :guilabel:`Measure` quality check type. Doing
|
||||
so causes two new fields to appear: :guilabel:`Norm` and :guilabel:`Tolerance`.
|
||||
|
||||
- Use the first text-entry field of the :guilabel:`Norm` field to record the ideal measurement
|
||||
that the product should conform to. Use the second text-entry field to specify the unit of
|
||||
measurement that should be used.
|
||||
- The :guilabel:`Tolerance` field features two sub-fields: :guilabel:`from` and :guilabel:`to`.
|
||||
Use the :guilabel:`from` field to specify the minimum acceptable measurement, and the
|
||||
:guilabel:`to` field to specify the maximum acceptable measurement.
|
||||
|
||||
- In the :guilabel:`Team` drop-down field, select the quality team responsible for managing the
|
||||
checks created by the |QCP|.
|
||||
- In the :guilabel:`Instructions` text field, enter instructions for how the measurement should be
|
||||
taken.
|
||||
|
||||
.. image:: measure_check/measure-check-qcp-form.png
|
||||
:align: center
|
||||
:alt: A QCP form configured to create Measure quality checks.
|
||||
|
||||
Process a Measure quality check
|
||||
===============================
|
||||
|
||||
Once created, there are multiple ways that *Measure* quality checks can be processed. If a quality
|
||||
check is assigned to a specific inventory, manufacturing, or work order, the check can be processed
|
||||
on the order itself. Alternatively, a check can be processed from the check's page.
|
||||
|
||||
From the check's page
|
||||
---------------------
|
||||
|
||||
To process a *Measure* quality check from the check's page, begin by navigating to
|
||||
:menuselection:`Quality --> Quality Control --> Quality Checks`, and select a quality check. Follow
|
||||
the :guilabel:`Instructions` for how to take the measurement.
|
||||
|
||||
After taking the measurement, record the value in the :guilabel:`Measure` field on the quality check
|
||||
form. To manually pass or fail the check, click :guilabel:`Pass` or :guilabel:`Fail` at the top-left
|
||||
corner of the check.
|
||||
|
||||
Alternatively, if the quality check is assigned to a |QCP| for which *norm* and *tolerance* values
|
||||
have been specified, click :guilabel:`Measure` at the top-left corner of the check instead. Doing so
|
||||
automatically marks the check as *Passed* if the recorded value is within the specified *tolerance*,
|
||||
or *Failed* if the value is outside of it.
|
||||
|
||||
On an order
|
||||
-----------
|
||||
|
||||
To process a *Measure* quality check on an order, select a manufacturing order or inventory order
|
||||
(receipt, delivery, return, etc.), for which a check is required. Manufacturing orders can be
|
||||
selected by navigating to :menuselection:`Manufacturing --> Operations --> Manufacturing Orders`,
|
||||
and clicking on an order. Inventory orders can be selected by navigating to
|
||||
:menuselection:`Inventory`, clicking the :guilabel:`# To Process` button on an operation card, and
|
||||
selecting an order.
|
||||
|
||||
On the selected manufacturing or inventory order, a purple :guilabel:`Quality Checks` button appears
|
||||
at the top of the page. Click the button to open the :guilabel:`Quality Check` pop-up window, which
|
||||
shows all of the quality checks required for that order.
|
||||
|
||||
To process a *Measure* quality check, measure the product as instructed, then enter the value in the
|
||||
:guilabel:`Measure` field on the pop-up window. Finally, click :guilabel:`Validate` to register the
|
||||
recorded value.
|
||||
|
||||
.. image:: measure_check/measure-check-pop-up.png
|
||||
:align: center
|
||||
:alt: A Measure quality check pop-up window on a manufacturing or inventory order.
|
||||
|
||||
If the value entered is within the range specified in the :guilabel:`Tolerance` section of the
|
||||
|QCP|, the quality check passes and the pop-up window closes. The rest of the manufacturing or
|
||||
inventory order can then be processed as usual.
|
||||
|
||||
However, if the value entered is outside of the specified range, a new pop-up window appears, titled
|
||||
:guilabel:`Quality Check Failed`. The body of the pop-up shows a warning message that states,
|
||||
:guilabel:`You measured # units and it should be between # units and # units.`, as well as the
|
||||
instructions entered in the :guilabel:`Message If Failure` tab of the |QCP|. At the bottom of the
|
||||
pop-up, two buttons appear: :guilabel:`Correct Measure` and :guilabel:`Confirm Measure`.
|
||||
|
||||
.. image:: measure_check/measure-check-failed.png
|
||||
:align: center
|
||||
:alt: The "Quality Check Failed" pop-up window.
|
||||
|
||||
If the measurement was not entered correctly and should be changed, select :guilabel:`Correct
|
||||
Measure`. Doing so re-opens the :guilabel:`Quality Check` pop-up window. Enter the corrected
|
||||
measurement in the :guilabel:`Measure` field, and then click :guilabel:`Validate` to complete the
|
||||
check.
|
||||
|
||||
If the measurement was entered correctly, click :guilabel:`Confirm Measure` instead, and the quality
|
||||
check fails. Follow any instructions that were listed on the :guilabel:`Quality Check Failed` pop-up
|
||||
window.
|
||||
|
||||
If a quality alert must be created, click the :guilabel:`Quality Alert` button that appears at the
|
||||
top of the manufacturing or inventory order after the check fails. Clicking :guilabel:`Quality
|
||||
Alert` opens a quality alert form on a new page.
|
||||
|
||||
For a complete guide on how to fill out the quality alert form, view the documentation on
|
||||
:ref:`quality alerts <quality/quality_management/quality-alerts>`.
|
||||
|
||||
On a work order
|
||||
---------------
|
||||
|
||||
When configuring a |QCP| that is triggered during manufacturing, a specific work order can also be
|
||||
specified in the :guilabel:`Work Order Operation` field on the |QCP| form. If a work order is
|
||||
specified, a *Measure* quality check is created for that specific work order, rather than the
|
||||
manufacturing order as a whole.
|
||||
|
||||
*Measure* quality checks created for work orders must be processed from the tablet view. To do so,
|
||||
begin by navigating to :menuselection:`Manufacturing --> Operations --> Manufacturing Orders`.
|
||||
Select a manufacturing order that includes a work order for which a quality check is required. Open
|
||||
the tablet view for that work order by selecting the :guilabel:`Work Orders` tab, and then clicking
|
||||
the :guilabel:`📱 (tablet)` button on the order's line.
|
||||
|
||||
With tablet view open, complete the steps listed on the left side of the screen until the *Measure*
|
||||
quality check step is reached. Upon reaching the check, the instructions for how to take the
|
||||
measurement appear at the top of the screen. Enter the measured value in the :guilabel:`Measure`
|
||||
field above the instructions, and then click :guilabel:`Validate`.
|
||||
|
||||
.. image:: measure_check/measure-tablet-view.png
|
||||
:align: center
|
||||
:alt: A Measure quality check in the Manufacturing tablet view.
|
||||
|
||||
If the measurement entered is within the range specified in the :guilabel:`Tolerance` section of the
|
||||
|QCP|, the quality check passes and the tablet view moves on to the next step of the work order.
|
||||
However, if the measurement entered is outside of the specified range, a pop-up window appears,
|
||||
titled :guilabel:`Quality Check Failed`.
|
||||
|
||||
The body of the :guilabel:`Quality Check Failed` pop-up window shows a warning message that states,
|
||||
:guilabel:`You measured # units and it should be between # units and # units.`, as well as the
|
||||
instructions entered in the :guilabel:`Message If Failure` tab of the |QCP|. At the bottom of the
|
||||
pop-up, two buttons appear: :guilabel:`Correct Measure` and :guilabel:`Confirm Measure`.
|
||||
|
||||
.. image:: measure_check/measure-check-failed.png
|
||||
:align: center
|
||||
:alt: The "Quality Check Failed" pop-up window.
|
||||
|
||||
If the measurement was not entered correctly, and should be changed, select :guilabel:`Correct
|
||||
Measure`. Doing so opens a new pop-up window, titled :guilabel:`Quality Check`. Enter the corrected
|
||||
measurement in the :guilabel:`Measure` field, then click :guilabel:`Validate` to complete the check,
|
||||
and move on to the next step of the work order.
|
||||
|
||||
If the measurement was entered correctly, click :guilabel:`Confirm Measure` instead, and the quality
|
||||
check fails. Follow any instructions that were listed on the :guilabel:`Quality Check Failed` pop-up
|
||||
window.
|
||||
|
||||
If a quality alert must be created, do so by clicking the :guilabel:`☰ (three horizontal lines)`
|
||||
button, and selecting :guilabel:`Quality Alert` from the :guilabel:`Menu` pop-up window. A
|
||||
:guilabel:`Quality Alerts` pop-up window appears, from which a quality alert can be created.
|
||||
|
||||
For a complete guide on how to fill out the quality alert form, view the documentation on
|
||||
:ref:`quality alerts <quality/quality_management/quality-alerts>`.
|
||||
|
After Width: | Height: | Size: 7.7 KiB |
|
After Width: | Height: | Size: 7.1 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 21 KiB |
@@ -0,0 +1,132 @@
|
||||
=========================
|
||||
Pass - Fail quality check
|
||||
=========================
|
||||
|
||||
.. |QCP| replace:: :abbr:`QCP (Quality Control Point)`
|
||||
.. |QCPs| replace:: :abbr:`QCP (Quality Control Points)`
|
||||
|
||||
In Odoo *Quality*, a *Pass - Fail* check is one of the quality check types that can be selected when
|
||||
creating a new quality check or quality control point (QCP). *Pass - Fail* checks consist of a text
|
||||
field that allows the creator to specify a certain criteria that a product must meet to pass the
|
||||
check.
|
||||
|
||||
Create a Pass - Fail quality check
|
||||
==================================
|
||||
|
||||
There are two distinct ways that *Pass - Fail* quality checks can be created. A single check can be
|
||||
manually created. Alternatively, a |QCP| can be configured that automatically creates checks at a
|
||||
predetermined interval.
|
||||
|
||||
This documentation only details the configuration options that are unique to *Pass - Fail* quality
|
||||
checks and |QCPs|. For a full overview of all the configuration options available when creating a
|
||||
single check or a |QCP|, see the documentation on :ref:`quality checks
|
||||
<quality/quality_management/quality-checks>` and :ref:`quality control points
|
||||
<quality/quality_management/quality-control-points>`.
|
||||
|
||||
Quality check
|
||||
-------------
|
||||
|
||||
To create a single *Pass - Fail* quality check, navigate to :menuselection:`Quality --> Quality
|
||||
Control --> Quality Checks`, and click :guilabel:`New`. Fill out the new quality check form as
|
||||
follows:
|
||||
|
||||
- In the :guilabel:`Type` drop-down field, select the :guilabel:`Pass - Fail` quality check type.
|
||||
- In the :guilabel:`Team` drop-down field, select the quality team responsible for managing the
|
||||
check.
|
||||
- In the :guilabel:`Instructions` text field of the :guilabel:`Notes` tab, enter instructions for
|
||||
how to complete the quality check and the criteria that must be met for the check to pass.
|
||||
|
||||
.. image:: pass_fail_check/quality-check-form.png
|
||||
:align: center
|
||||
:alt: A quality check form configured for a Pass - Fail quality check.
|
||||
|
||||
Quality Control Point (QCP)
|
||||
---------------------------
|
||||
|
||||
To create a |QCP| that generates *Pass - Fail* quality checks automatically, begin by navigating to
|
||||
:menuselection:`Quality --> Quality Control --> Control Points`, and click :guilabel:`New`. Fill out
|
||||
the new |QCP| form as follows:
|
||||
|
||||
- In the :guilabel:`Type` drop-down field, select the :guilabel:`Pass - Fail` quality check type.
|
||||
- In the :guilabel:`Team` drop-down field, select the quality team responsible for managing the
|
||||
checks created by the |QCP|.
|
||||
- In the :guilabel:`Instructions` text field, enter instructions for how to complete the quality
|
||||
check and the criteria that must be met for the check to pass.
|
||||
|
||||
.. image:: pass_fail_check/qcp-form.png
|
||||
:align: center
|
||||
:alt: A Quality Control Point (QCP) form configured to create a Pass - Fail quality check.
|
||||
|
||||
Process a Pass - Fail quality check
|
||||
===================================
|
||||
|
||||
Once created, there are multiple ways that *Measure* quality checks can be processed. If a quality
|
||||
check is assigned to a specific inventory, manufacturing, or work order, the check can be processed
|
||||
on the order itself. Alternatively, a check can be processed from the check's page.
|
||||
|
||||
From the check's page
|
||||
---------------------
|
||||
|
||||
To process a *Measure* quality check from the check's page, begin by navigating to
|
||||
:menuselection:`Quality --> Quality Control --> Quality Checks`, and select a quality check. Follow
|
||||
the :guilabel:`Instructions` for how to complete the check.
|
||||
|
||||
If the criteria for the check is met, click the :guilabel:`Pass` button at the top-left corner of
|
||||
the page. If the criteria is not met, click the :guilabel:`Fail` button.
|
||||
|
||||
On an order
|
||||
-----------
|
||||
|
||||
To process a *Pass - Fail* quality check on an order, select a manufacturing order or inventory
|
||||
order (receipt, delivery, return, etc.), for which a check is required. Manufacturing orders can be
|
||||
selected by navigating to :menuselection:`Manufacturing --> Operations --> Manufacturing Orders`,
|
||||
and clicking on an order. Inventory orders can be selected by navigating to
|
||||
:menuselection:`Inventory`, clicking the :guilabel:`# To Process` button on an operation card, and
|
||||
selecting an order.
|
||||
|
||||
On the selected manufacturing or inventory order, a purple :guilabel:`Quality Checks` button appears
|
||||
at the top of the order. Click the button to open the :guilabel:`Quality Check` pop-up window, which
|
||||
shows all of the quality checks required for that order.
|
||||
|
||||
To process a *Pass - Fail* quality check, follow the instructions shown on the :guilabel:`Quality
|
||||
Check` pop-up window. If the criteria for the check is met, click the :guilabel:`Pass` button at the
|
||||
bottom of the window. If the criteria is not met, click the :guilabel:`Fail` button.
|
||||
|
||||
.. image:: pass_fail_check/pass-fail-check-pop-up.png
|
||||
:align: center
|
||||
:alt: A Pass - Fail quality check pop-up window on a manufacturing or inventory order.
|
||||
|
||||
If a quality alert must be created, click the :guilabel:`Quality Alert` button that appears at the
|
||||
top of the manufacturing or inventory order after the check fails. Clicking :guilabel:`Quality
|
||||
Alert` opens a quality alert form on a new page. For a complete guide on how to fill out quality
|
||||
alert forms, view the documentation on :ref:`quality alerts
|
||||
<quality/quality_management/quality-alerts>`.
|
||||
|
||||
On a work order
|
||||
---------------
|
||||
|
||||
When configuring a |QCP| that is triggered during manufacturing, a specific work order can also be
|
||||
specified in the :guilabel:`Work Order Operation` field on the |QCP| form. If a work order is
|
||||
specified, a *Pass - Fail* quality check is created for that specific work order, rather than the
|
||||
manufacturing order as a whole.
|
||||
|
||||
*Pass - Fail* quality checks configured for work orders must be processed from the tablet view. To
|
||||
do so, begin by navigating to :menuselection:`Manufacturing --> Operations --> Manufacturing
|
||||
Orders`. Select a manufacturing order that includes a work order for which a quality check is
|
||||
required. Open the tablet view for that work order by selecting the :guilabel:`Work Orders` tab, and
|
||||
then clicking the :guilabel:`📱 (tablet)` button on the order's line.
|
||||
|
||||
With tablet view open, complete the steps listed on the left side of the screen until the *Pass -
|
||||
Fail* quality check step is reached. Upon reaching the check, follow the instructions that appear at
|
||||
the top of the screen. If the criteria for the check is met, click the :guilabel:`Pass` button at
|
||||
the top-right of the screen. If the criteria is not met, click the :guilabel:`Fail` button.
|
||||
|
||||
.. image:: pass_fail_check/work-order-pass-fail-check.png
|
||||
:align: center
|
||||
:alt: A Pass - Fail check for a manufacturing work order.
|
||||
|
||||
If a quality alert must be created, do so by clicking the :guilabel:`☰ (menu)` button in the tablet
|
||||
view, and selecting :guilabel:`Quality Alert` from the :guilabel:`Menu` pop-up window. A
|
||||
:guilabel:`Quality Alerts` pop-up window appears, from which a quality alert can be created. For a
|
||||
complete guide on how to fill out quality alert forms, view the documentation on :ref:`quality
|
||||
alerts <quality/quality_management/quality-alerts>`.
|
||||
|
After Width: | Height: | Size: 9.2 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 9.4 KiB |
|
After Width: | Height: | Size: 14 KiB |
@@ -0,0 +1,165 @@
|
||||
============================
|
||||
Take a Picture quality check
|
||||
============================
|
||||
|
||||
.. |QCP| replace:: :abbr:`QCP (Quality Control Point)`
|
||||
.. |QCPs| replace:: :abbr:`QCP (Quality Control Points)`
|
||||
|
||||
In Odoo *Quality*, a *Take a Picture* check is one of the quality check types that can be selected
|
||||
when creating a new quality check or quality control point (QCP). *Take a Picture* checks require a
|
||||
picture to be attached to the check, which can then be reviewed by a quality team.
|
||||
|
||||
Create a Take a Picture quality check
|
||||
=====================================
|
||||
|
||||
There are two distinct ways that *Take a Picture* quality checks can be created. A single check can
|
||||
be manually created. Alternatively, a |QCP| can be configured that automatically creates checks at a
|
||||
predetermined interval.
|
||||
|
||||
This documentation only details the configuration options that are unique to *Take a Picture*
|
||||
quality checks and |QCPs|. For a full overview of all the configuration options available when
|
||||
creating a single check or a |QCP|, see the documentation on :ref:`quality checks
|
||||
<quality/quality_management/quality-checks>` and :ref:`quality control points
|
||||
<quality/quality_management/quality-checks>`.
|
||||
|
||||
Quality check
|
||||
-------------
|
||||
|
||||
To create a single *Take a Picture* quality check, navigate to :menuselection:`Quality --> Quality
|
||||
Control --> Quality Checks`, and click :guilabel:`New`. Fill out the new quality check form as
|
||||
follows:
|
||||
|
||||
- In the :guilabel:`Type` drop-down field, select the :guilabel:`Take a Picture` quality check type.
|
||||
- In the :guilabel:`Team` drop-down field, select the quality team responsible for managing the
|
||||
check.
|
||||
- In the :guilabel:`Instructions` text field of the :guilabel:`Notes` tab, enter instructions for
|
||||
how the picture should be taken.
|
||||
|
||||
.. image:: picture_check/picture-check-form.png
|
||||
:align: center
|
||||
:alt: A quality check form configured for a Take a Picture quality check.
|
||||
|
||||
Quality Control Point (QCP)
|
||||
---------------------------
|
||||
|
||||
To create a |QCP| that will generate *Take a Picture* quality checks automatically, navigate to
|
||||
:menuselection:`Quality --> Quality Control --> Control Points`, and click :guilabel:`New`. Fill out
|
||||
the new |QCP| form as follows:
|
||||
|
||||
- In the :guilabel:`Type` drop-down field, select the :guilabel:`Take a Picture` quality check type.
|
||||
- If the *Maintenance* app is installed, a :guilabel:`Device` field appears after selecting the
|
||||
*Take a Picture* check type. Use this field to specify a device that should be used to take
|
||||
quality check pictures. For information about managing devices in the *Maintenance* app, see the
|
||||
documentation on :ref:`adding new equipment <maintenance/equipment_management/add_new_equipment>`.
|
||||
- In the :guilabel:`Team` drop-down field, select the quality team responsible for managing the
|
||||
checks created by the |QCP|.
|
||||
- In the :guilabel:`Instructions` text field, enter instructions for how the picture should be
|
||||
taken.
|
||||
|
||||
.. image:: picture_check/picture-qcp-form.png
|
||||
:align: center
|
||||
:alt: A Quality Control Point (QCP) form configured to create a Take a Picture quality check.
|
||||
|
||||
Process a Take a Picture quality check
|
||||
======================================
|
||||
|
||||
Once created, there are multiple ways that *Take a Picture* quality checks can be processed. If a
|
||||
quality check is assigned to a specific inventory, manufacturing, or work order, the check can be
|
||||
processed on the order itself. Alternatively, a check can be processed from the check's page.
|
||||
|
||||
From the check's page
|
||||
---------------------
|
||||
|
||||
To process a *Take a Picture* quality check from the check's page, begin by navigating to
|
||||
:menuselection:`Quality --> Quality Control --> Quality Checks`, and then select a quality check.
|
||||
Follow the :guilabel:`Instructions` for how to take the picture.
|
||||
|
||||
After taking the picture, make sure it is stored on the device being used to process the quality
|
||||
check (computer, tablet, etc.). Then, click the :guilabel:`✏️ (pencil)` button in the
|
||||
:guilabel:`Picture` section to open the device's file manager. In the file manager, navigate to the
|
||||
picture, select it, and click :guilabel:`Open` to attach it.
|
||||
|
||||
.. image:: picture_check/picture-edit-button.png
|
||||
:align: center
|
||||
:alt: The edit button (pencil) on a Take a Picture quality check.
|
||||
|
||||
On an order
|
||||
-----------
|
||||
|
||||
To process a *Take a Picture* quality check on an order, select a manufacturing order or inventory
|
||||
order (receipt, delivery, return, etc.), for which a check is required. Manufacturing orders can be
|
||||
selected by navigating to :menuselection:`Manufacturing --> Operations --> Manufacturing Orders`,
|
||||
and clicking on an order. Inventory orders can be selected by navigating to
|
||||
:menuselection:`Inventory`, clicking the :guilabel:`# To Process` button on an operation card, and
|
||||
selecting an order.
|
||||
|
||||
On the selected manufacturing or inventory order, a purple :guilabel:`Quality Checks` button appears
|
||||
at the top of the page. Click the button to open the :guilabel:`Quality Check` pop-up window, which
|
||||
shows all of the quality checks required for that order.
|
||||
|
||||
Follow the instructions detailing how to take the picture, which are shown on the :guilabel:`Quality
|
||||
Check` pop-up window. After taking the picture, make sure it is stored on the device being used to
|
||||
process the quality check (computer, tablet, etc.).
|
||||
|
||||
Then, click the :guilabel:`Take a Picture` button in the :guilabel:`Picture` section to open the
|
||||
device's file manager. In the file manager, navigate to the picture, select it, and click
|
||||
:guilabel:`Open` to attach it. Finally, click :guilabel:`Validate` on the :guilabel:`Quality Check`
|
||||
pop-up window to complete the quality check.
|
||||
|
||||
.. image:: picture_check/picture-check-pop-up.png
|
||||
:align: center
|
||||
:alt: A Take a Picture quality check pop-up window on a manufacturing or inventory order.
|
||||
|
||||
If a quality alert must be created, click the :guilabel:`Quality Alert` button that appears at the
|
||||
top of the manufacturing or inventory order after the check is validated. Clicking
|
||||
:guilabel:`Quality Alert` opens a quality alert form on a new page. For a complete guide on how to
|
||||
fill out quality alert forms, view the documentation on :ref:`quality alerts
|
||||
<quality/quality_management/quality-alerts>`.
|
||||
|
||||
On a work order
|
||||
---------------
|
||||
|
||||
When configuring a |QCP| that is triggered during manufacturing, a specific work order can also be
|
||||
specified in the :guilabel:`Work Order Operation` field on the |QCP| form. If a work order is
|
||||
specified, a *Take a Picture* quality check is created for that specific work order, rather than the
|
||||
manufacturing order as a whole.
|
||||
|
||||
*Take a Picture* quality checks created for work orders must be completed from the tablet view. To
|
||||
do so, begin by navigating to :menuselection:`Manufacturing --> Operations --> Manufacturing
|
||||
Orders`. Select a manufacturing order that includes a work order for which a quality check is
|
||||
required. Open the tablet view for that work order by selecting the :guilabel:`Work Orders` tab, and
|
||||
then clicking the :guilabel:`📱 (tablet)` button on the order's line.
|
||||
|
||||
With tablet view open, complete the steps listed on the left side of the screen until the *Take a
|
||||
Picture* quality check step is reached. Upon reaching the check, follow the instructions for how to
|
||||
take the picture, which appear at the top of the screen.
|
||||
|
||||
After taking the picture, make sure it is stored on the device being used to process the work order
|
||||
(computer, tablet, etc.). Then, click the :guilabel:`Take a Picture` button to open the device's
|
||||
file manager. In the file manager, navigate to the picture, select it, and click :guilabel:`Open` to
|
||||
attach it. Finally, click :guilabel:`Validate` to complete the quality check.
|
||||
|
||||
.. image:: picture_check/work-order-picture-check.png
|
||||
:align: center
|
||||
:alt: A Take a Picture check for a manufacturing work order.
|
||||
|
||||
If a quality alert must be created, do so by clicking the :guilabel:`☰ (three horizontal lines)`
|
||||
button in the tablet view, and selecting :guilabel:`Quality Alert` from the :guilabel:`Menu` pop-up
|
||||
window. A :guilabel:`Quality Alerts` pop-up window appears, from which a quality alert can be
|
||||
created. For a complete guide on how to fill out quality alert forms, view the documentation on
|
||||
:ref:`quality alerts <quality/quality_management/quality-alerts>`.
|
||||
|
||||
Review a picture attached to a check
|
||||
====================================
|
||||
|
||||
After a picture has been attached to a check, it can then be reviewed by quality team members or
|
||||
other users. To do so, navigate to :menuselection:`Quality --> Quality Control --> Quality Checks`,
|
||||
and select a quality check to review.
|
||||
|
||||
The attached picture appears in the :guilabel:`Picture` section of the quality check form. After
|
||||
reviewing the picture, click the :guilabel:`Pass` button if the check passes, or the
|
||||
:guilabel:`Fail` button if the check fails.
|
||||
|
||||
.. image:: picture_check/review-picture-check.png
|
||||
:align: center
|
||||
:alt: A Take a Picture check with a picture attached.
|
||||
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 5.2 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 6.6 KiB |
@@ -103,13 +103,6 @@ Sync with Outlook
|
||||
unarchived, or event date/time changed), with no exceptions. This is a limitation that cannot be
|
||||
fixed from Odoo's side.
|
||||
|
||||
After one user syncs their Outlook calendar to the Odoo database, unwanted email notifications
|
||||
are unavoidable because the first synchronized user's events will be in the Odoo Calendar. If
|
||||
the Odoo database is shared amongst multiple users, and another user wants to sync their Outlook
|
||||
calendar with Odoo Calendar, Outlook will again pull the existing Odoo Calendar events during
|
||||
the sync and treat them as new events, causing Outlook to send email invitations to all event
|
||||
attendees.
|
||||
|
||||
In summary, once a user synchronizes their Outlook calendar with the Odoo calendar:
|
||||
|
||||
- Creating an event in Odoo causes Outlook to send an invitation to all event attendees.
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
Connect a measurement tool
|
||||
==========================
|
||||
|
||||
.. _iot/devices/measurement-tool:
|
||||
|
||||
With Odoo's :abbr:`IoT (Internet of Things)` box, it is possible to connect measurement tools to the
|
||||
Odoo database for use in the *Quality app* on a quality control point/quality check, or for use in a
|
||||
work center during the manufacturing process.
|
||||
|
||||
@@ -8,4 +8,3 @@ Analyze performance
|
||||
:titlesonly:
|
||||
|
||||
performance/win_loss
|
||||
performance/google_spreadsheets
|
||||
|
||||
@@ -1,91 +0,0 @@
|
||||
=====================================================
|
||||
How to use Google Spreadsheet in Addition to my Data?
|
||||
=====================================================
|
||||
|
||||
Create custom dashboards in Google Spreadsheet that retrieves data directly from Odoo using
|
||||
spreadsheet formula. You can use it to create sales commission plans, budgets, project forecasts,
|
||||
etc. Formulas are written in Python but programming skills are not required.
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
From the *General Settings*, activate *Google Drive* and *Google Spreadsheet*. The options
|
||||
*Authorization Code* and *Get Authorization Code* are now available.
|
||||
|
||||
.. image:: google_spreadsheets/authori.png
|
||||
:align: center
|
||||
:alt: Enable the Google Drive and Google Spreadsheet features in Odoo
|
||||
|
||||
Now, link your Google account with Odoo by following these steps:
|
||||
|
||||
#. Get Authorization Code
|
||||
#. Select your Google account
|
||||
#. Enter your password
|
||||
#. Copy the code
|
||||
#. Paste it into the Authorization Code field
|
||||
|
||||
Create a new Spreadsheet
|
||||
------------------------
|
||||
|
||||
From the *CRM* app, for example, go to *Favorites* and click on *Add to Google Spreadsheet*.
|
||||
|
||||
.. image:: google_spreadsheets/add_to_google_spread.png
|
||||
:align: center
|
||||
:alt: From the CRM application, for example, click on add to Google Spreadsheet in Odoo
|
||||
|
||||
A new spreadsheet will be automatically created in your Google Drive.
|
||||
|
||||
.. note::
|
||||
When you opening this new file, a second sheet is created automatically by Odoo with a
|
||||
tutorial/documentation on *How to use Google Spreadsheet*.
|
||||
|
||||
Link a Spreadsheet with Odoo
|
||||
----------------------------
|
||||
|
||||
| From this new file, configure your database.
|
||||
| Go to :menuselection:`Odoo --> Server Settings --> Database Name --> Username --> Password`.
|
||||
|
||||
.. image:: google_spreadsheets/odoo_menu.png
|
||||
:align: center
|
||||
:alt: Menu called Odoo is shown on the settings bar in the Spreadsheet
|
||||
|
||||
Applications
|
||||
============
|
||||
|
||||
You have two different formulas available when using Google Spreadsheet in Odoo: *retrieve data* and
|
||||
*retrieve grouped sums*.
|
||||
|
||||
.. warning::
|
||||
Google Drive limits the execution time of scripts; if the data you requested takes
|
||||
too long to be delivered, you might get an error. There is no specific size limit, since the
|
||||
time for Odoo to respond depends on several factors - although reading data regarding several
|
||||
thousand records is usually fine.
|
||||
|
||||
|
||||
Retrieve Data
|
||||
-------------
|
||||
|
||||
| The theoretical formula is :command:`= oe_browse (table;columns;filters;orderby:limit)`.
|
||||
Used it if you want to display the information without grouping it (e.g.: each sales
|
||||
order in the database).
|
||||
| Find some the arguments in the table below.
|
||||
|
||||
.. image:: google_spreadsheets/retrieve_data.png
|
||||
:align: center
|
||||
:alt: Table with examples of arguments to use in Odoo
|
||||
|
||||
Retrieve Grouped Sums
|
||||
---------------------
|
||||
|
||||
| The theoretical formula is :command:`= oe_read_group (table;columns;group_by;filters;orderby:limit)`.
|
||||
Use it when you want to display a sum of data (e.g.: total invoiced).
|
||||
| Find some arguments in the table below.
|
||||
|
||||
.. image:: google_spreadsheets/retrieve_sums.png
|
||||
:align: center
|
||||
:alt: Table with examples of grouped sum arguments to use in Odoo
|
||||
|
||||
Other uses
|
||||
----------
|
||||
|
||||
Mix Odoo data with spreadsheet data, add traditional formulas, and create Dynamic Tabled and Graphs.
|
||||
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 73 KiB |
|
Before Width: | Height: | Size: 76 KiB |
@@ -2,77 +2,120 @@
|
||||
Manage lost opportunities
|
||||
=========================
|
||||
|
||||
While working with your opportunities, you might lose some of them. You
|
||||
will want to keep track of the reasons you lost them and also which ways
|
||||
Odoo can help you recover them in the future.
|
||||
Not all opportunities result in successful sales. In order to keep the pipeline up to date, lost
|
||||
opportunities need to be identified. Specifying the reason why an opportunity was lost provides
|
||||
additional insight that can prove useful for future opportunities.
|
||||
|
||||
Mark a lead as lost
|
||||
===================
|
||||
|
||||
While in your pipeline, select any opportunity you want and you will see
|
||||
a *Mark Lost* button.
|
||||
To mark a lead as lost, open the :menuselection:`CRM` application, and select a lead from the
|
||||
pipeline, by clicking on its corresponding kanban card. Doing so reveals that lead's detail form.
|
||||
|
||||
You can then select an existing *Lost Reason* or create a new one
|
||||
right there.
|
||||
Then, click :guilabel:`Lost`, located at the top of the lead's detail form.
|
||||
|
||||
.. image:: lost_opportunities/lost_opportunities01.png
|
||||
.. image:: lost_opportunities/lost-opps-lost-button.png
|
||||
:align: center
|
||||
:alt: Buttons from the top of an opportunity record with the lost button emphasized.
|
||||
|
||||
Manage & create lost reasons
|
||||
----------------------------
|
||||
This opens the :guilabel:`Lost Reason` popup. From the drop-down, choose an existing lost reason. If
|
||||
no applicable reason is available, create a new one by entering it into the :guilabel:`Lost Reason`
|
||||
field, and clicking :guilabel:`Create`.
|
||||
|
||||
You will find your *Lost Reasons* under :menuselection:`Configuration --> Lost Reasons`.
|
||||
Additional notes and comments can be added below the lost reason designated in the :guilabel:`Lost
|
||||
Reason` field.
|
||||
|
||||
You can select & rename any of them as well as create a new one from
|
||||
there.
|
||||
When all the desired information has been entered in the :guilabel:`Lost Reason` pop-up window,
|
||||
click :guilabel:`Submit`.
|
||||
|
||||
.. image:: lost_opportunities/lost-opps-lost-reason.png
|
||||
:align: center
|
||||
:alt: Lost reasons popup with sample reasons.
|
||||
|
||||
Upon clicking :guilabel:`Submit`, the pop-up window disappears, and Odoo returns to the lead detail
|
||||
form, where a new red :guilabel:`Lost` banner is now present in the upper-right corner of the lead.
|
||||
|
||||
Create/edit lost reasons
|
||||
========================
|
||||
|
||||
To create a new lost reason, or edit an existing one, navigate to :menuselection:`CRM app -->
|
||||
Configuration --> Lost Reasons`.
|
||||
|
||||
To edit an existing reason, click on the reason that should be modified. When clicked, that reason
|
||||
becomes highlighted. Once highlighted, change the description of the selected lost reason by editing
|
||||
the :guilabel:`Description` field. When done, click :guilabel:`Save` in the upper-left corner.
|
||||
|
||||
To create a new lost reason, click :guilabel:`Create` in the upper-left corner of the
|
||||
:guilabel:`Lost Reasons` page. Doing so reveals a new blank line in the :guilabel:`Description`
|
||||
field. Then, proceed to type in the new lost reason in that new line. Once ready, click
|
||||
:guilabel:`Save`.
|
||||
|
||||
Retrieve lost opportunities
|
||||
===========================
|
||||
|
||||
To retrieve lost opportunities and do actions on them (send an email,
|
||||
make a feedback call, etc.), select the *Lost* filter in the search
|
||||
bar.
|
||||
To retrieve lost opportunities in Odoo *CRM*, open the :menuselection:`CRM app` to the main
|
||||
:guilabel:`Pipeline` dashboard. Then, click the :guilabel:`Filters` drop-down menu, located beneath
|
||||
the search bar.
|
||||
|
||||
.. image:: lost_opportunities/lost_opportunities02.png
|
||||
.. image:: lost_opportunities/lost-opps-lost-filter.png
|
||||
:align: center
|
||||
:alt: Search bar with lost filter emphasized.
|
||||
|
||||
You will then see all your lost opportunities.
|
||||
From the :guilabel:`Filters` drop-down menu, select the :guilabel:`Lost` option. Upon selecting
|
||||
:guilabel:`Lost`, only the leads that have been marked as `Lost` appear on the :guilabel:`Pipeline`
|
||||
page.
|
||||
|
||||
If you want to refine them further, you can add a filter on the *Lost
|
||||
Reason*.
|
||||
To filter leads by a specific lost reason, select :menuselection:`Filters --> Add Custom Filter`.
|
||||
Doing so reveals another drop-down menu with three fields.
|
||||
|
||||
For Example, *Too Expensive*.
|
||||
In the top field drop-down menu, select :guilabel:`Lost Reason`. In the second field drop-down menu,
|
||||
select :guilabel:`Contains`. Then, in the third field of the :guilabel:`Add Custom Field` sub menu,
|
||||
type in the specific keyword(s). Lastly, click :guilabel:`Apply`. Upon clicking :guilabel:`Apply`,
|
||||
Odoo reveals all the lost leads with a reason that contains that specified keyword(s).
|
||||
|
||||
.. image:: lost_opportunities/lost_opportunities03.png
|
||||
.. image:: lost_opportunities/lost-opps-lost-custom-filter.png
|
||||
:align: center
|
||||
:alt: Search bar with custom filter added for lost reason.
|
||||
|
||||
Restore lost opportunities
|
||||
==========================
|
||||
|
||||
From the Kanban view with the filter(s) in place, you can select any
|
||||
opportunity you wish and work on it as usual. You can also restore it by
|
||||
clicking on *Archived*.
|
||||
To restore a lost opportunity, navigate to the main :guilabel:`Pipeline` dashboard on the *CRM* app,
|
||||
open the :guilabel:`Filters` drop-down menu, and select the :guilabel:`Lost` option. Doing so
|
||||
reveals all the lost opportunities on the :guilabel:`Pipeline` page.
|
||||
|
||||
.. image:: lost_opportunities/lost_opportunities04.png
|
||||
Then, click on the kanban card of the desired lost opportunity to restore, which opens that lead's
|
||||
detail form.
|
||||
|
||||
From the lost lead's detail form, click :guilabel:`Restore` in the upper-left corner. Doing so
|
||||
removes the red :guilabel:`Lost` banner from the lead form, signifying the lead has been restored.
|
||||
|
||||
.. image:: lost_opportunities/lost-opps-restore.png
|
||||
:align: center
|
||||
:alt: Lost opportunity with emphasis on the Restore button.
|
||||
|
||||
You can also restore items in batch from the Kanban view when they
|
||||
belong to the same stage. Select *Restore Records* in the column
|
||||
options. You can also archive the same way.
|
||||
Restore multiple opportunities at once
|
||||
--------------------------------------
|
||||
|
||||
.. image:: lost_opportunities/lost_opportunities05.png
|
||||
:align: center
|
||||
|
||||
To select specific opportunities, you should switch to the list view.
|
||||
|
||||
.. image:: lost_opportunities/lost_opportunities06.png
|
||||
:align: center
|
||||
|
||||
Then you can select as many or all opportunities and select the actions
|
||||
you want to take.
|
||||
|
||||
.. image:: lost_opportunities/lost_opportunities07.png
|
||||
To restore multiple opportunities at once, navigate to the main :guilabel:`Pipeline` dashboard in
|
||||
the *CRM* app, open the :guilabel:`Filters` drop-down menu, and select the :guilabel:`Lost` option.
|
||||
|
||||
Next, select the list view option, which is represented by the three-line :guilabel:`☰ (list)` icon
|
||||
in the upper-right corner. Doing so places all the leads from the :guilabel:`Pipeline` page in a
|
||||
list form. With the list form chosen, select the checkbox to the left of each desired
|
||||
opportunity/lead to be restored.
|
||||
|
||||
Once the desired opportunities/leads have been selected, click the :guilabel:`⚙️ Action (gear)`
|
||||
drop-down menu at the top of the :guilabel:`Pipeline` page. From the :guilabel:`⚙️ Action (gear)`
|
||||
drop-down menu, select :guilabel:`Unarchive`.
|
||||
|
||||
Doing so removes those selected lost opportunities from the :guilabel:`Pipeline` page because they
|
||||
no longer fit into the `Lost` filter criteria. To reveal these newly-restored leads, delete the
|
||||
`Lost` filter from the search bar.
|
||||
|
||||
.. image:: lost_opportunities/lost-opps-unarchive.png
|
||||
:align: center
|
||||
:alt: Action button from list view with the Unarchive option emphasized.
|
||||
|
||||
.. seealso::
|
||||
* :doc:`../performance/win_loss`
|
||||
:doc:`../performance/win_loss`
|
||||
|
||||
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 7.3 KiB |
|
After Width: | Height: | Size: 6.1 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 6.9 KiB |