Compare commits

..

29 Commits

Author SHA1 Message Date
william-andre
cc1475db75 [FIX] install: do not create superuser for postgres
The preferred/safe way of running Odoo is with a standard user, with
only the right to create a database.
See b6b73551db
2023-11-30 13:52:13 +01:00
“Audrey
a4b3008101 [ADD] website: mail groups
task-2845181

closes odoo/documentation#6700

X-original-commit: 632039fa74
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2023-11-28 13:35:14 +00:00
Sam Lieber (sali)
c1fe28dd50 [IMP] accounting/l10n_co: additional context
closes odoo/documentation#6685

X-original-commit: 6045a60dd5
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: dade-odoo <87431108+dade-odoo@users.noreply.github.com>
Co-authored-by: larm-odoo <121518652+larm-odoo@users.noreply.github.com>
2023-11-27 22:31:45 +00:00
Jess Rogers (jero)
33a9e1f017 [IMP] crm: update manage lost opps
closes odoo/documentation#6676

X-original-commit: 21f0ad60f8
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: brse-odoo <brse@odoo.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2023-11-27 19:05:44 +00:00
Marion (masp)
4b7668d6a8 [IMP] Contributing: typo seealso admonition
closes odoo/documentation#6637

X-original-commit: 70d5a55909
Signed-off-by: Marion Spindler (masp) <masp@odoo.com>
2023-11-27 17:34:06 +00:00
Loredana Perazzo
4118cb9bf9 [IMP] pos: remove duplicate of set customer and update sections accordingly
task-3366190

closes odoo/documentation#6606

Signed-off-by: Loredana Perazzo (lrpz) <lrpz@odoo.com>
2023-11-27 06:09:50 +00:00
Odoo Translation Bot
2377fa1bb8 [I18N] Update translation terms from Transifex 2023-11-26 01:40:34 +01:00
Donatienne (dopi)
71446b0668 [IMP] sign: update for 16.0
task-3433578

closes odoo/documentation#5558

Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2023-11-24 13:37:38 +00:00
Xavier (XPL)
3ead6e0f99 [IMP] reporting: improve grammar and remove image centering
closes odoo/documentation#6644

Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2023-11-24 10:28:27 +00:00
Xavier (XPL)
a149164866 [IMP] outlook: remove note about multi-user sync spam
task-3575806

closes odoo/documentation#6619

X-original-commit: b4302e4023
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2023-11-23 16:07:15 +00:00
Claire Bretton (clbr)
620508fb29 [FIX] getting_started: remove useless lambda
The lambda function here is useless and makes newdooers think
they need to use it everytime.
`default=fields.Date.add(fields.Date.today(), months=3))`
should do the trick, no lambda involved.

closes odoo/documentation#6607

Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2023-11-23 13:07:05 +00:00
Claire Bretton (clbr)
8707609b38 [FIX] getting_started: invalid addons-path
The "../technical-training-sandbox" is added too early in the path since
its still empty, and results into an "invalid addons-path" error.

Part-of: odoo/documentation#6607
2023-11-23 13:07:05 +00:00
Xavier (XPL)
e413418e1e [FIX] accounting: update link to getting started video tutorial
task-3608613

closes odoo/documentation#6609

X-original-commit: c0653112a1
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2023-11-23 12:04:38 +00:00
Xavier (XPL)
12670b1299 [IMP] paypal: add note about supported currencies
task-3608056

closes odoo/documentation#6566

X-original-commit: 5f1881a88a
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2023-11-23 07:54:39 +00:00
Felicious
4e2b634a50 [IMP] inventory: update delivery methods from 12 to 16
closes odoo/documentation#6287

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: hojo-odoo <123424465+hojo-odoo@users.noreply.github.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
2023-11-23 02:55:09 +00:00
Felicious
56cda37610 [IMP] barcode: add zebra scanner section
add more figures

closes odoo/documentation#5827

Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: hojo-odoo <123424465+hojo-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
2023-11-23 02:55:08 +00:00
Felicious
32900efbb9 [ADD] inventory: cluster picking
closes odoo/documentation#5732

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: hojo-odoo <123424465+hojo-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: meng-odoo <101904966+meng-odoo@users.noreply.github.com>
2023-11-23 01:57:56 +00:00
John Holton (hojo)
5612ce8dd8 [ADD] Quality: Take a Picture Check
closes odoo/documentation#5939

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-23 00:53:50 +00:00
KC (ksc)
75c24e7e88 [IMP] sales: updated deadline doc for 16
closes odoo/documentation#5438

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-22 21:52:08 +00:00
John Holton (hojo)
78713f1637 [ADD] Quality: Measure quality check
closes odoo/documentation#5760

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-22 20:50:48 +00:00
Xavier (XPL)
b96de8b50e [IMP] upgrade: add note on bank synch neutralization
task-3605690

closes odoo/documentation#6557

X-original-commit: dc48273e7e
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2023-11-22 15:10:02 +00:00
John Holton (hojo)
1a11e3c35c [ADD] Quality: Pass - Fail quality checks
closes odoo/documentation#5884

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-21 19:46:28 +00:00
Xavier (XPL)
f38bae5e8d [FIX] payroll: add missing show-content metadata
Without the :show-content: metadata markup, it is not possible to open the
page by navigating from the toctree.

closes odoo/documentation#6524

X-original-commit: 16e339a7a3
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2023-11-21 16:34:52 +00:00
Donatienne (dopi)
cd11937f43 [IMP] website: use plausible.io servers and account
This addition explains how to create and connect an existing plausible.io account in Odoo.

task-3540753

closes odoo/documentation#6495

Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2023-11-21 16:34:47 +00:00
Mathieu (mano)
d287d0807a [IMP] odoo_theme: toctrees-l1,l2 design improvement
Issue 1:
========
The toctrees in the documentation are visually inconsistent because of
the content. Sometimes we have titles that are also links and visually
collides with the rest of the toc making it hard to read. This applies
to toctree-l1 and toctree-l2.

Fix 1:
========
When we have a link and title toctree-l2 in a list containing other
nested toc, we apply another styling displaying it with the same color
as a title, but with an icon and hover behavior indicating that it is a
link. (This commit also changes the direction of the i-link icon to make
it standard).

Issue 2:
========
When we have only have toctree-l1 links without nested toc the toctree
is uselessly taking a lot of space.

Fix: 2
========

In these scenario we add a class to the toctree wrapper to replace the
toctree-l1 style with a toctree-l2.

task-3138525
task-3138563

part of

task-3059178

closes odoo/documentation#6502

X-original-commit: c62bf21987
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2023-11-21 11:59:59 +00:00
Jess Rogers (jero)
a11fa7e5b2 [REM] crm: google spreadsheet integration
closes odoo/documentation#6394

Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2023-11-21 11:59:53 +00:00
Odoo Translation Bot
815f4c89b7 [I18N] Update translation terms from Transifex 2023-11-19 01:40:48 +01:00
Felicious
9081e45aab [IMP] barcode: split docs + hone in on language
closes odoo/documentation#6492

X-original-commit: e7cd792466
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
Co-authored-by: brse-odoo <brse@odoo.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
2023-11-17 20:19:31 +00:00
oco-odoo
1a32165180 [IMP] accounting: new tag selector for custom reports
0c0cf8ebc9
added a new way to select accounts in the account_codes engine. This
commit adds some explanation in the doc on how to use this new syntax.

closes odoo/documentation#6494

Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2023-11-17 17:19:27 +00:00
173 changed files with 4142 additions and 1039 deletions

View File

@@ -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::

View File

@@ -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.

View File

@@ -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:

View File

@@ -129,6 +129,8 @@ Example
.. placeholder
.. _cheat_sheet/journals:
Journal entries
===============

View File

@@ -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
-----------------------

View File

@@ -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.

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -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
==================

View File

@@ -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.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -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

View File

@@ -1,3 +1,5 @@
:show-content:
=======
Payroll
=======

View File

@@ -13,3 +13,4 @@ Daily operations
operations/transfers_scratch
operations/barcode_nomenclature
operations/gs1_nomenclature
operations/gs1_usage

View File

@@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

View File

@@ -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.

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

View File

@@ -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.

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 492 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

View File

@@ -43,6 +43,8 @@ directly at creation on the product form.
the template product. Otherwise, you wont be able to differentiate
them.
.. _barcode/setup/location:
Set Locations Barcodes
======================

View File

@@ -11,3 +11,4 @@ Miscellaneous Operations
misc/owned_stock
misc/batch_transfers
misc/wave_transfers
misc/cluster_picking

View File

@@ -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.

View File

@@ -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.

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -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
========

View File

@@ -2,6 +2,8 @@
How to invoice the shipping cost to the customer?
=================================================
.. _inventory/shipping/invoice:
Overview
========

View File

@@ -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.

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -2,6 +2,8 @@
How to integrate a third party shipper?
=======================================
.. _inventory/shipping/third_party:
Overview
========

View File

@@ -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:

View File

@@ -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

View File

@@ -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>`.

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View File

@@ -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>`.

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

@@ -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.

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

@@ -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.

View File

@@ -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.

View File

@@ -8,4 +8,3 @@ Analyze performance
:titlesonly:
performance/win_loss
performance/google_spreadsheets

View File

@@ -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.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

View File

@@ -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`

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Some files were not shown because too many files have changed in this diff Show More