Compare commits
37 Commits
15.0-paypa
...
15.0-twili
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
59e821d455 | ||
|
|
476e019bff | ||
|
|
dbf60af282 | ||
|
|
573d201361 | ||
|
|
8cffb57dae | ||
|
|
fae103d6b3 | ||
|
|
d107b438cb | ||
|
|
7aa75380a8 | ||
|
|
a62e5958cb | ||
|
|
19f0d3d8a8 | ||
|
|
52bf00663e | ||
|
|
bf327d9200 | ||
|
|
b675584730 | ||
|
|
211268ee24 | ||
|
|
70f58a610d | ||
|
|
7c627f985d | ||
|
|
4218ba7964 | ||
|
|
a0b5762497 | ||
|
|
01f40f24ba | ||
|
|
afc4da633f | ||
|
|
e3379e2856 | ||
|
|
5c578d627a | ||
|
|
552ef54355 | ||
|
|
efc8dd0f12 | ||
|
|
529bed0c0a | ||
|
|
bbf780db5d | ||
|
|
bbf2617b99 | ||
|
|
24fc86d229 | ||
|
|
61da7ce7aa | ||
|
|
764093ac2e | ||
|
|
9e956f0be6 | ||
|
|
5e33cd5864 | ||
|
|
fd23308e93 | ||
|
|
db67fc2959 | ||
|
|
7c61c31038 | ||
|
|
4fc24468e4 | ||
|
|
214ce3075c |
8
conf.py
@@ -193,7 +193,7 @@ todo_include_todos = False
|
|||||||
|
|
||||||
intersphinx_mapping = {
|
intersphinx_mapping = {
|
||||||
'python': ('https://docs.python.org/3/', None),
|
'python': ('https://docs.python.org/3/', None),
|
||||||
'werkzeug': ('https://werkzeug.palletsprojects.com/en/1.0.x/', None),
|
'werkzeug': ('https://werkzeug.palletsprojects.com/en/2.3.x/', None),
|
||||||
}
|
}
|
||||||
|
|
||||||
github_user = 'odoo'
|
github_user = 'odoo'
|
||||||
@@ -211,6 +211,7 @@ sphinx.transforms.i18n.docname_to_domain = (
|
|||||||
# is populated. If a version is passed to `versions` but is not listed here, it will not be shown.
|
# is populated. If a version is passed to `versions` but is not listed here, it will not be shown.
|
||||||
versions_names = {
|
versions_names = {
|
||||||
'master': "Master",
|
'master': "Master",
|
||||||
|
'saas-16.3': "Odoo Online",
|
||||||
'saas-16.2': "Odoo Online",
|
'saas-16.2': "Odoo Online",
|
||||||
'saas-16.1': "Odoo Online",
|
'saas-16.1': "Odoo Online",
|
||||||
'16.0': "Odoo 16",
|
'16.0': "Odoo 16",
|
||||||
@@ -314,13 +315,16 @@ latex_documents = [
|
|||||||
'Odoo Enterprise Subscription Agreement (ES)', '', 'howto'),
|
'Odoo Enterprise Subscription Agreement (ES)', '', 'howto'),
|
||||||
('legal/terms/i18n/partnership_tex_es',
|
('legal/terms/i18n/partnership_tex_es',
|
||||||
'odoo_partnership_agreement_es.tex', 'Odoo Partnership Agreement (ES)', '', 'howto'),
|
'odoo_partnership_agreement_es.tex', 'Odoo Partnership Agreement (ES)', '', 'howto'),
|
||||||
|
|
||||||
|
('legal/terms/i18n/enterprise_tex_pt_BR', 'odoo_enterprise_agreement_pt_BR.tex',
|
||||||
|
'Odoo Enterprise Subscription Agreement (PT)', '', 'howto'),
|
||||||
]
|
]
|
||||||
|
|
||||||
# List of languages that have legal translations (excluding EN). The keys must be in
|
# List of languages that have legal translations (excluding EN). The keys must be in
|
||||||
# `languages_names`. These translations will have a link to their versions of the legal
|
# `languages_names`. These translations will have a link to their versions of the legal
|
||||||
# contracts, instead of the default EN one. The main legal documents are not part of the
|
# contracts, instead of the default EN one. The main legal documents are not part of the
|
||||||
# translations since they have legal meaning.
|
# translations since they have legal meaning.
|
||||||
legal_translations = ['de', 'es', 'fr', 'nl']
|
legal_translations = ['de', 'es', 'fr', 'nl', 'pt_BR']
|
||||||
|
|
||||||
# The name of an image file (relative to this directory) to place at the top of the title page.
|
# The name of an image file (relative to this directory) to place at the top of the title page.
|
||||||
latex_logo = 'static/img/odoo_logo.png'
|
latex_logo = 'static/img/odoo_logo.png'
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ Configuration samples
|
|||||||
|
|
||||||
* Show only databases with names beginning with 'mycompany'
|
* Show only databases with names beginning with 'mycompany'
|
||||||
|
|
||||||
in ``/etc/odoo.conf`` set:
|
in :ref:`the configuration file <reference/cmdline/config_file>` set:
|
||||||
|
|
||||||
.. code-block:: ini
|
.. code-block:: ini
|
||||||
|
|
||||||
@@ -55,7 +55,7 @@ in ``/etc/odoo.conf`` set:
|
|||||||
was sent to ``www.mycompany.com`` or ``mycompany.co.uk``, but not
|
was sent to ``www.mycompany.com`` or ``mycompany.co.uk``, but not
|
||||||
for ``www2.mycompany.com`` or ``helpdesk.mycompany.com``.
|
for ``www2.mycompany.com`` or ``helpdesk.mycompany.com``.
|
||||||
|
|
||||||
in ``/etc/odoo.conf`` set:
|
in :ref:`the configuration file <reference/cmdline/config_file>` set:
|
||||||
|
|
||||||
.. code-block:: ini
|
.. code-block:: ini
|
||||||
|
|
||||||
@@ -150,7 +150,7 @@ Configuration sample
|
|||||||
* with 'pwd' as a password
|
* with 'pwd' as a password
|
||||||
* filtering only db with a name beginning with 'mycompany'
|
* filtering only db with a name beginning with 'mycompany'
|
||||||
|
|
||||||
in ``/etc/odoo.conf`` set:
|
in :ref:`the configuration file <reference/cmdline/config_file>` set:
|
||||||
|
|
||||||
.. code-block:: ini
|
.. code-block:: ini
|
||||||
|
|
||||||
@@ -238,7 +238,7 @@ Configuration sample
|
|||||||
* We'll use 8 workers + 1 for cron. We'll also use a monitoring system to measure cpu load, and check if it's between 7 and 7.5 .
|
* We'll use 8 workers + 1 for cron. We'll also use a monitoring system to measure cpu load, and check if it's between 7 and 7.5 .
|
||||||
* RAM = 9 * ((0.8*150) + (0.2*1024)) ~= 3Go RAM for Odoo
|
* RAM = 9 * ((0.8*150) + (0.2*1024)) ~= 3Go RAM for Odoo
|
||||||
|
|
||||||
in ``/etc/odoo.conf``:
|
in :ref:`the configuration file <reference/cmdline/config_file>`:
|
||||||
|
|
||||||
.. code-block:: ini
|
.. code-block:: ini
|
||||||
|
|
||||||
@@ -273,7 +273,7 @@ Configuration sample
|
|||||||
* Redirect http requests to https
|
* Redirect http requests to https
|
||||||
* Proxy requests to odoo
|
* Proxy requests to odoo
|
||||||
|
|
||||||
in ``/etc/odoo.conf`` set:
|
in :ref:`the configuration file <reference/cmdline/config_file>` set:
|
||||||
|
|
||||||
.. code-block:: ini
|
.. code-block:: ini
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
|
|
||||||
.. _setup/enterprise:
|
.. _setup/enterprise:
|
||||||
|
|
||||||
===============================
|
===================================
|
||||||
Upgrade Community to Enterprise
|
Switch from Community to Enterprise
|
||||||
===============================
|
===================================
|
||||||
|
|
||||||
Depending on your current installation, there are multiple ways to upgrade
|
Depending on your current installation, there are multiple ways to upgrade
|
||||||
your community version.
|
your community version.
|
||||||
@@ -98,7 +98,7 @@ On Windows
|
|||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
$ odoo.exe -d <database_name> -i web_enterprise --stop-after-init
|
$ ..\python\python.exe odoo-bin -d <database_name> -i web_enterprise --stop-after-init
|
||||||
|
|
||||||
* No need to manually launch the server, the service is running.
|
* No need to manually launch the server, the service is running.
|
||||||
You should be able to connect to your Odoo Enterprise instance using your usual
|
You should be able to connect to your Odoo Enterprise instance using your usual
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 39 KiB |
@@ -23,47 +23,136 @@ This matrix shows the support status of every version.
|
|||||||
|
|
||||||
**Major releases are in bold type.**
|
**Major releases are in bold type.**
|
||||||
|
|
||||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
.. list-table::
|
||||||
| | Odoo Online | Odoo.sh | On-Premise | Release date | End of support |
|
:header-rows: 1
|
||||||
+=================+=============+==========+=============+================+========================+
|
:widths: auto
|
||||||
| Odoo saas~16.2 | |green| | N/A | N/A | March 2023 | June 2023 (planned) |
|
|
||||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
* -
|
||||||
| Odoo saas~16.1 | |green| | N/A | N/A | February 2023 | April 2023 |
|
- Odoo Online
|
||||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
- Odoo.sh
|
||||||
| **Odoo 16.0** | |green| | |green| | |green| | October 2022 | October 2025 (planned) |
|
- On-Premise
|
||||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
- Release date
|
||||||
| Odoo saas~15.2 | |red| | N/A | N/A | March 2022 | January 2023 |
|
- End of support
|
||||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
* - Odoo saas~16.3
|
||||||
| Odoo saas~15.1 | |red| | N/A | N/A | February 2022 | July 2022 |
|
- |green|
|
||||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
- N/A
|
||||||
| **Odoo 15.0** | |green| | |green| | |green| | October 2021 | October 2024 (planned) |
|
- N/A
|
||||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
- June 2023
|
||||||
| **Odoo 14.0** | |green| | |green| | |green| | October 2020 | October 2023 (planned) |
|
- September 2023 (planned)
|
||||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
* - Odoo saas~16.2
|
||||||
| **Odoo 13.0** | |red| | |red| | |red| | October 2019 | October 2022 |
|
- |green|
|
||||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
- N/A
|
||||||
| Odoo saas~12.3 | |red| | N/A | N/A | August 2019 | |
|
- N/A
|
||||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
- March 2023
|
||||||
| **Odoo 12.0** | |red| | |red| | |red| | October 2018 | October 2021 |
|
- July 2023 (planned)
|
||||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
* - Odoo saas~16.1
|
||||||
| Odoo saas~11.3 | |red| | N/A | N/A | April 2018 | |
|
- |red|
|
||||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
- N/A
|
||||||
| **Odoo 11.0** | |red| | |red| | |red| | October 2017 | October 2020 |
|
- N/A
|
||||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
- February 2023
|
||||||
| Odoo 10.saas~15 | |red| | N/A | N/A | March 2017 | |
|
- April 2023
|
||||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
* - **Odoo 16.0**
|
||||||
| Odoo 10.saas~14 | |red| | N/A | N/A | January 2017 | |
|
- |green|
|
||||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
- |green|
|
||||||
| **Odoo 10.0** | |red| | |red| | |red| | October 2016 | October 2019 |
|
- |green|
|
||||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
- October 2022
|
||||||
| Odoo 9.saas~11 | |red| | N/A | N/A | May 2016 | |
|
- October 2025 (planned)
|
||||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
* - Odoo saas~15.2
|
||||||
| **Odoo 9.0** | |red| | N/A | |red| | October 2015 | October 2018 |
|
- |red|
|
||||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
- N/A
|
||||||
| Odoo 8.saas~6 | |red| | N/A | N/A | February 2015 | |
|
- N/A
|
||||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
- March 2022
|
||||||
| **Odoo 8.0** | |red| | N/A | |red| | September 2014 | October 2017 |
|
- January 2023
|
||||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
* - Odoo saas~15.1
|
||||||
|
- |red|
|
||||||
|
- N/A
|
||||||
|
- N/A
|
||||||
|
- February 2022
|
||||||
|
- July 2022
|
||||||
|
* - **Odoo 15.0**
|
||||||
|
- |green|
|
||||||
|
- |green|
|
||||||
|
- |green|
|
||||||
|
- October 2021
|
||||||
|
- October 2024 (planned)
|
||||||
|
* - **Odoo 14.0**
|
||||||
|
- |green|
|
||||||
|
- |green|
|
||||||
|
- |green|
|
||||||
|
- October 2020
|
||||||
|
- October 2023 (planned)
|
||||||
|
* - **Odoo 13.0**
|
||||||
|
- |red|
|
||||||
|
- |red|
|
||||||
|
- |red|
|
||||||
|
- October 2019
|
||||||
|
- October 2022
|
||||||
|
* - Odoo saas~12.3
|
||||||
|
- |red|
|
||||||
|
- N/A
|
||||||
|
- N/A
|
||||||
|
- August 2019
|
||||||
|
-
|
||||||
|
* - **Odoo 12.0**
|
||||||
|
- |red|
|
||||||
|
- |red|
|
||||||
|
- |red|
|
||||||
|
- October 2018
|
||||||
|
- October 2021
|
||||||
|
* - Odoo saas~11.3
|
||||||
|
- |red|
|
||||||
|
- N/A
|
||||||
|
- N/A
|
||||||
|
- April 2018
|
||||||
|
-
|
||||||
|
* - **Odoo 11.0**
|
||||||
|
- |red|
|
||||||
|
- |red|
|
||||||
|
- |red|
|
||||||
|
- October 2017
|
||||||
|
- October 2020
|
||||||
|
* - Odoo 10.saas~15
|
||||||
|
- |red|
|
||||||
|
- N/A
|
||||||
|
- N/A
|
||||||
|
- March 2017
|
||||||
|
-
|
||||||
|
* - Odoo 10.saas~14
|
||||||
|
- |red|
|
||||||
|
- N/A
|
||||||
|
- N/A
|
||||||
|
- January 2017
|
||||||
|
-
|
||||||
|
* - **Odoo 10.0**
|
||||||
|
- |red|
|
||||||
|
- |red|
|
||||||
|
- |red|
|
||||||
|
- October 2016
|
||||||
|
- October 2019
|
||||||
|
* - Odoo 9.saas~11
|
||||||
|
- |red|
|
||||||
|
- N/A
|
||||||
|
- N/A
|
||||||
|
- May 2016
|
||||||
|
-
|
||||||
|
* - **Odoo 9.0**
|
||||||
|
- |red|
|
||||||
|
- N/A
|
||||||
|
- |red|
|
||||||
|
- October 2015
|
||||||
|
- October 2018
|
||||||
|
* - Odoo 8.saas~6
|
||||||
|
- |red|
|
||||||
|
- N/A
|
||||||
|
- N/A
|
||||||
|
- February 2015
|
||||||
|
-
|
||||||
|
* - **Odoo 8.0**
|
||||||
|
- |red|
|
||||||
|
- N/A
|
||||||
|
- |red|
|
||||||
|
- September 2014
|
||||||
|
- October 2017
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
|
|||||||
@@ -45,41 +45,101 @@ these databases if they have one, using their regular credentials.
|
|||||||
|
|
||||||
In addition, they cannot use the webshell nor have access to the server logs.
|
In addition, they cannot use the webshell nor have access to the server logs.
|
||||||
|
|
||||||
+---------------------+-----------------+-----------+-----------+
|
.. list-table::
|
||||||
| | | User | Admin |
|
:header-rows: 1
|
||||||
+=====================+=================+===========+===========+
|
:widths: auto
|
||||||
|Development | History | X | X |
|
|
||||||
+---------------------+-----------------+-----------+-----------+
|
* -
|
||||||
| | 1-click connect | X | X |
|
-
|
||||||
+---------------------+-----------------+-----------+-----------+
|
- User
|
||||||
| | Logs | X | X |
|
- Admin
|
||||||
+---------------------+-----------------+-----------+-----------+
|
* - Development
|
||||||
| | Shell/SSH | X | X |
|
- History
|
||||||
+---------------------+-----------------+-----------+-----------+
|
- |green|
|
||||||
| | Mails | X | X |
|
- |green|
|
||||||
+---------------------+-----------------+-----------+-----------+
|
* -
|
||||||
| | Settings | X | X |
|
- 1-click connect
|
||||||
+---------------------+-----------------+-----------+-----------+
|
- |green|
|
||||||
|Production & Staging | History | X | X |
|
- |green|
|
||||||
+---------------------+-----------------+-----------+-----------+
|
* -
|
||||||
| | 1-click connect | | X |
|
- Logs
|
||||||
+---------------------+-----------------+-----------+-----------+
|
- |green|
|
||||||
| | Logs | | X |
|
- |green|
|
||||||
+---------------------+-----------------+-----------+-----------+
|
* -
|
||||||
| | Shell/SSH | | X |
|
- Shell/SSH
|
||||||
+---------------------+-----------------+-----------+-----------+
|
- |green|
|
||||||
| | Mails | | X |
|
- |green|
|
||||||
+---------------------+-----------------+-----------+-----------+
|
* -
|
||||||
| | Monitoring | | X |
|
- Mails
|
||||||
+---------------------+-----------------+-----------+-----------+
|
- |green|
|
||||||
| | Backups | | X |
|
- |green|
|
||||||
+---------------------+-----------------+-----------+-----------+
|
* -
|
||||||
| | Settings | X | X |
|
- Upgrade
|
||||||
+---------------------+-----------------+-----------+-----------+
|
- |green|
|
||||||
|Status | | X | X |
|
- |green|
|
||||||
+---------------------+-----------------+-----------+-----------+
|
* -
|
||||||
|Settings | | | X |
|
- Settings
|
||||||
+---------------------+-----------------+-----------+-----------+
|
- |green|
|
||||||
|
- |green|
|
||||||
|
* - Production & Staging
|
||||||
|
- History
|
||||||
|
- |green|
|
||||||
|
- |green|
|
||||||
|
* -
|
||||||
|
- 1-click connect
|
||||||
|
-
|
||||||
|
- |green|
|
||||||
|
* -
|
||||||
|
- Logs
|
||||||
|
-
|
||||||
|
- |green|
|
||||||
|
* -
|
||||||
|
- Shell/SSH
|
||||||
|
-
|
||||||
|
- |green|
|
||||||
|
* -
|
||||||
|
- Mails
|
||||||
|
-
|
||||||
|
- |green|
|
||||||
|
* -
|
||||||
|
- Monitoring
|
||||||
|
-
|
||||||
|
- |green|
|
||||||
|
* -
|
||||||
|
- Backups
|
||||||
|
-
|
||||||
|
- |green|
|
||||||
|
* -
|
||||||
|
- Upgrade
|
||||||
|
-
|
||||||
|
- |green|
|
||||||
|
* -
|
||||||
|
- Settings
|
||||||
|
- |green|\*
|
||||||
|
- |green|
|
||||||
|
* - Status
|
||||||
|
-
|
||||||
|
- |green|
|
||||||
|
- |green|
|
||||||
|
* - Settings
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- |green|
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
\* Only in staging branches
|
||||||
|
|
||||||
|
.. |green| raw:: html
|
||||||
|
|
||||||
|
<span class="text-success" style="font-size: 32px; line-height: 0.5">●</span>
|
||||||
|
|
||||||
|
.. |orange| raw:: html
|
||||||
|
|
||||||
|
<span class="text-warning" style="font-size: 32px; line-height: 0.5">●</span>
|
||||||
|
|
||||||
|
.. |red| raw:: html
|
||||||
|
|
||||||
|
<span class="text-danger" style="font-size: 32px; line-height: 0.5">●</span>
|
||||||
|
|
||||||
Public Access
|
Public Access
|
||||||
=============
|
=============
|
||||||
|
|||||||
@@ -55,137 +55,178 @@ accounts, smart matching suggestions, etc.
|
|||||||
Double-entry bookkeeping
|
Double-entry bookkeeping
|
||||||
========================
|
========================
|
||||||
|
|
||||||
Odoo automatically creates all the behind-the-scenes journal entries
|
Odoo automatically creates all the underlying journal entries for all accounting transactions (e.g.,
|
||||||
for each of your accounting transactions: customer invoices, point of
|
customer invoices, vendor bills, point-of-sales orders, expenses, inventory valuations, etc.).
|
||||||
sale order, expenses, inventory moves, etc.
|
|
||||||
|
|
||||||
Odoo uses the rules of double-entry bookkeeping system: all journal
|
Odoo uses the double-entry bookkeeping system, whereby every entry needs a corresponding and
|
||||||
entries are automatically balanced (sum of debits = sum of credits).
|
opposite counterpart in a different account, with one account debited and the other credited.
|
||||||
|
It ensures that all transactions are recorded accurately and consistently and that the accounts
|
||||||
|
always balance.
|
||||||
|
|
||||||
.. seealso::
|
.. seealso::
|
||||||
- :doc:`Understand Odoo's accounting transactions per document
|
:doc:`Accounting Cheat Sheet <accounting/get_started/cheat_sheet>`
|
||||||
<accounting/get_started/cheat_sheet>`
|
|
||||||
|
|
||||||
Accrual and Cash Basis Methods
|
Accrual and cash basis
|
||||||
==============================
|
|
||||||
|
|
||||||
Odoo supports both accrual and cash basis reporting. This allows you to
|
|
||||||
report income / expense at the time transactions occur (i.e., accrual basis), or when
|
|
||||||
payment is made or received (i.e., cash basis).
|
|
||||||
|
|
||||||
Multi-companies
|
|
||||||
===============
|
|
||||||
|
|
||||||
Odoo allows one to manage several companies within the same database. Each
|
|
||||||
company has its own chart of accounts and rules. You can get
|
|
||||||
consolidation reports following your consolidation rules.
|
|
||||||
|
|
||||||
Users can access several companies but always work in one company at a
|
|
||||||
time.
|
|
||||||
|
|
||||||
Multi-currencies
|
|
||||||
================
|
|
||||||
|
|
||||||
Every transaction is recorded in the default currency of the
|
|
||||||
company. For transactions occurring in another currency, Odoo stores
|
|
||||||
both the value in the currency of the company and the value in the
|
|
||||||
currency of the transaction. Odoo can generate currencies gains and
|
|
||||||
losses after the reconciliation of the journal items.
|
|
||||||
|
|
||||||
Currency rates are updated once a day using a yahoo.com online
|
|
||||||
web-service.
|
|
||||||
|
|
||||||
International Standards
|
|
||||||
=======================
|
|
||||||
|
|
||||||
Odoo accounting supports more than 50 countries. The Odoo core
|
|
||||||
accounting implements accounting standards that are common to all
|
|
||||||
countries. Specific modules exist per country for the
|
|
||||||
specificities of the country like the chart of accounts, taxes, or
|
|
||||||
bank interfaces.
|
|
||||||
|
|
||||||
In particular, Odoo's core accounting engine supports:
|
|
||||||
|
|
||||||
* Anglo-Saxon Accounting (U.S., U.K.,, and other English-speaking
|
|
||||||
countries including Ireland, Canada, Australia, and New Zealand)
|
|
||||||
where costs of good sold are reported when products are
|
|
||||||
sold/delivered.
|
|
||||||
* European accounting where expenses are accounted at the supplier
|
|
||||||
bill.
|
|
||||||
|
|
||||||
Odoo has modules to comply with IFRS rules.
|
|
||||||
|
|
||||||
Accounts Receivable and Payable
|
|
||||||
===============================
|
|
||||||
|
|
||||||
By default, Odoo uses a single account for all account
|
|
||||||
receivable entries and one for all accounts payable entries. You can
|
|
||||||
create separate accounts per customers/suppliers, but you don't need
|
|
||||||
to.
|
|
||||||
|
|
||||||
As transactions are associated to customers or suppliers, you get
|
|
||||||
reports to perform analysis per customer/supplier such as the customer
|
|
||||||
statement, revenues per customers, aged receivable/payables, ...
|
|
||||||
|
|
||||||
Wide range of financial reports
|
|
||||||
===============================
|
|
||||||
|
|
||||||
In Odoo, you can generate financial reports in real time. Odoo's
|
|
||||||
reports range from basic accounting reports to advanced management
|
|
||||||
reports. Odoo's reports include:
|
|
||||||
|
|
||||||
* Performance reports (such as Profit and Loss, Budget Variance)
|
|
||||||
* Position reports (such as Balance Sheet, Aged Payables, Aged
|
|
||||||
Receivables)
|
|
||||||
* Cash reports (such as Bank Summary)
|
|
||||||
* Detail reports (such as Trial Balance and General Ledger)
|
|
||||||
* Management reports (such as Budgets, Executive Summary)
|
|
||||||
|
|
||||||
Odoo's report engine allows you to customize your own report based on
|
|
||||||
your own formulae.
|
|
||||||
|
|
||||||
Import bank feeds automatically
|
|
||||||
===============================
|
|
||||||
|
|
||||||
Bank reconciliation is a process that matches your bank statement
|
|
||||||
lines, as supplied by the bank, to your accounting transactions in the
|
|
||||||
general ledger. Odoo makes bank reconciliation easy by frequently
|
|
||||||
importing bank statement lines from your bank directly into your Odoo
|
|
||||||
account. This means you can have a daily view of your cashflow without
|
|
||||||
having to log into your online banking or wait for your paper bank
|
|
||||||
statements.
|
|
||||||
|
|
||||||
Odoo speeds up bank reconciliation by matching most of your imported
|
|
||||||
bank statement lines to your accounting transactions. Odoo also
|
|
||||||
remembers how you've treated other bank statement lines and provides
|
|
||||||
suggested general ledger transactions.
|
|
||||||
|
|
||||||
Calculate the tax you owe your tax authority
|
|
||||||
============================================
|
|
||||||
|
|
||||||
Odoo totals all your accounting transactions for your tax period and
|
|
||||||
uses these totals to calculate your tax obligation. You can then check
|
|
||||||
your sales tax by running Odoo's Tax Report.
|
|
||||||
|
|
||||||
Inventory Valuation
|
|
||||||
===================
|
|
||||||
|
|
||||||
Odoo support both periodic (manual) and perpetual (automated)
|
|
||||||
inventory valuations. The available methods are standard price,
|
|
||||||
average price, LIFO (for countries allowing it) and FIFO.
|
|
||||||
|
|
||||||
.. seealso::
|
|
||||||
- :doc:`View impact of the valuation method on your transactions
|
|
||||||
</applications/inventory_and_mrp/inventory/management/reporting/inventory_valuation_config>`
|
|
||||||
|
|
||||||
Easy retained earnings
|
|
||||||
======================
|
======================
|
||||||
|
|
||||||
Retained earnings are the portion of income retained by your
|
Both accrual and cash basis accounting are supported in Odoo. This allows reporting income and
|
||||||
business. Odoo automatically calculates your current year earnings in
|
expense either when the transaction occurs (accrual basis) or when the payment is made or received
|
||||||
real time so no year-end journal or rollover is required. This is
|
(cash basis).
|
||||||
calculated by reporting the profit and loss balance to your balance
|
|
||||||
sheet report automatically.
|
.. seealso::
|
||||||
|
:doc:`Cash basis <accounting/taxes/cash_basis>`
|
||||||
|
|
||||||
|
Multi-company
|
||||||
|
=============
|
||||||
|
|
||||||
|
Several companies can be managed within the same database. Each company has its :doc:`chart of
|
||||||
|
accounts <accounting/get_started/chart_of_accounts>`, which is also useful to generate consolidation
|
||||||
|
reports. Users can access several companies but can only work on a single company's accounting at a
|
||||||
|
time.
|
||||||
|
|
||||||
|
Multi-currency environment
|
||||||
|
==========================
|
||||||
|
|
||||||
|
A :doc:`multi-currency <accounting/get_started/multi_currency>` environment with an automated
|
||||||
|
exchange rate to ease international transactions is available in Odoo. Every transaction is recorded
|
||||||
|
in the company's default currency; for transactions occurring in another currency, Odoo stores both
|
||||||
|
the value in the company's currency and the transactions' currency value. Odoo generates currency
|
||||||
|
gains and losses after reconciling the journal items.
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
:doc:`Manage a bank in a foreign currency <accounting/bank/foreign_currency>`
|
||||||
|
|
||||||
|
International standards
|
||||||
|
=======================
|
||||||
|
|
||||||
|
Odoo Accounting supports more than 70 countries. It provides the central standards and mechanisms
|
||||||
|
common to all nations, and thanks to country-specific modules, local requirements are fulfilled.
|
||||||
|
Fiscal positions exist to address regional specificities like the chart of accounts, taxes, or any
|
||||||
|
other requirements.
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
:doc:`Fiscal localization packages <fiscal_localizations>`
|
||||||
|
|
||||||
|
Accounts receivable and payable
|
||||||
|
===============================
|
||||||
|
|
||||||
|
By default, there is a single account for the account receivable entries and one for the account
|
||||||
|
payable entries. As transactions are linked to your **contacts**, you can run a report per customer,
|
||||||
|
vendor, or supplier.
|
||||||
|
|
||||||
|
The **Partner Ledger** report displays the balance of your customers and suppliers. It is available
|
||||||
|
by going to :menuselection:`Accounting --> Reporting --> Partner Ledger`.
|
||||||
|
|
||||||
|
Reporting
|
||||||
|
=========
|
||||||
|
|
||||||
|
The following financial :doc:`reports <accounting/reporting>` are available and updated in
|
||||||
|
real-time:
|
||||||
|
|
||||||
|
+-----------------------------------------------+
|
||||||
|
| Financial reports |
|
||||||
|
+============+==================================+
|
||||||
|
| Statement | Balance sheet |
|
||||||
|
| +----------------------------------+
|
||||||
|
| | Profit and loss |
|
||||||
|
| +----------------------------------+
|
||||||
|
| | Cash flow statement |
|
||||||
|
| +----------------------------------+
|
||||||
|
| | Tax report |
|
||||||
|
| +----------------------------------+
|
||||||
|
| | ES sales list |
|
||||||
|
+------------+----------------------------------+
|
||||||
|
| Audit | General ledger |
|
||||||
|
| +----------------------------------+
|
||||||
|
| | Trial balance |
|
||||||
|
| +----------------------------------+
|
||||||
|
| | Journal report |
|
||||||
|
| +----------------------------------+
|
||||||
|
| | Intrastat report |
|
||||||
|
| +----------------------------------+
|
||||||
|
| | Check register |
|
||||||
|
+------------+----------------------------------+
|
||||||
|
| Partner | Partner ledger |
|
||||||
|
| +----------------------------------+
|
||||||
|
| | Aged receivable |
|
||||||
|
| +----------------------------------+
|
||||||
|
| | Aged payable |
|
||||||
|
+------------+----------------------------------+
|
||||||
|
| Management | Invoice analysis |
|
||||||
|
| +----------------------------------+
|
||||||
|
| | Unrealized currency gains/losses |
|
||||||
|
| +----------------------------------+
|
||||||
|
| | Depreciation schedule |
|
||||||
|
| +----------------------------------+
|
||||||
|
| | Disallowed expenses |
|
||||||
|
| +----------------------------------+
|
||||||
|
| | Budget analysis |
|
||||||
|
| +----------------------------------+
|
||||||
|
| | Product margins |
|
||||||
|
| +----------------------------------+
|
||||||
|
| | 1099 report |
|
||||||
|
+------------+----------------------------------+
|
||||||
|
|
||||||
|
.. tip::
|
||||||
|
:doc:`Create and customize reports <accounting/reporting/customize>` with Odoo's report engine.
|
||||||
|
|
||||||
|
Tax report
|
||||||
|
----------
|
||||||
|
|
||||||
|
Odoo computes all accounting transactions for the specific tax period and uses these totals to
|
||||||
|
calculate the tax obligation.
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
Once the tax report has been generated for a period, Odoo locks it and prevents the creation of
|
||||||
|
new journal entries involving VAT. Any correction to customer invoices or vendor bills has to
|
||||||
|
be recorded in the next period.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Depending on the country's localization, an XML version of the tax report can be generated to be
|
||||||
|
uploaded to the VAT platform of the relevant taxation authority.
|
||||||
|
|
||||||
|
Bank synchronization
|
||||||
|
====================
|
||||||
|
|
||||||
|
The bank synchronization system directly connects with your bank institution to automatically
|
||||||
|
import all transactions into your database. It gives an overview of your cash flow without logging
|
||||||
|
into an online banking system or waiting for paper bank statements.
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
:doc:`Bank synchronization <accounting/bank/bank_synchronization>`
|
||||||
|
|
||||||
|
Inventory valuation
|
||||||
|
===================
|
||||||
|
|
||||||
|
Both periodic (manual) and perpetual (automated) inventory valuations are supported in Odoo. The
|
||||||
|
available methods are standard price, average price, :abbr:`LIFO (Last-In, First-Out)` and
|
||||||
|
:abbr:`FIFO (First-In, First-Out).`
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
:doc:`View the impact of the valuation methods on transactions
|
||||||
|
<../inventory_and_mrp/inventory/management/reporting/inventory_valuation_config>`
|
||||||
|
|
||||||
|
Retained earnings
|
||||||
|
=================
|
||||||
|
|
||||||
|
Retained earnings are the portion of income retained by a business. Odoo calculates current year
|
||||||
|
earnings in real-time, so no year-end journal or rollover is required. The profit
|
||||||
|
and loss balance is automatically reported on the balance sheet report.
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
:doc:`Accounting Cheat Sheet <accounting/get_started/cheat_sheet>`
|
||||||
|
|
||||||
|
Fiduciaries
|
||||||
|
===========
|
||||||
|
|
||||||
|
The :guilabel:`Accounting Firms` mode can be activated by going to :menuselection:`Accounting -->
|
||||||
|
Configuration --> Settings --> Accounting Firms mode`. When enabled:
|
||||||
|
|
||||||
|
- The document's sequence becomes editable on all documents;
|
||||||
|
- The :guilabel:`Total (tax incl.)` field appears to speed up and control the encoding by automating
|
||||||
|
line creation with the right account and tax;
|
||||||
|
- :guilabel:`Invoice Date` and :guilabel:`Bill Date` are pre-filled when encoding a transaction.
|
||||||
|
- A :guilabel:`Quick encoding` option is available for customer invoices and vendor bills.
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:titlesonly:
|
:titlesonly:
|
||||||
|
|||||||
@@ -1,69 +1,61 @@
|
|||||||
============
|
============
|
||||||
EPC QR Codes
|
EPC QR codes
|
||||||
============
|
============
|
||||||
|
|
||||||
European Payments Council Quick Response Code,
|
European Payments Council quick response codes, or **EPC QR codes**, are two-dimensional barcodes
|
||||||
or **EPC QR Code**, are two-dimensional barcodes
|
that customers can scan with their **mobile banking applications** to initiate a **SEPA credit
|
||||||
that customers can scan with their **mobile banking
|
transfer (SCT)** and pay their invoices instantly.
|
||||||
applications** to initiate a **SEPA Credit Transfer
|
|
||||||
(SCT)**, and pay their invoices instantly.
|
|
||||||
|
|
||||||
In addition to bringing ease of use and speed,
|
In addition to bringing ease of use and speed, it greatly reduces typing errors that would
|
||||||
it greatly reduces typing errors that would potentially
|
potentially make for payment issues.
|
||||||
make for payment issues.
|
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
This feature is only available in several European
|
This feature is only available for companies in several European countries such as Austria,
|
||||||
countries such as Austria, Belgium, Finland, Germany,
|
Belgium, Finland, Germany, and the Netherlands.
|
||||||
and The Netherlands.
|
|
||||||
|
.. seealso::
|
||||||
|
- :doc:`../bank`
|
||||||
|
- `Odoo Academy: QR Code on Invoices for European Customers <https://www.odoo.com/r/VuU>`_
|
||||||
|
|
||||||
Configuration
|
Configuration
|
||||||
=============
|
=============
|
||||||
|
|
||||||
Go to :menuselection:`Accounting --> Configuration --> Settings`
|
Go to :menuselection:`Accounting --> Configuration --> Settings` and activate the :guilabel:`QR
|
||||||
and activate the **SEPA QR Code** feature.
|
Codes` feature in the :guilabel:`Customer Payments` section.
|
||||||
|
|
||||||
.. image:: epc_qr_code/epc_qr_code01.png
|
Configure your bank account's journal
|
||||||
:align: center
|
|
||||||
|
|
||||||
Configure your Bank Account’s journal
|
|
||||||
-------------------------------------
|
-------------------------------------
|
||||||
|
|
||||||
Make sure that your *Bank Account* is correctly configured
|
Make sure that your :guilabel:`Bank Account` is correctly configured in Odoo with your IBAN and BIC.
|
||||||
on Odoo with your IBAN and BIC.
|
|
||||||
|
|
||||||
To do so, go to :menuselection:`Accounting --> Configuration
|
To do so, go to :menuselection:`Accounting --> Configuration --> Journals`, open your bank journal,
|
||||||
--> Journals`, open your *bank journal*, then fill out the
|
then fill out the :guilabel:`Account Number` and :guilabel:`Bank` under the :guilabel:`Bank Account
|
||||||
*Bank Account* and *Bank* under the *Bank Account* tab.
|
Number` column.
|
||||||
|
|
||||||
.. image:: epc_qr_code/epc_qr_code02.png
|
.. image:: epc_qr_code/bank-journal.png
|
||||||
:align: center
|
:alt: Bank account number column in the bank journal
|
||||||
|
|
||||||
Issue Invoices with EPC QR Codes
|
Issue invoices with EPC QR codes
|
||||||
================================
|
================================
|
||||||
|
|
||||||
EPC QR Codes are added automatically to your invoices, as
|
EPC QR codes are added automatically to your invoices. Customers whose bank supports making payments
|
||||||
long as you issue them to customers that are located in a
|
via EPC QR codes will be able to scan the code and pay the invoice.
|
||||||
country where this feature is available.
|
|
||||||
|
|
||||||
Go to :menuselection:`Accounting --> Customers --> Invoices`,
|
Go to :menuselection:`Accounting --> Customers --> Invoices`, and create a new invoice.
|
||||||
and create a new invoice.
|
|
||||||
|
|
||||||
Before posting it, open the *Other Info* tab. Odoo automatically
|
Before posting it, open the :guilabel:`Other Info` tab. Odoo automatically fills out the
|
||||||
fills out the *Bank Account* field with your IBAN.
|
:guilabel:`Recipient Bank` field with your IBAN.
|
||||||
|
|
||||||
Make sure that the account indicated is the one you want to use to
|
.. note::
|
||||||
receive your customer’s payment as Odoo uses this field to generate
|
In the :guilabel:`Other Info` tab, the account indicated in the :guilabel:`Recipient Bank` field
|
||||||
the EPC QR Code.
|
is used to receive your customer's payment. Odoo automatically populates this field with your
|
||||||
|
IBAN by default and uses it to generate the EPC QR code.
|
||||||
|
|
||||||
.. image:: epc_qr_code/epc_qr_code03.png
|
When the invoice is printed or previewed, the QR code is included at the bottom.
|
||||||
:align: center
|
|
||||||
|
.. image:: epc_qr_code/invoice-qr-code.png
|
||||||
|
:alt: QR code on a customer invoice
|
||||||
|
|
||||||
.. tip::
|
.. tip::
|
||||||
If you want to issue an invoice without an EPC QR Code,
|
If you want to issue an invoice without an EPC QR code, remove the IBAN indicated in the
|
||||||
remove the IBAN indicated in the *Bank Account* field,
|
:guilabel:`Recipient Bank` field, under the :guilabel:`Other Info` tab of the invoice.
|
||||||
under the *Other Info* tab of the invoice.
|
|
||||||
|
|
||||||
.. seealso::
|
|
||||||
* :doc:`../bank`
|
|
||||||
* `Odoo Academy: QR Code on Invoices for European Customers <https://www.odoo.com/r/VuU>`_
|
|
||||||
|
|||||||
|
After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 13 KiB |
@@ -196,3 +196,4 @@ Send yourself a sample invoice by email to make sure everything is correctly con
|
|||||||
get_started/chart_of_accounts
|
get_started/chart_of_accounts
|
||||||
get_started/multi_currency
|
get_started/multi_currency
|
||||||
get_started/avg_price_valuation
|
get_started/avg_price_valuation
|
||||||
|
get_started/vat_units
|
||||||
|
|||||||
@@ -0,0 +1,86 @@
|
|||||||
|
=========
|
||||||
|
VAT units
|
||||||
|
=========
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
This is only applicable to multi-company environments.
|
||||||
|
|
||||||
|
A **VAT unit** is a group of VAT-taxable enterprises that are legally independent of each other but
|
||||||
|
are closely linked financially, organizationally, and economically and therefore considered the same
|
||||||
|
VAT-taxable enterprise. **VAT units** are not mandatory, but if created, constituent companies of
|
||||||
|
the unit must belong to the same **country**, use the same **currency**, and one company must be
|
||||||
|
designated as the **representative** company of the **VAT unit**. **VAT units** receive a specific
|
||||||
|
**tax ID** intended only for **tax returns**. **Constituent** companies keep their **tax ID** used
|
||||||
|
for **commercial purposes**.
|
||||||
|
|
||||||
|
.. example::
|
||||||
|
Enterprise **A** owes €300.000,00 of VAT taxes and enterprise **B** can recover €280.000,00 of
|
||||||
|
VAT taxes. They form up as a **VAT unit** so that the two amounts balance out and must conjointly
|
||||||
|
only pay €20.000,00 of VAT taxes.
|
||||||
|
|
||||||
|
Configuration
|
||||||
|
=============
|
||||||
|
|
||||||
|
To configure a **VAT unit**, go to :menuselection:`Settings --> General Settings`, scroll down to
|
||||||
|
the :guilabel:`Companies` section, and click :guilabel:`Manage Companies`. Select the company to
|
||||||
|
serve the **representative** role, and in the :guilabel:`General Information` tab, fill in the
|
||||||
|
mandatory fields for the .XML export when exporting the **tax report**: :guilabel:`Company Name`,
|
||||||
|
:guilabel:`Address`, :guilabel:`VAT`, :guilabel:`Currency`, :guilabel:`Phone`, and
|
||||||
|
:guilabel:`Email`.
|
||||||
|
|
||||||
|
.. image:: vat_units/general.png
|
||||||
|
:align: center
|
||||||
|
:alt: General information tab
|
||||||
|
|
||||||
|
Then, click on the :guilabel:`VAT Units` tab, :guilabel:`Add a line`, and either select an existing
|
||||||
|
**VAT unit**, or create a new one. Enter a **name** for the unit, :guilabel:`Country` of the
|
||||||
|
constituent companies and tax report, the :guilabel:`Companies`, the :guilabel:`Main Company` that
|
||||||
|
serves the **representative** role, and the :guilabel:`Tax ID` of the **VAT unit**.
|
||||||
|
|
||||||
|
.. image:: vat_units/vat-unit.png
|
||||||
|
:align: center
|
||||||
|
:alt: VAT units tab
|
||||||
|
|
||||||
|
Fiscal position
|
||||||
|
---------------
|
||||||
|
|
||||||
|
As transactions between constituents of the same **VAT unit** are not subject to VAT, it is possible
|
||||||
|
to create a :doc:`tax mapping (fiscal position) <../taxes/fiscal_positions>` to avoid the
|
||||||
|
application of VAT on inter-constituent transactions.
|
||||||
|
|
||||||
|
Be sure a constituent company has been selected before, then go to :menuselection:`Accounting -->
|
||||||
|
Configuration --> Fiscal Positions`, and :guilabel:`Create` a new **fiscal position**. Click the
|
||||||
|
:guilabel:`Tax Mapping` tab, select the :guilabel:`Tax on Product` usually applied for
|
||||||
|
**non-constituent** transactions, and in :guilabel:`Tax to Apply`, select the 0% tax to apply for
|
||||||
|
**constituent** transactions.
|
||||||
|
|
||||||
|
Do the same for the :guilabel:`Account Mapping` tab if required, and repeat this process for
|
||||||
|
**each** constituent company on your database.
|
||||||
|
|
||||||
|
.. Example::
|
||||||
|
Depending on your :doc:`localization package </applications/finance/fiscal_localizations>`, taxes
|
||||||
|
may vary from the screenshot displayed.
|
||||||
|
|
||||||
|
.. image:: vat_units/fiscal-positions.png
|
||||||
|
:align: center
|
||||||
|
:alt: Tax mapping of fiscal position for VAT unit
|
||||||
|
|
||||||
|
Then, assign the fiscal position by opening the **Contacts** app. Search for a **constituent**
|
||||||
|
company, and open the contact's **card**. Click the :guilabel:`Sales & Purchase` tab, and in the
|
||||||
|
:guilabel:`Fiscal Position` field, input the **fiscal position** created for the **VAT unit**.
|
||||||
|
Repeat the process for each **constituent** company card form, on each company database.
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
:doc:`../taxes/fiscal_positions`.
|
||||||
|
|
||||||
|
Tax report
|
||||||
|
==========
|
||||||
|
|
||||||
|
The **representative** company can access the aggregated tax report of the **VAT unit** by going to
|
||||||
|
:menuselection:`Accounting --> Reporting --> Tax Report`, and selecting the **VAT unit** in
|
||||||
|
:guilabel:`Tax Unit`. This report contains the aggregated transactions of all **constituents** and
|
||||||
|
the .XML export contains the name and VAT number of the **main** company.
|
||||||
|
|
||||||
|
.. image:: vat_units/report.png
|
||||||
|
:align: center
|
||||||
|
:alt: VAT unit tax report
|
||||||
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 5.8 KiB |
|
After Width: | Height: | Size: 10 KiB |
@@ -4,8 +4,8 @@ Follow-up on invoices
|
|||||||
|
|
||||||
A follow-up message can be sent to customers when a payment is overdue. Odoo helps you identify late
|
A follow-up message can be sent to customers when a payment is overdue. Odoo helps you identify late
|
||||||
payments and allows you to schedule and send the appropriate reminders using **follow-up actions**
|
payments and allows you to schedule and send the appropriate reminders using **follow-up actions**
|
||||||
that trigger automatically one or more actions according to the number of overdue days. You can send
|
that automatically trigger one or more actions according to the number of overdue days. You can send
|
||||||
your follow-ups via different means such as email, post, or SMS.
|
your follow-ups via different means, such as email, post, or SMS.
|
||||||
|
|
||||||
.. seealso::
|
.. seealso::
|
||||||
- `Odoo Tutorials: Payment Follow-up <https://www.odoo.com/slides/slide/payment-follow-up-1682>`_
|
- `Odoo Tutorials: Payment Follow-up <https://www.odoo.com/slides/slide/payment-follow-up-1682>`_
|
||||||
@@ -48,7 +48,7 @@ options:
|
|||||||
- **%(company_name)s**: User's company name.
|
- **%(company_name)s**: User's company name.
|
||||||
|
|
||||||
.. tip::
|
.. tip::
|
||||||
To send a reminder before the actual due date is reached, set a negative number of due days.
|
Set a negative number of days to send a reminder before the actual due date.
|
||||||
|
|
||||||
Follow-up reports
|
Follow-up reports
|
||||||
=================
|
=================
|
||||||
@@ -66,16 +66,15 @@ It is up to you to decide how to remind your customer. You can select :guilabel:
|
|||||||
:guilabel:`Done` to view the next follow-up that needs your attention.
|
:guilabel:`Done` to view the next follow-up that needs your attention.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
- The contact information available on the invoice or on the contact form is used to send the
|
- The contact information on the invoice or the contact form is used to send the reminder.
|
||||||
reminder.
|
|
||||||
- When the reminder is sent, it is documented in the chatter of the invoice.
|
- When the reminder is sent, it is documented in the chatter of the invoice.
|
||||||
- If it is not the right time for a reminder, you can specify the :guilabel:`Next Reminder Date`
|
- If it is not the right time for a reminder, you can specify the :guilabel:`Next Reminder Date`
|
||||||
and click on :guilabel:`Remind me later`. You will get the next report according to the next
|
and click on :guilabel:`Remind me later`. You will get the next report according to the next
|
||||||
reminder date set on the statement.
|
reminder date set on the statement.
|
||||||
|
|
||||||
.. tip::
|
.. tip::
|
||||||
Reconcile your bank statements right before launching your follow-up process to avoid sending a
|
Reconcile all bank statements right before launching the follow-up process to avoid sending a
|
||||||
reminder to a customer that has already paid you.
|
reminder to a customer that has already paid.
|
||||||
|
|
||||||
Debtor's trust level
|
Debtor's trust level
|
||||||
--------------------
|
--------------------
|
||||||
|
|||||||
@@ -304,7 +304,7 @@ directly to a product line.
|
|||||||
|
|
||||||
taxes/cash_basis
|
taxes/cash_basis
|
||||||
taxes/retention
|
taxes/retention
|
||||||
taxes/vat_validation
|
taxes/vat_verification
|
||||||
taxes/fiscal_positions
|
taxes/fiscal_positions
|
||||||
taxes/avatax
|
taxes/avatax
|
||||||
taxes/taxcloud
|
taxes/taxcloud
|
||||||
|
|||||||
@@ -2,68 +2,64 @@
|
|||||||
EU intra-community distance selling
|
EU intra-community distance selling
|
||||||
===================================
|
===================================
|
||||||
|
|
||||||
**Distance sales within the European Union** include cross-border sales of goods and services to a
|
EU intra-community distance selling involves the cross-border trade of goods and services from
|
||||||
private consumer (B2C) in another EU Member State when the seller doesn't meet face-to-face with the
|
vendors registered for VAT purposes to individuals (B2C) located in a European Union member state.
|
||||||
customer. Organizations must ensure that the VAT on distance sales is paid to the Member State in
|
The transaction is conducted remotely, typically through online platforms, mail orders, telephone,
|
||||||
which the goods or services are delivered.
|
or other means of communication.
|
||||||
|
|
||||||
|
EU intra-community distance selling is subject to specific VAT rules and regulations. The vendor
|
||||||
|
must charge VAT per the VAT rate applicable in the buyer's country.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
This remains true even if your organization is located outside of the European Union.
|
This remains applicable even if the vendor is located outside of the European Union.
|
||||||
|
|
||||||
While this regulation mainly applies to :doc:`eCommerce <../../../websites/ecommerce>` sales to
|
|
||||||
private EU consumers, it is also valid for mail order sales and telesales.
|
|
||||||
|
|
||||||
The Union **One-Stop Shop (OSS)** is an online portal where businesses can register for the OSS and
|
|
||||||
declare their intra-community distance sales. Each EU member state integrates an online OSS portal.
|
|
||||||
|
|
||||||
The **EU intra-community Distance Selling** feature helps your organization comply with this
|
|
||||||
regulation by creating and configuring new :doc:`fiscal positions <fiscal_positions>` and
|
|
||||||
:doc:`taxes <../taxes>` based on your company's country.
|
|
||||||
|
|
||||||
.. seealso::
|
|
||||||
- `European Commission: OSS | Taxation and Customs Union
|
|
||||||
<https://ec.europa.eu/taxation_customs/business/vat/oss_en>`_
|
|
||||||
|
|
||||||
.. _eu_distance_selling/configuration:
|
|
||||||
|
|
||||||
Configuration
|
Configuration
|
||||||
=============
|
=============
|
||||||
|
|
||||||
Go to :menuselection:`Accounting/Invoicing --> Settings --> Taxes`, then enable **EU intra-community
|
The **EU Intra-community Distance Selling** feature helps you comply with this regulation by
|
||||||
Distance Selling** (or **EU Digital Goods VAT** if you created your database before July 1, 2021),
|
creating and configuring new **fiscal positions** and **taxes** based on your company's country. To
|
||||||
and *Save*.
|
enable it, go to :menuselection:`Accounting --> Configuration --> Settings --> Taxes`, tick
|
||||||
|
:guilabel:`EU Intra-community Distance Selling`, and :guilabel:`Save`.
|
||||||
|
|
||||||
.. image:: eu_distance_selling/enable-feature.png
|
.. image:: eu_distance_selling/enable-feature.png
|
||||||
:align: center
|
|
||||||
:alt: EU intra-community Distance Selling feature in Odoo Accounting settings
|
:alt: EU intra-community Distance Selling feature in Odoo Accounting settings
|
||||||
|
|
||||||
.. important::
|
.. tip::
|
||||||
Please :ref:`upgrade the module <general/upgrade>` `l10n_eu_service` if you already installed it
|
Whenever you add or modify taxes, you can automatically update your fiscal positions. To do so,
|
||||||
before **July 1, 2021**, or if you activated the feature **EU Digital Goods VAT** in the
|
go to :menuselection:`Accounting/Invoicing --> Settings --> Taxes --> EU Intra-community Distance
|
||||||
Accounting settings. Then, make sure to :ref:`refresh the tax mapping
|
Selling` and click on the :guilabel:`Refresh tax mapping`.
|
||||||
<eu_distance_selling/refresh-mapping>`.
|
|
||||||
|
|
||||||
.. _eu_distance_selling/taxes:
|
.. note::
|
||||||
|
We highly recommend checking that the proposed mapping is suitable for the products and services
|
||||||
Fiscal Positions and Taxes
|
you sell before using it.
|
||||||
==========================
|
|
||||||
|
|
||||||
Once enabled, the feature automatically creates all the necessary taxes and fiscal positions needed
|
|
||||||
for each EU member state, based on your company's country.
|
|
||||||
|
|
||||||
We highly recommend checking that the proposed mapping is suitable for the products and services you
|
|
||||||
sell before using it.
|
|
||||||
|
|
||||||
.. _eu_distance_selling/refresh-mapping:
|
|
||||||
|
|
||||||
Refresh tax mapping
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
Whenever you add or modify taxes, you can update automatically your fiscal positions.
|
|
||||||
|
|
||||||
To do so, go to :menuselection:`Accounting/Invoicing --> Settings --> Taxes --> EU intra-community
|
|
||||||
Distance Selling` and click on the *Refresh tax mapping* button.
|
|
||||||
|
|
||||||
.. seealso::
|
.. seealso::
|
||||||
- :doc:`fiscal_positions`
|
|
||||||
- :doc:`../taxes`
|
- :doc:`../taxes`
|
||||||
|
- :doc:`../../fiscal_localizations`
|
||||||
|
- :doc:`fiscal_positions`
|
||||||
|
|
||||||
|
One-Stop Shop (OSS)
|
||||||
|
===================
|
||||||
|
|
||||||
|
The :abbr:`OSS (One-Stop Shop)` system introduced by the European Union simplifies VAT collection
|
||||||
|
for **cross-border** sales of goods and services. It primarily applies to business-to-consumer
|
||||||
|
**(B2C)** cases. With the OSS, businesses can register for VAT in their home country and use a
|
||||||
|
single online portal to handle VAT obligations for their sales within the EU. There are **two
|
||||||
|
primary schemes**: the **Union OSS** scheme for cross-border services and the **Import OSS** scheme
|
||||||
|
for goods valued at or below €150.
|
||||||
|
|
||||||
|
Reports
|
||||||
|
-------
|
||||||
|
|
||||||
|
To generate **OSS sales** or **OSS imports** reports and submit them onto the OSS portal, go to
|
||||||
|
:menuselection:`Accounting --> Reporting --> Tax Report`, click :guilabel:`Tax Report: Global
|
||||||
|
Summary`, and select either :guilabel:`OSS Sales` or :guilabel:`OSS Imports`. Once selected, click
|
||||||
|
on :guilabel:`PDF`, :guilabel:`XLSX`, or :guilabel:`XML` in the top-left corner. This generates the
|
||||||
|
currently-opened report in the selected format. Once generated, log into the platform of your
|
||||||
|
competent federal authority to submit it onto the OSS portal.
|
||||||
|
|
||||||
|
.. image:: eu_distance_selling/oss-report.png
|
||||||
|
:alt: OSS reports view
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
- `European Commission: OSS | Taxation and Customs Union <https://ec.europa.eu/taxation_customs/business/vat/oss_en>`_
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 4.5 KiB |
|
After Width: | Height: | Size: 5.2 KiB |
@@ -1,6 +1,6 @@
|
|||||||
===========================
|
===============================
|
||||||
VIES VAT numbers validation
|
VAT numbers verification (VIES)
|
||||||
===========================
|
===============================
|
||||||
|
|
||||||
**VAT Information Exchange System** - abbreviated **VIES** - is a tool provided by the European
|
**VAT Information Exchange System** - abbreviated **VIES** - is a tool provided by the European
|
||||||
Commission that allows you to check the validity of VAT numbers of companies registered in the
|
Commission that allows you to check the validity of VAT numbers of companies registered in the
|
||||||
@@ -15,7 +15,7 @@ Configuration
|
|||||||
To enable this feature, go to :menuselection:`Accounting --> Configuration --> Settings --> Taxes`,
|
To enable this feature, go to :menuselection:`Accounting --> Configuration --> Settings --> Taxes`,
|
||||||
enable the **Verify VAT Numbers** feature, and click on *Save*.
|
enable the **Verify VAT Numbers** feature, and click on *Save*.
|
||||||
|
|
||||||
.. image:: vat_validation/vat-validation-configuration.png
|
.. image:: vat_verification/vat-validation-configuration.png
|
||||||
:align: center
|
:align: center
|
||||||
:alt: Enable "Verify VAT Numbers" in Odoo Accounting
|
:alt: Enable "Verify VAT Numbers" in Odoo Accounting
|
||||||
|
|
||||||
@@ -24,14 +24,14 @@ VAT Number validation
|
|||||||
|
|
||||||
Whenever you create or modify a contact, make sure to fill out the **Country** and **VAT** fields.
|
Whenever you create or modify a contact, make sure to fill out the **Country** and **VAT** fields.
|
||||||
|
|
||||||
.. image:: vat_validation/vat-validation-contact-form.png
|
.. image:: vat_verification/vat-validation-contact-form.png
|
||||||
:align: center
|
:align: center
|
||||||
:alt: Fill out the contact form with the country and VAT number before clicking on *Save*
|
:alt: Fill out the contact form with the country and VAT number before clicking on *Save*
|
||||||
|
|
||||||
When you click on *Save*, Odoo runs a VIES VAT number check, and displays an error message if the
|
When you click on *Save*, Odoo runs a VIES VAT number check, and displays an error message if the
|
||||||
VAT number is invalid.
|
VAT number is invalid.
|
||||||
|
|
||||||
.. image:: vat_validation/vat-validation-error.png
|
.. image:: vat_verification/vat-validation-error.png
|
||||||
:align: center
|
:align: center
|
||||||
:alt: Odoo displays an error message instead of saving when the VAT number is invalid
|
:alt: Odoo displays an error message instead of saving when the VAT number is invalid
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 6.8 KiB |
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.4 KiB |
@@ -4,231 +4,533 @@
|
|||||||
Expenses
|
Expenses
|
||||||
========
|
========
|
||||||
|
|
||||||
**Odoo Expenses** streamlines the management of expenses. Employees can submit their expenses;
|
Odoo **Expenses** streamlines the management of expenses. After an employee submits their expenses
|
||||||
managers can approve them; accountants can record them and process the payments.
|
in Odoo, the expenses are reviewed by management and accounting teams. Once approved, payments can
|
||||||
|
then be processed and disbursed back to the employee for reimbursement(s).
|
||||||
|
|
||||||
.. seealso::
|
.. seealso::
|
||||||
- `Odoo Expenses: product page <https://www.odoo.com/app/expenses>`_
|
`Odoo Expenses: product page <https://www.odoo.com/app/expenses>`_
|
||||||
|
|
||||||
How to set expense types
|
Set expense types
|
||||||
========================
|
=================
|
||||||
|
|
||||||
The first step to track expenses is to configure the expense types (managed as products in Odoo)
|
The first step to track expenses is to configure the different *expense types* for the company
|
||||||
that your company allows, from the *Configuration* menu.
|
(managed as *products* in Odoo). Each "product" can be as specific or generalized as needed. Go to
|
||||||
When a specific expense is reimbursed at a fixed price, set a cost on the product.
|
:menuselection:`Expenses app --> Configuration --> Expense Products` to view the current expensable
|
||||||
Otherwise keep the cost at 0.0 and employees will report the real cost per expense.
|
products in a default kanban view.
|
||||||
|
|
||||||
.. image:: expenses/product.png
|
.. image:: expenses/products.png
|
||||||
:align: center
|
:align: center
|
||||||
|
:alt: Set expense costs on products.
|
||||||
|
|
||||||
Here are some examples:
|
To create a new expense product, click :guilabel:`Create`. A product form will appear. Only two
|
||||||
|
fields are required, the :guilabel:`Product Name` and the :guilabel:`Unit of Measure`. Enter the
|
||||||
* Restaurant:
|
:guilabel:`Product Name` in the field, and select the :guilabel:`Unit of Measure` from the drop-down
|
||||||
|
menu (most products will be set to :guilabel:`Units`).
|
||||||
* Cost: 0.00 (the cost of the ticket will be recorded on every expense)
|
|
||||||
* Travel with Personal Car:
|
|
||||||
|
|
||||||
* Cost: 0.30 (the price per mile reimbursed by the company is fixed)
|
|
||||||
* Hotel:
|
|
||||||
|
|
||||||
* Cost: 0.00 (the cost of the ticket will be recorded on every expense)
|
|
||||||
|
|
||||||
* Others:
|
|
||||||
|
|
||||||
* Cost: 0.0
|
|
||||||
|
|
||||||
Don't forget to set an expense tax on each expense type
|
|
||||||
(and an account if you use Odoo Accounting).
|
|
||||||
It's usually a good practice to use a tax that is configured
|
|
||||||
with :ref:`Tax Included in Price <taxes/included-in-price>`.
|
|
||||||
That way, employees report expenses with
|
|
||||||
prices including taxes, which is usually the expected behaviour.
|
|
||||||
|
|
||||||
.. tip::
|
.. tip::
|
||||||
The *Sales* app allows you to specify units of measure for your
|
The *Sales* app is where specification on the units of measure are created and edited (e.g.
|
||||||
expense types (units, miles, nights, etc.).
|
units, miles, nights, etc.). Go to :menuselection:`Sales app --> Configuration --> Settings` and
|
||||||
Go to :menuselection:`Sales --> Configuration --> Settings` and check
|
ensure `Units of Measure` is checked off in the `Product Catalog` section. Click on the
|
||||||
*Some products may be sold/purchased in different units of measure (advanced)*.
|
:guilabel:`Units of Measure` internal link to view, create, and edit the units of measure. Refer
|
||||||
|
to :doc:`this document </applications/inventory_and_mrp/inventory/management/products/uom>` to
|
||||||
|
learn more about units of measure and how to configure them.
|
||||||
|
|
||||||
|
.. image:: expenses/new-expense-product.png
|
||||||
How to record expenses
|
|
||||||
======================
|
|
||||||
|
|
||||||
Manually
|
|
||||||
--------
|
|
||||||
|
|
||||||
As an employee (Employee in user access rights), you can record
|
|
||||||
expenses from :menuselection:`My Expenses --> Expenses to Submit`.
|
|
||||||
|
|
||||||
.. image:: expenses/submit_01.png
|
|
||||||
:align: center
|
:align: center
|
||||||
|
:alt: Set expense costs on products.
|
||||||
|
|
||||||
1. Select the related product and enter either the total amount
|
The :guilabel:`Cost` field on the product form is populated with a value of `0.00` by default. When
|
||||||
you paid (with Quantity = 1) or the unit price if Quantity is
|
a specific expense should always be reimbursed for a particular price, enter that amount in the
|
||||||
countable (e.g. number of hotel nights).
|
:guilabel:`Cost` field. Otherwise, leave the :guilabel:`Cost` set to `0.00`, and employees will
|
||||||
2. Enter the expense date.
|
report the actual cost when submitting an expense report.
|
||||||
3. Choose if you paid the bill on your own (and expect to be reimbursed)
|
|
||||||
or if the company paid directly (e.g. if you used a company's credit card).
|
|
||||||
4. Set the bill reference, add some notes if requested and attach a
|
|
||||||
photo/scan of the receipt from the discussion thread.
|
|
||||||
That will help the manager and the accountant validate it.
|
|
||||||
|
|
||||||
.. image:: expenses/submit_02.png
|
.. example::
|
||||||
|
Here are some examples for when to set a specific :guilabel:`Cost` on a product vs. leaving the
|
||||||
|
:guilabel:`Cost` at `0.00`:
|
||||||
|
|
||||||
|
- **Meals**: Set the :guilabel:`Cost` to `0.00`. When an employee logs an expense for a meal, they
|
||||||
|
enter the actual amount of the bill and will be reimbursed for that amount. An expense for a
|
||||||
|
meal costing $95.23 would equal a reimbursement for $95.23.
|
||||||
|
- **Mileage**: Set the :guilabel:`Cost` to `0.30`. When an employee logs an expense for
|
||||||
|
"mileage", they enter the number of miles driven, and are reimbursed 0.30 per mile they
|
||||||
|
entered. An expense for 100 miles would equal a reimbursement for $30.00.
|
||||||
|
- **Monthly Parking**: Set the :guilabel:`Cost` to `75.00`. When an employee logs an expense for
|
||||||
|
"monthly parking", the reimbursement would be for $75.00.
|
||||||
|
- **Expenses**: Set the :guilabel:`Cost` to `0.00`. When an employee logs an expense that is not
|
||||||
|
a meal, mileage, or monthly parking, they use the generic :guilabel:`Expenses` product. An
|
||||||
|
expense for a laptop costing $350.00 would be logged as an :guilabel:`Expenses` product, and
|
||||||
|
the reimbursement would be for $350.00.
|
||||||
|
|
||||||
|
Select an :guilabel:`Expense Account` if using the Odoo *Accounting* app. It is recommended to check
|
||||||
|
with the accounting department to determine the correct account to reference in this field as it
|
||||||
|
will affect reports.
|
||||||
|
|
||||||
|
Set a tax on each product in the :guilabel:`Vendor Taxes` and :guilabel:`Customer Taxes` fields if
|
||||||
|
applicable. It is considered good practice to use a tax that is configured with :ref:`Tax Included
|
||||||
|
in Price <taxes/included-in-price>`. Taxes will be automatically configured if this is set.
|
||||||
|
|
||||||
|
.. _expenses/new:
|
||||||
|
|
||||||
|
Record expenses
|
||||||
|
===============
|
||||||
|
|
||||||
|
Manually create a new expense
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
To record a new expense, begin in the main :menuselection:`Expenses` app dashboard, which presents
|
||||||
|
the default :guilabel:`My Expenses to Report` view. This view can also be accessed from
|
||||||
|
:menuselection:`Expenses app --> My Expenses --> My Expenses to Report`.
|
||||||
|
|
||||||
|
First, click :guilabel:`Create`, and then fill out the various fields on the form.
|
||||||
|
|
||||||
|
- :guilabel:`Description`: Enter a short description for the expense in the :guilabel:`Description`
|
||||||
|
field. This should be short and informative, such as `lunch with client` or `hotel for
|
||||||
|
conference`.
|
||||||
|
- :guilabel:`Product`: Select the product from the drop-down menu that most closely corresponds to
|
||||||
|
the expense. For example, an airplane ticket would be appropriate for an expense
|
||||||
|
:guilabel:`Product` named :guilabel:`Air Travel`.
|
||||||
|
- :guilabel:`Unit Price`: Enter the total amount paid for the expense in one of two ways:
|
||||||
|
|
||||||
|
#. If the expense is for one single item/expense, enter the cost in the :guilabel:`Unit Price`
|
||||||
|
field, and leave the :guilabel:`Quantity` `1.00`.
|
||||||
|
#. If the expense is for multiples of the same item/expense, enter the price *per unit* in the
|
||||||
|
:guilabel:`Unit Price` field, and enter the *quantity of units* in the :guilabel:`Quantity`
|
||||||
|
field.
|
||||||
|
|
||||||
|
.. example::
|
||||||
|
In the case of a hotel stay, for example, the :guilabel:`Unit Price` would be set as the
|
||||||
|
cost *per night*, and set the :guilabel:`Quantity` to the *number of nights* stayed.
|
||||||
|
|
||||||
|
- :guilabel:`Taxes`: If taxes were paid on the expense, select the tax percentage using the
|
||||||
|
drop-down menu. Tax options are pre-configured based on the localization setting selected when the
|
||||||
|
database was created. Adding any new taxes should only be done when necessary.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
When a tax is selected, the :guilabel:`Total` value will update in real time to show the added
|
||||||
|
taxes.
|
||||||
|
|
||||||
|
- :guilabel:`Paid By`: Click the radio button to indicate who paid for the expense and should be
|
||||||
|
reimbursed. If the employee paid for the expense (and should be reimbursed) select
|
||||||
|
:guilabel:`Employee (to reimburse)`. If the company paid directly instead (e.g. if the company
|
||||||
|
credit card was used to pay for the expense) select :guilabel:`Company`.
|
||||||
|
- :guilabel:`Expense Date`: Using the calendar module, enter the date the expense was incurred. Use
|
||||||
|
the :guilabel:`< (left)` and :guilabel:`> (right)` arrows to navigate to the correct month, then
|
||||||
|
click on the specific day to enter the selection.
|
||||||
|
- :guilabel:`Bill Reference`: If there is any reference text that should be included for the
|
||||||
|
expense, enter it in this field.
|
||||||
|
- :guilabel:`Account`: Select the expense account that this expense should be logged on from the
|
||||||
|
drop-down menu.
|
||||||
|
- :guilabel:`Employee`: Using the drop-down menu, select the employee this expense is for.
|
||||||
|
- :guilabel:`Customer to Reinvoice`: If the expense is something that should be paid for by a
|
||||||
|
customer, select the customer that will be invoiced for this expense from the drop-down menu. For
|
||||||
|
example, if a customer wishes to have an on-site meeting, and agrees to pay for the expenses
|
||||||
|
associated with it (such as travel, hotel, meals, etc.), then all expenses tied to that meeting
|
||||||
|
would indicate that customer as the :guilabel:`Customer to Reinvoice`.
|
||||||
|
- :guilabel:`Analytic Account`: Select the account the expense should be written against from the
|
||||||
|
drop-down menu.
|
||||||
|
- :guilabel:`Company`: If multiple companies are set-up, select the company this expense should be
|
||||||
|
filed for from the drop-down menu. If there is only one company, this field will be automatically
|
||||||
|
populated.
|
||||||
|
- :guilabel:`Notes...`: If any notes are needed in order to clarify the expense, enter them in the
|
||||||
|
notes field.
|
||||||
|
|
||||||
|
Once all the fields have been filled out, click :guilabel:`Save`.
|
||||||
|
|
||||||
|
.. image:: expenses/expense-filled-in.png
|
||||||
:align: center
|
:align: center
|
||||||
|
:alt: A filled in expense form for a client lunch.
|
||||||
|
|
||||||
In one click from emails
|
Attach a receipt
|
||||||
------------------------
|
~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Let your employees record their expenses from a simple email.
|
After the expense is saved, the next step is to attach a receipt. A new :guilabel:`Attach Receipt`
|
||||||
Make a snapshot of the receipt and send it by email, or simply forward a bill!
|
button appears after the entry is saved, beneath the former :guilabel:`Save` button (which turns
|
||||||
|
into an :guilabel:`Edit` button).
|
||||||
|
|
||||||
The only thing to do is setting up an email alias in
|
.. image:: expenses/save-receipt.png
|
||||||
:menuselection:`Expenses --> Configuration --> Settings` (e.g. *expenses* @mycompany.odoo.com).
|
|
||||||
For security purposes, only authenticated employee emails
|
|
||||||
(cfr. *Work Email* in employee detail form) are accepted.
|
|
||||||
|
|
||||||
.. tip::
|
|
||||||
The expense product is set automatically if the mail subject contains
|
|
||||||
the product's internal reference in first position.
|
|
||||||
Type the expense amount in the mail subject to set it on the expense too (e.g. Ref001 Food 100€).
|
|
||||||
|
|
||||||
How to submit expenses to managers
|
|
||||||
==================================
|
|
||||||
|
|
||||||
When you are ready to submit your expenses to your manager
|
|
||||||
(e.g. at the end of a business trip, or once a month),
|
|
||||||
go to the menu :menuselection:`My Expenses --> Expenses to Submit`. Select all expenses
|
|
||||||
from the list view and click on :menuselection:`Action --> Submit to Manager`.
|
|
||||||
Save the newly created expense report (i.e. set of expenses),
|
|
||||||
and wait for your manager to approve it.
|
|
||||||
|
|
||||||
.. image:: expenses/submit_03.png
|
|
||||||
:align: center
|
:align: center
|
||||||
|
:alt: Attach a receipt after saving the record.
|
||||||
|
|
||||||
You can also submit expenses one by one from the *Submit to Manager*
|
Click the new :guilabel:`Attach Receipt` button, and a file explorer appears. Navigate to the
|
||||||
button on the form view of an expense.
|
receipt to be attached, and click :guilabel:`Open`. A new :guilabel:`Receipts` smart button appears
|
||||||
|
at the top, and the new receipt is recorded in the chatter. More than one receipt can be attached to
|
||||||
|
an individual expense, as needed. The number of receipts attached to the expense will be noted on
|
||||||
|
the smart button.
|
||||||
|
|
||||||
All your submitted expense reports can be found in
|
.. image:: expenses/receipt-smartbutton.png
|
||||||
:menuselection:`Expenses --> My Expenses --> Expense Reports`.
|
|
||||||
|
|
||||||
|
|
||||||
How to approve expenses
|
|
||||||
=======================
|
|
||||||
|
|
||||||
HR and team managers get an overview of all expense reports to
|
|
||||||
validate from the top menu :menuselection:`To Approve --> Expense Reports to Approve`.
|
|
||||||
Such users must have at least *Officers* access rights for *Expenses*.
|
|
||||||
|
|
||||||
.. image:: expenses/approval_01.png
|
|
||||||
:align: center
|
:align: center
|
||||||
|
:alt: Attach a receipt after saving the record.
|
||||||
|
|
||||||
They can review expense reports, approve or reject them, as well as providing
|
Automatically create new expenses from an email
|
||||||
feedback thanks to the integrated communication tool.
|
-----------------------------------------------
|
||||||
|
|
||||||
.. image:: expenses/approval_02.png
|
Instead of individually creating each expense in the *Expenses* app, expenses can be automatically
|
||||||
|
created by sending an email to an email alias.
|
||||||
|
|
||||||
|
To do so, first, an email alias needs to be configured. Go to :menuselection:`Expenses app -->
|
||||||
|
Configuration --> Settings`. Ensure :guilabel:`Incoming Emails` is checked off.
|
||||||
|
|
||||||
|
.. image:: expenses/email-alias.png
|
||||||
:align: center
|
:align: center
|
||||||
|
:alt: Create the domain alias by clicking the link.
|
||||||
As a team manager you can easily find the expense reports of your team members.
|
|
||||||
You need to be set as manager in the detail form of those employees.
|
|
||||||
|
|
||||||
.. image:: expenses/approval_03.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
|
|
||||||
How to post expenses in accounting
|
|
||||||
==================================
|
|
||||||
|
|
||||||
Once expense reports approved by managers, the accounting department
|
|
||||||
goes to :menuselection:`Expenses --> Accountant --> Expense Reports To Post` to check
|
|
||||||
accounts, products and taxes. They can click *Post Journal Entries*
|
|
||||||
to post related journal entries into your books.
|
|
||||||
To do so, the user must have following access rights:
|
|
||||||
|
|
||||||
* Accounting: Accountant or Adviser
|
|
||||||
* Expenses: Manager
|
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
To post an expense, a *Home Address* must be set on the employee.
|
If the domain alias needs to be set up, :guilabel:`Setup your domain alias` will appear beneath
|
||||||
If you get a related blocking message when posting, click the employee,
|
the incoming emails check box instead of the email address field. Refer to this documentation for
|
||||||
go to *Personal Information* tab and select/create the contact of your employee
|
setup instructions and more information: :doc:`/administration/maintain/domain_names`. Once the
|
||||||
in the address book.
|
domain alias is configured, the email address field will be visible beneath the incoming emails
|
||||||
A contact has been automatically created if this person is using Odoo.
|
section.
|
||||||
|
|
||||||
How to reimburse employees
|
Next, enter the email address to be used in the email field, then click :guilabel:`Save`. Now that
|
||||||
==========================
|
the email address has been entered, emails can be sent to that alias to create new expenses without
|
||||||
|
having to be in the Odoo database.
|
||||||
|
|
||||||
You can now see all the expense reports to reimburse in
|
To submit an expense via email, create a new email and enter the product's *internal reference* code
|
||||||
:menuselection:`Expenses --> Accountant --> Expense Reports To Pay`.
|
(if available) and the amount of the expense in the email subject. Next, attach the receipt to the
|
||||||
To record the payment or pay by check, click *Register a Payment*.
|
email. Odoo creates the expense by taking the information in the email subject and combining it with
|
||||||
|
the receipt.
|
||||||
|
|
||||||
See how you can easily manage the payment process in Odoo:
|
To check an expense product's internal reference, go to :menuselection:`Expenses app -->
|
||||||
|
Configuration --> Expense Products`. If an internal reference is listed on the product, it is
|
||||||
|
visible in this view as :guilabel:`(Ref###)`.
|
||||||
|
|
||||||
* :doc:`accounting/payments/pay_checks`
|
.. image:: expenses/internal-ref-numbers.png
|
||||||
* :doc:`accounting/payments/pay_sepa`
|
:align: center
|
||||||
|
:alt: Internal reference numbers are listed in the main Expense Products view.
|
||||||
|
|
||||||
|
To add an internal reference on an expense product, click on the product, then click
|
||||||
|
:guilabel:`Edit`. In edit mode, enter the :guilabel:`Internal Reference` in the field. Beneath the
|
||||||
|
:guilabel:`Internal Reference` field, this sentence appears: :guilabel:`Use this reference as a
|
||||||
|
subject prefix when submitting by email.`.
|
||||||
|
|
||||||
How to re-invoice expenses to your customers
|
.. image:: expenses/meals-internal-reference.png
|
||||||
============================================
|
:align: center
|
||||||
|
:alt: Internal reference numbers are listed in the main Expense Products view.
|
||||||
|
|
||||||
If you track expenses on customer projects, you can charge them back to
|
.. note::
|
||||||
your customers automatically.
|
For security purposes, only authenticated employee emails are accepted by Odoo when creating an
|
||||||
|
expense from an email. To confirm an authenticated employee email address, go to the employee
|
||||||
|
card in the :guilabel:`Employees` app, and refer to the :guilabel:`Work Email` in the main field.
|
||||||
|
|
||||||
|
.. image:: expenses/authenticated-email-address.png
|
||||||
|
:align: center
|
||||||
|
:alt: Create the domain alias by clicking the link.
|
||||||
|
|
||||||
|
.. example::
|
||||||
|
If submitting an expense via email for a $25.00 meal during a work trip, the email subject would
|
||||||
|
be `Ref005 Meal $25.00`.
|
||||||
|
|
||||||
|
Explanation:
|
||||||
|
|
||||||
|
- The :guilabel:`Internal Reference` for the expense product `Meals` is `Ref005`
|
||||||
|
- The :guilabel:`Cost` for the expense is `$25.00`
|
||||||
|
|
||||||
|
Create an expense report
|
||||||
|
========================
|
||||||
|
|
||||||
|
When expenses are ready to submit (such as at the end of a business trip, or once a month), an
|
||||||
|
*expense report* needs to be created. Go to the main :menuselection:`Expenses` app dashboard, which
|
||||||
|
displays a default :guilabel:`My Expenses` view, or go to :menuselection:`Expenses app --> My
|
||||||
|
Expenses --> My Expenses to Report`.
|
||||||
|
|
||||||
|
First, each individual expense for the report must be selected by clicking the check box next to
|
||||||
|
each entry, or quickly select all the expenses in the list by clicking the check box next to
|
||||||
|
:guilabel:`Expense Date`.
|
||||||
|
|
||||||
|
.. image:: expenses/create-report.png
|
||||||
|
:align: center
|
||||||
|
:alt: Select the expenses to submit, then create the report.
|
||||||
|
|
||||||
|
Once the expenses have been selected, click the :guilabel:`Create Report` button. The new report
|
||||||
|
appears with all the expenses listed, and the number of documents is visible in the
|
||||||
|
:guilabel:`Documents` smart button.
|
||||||
|
|
||||||
|
It is recommended to add a short summary for each report to help keep expenses organized. Click the
|
||||||
|
:guilabel:`Edit` button, and the :guilabel:`Expense Report Summary` field appears. Enter a short
|
||||||
|
description for the expense report (such as `Client Trip NYC`, or `Repairs for Company Car`). Next,
|
||||||
|
select a :guilabel:`Manager` from the drop-down menu to assign a manager to review the report.
|
||||||
|
|
||||||
|
.. image:: expenses/expense-report-summary.png
|
||||||
|
:align: center
|
||||||
|
:alt: Enter a short description and select a manager for the report.
|
||||||
|
|
||||||
|
If some expenses are not on the report that should be, they can still be added. Click :guilabel:`Add
|
||||||
|
a line` at the bottom of the :guilabel:`Expense` tab. Click the check box next to each expense to
|
||||||
|
add, then click :guilabel:`Select`. The items now appear on the report that was just created.
|
||||||
|
|
||||||
|
.. image:: expenses/add-an-expense-line.png
|
||||||
|
:align: center
|
||||||
|
:alt: Add more expenses to the report before submitting.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
:guilabel:`Add a line` only appears when the document is in edit mode. It does not appear
|
||||||
|
otherwise.
|
||||||
|
|
||||||
|
When all edits have been completed, click :guilabel:`Save`.
|
||||||
|
|
||||||
|
Submit an expense report
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
When an expense report is completed, the next step is to submit the report to a manager for
|
||||||
|
approval. Reports must be individually submitted, and cannot be submitted in batches. Open the
|
||||||
|
specific report from the list of expense reports (if the report is not already open). To view all
|
||||||
|
expense reports, go to :menuselection:`Expenses app --> My Expenses --> My Reports`.
|
||||||
|
|
||||||
|
If the list is large, grouping the results by status may be helpful since only reports that are in a
|
||||||
|
:guilabel:`Draft` mode need to be submitted, reports with an :guilabel:`Approved` or
|
||||||
|
:guilabel:`Submitted` status do not.
|
||||||
|
|
||||||
|
.. image:: expenses/expense-status.png
|
||||||
|
:align: center
|
||||||
|
:alt: Submit the report to the manager.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
The status of each report is shown in the :guilabel:`Status` column on the far right. If the
|
||||||
|
:guilabel:`Status` column is not visible, click the :guilabel:`⋮ (additional options)` icon at
|
||||||
|
the end of the row, and check the box next to :guilabel:`Status`.
|
||||||
|
|
||||||
|
Click on a report to open it, then click :guilabel:`Submit To Manager`. After submitting a report,
|
||||||
|
the next step is to wait for the manager to approve it.
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
The :ref:`expenses/approve`, :ref:`expenses/post`, and :ref:`expenses/reimburse` sections are
|
||||||
|
**only** for users with the *necessary rights*.
|
||||||
|
|
||||||
|
.. _expenses/approve:
|
||||||
|
|
||||||
|
Approve expenses
|
||||||
|
================
|
||||||
|
|
||||||
|
In Odoo, not just anyone can approve expense reports— only users with the necessary rights (or
|
||||||
|
permissions) can. This means that a user must have at least *Team Approver* rights for the
|
||||||
|
*Expenses* app. Employees with the necessary rights can review expense reports, and approve or
|
||||||
|
reject them, as well as provide feedback thanks to the integrated communication tool.
|
||||||
|
|
||||||
|
To see who has rights to approve, go to the main :menuselection:`Settings` app and click on
|
||||||
|
:guilabel:`Manage Users`.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
If the *Settings* app is not available, then certain rights are not set on the account. In the
|
||||||
|
:guilabel:`Access Rights` tab of a user's card in the :menuselection:`Settings` app, the
|
||||||
|
:guilabel:`Administration` section is set to one of three options:
|
||||||
|
|
||||||
|
- :guilabel:`None (blank)`: The user cannot access the *Settings* app at all.
|
||||||
|
- :guilabel:`Access Rights`: The user can only view the :guilabel:`User's & Companies` section of
|
||||||
|
the *Settings* app.
|
||||||
|
- :guilabel:`Settings`: The user has access to the entire *Settings* app with no restrictions.
|
||||||
|
|
||||||
|
Please refer to :doc:`this document </applications/general/users/manage_users>` to learn more
|
||||||
|
about managing users and their access rights.
|
||||||
|
|
||||||
|
Click on an individual to view their card, which displays the :guilabel:`Access Rights` tab in the
|
||||||
|
default view. Scroll down to the :guilabel:`Human Resources` section. Under :guilabel:`Expenses`,
|
||||||
|
there are four options:
|
||||||
|
|
||||||
|
- :guilabel:`None (blank)`: A blank field means the user has no rights to view or approve expense
|
||||||
|
reports, and can only view their own.
|
||||||
|
- :guilabel:`Team Approver`: The user can only view and approve expense reports for their own
|
||||||
|
specific team.
|
||||||
|
- :guilabel:`All Approver`: The user can view and approve any expense report.
|
||||||
|
- :guilabel:`Administrator`: The user can view and approve any expense report as well as access the
|
||||||
|
reporting and configuration menus in the *Expenses* app.
|
||||||
|
|
||||||
|
Users who are able to approve expense reports (typically managers) can easily view all expense
|
||||||
|
reports to validate. Go to :menuselection:`Expenses app --> Expense Reports --> Reports to
|
||||||
|
Approve`. This view lists all the expense reports that have been submitted but not approved, as
|
||||||
|
noted by the :guilabel:`Submitted` tag in the status column.
|
||||||
|
|
||||||
|
.. image:: expenses/reports-to-approve.png
|
||||||
|
:align: center
|
||||||
|
:alt: Reports to validate are found on the Reports to Approve page.
|
||||||
|
|
||||||
|
Reports can be approved in two ways (individually or several at once) and refused only one way. To
|
||||||
|
approve multiple expense reports at once, remain in the list view. First, select the reports to
|
||||||
|
approve by clicking the check box next to each report, or click the box next to :guilabel:`Employee`
|
||||||
|
to select all reports in the list. Next, click on the :guilabel:`⚙️ Action (gear)` icon, then click
|
||||||
|
:guilabel:`Approve Report`.
|
||||||
|
|
||||||
|
.. image:: expenses/approve-report.png
|
||||||
|
:align: center
|
||||||
|
:alt: Approve multiple reports by clicking the checkboxes next to each report.
|
||||||
|
|
||||||
|
To approve an individual report, click on a report to go to a detailed view of that report. In this
|
||||||
|
view, several options are presented: :guilabel:`Approve`, :guilabel:`Refuse`, or :guilabel:`Reset to
|
||||||
|
draft`. Click :guilabel:`Approve` to approve the report.
|
||||||
|
|
||||||
|
If :guilabel:`Refuse` is clicked, a pop-up window appears. Enter a brief explanation for the refusal
|
||||||
|
in the :guilabel:`Reason to refuse Expense` field, then click :guilabel:`Refuse`.
|
||||||
|
|
||||||
|
.. image:: expenses/refuse-expense.png
|
||||||
|
:align: center
|
||||||
|
:alt: Send messages in the chatter.
|
||||||
|
|
||||||
|
Team managers can easily view all the expense reports for their team members. While in the
|
||||||
|
:guilabel:`Reports to Approve` view, click on :guilabel:`Filters`, then click :guilabel:`My Team`.
|
||||||
|
This presents all the reports for the manager's team.
|
||||||
|
|
||||||
|
.. image:: expenses/my-team-filter.png
|
||||||
|
:align: center
|
||||||
|
:alt: Select the My Team filter.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
If more information is needed, such as a receipt is missing, communication is easy from the
|
||||||
|
chatter. In an individual report, simply type in a message, tagging the proper person (if
|
||||||
|
needed), and post it to the chatter by clicking :guilabel:`Send`. The message is posted in the
|
||||||
|
chatter, and the person tagged will be notified via email of the message, as well as anyone
|
||||||
|
following.
|
||||||
|
|
||||||
|
.. image:: expenses/chatter.png
|
||||||
|
:align: center
|
||||||
|
:alt: Send messages in the chatter.
|
||||||
|
|
||||||
|
.. _expenses/post:
|
||||||
|
|
||||||
|
Post expenses in accounting
|
||||||
|
===========================
|
||||||
|
|
||||||
|
Once an expense report is approved, the next step is to post the report to the accounting journal.
|
||||||
|
To view all expense reports to post, go to :menuselection:`Expenses --> Expense Reports --> Reports
|
||||||
|
To Post`.
|
||||||
|
|
||||||
|
.. image:: expenses/post-reports.png
|
||||||
|
:align: center
|
||||||
|
:alt: View reports to post by clicking on expense reports, then reports to post.
|
||||||
|
|
||||||
|
Just like approvals, expense reports can be posted in two ways (individually or several at once). To
|
||||||
|
post multiple expense reports at once, remain in the list view. First, select the reports to post by
|
||||||
|
clicking the check box next to each report, or click the box next to :guilabel:`Employee` to select
|
||||||
|
all reports in the list. Next, click on the :guilabel:`⚙️ Action (gear)` icon, then click
|
||||||
|
:guilabel:`Post Entries`.
|
||||||
|
|
||||||
|
.. image:: expenses/post-entries.png
|
||||||
|
:align: center
|
||||||
|
:alt: Post multiple reports from the Post Entries view.
|
||||||
|
|
||||||
|
To post an individual report, click on a report to go to the detailed view of that report. In this
|
||||||
|
view, several options are presented: :guilabel:`Post Journal Entries`, :guilabel:`Report In Next
|
||||||
|
Payslip`, or :guilabel:`Refuse`. Click :guilabel:`Post Journal Entries` to post the report.
|
||||||
|
|
||||||
|
If :guilabel:`Refuse` is clicked, a pop-up window appears. Enter a brief explanation for the refusal
|
||||||
|
in the :guilabel:`Reason to refuse Expense` field, then click :guilabel:`Refuse`. Refused reports
|
||||||
|
can be viewed by going to :menuselection:`Expenses app --> Expense Reports --> All Reports`. This
|
||||||
|
list shows all reports, including the refused ones.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
To post expense reports to an accounting journal, the user must have following access rights:
|
||||||
|
|
||||||
|
- Accounting: Accountant or Adviser
|
||||||
|
- Expenses: Manager
|
||||||
|
|
||||||
|
.. _expenses/reimburse:
|
||||||
|
|
||||||
|
Reimburse employees
|
||||||
|
===================
|
||||||
|
|
||||||
|
After an expense report is posted to an accounting journal, the next step is to reimburse the
|
||||||
|
employee. To view all expense reports to pay, go to :menuselection:`Expenses --> Expense Reports -->
|
||||||
|
Reports To Pay`.
|
||||||
|
|
||||||
|
.. image:: expenses/reports-to-pay.png
|
||||||
|
:align: center
|
||||||
|
:alt: View reports to pay by clicking on expense reports, then reports to pay.
|
||||||
|
|
||||||
|
Just like approvals and posting, expense reports can be paid in two ways (individually or several at
|
||||||
|
once). To pay multiple expense reports at once, remain in the list view. First, select the reports
|
||||||
|
to pay by clicking the check box next to each report, or click the box next to :guilabel:`Employee`
|
||||||
|
to select all reports in the list. Next, click on the :guilabel:`⚙️ Action (gear)` icon, then click
|
||||||
|
:guilabel:`Register Payment`.
|
||||||
|
|
||||||
|
.. image:: expenses/register-payment.png
|
||||||
|
:align: center
|
||||||
|
:alt: Post multiple reports by clicking the checkboxes, clicking the gear, then post the entries.
|
||||||
|
|
||||||
|
To pay an individual report, click on a report to go to a detailed view of that report. Click
|
||||||
|
:guilabel:`Register Payment` to pay the employee.
|
||||||
|
|
||||||
|
Re-invoice expenses to customers
|
||||||
|
================================
|
||||||
|
|
||||||
|
If expenses are tracked on customer projects, expenses can be automatically charged back to the
|
||||||
|
customer. This is done by creating an expense report, then creating a sales order with the expensed
|
||||||
|
items on it. Then, managers approve the expense report, and the accounting department posts the
|
||||||
|
journal entries. Finally, the customer is invoiced.
|
||||||
|
|
||||||
Setup
|
Setup
|
||||||
-----
|
-----
|
||||||
|
|
||||||
- Enable **Customer Billing** in the Expenses settings
|
First, specify the invoicing policy for each expense product. Go to :menuselection:`Expenses app -->
|
||||||
|
Configuration --> Expense Products`. Click on the expense product to edit, then click
|
||||||
|
:guilabel:`Edit`. Under the :guilabel:`Invoicing` section, select the :guilabel:`Invoicing Policy`
|
||||||
|
and :guilabel:`Re-Invoicing Policy` by clicking the radio button next to the desired selection.
|
||||||
|
|
||||||
- Go to the product configuration menu and set the invoicing method on
|
:guilabel:`Invoicing Policy`:
|
||||||
all your Expense types:
|
|
||||||
|
|
||||||
- Ordered quantities: it will invoice expenses based on the ordered
|
- :guilabel:`Ordered quantities`: Expense product will only invoice expenses based on the ordered
|
||||||
quantity
|
quantity.
|
||||||
|
- :guilabel:`Delivered quantities`: Expense product will only invoice expenses based on the
|
||||||
|
delivered quantity.
|
||||||
|
|
||||||
- Delivered quantities: it will invoice expenses based on the
|
:guilabel:`Re-Invoicing Policy`:
|
||||||
expenses quantity
|
|
||||||
|
|
||||||
- At cost: will invoice expenses at their real cost.
|
- :guilabel:`No`: Expense product will not be re-invoiced.
|
||||||
|
- :guilabel:`At cost`: Expense product will invoice expenses at their real cost.
|
||||||
|
- :guilabel:`At sales price`: Expense product will invoice the price set on the sale order.
|
||||||
|
|
||||||
- At sales price: will invoice based on a fixed sales price set on
|
Create an expense
|
||||||
the sale order.
|
-----------------
|
||||||
|
|
||||||
.. image:: expenses/invoicing_01.png
|
First, when :ref:`creating a new expense <expenses/new>`, the correct information needs to be
|
||||||
:align: center
|
entered in order to re-invoice a customer. Select the :guilabel:`Customer to Reinvoice` from the
|
||||||
|
drop-down menu. Next, select the :guilabel:`Analytic Account` the expense will be posted to.
|
||||||
|
|
||||||
Create an order
|
.. image:: expenses/reinvoice-expense.png
|
||||||
---------------
|
:align: center
|
||||||
|
:alt: Ensure the customer to be invoiced is called out on the expense.
|
||||||
|
|
||||||
- As a salesman, create and confirm a Sales Order for the services
|
Create a quote and sales order
|
||||||
delivered to your customer. If you don't put any expense in the
|
------------------------------
|
||||||
order, it will be added automatically once posted by the
|
|
||||||
accountant.
|
|
||||||
|
|
||||||
- Link the expense to the Sale Order.
|
In the :menuselection:`Sales` app, create a quote for the customer being invoiced, listing the
|
||||||
|
expense products. First, click :guilabel:`Create` to create a new quotation. Next, select the
|
||||||
|
:guilabel:`Customer` being invoiced for the expenses from the drop-down menu.
|
||||||
|
|
||||||
.. image:: expenses/invoicing_02.png
|
In the :guilabel:`Order Lines` tab, click :guilabel:`Add a product`. In the :guilabel:`Product`
|
||||||
:align: center
|
field, select the first item being invoiced from the drop-down menu, or type in the product name.
|
||||||
|
Then, update the :guilabel:`Quantity`, the :guilabel:`Delivered` quantity, and the :guilabel:`Unit
|
||||||
|
Price` if needed. Repeat this for all products being invoiced. When all the products have been added
|
||||||
|
to the quote, click :guilabel:`Confirm` and the quotation becomes a sales order.
|
||||||
|
|
||||||
Submit, validate and post expenses
|
.. image:: expenses/expenses-salesorder.png
|
||||||
----------------------------------
|
:align: center
|
||||||
|
:alt: Create and confirm the sales order with the expenses listed as products.
|
||||||
|
|
||||||
- As a manager, make sure the analytic account is set on every expense
|
Once the quote turns into a sales order, a :guilabel:`Delivered` column appears. The delivered
|
||||||
line on approving expenses reports. Click the line to add one if
|
quantity must be updated for each item. Click on the `0.000` field for each product, and enter the
|
||||||
missing. Employees are already able to set one when submitting.
|
delivered quantity. When all delivered quantities have been entered, click :guilabel:`Save`.
|
||||||
|
|
||||||
.. image:: expenses/invoicing_03.png
|
Validate and post expenses
|
||||||
:align: center
|
--------------------------
|
||||||
|
|
||||||
- As an accountant, post journal entries.
|
Only employees with permissions (typically managers or supervisors) can :ref:`approve expenses
|
||||||
|
<expenses/approve>`. Before approving an expense report, ensure the :guilabel:`Analytic Account` is
|
||||||
|
set on every expense line of a report. If an :guilabel:`Analytic Account` is missing, click
|
||||||
|
:guilabel:`Edit` and select the correct account from the drop-down menu, then click
|
||||||
|
:guilabel:`Approve` or :guilabel:`Refuse`.
|
||||||
|
|
||||||
|
The accounting department is typically responsible for :ref:`posting journal entries
|
||||||
|
<expenses/post>`. Once an expense report is approved, it can then be posted.
|
||||||
|
|
||||||
Invoice expenses
|
Invoice expenses
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
Now you can invoice the order. It shows up in
|
Once the quote has turned into a sales order, and the expense report has been approved, it is time
|
||||||
:menuselection:`Sales --> Invoicing --> Sales`
|
to invoice the customer. Go to :menuselection:`Sales app --> To Invoice --> Orders to Invoice` to
|
||||||
to Invoice. The expenses have been added automatically in the order
|
view the sales orders ready to be invoiced.
|
||||||
lines. Such items show up in blue (i.e. to invoice).
|
|
||||||
|
|
||||||
.. image:: expenses/invoicing_04.png
|
Next, find the sales order related to the expense report, click into it, and then click
|
||||||
:align: center
|
:guilabel:`Create Invoice` and a :guilabel:`Create invoices` pop-up window appears. Select if the
|
||||||
|
invoice is a :guilabel:`Regular invoice`, :guilabel:`Down payment (percentage)`, or :guilabel:`Down
|
||||||
e (i.e. to invoice).
|
payment (fixed amount)` by clicking the radio button next to the selection. For either down payment
|
||||||
|
options, enter the amount (fixed or percentage) in the :guilabel:`Down Payment Amount` field.
|
||||||
|
Finally, click either :guilabel:`create and view invoice` or :guilabel:`create invoice`.
|
||||||
|
|||||||
BIN
content/applications/finance/expenses/add-an-expense-line.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 82 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 96 KiB |
BIN
content/applications/finance/expenses/approve-report.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 15 KiB |
BIN
content/applications/finance/expenses/chatter.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
content/applications/finance/expenses/create-new-expense.png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
content/applications/finance/expenses/create-report.png
Normal file
|
After Width: | Height: | Size: 8.0 KiB |
BIN
content/applications/finance/expenses/email-alias.png
Normal file
|
After Width: | Height: | Size: 3.6 KiB |
BIN
content/applications/finance/expenses/expense-filled-in.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
content/applications/finance/expenses/expense-report-summary.png
Normal file
|
After Width: | Height: | Size: 7.0 KiB |
BIN
content/applications/finance/expenses/expense-status.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
content/applications/finance/expenses/expenses-salesorder.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
content/applications/finance/expenses/internal-ref-numbers.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 8.4 KiB |
|
After Width: | Height: | Size: 11 KiB |
BIN
content/applications/finance/expenses/my-team-filter.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
content/applications/finance/expenses/new-expense-form.png
Normal file
|
After Width: | Height: | Size: 9.0 KiB |
BIN
content/applications/finance/expenses/new-expense-product.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
content/applications/finance/expenses/post-entries.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
content/applications/finance/expenses/post-reports.png
Normal file
|
After Width: | Height: | Size: 7.2 KiB |
|
Before Width: | Height: | Size: 23 KiB |
BIN
content/applications/finance/expenses/products.png
Normal file
|
After Width: | Height: | Size: 6.3 KiB |
BIN
content/applications/finance/expenses/receipt-smartbutton.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
content/applications/finance/expenses/refuse-expense.png
Normal file
|
After Width: | Height: | Size: 3.9 KiB |
BIN
content/applications/finance/expenses/register-payment.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
content/applications/finance/expenses/reinvoice-expense.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
content/applications/finance/expenses/reports-to-approve.png
Normal file
|
After Width: | Height: | Size: 7.7 KiB |
BIN
content/applications/finance/expenses/reports-to-pay.png
Normal file
|
After Width: | Height: | Size: 7.0 KiB |
BIN
content/applications/finance/expenses/save-receipt.png
Normal file
|
After Width: | Height: | Size: 8.3 KiB |
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 40 KiB |
@@ -33,7 +33,7 @@ localization in Odoo, it is necessary to meet the following requirements:
|
|||||||
<https://www.gob.mx/sat/acciones-y-programas/certificado-de-sello-digital>`_ (CSD).
|
<https://www.gob.mx/sat/acciones-y-programas/certificado-de-sello-digital>`_ (CSD).
|
||||||
#. Choose a PAC and purchase stamps. Currently the Mexican location in Odoo works with the following
|
#. Choose a PAC and purchase stamps. Currently the Mexican location in Odoo works with the following
|
||||||
PACs: `Solución Factible <https://solucionfactible.com/>`_, `Quadrum (formerly Finkok)
|
PACs: `Solución Factible <https://solucionfactible.com/>`_, `Quadrum (formerly Finkok)
|
||||||
<https://cfdiquadrum.com.mx/index.html>`_ and `SW Sapien - Smarter Web <https://sw.com.mx/>`_.
|
<https://cfdiquadrum.com.mx/index.html>`_ and `SW Sapien - Smarter Web <https://info.sw.com.mx/sw-smarter-odoo/>`_.
|
||||||
#. Have knowledge and experience with billing, sales and accounting in Odoo. This documentation
|
#. Have knowledge and experience with billing, sales and accounting in Odoo. This documentation
|
||||||
contains only the information necessary to enable the use of Odoo in a company based in Mexico.
|
contains only the information necessary to enable the use of Odoo in a company based in Mexico.
|
||||||
|
|
||||||
@@ -211,7 +211,7 @@ working with and the credentials. That way, electronic invoicing will be enabled
|
|||||||
Remember that you must register directly with the PAC of your choice before you start creating
|
Remember that you must register directly with the PAC of your choice before you start creating
|
||||||
invoices from Odoo. We have the following PACs available: `Quadrum
|
invoices from Odoo. We have the following PACs available: `Quadrum
|
||||||
<https://cfdiquadrum.com.mx/index.html>`_, `Solución Factible <https://solucionfactible.com/>`_
|
<https://cfdiquadrum.com.mx/index.html>`_, `Solución Factible <https://solucionfactible.com/>`_
|
||||||
and `SW Sapien - Smarter Web <https://sw.com.mx/>`_.
|
and `SW Sapien - Smarter Web <https://info.sw.com.mx/sw-smarter-odoo/>`_.
|
||||||
|
|
||||||
You must process your **Private Key (CSD)** with the SAT institution before following these
|
You must process your **Private Key (CSD)** with the SAT institution before following these
|
||||||
steps. If you do not have this information, try with the Test Credentials and return to this
|
steps. If you do not have this information, try with the Test Credentials and return to this
|
||||||
|
|||||||
@@ -135,10 +135,9 @@ Bank payments
|
|||||||
- | :doc:`Wire Transfer <payment_acquirers/wire_transfer>`
|
- | :doc:`Wire Transfer <payment_acquirers/wire_transfer>`
|
||||||
| When selected, Odoo displays your payment information with a payment reference. You have to
|
| When selected, Odoo displays your payment information with a payment reference. You have to
|
||||||
approve the payment manually once you have received it on your bank account.
|
approve the payment manually once you have received it on your bank account.
|
||||||
- | SEPA Direct Debit
|
- | :doc:`SEPA Direct Debit <../finance/accounting/payments/batch_sdd>`
|
||||||
| Your customers can sign a SEPA Direct Debit mandate online and get their bank account charged
|
| Your customers can sign a SEPA Direct Debit mandate online and get their bank account charged
|
||||||
directly. :doc:`Click here <../finance/accounting/payments/batch_sdd>` for
|
directly.
|
||||||
more information about this payment method.
|
|
||||||
|
|
||||||
.. _payment_acquirers/features:
|
.. _payment_acquirers/features:
|
||||||
|
|
||||||
|
|||||||
@@ -47,8 +47,10 @@ API Key and Client Key
|
|||||||
|
|
||||||
In order to retrieve the API Key and the Client Key, log into your Adyen account, go to
|
In order to retrieve the API Key and the Client Key, log into your Adyen account, go to
|
||||||
:menuselection:`Developers --> API Credentials`.
|
:menuselection:`Developers --> API Credentials`.
|
||||||
|
|
||||||
- If you already have an API user, open it.
|
- If you already have an API user, open it.
|
||||||
- If you don't have an API user yet, click on **Create new credential**.
|
- If you don't have an API user yet, click on **Create new credential**.
|
||||||
|
|
||||||
Go to :menuselection:`Server settings --> Authentification` and copy or generate your **API Key**.
|
Go to :menuselection:`Server settings --> Authentification` and copy or generate your **API Key**.
|
||||||
Be careful to copy your API key as you'll not be allowed to get it later without generating a new
|
Be careful to copy your API key as you'll not be allowed to get it later without generating a new
|
||||||
one.
|
one.
|
||||||
@@ -88,17 +90,32 @@ You have to save the webhook to finalize its creation.
|
|||||||
|
|
||||||
.. _adyen/urls:
|
.. _adyen/urls:
|
||||||
|
|
||||||
URLs
|
API URLs
|
||||||
~~~~
|
~~~~~~~~
|
||||||
|
|
||||||
To retrieve the URLs, log into your Adyen account, go to :menuselection:`Developers --> API URLs`.
|
All Adyen API URLs include a customer area-specific prefix generated by Adyen. To configure the
|
||||||
Select one of the URLs listed next to :guilabel:`Classic Recurring API` as your
|
URLs, proceed as follows:
|
||||||
:guilabel:`Recurring API URL` and one listed next to :guilabel:`Checkout API` as your
|
|
||||||
:guilabel:`Checkout API URL`.
|
|
||||||
|
|
||||||
.. image:: adyen/adyen-api-urls.png
|
#. Log into your Adyen account, then go to :menuselection:`Developers --> API URLs`.
|
||||||
:align: center
|
#. Copy the :guilabel:`Prefix` for your live Customer area (i.e., **data center**) and save it for
|
||||||
:alt: Get the links for the different API.
|
later.
|
||||||
|
|
||||||
|
.. image:: adyen/adyen-api-urls.png
|
||||||
|
:alt: Copy the prefix for the Adyen APIs
|
||||||
|
|
||||||
|
#. In Odoo, :ref:`navigate to the payment acquirer Adyen <payment_acquirers/add_new>`.
|
||||||
|
#. In the :guilabel:`Checkout API URL` field, enter the following URL and replace `yourprefix` with
|
||||||
|
the prefix you previously saved:
|
||||||
|
`https://yourprefix-checkout-live.adyenpayments.com/checkout`.
|
||||||
|
#. In the :guilabel:`Recurring API URL` field, enter the following URL and replace `yourprefix` with
|
||||||
|
the prefix you previously saved:
|
||||||
|
`https://yourprefix-pal-live.adyenpayments.com/pal/servlet/Recurring`.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
If you are trying Adyen as a test, you can use the following URLs instead:
|
||||||
|
|
||||||
|
- :guilabel:`Checkout API URL`: `https://checkout-test.adyen.com`
|
||||||
|
- :guilabel:`Recurring API URL`: `https://pal-test.adyen.com/pal/servlet/Recurring`
|
||||||
|
|
||||||
Adyen Account
|
Adyen Account
|
||||||
-------------
|
-------------
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 13 KiB |
@@ -1,109 +1,82 @@
|
|||||||
======
|
======
|
||||||
Paypal
|
PayPal
|
||||||
======
|
======
|
||||||
|
|
||||||
`Paypal <https://www.paypal.com/>`_ is available and popular worldwide. It doesn't charge any
|
`Paypal <https://www.paypal.com/>`_ is an American online payment acquirer available worldwide, and
|
||||||
subscription fee, and creating an account is very easy. That's why we recommend it for starters in
|
one of the few that does not charge a subscription fee.
|
||||||
Odoo. It works as a seamless flow where the customer is routed to the Paypal website to register the
|
|
||||||
payment.
|
|
||||||
|
|
||||||
Settings in Odoo
|
Settings in PayPal
|
||||||
================
|
|
||||||
|
|
||||||
.. seealso::
|
|
||||||
- :ref:`payment_acquirers/add_new`
|
|
||||||
|
|
||||||
Credentials tab
|
|
||||||
---------------
|
|
||||||
|
|
||||||
Odoo needs your **API Credentials** to connect with your PayPal account, which comprise:
|
|
||||||
|
|
||||||
- **Email**: your login email address in Paypal.
|
|
||||||
- **PDT Identity Token**: the key used to verify the authenticity of transactions.
|
|
||||||
- **Use IPN**: whether you want to use Instant Payment Notification. Already checked, you don't have
|
|
||||||
to change it.
|
|
||||||
|
|
||||||
You can copy your credentials from your Paypal account and paste them into the related fields under
|
|
||||||
the **Credentials** tab.
|
|
||||||
|
|
||||||
|
|
||||||
To set the **PDT Identity Token**, switch to :ref:`developer mode <developer-mode>` and retrieve the
|
|
||||||
token by following the configuration step :ref:`paypal/enable-pdt`.
|
|
||||||
|
|
||||||
.. important::
|
|
||||||
If you are trying Paypal as a test, using a :ref:`Paypal Sandbox account <paypal/testing>`,
|
|
||||||
change the **State** to *Test Mode*. We recommend doing this on a test Odoo database rather than
|
|
||||||
on your main database.
|
|
||||||
|
|
||||||
Fees tab
|
|
||||||
--------
|
|
||||||
|
|
||||||
You can charge extra fees to your customers for paying with Paypal to cover the transaction fees
|
|
||||||
Paypal charges you. Once redirected to Paypal, your customer sees an extra amount applied to the
|
|
||||||
order amount.
|
|
||||||
|
|
||||||
To activate this, go to Paypal configuration's :guilabel:`Fees` tab in Odoo and activate
|
|
||||||
:guilabel:`Add Extra Fees`.
|
|
||||||
|
|
||||||
You can refer to `Paypal Fees <https://www.paypal.com/webapps/mpp/paypal-fees>`_ to set up fees.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
`Traders in the EU <https://europa.eu/youreurope/citizens/consumers/shopping/pricing-payments/
|
|
||||||
index_en.htm>`_ are not allowed to charge extra fees for paying with credit cards.
|
|
||||||
|
|
||||||
Settings in Paypal
|
|
||||||
==================
|
==================
|
||||||
|
|
||||||
First, set up your Paypal account to build a seamless customer experience with Odoo.
|
To access your PayPal account settings, log into PayPal, open the :guilabel:`Account Settings`, and
|
||||||
|
open the :guilabel:`Website payments` menu.
|
||||||
|
|
||||||
Log into your PayPal account and open the account settings. Then, go to :menuselection:`Account menu
|
.. image:: paypal/paypal-account.png
|
||||||
--> Account settings --> Website payments`.
|
:align: center
|
||||||
|
:alt: PayPal account menu
|
||||||
|
|
||||||
Enable Auto Return
|
.. important::
|
||||||
------------------
|
Note that for PayPal to work **in Odoo**, the options :ref:`Auto Return <paypal/auto-return>`,
|
||||||
|
:ref:`PDT <paypal/pdt>`, and :ref:`IPN <paypal/ipn>` **must** all be enabled.
|
||||||
|
|
||||||
The *Auto Return* feature automatically redirects your customers to Odoo once the payment is
|
.. _paypal/auto-return:
|
||||||
processed.
|
|
||||||
|
|
||||||
From the *Website payments* settings page, go to :menuselection:`Website preferences --> Update -->
|
Auto Return
|
||||||
Auto return for website payments` and select **On**. Enter the address of your Odoo database (e.g.,
|
-----------
|
||||||
`https://yourcompany.odoo.com`) in the **Return URL** field.
|
|
||||||
|
The **Auto Return** feature automatically redirects customers to Odoo once the payment is processed.
|
||||||
|
|
||||||
|
From :guilabel:`Website payments`, go to :menuselection:`Website preferences --> Update --> Auto
|
||||||
|
return for website payments --> Auto return` and select :guilabel:`On`. Enter the address of your
|
||||||
|
Odoo database (e.g., `https://yourcompany.odoo.com`) in the :guilabel:`Return URL` field, and
|
||||||
|
:guilabel:`Save`.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
Any URL will do the job. Odoo only needs the setting to be enabled since it uses another URL.
|
Any URL does the job. Odoo only needs the setting to be enabled since it uses another URL.
|
||||||
|
|
||||||
.. _paypal/enable-pdt:
|
.. _paypal/pdt:
|
||||||
|
|
||||||
Enable Payment Data Transfer (PDT)
|
Payment Data Transfer (PDT)
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
:abbr:`PDT (Payment Data Transfer)` allows to receive payment confirmations, displays the payment
|
||||||
|
status to the customers, and verifies the authenticity of the payments. From :menuselection:`Website
|
||||||
|
preferences --> Update`, scroll down to :guilabel:`Payment data transfer` and select :guilabel:`On`.
|
||||||
|
|
||||||
|
.. tip::
|
||||||
|
PayPal displays your **PDT Identity Token** as soon as :ref:`Auto return <paypal/auto-return>`
|
||||||
|
and :ref:`Payment Data Transfer (PDT) <paypal/pdt>` are enabled. If you need the **PDT Identity
|
||||||
|
Token**, disable and re-enable :guilabel:`Payment data transfer` to display the token again.
|
||||||
|
|
||||||
|
.. _paypal/ipn:
|
||||||
|
|
||||||
|
Instant Payment Notification (IPN)
|
||||||
----------------------------------
|
----------------------------------
|
||||||
|
|
||||||
Enable the *Payment Data Transfer* feature to receive payment confirmations immediately. This
|
:abbr:`IPN (Instant Payment Notifications)` is similar to **PDT**, but allows for more
|
||||||
feature also displays the payment status to the customers and verifies the authenticity of the
|
notifications, such as chargeback notifications. To enable **IPN**, go to :menuselection:`Website
|
||||||
payments.
|
payments --> Instant payment notifications --> Update` and click :guilabel:`Choose IPN settings`.
|
||||||
|
Enter a :guilabel:`Notification URL`, select :guilabel:`Receive IPN messages (Enabled)`, and
|
||||||
|
:guilabel:`Save`.
|
||||||
|
|
||||||
From the *Website payments* settings page, go to :menuselection:`Website preferences --> Update -->
|
PayPal Account Optional
|
||||||
Payment data transfer` and select **On**. PayPal displays your **PDT Identity Token** as soon as
|
|
||||||
the change is saved.
|
|
||||||
|
|
||||||
Paypal Account Optional
|
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
We advise you to not prompt customers to log in with a Paypal account when they get to pay. Let them
|
We advise not to prompt customers to log in with a PayPal account upon payment. It is better and
|
||||||
pay with debit/credit cards as well, or you might lose some deals. Make sure this setting is turned
|
more accessible for customers to pay with a debit/credit card. To disable that prompt, go to
|
||||||
on.
|
:menuselection:`Account Settings --> Website payments --> Update` and select :guilabel:`On` for
|
||||||
|
:guilabel:`PayPal account optional`.
|
||||||
|
|
||||||
Payment Messages Format
|
Payment Messages Format
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
Suppose you use accented characters (or anything else than primary Latin characters) for your
|
If you use accented characters (or anything other than primary Latin characters) for customer names
|
||||||
customer names or addresses. In that case, you **must** configure the encoding format of the payment
|
or addresses, then you **must** configure the encoding format of the payment request sent by Odoo to
|
||||||
request sent by Odoo to Paypal. Otherwise, some transactions fail without notice.
|
PayPal. If you do not, some transactions fail without notice.
|
||||||
|
|
||||||
To do so, go to `your production account <https://www.paypal.com/cgi-bin/customerprofileweb
|
To do so, go to `your production account <https://www.paypal.com/cgi-bin/customerprofileweb
|
||||||
?cmd=_profile-language-encoding>`_. Then, click *More Options* and set the two default encoding
|
?cmd=_profile-language-encoding>`_. Then, click :guilabel:`More Options` and set the two default
|
||||||
formats as **UTF-8**.
|
encoding formats as :guilabel:`UTF-8`.
|
||||||
|
|
||||||
Your Paypal account is ready!
|
|
||||||
|
|
||||||
.. tip::
|
.. tip::
|
||||||
- For Encrypted Website Payments & EWP_SETTINGS error, please check the `Paypal documentation
|
- For Encrypted Website Payments & EWP_SETTINGS error, please check the `Paypal documentation
|
||||||
@@ -113,6 +86,52 @@ Your Paypal account is ready!
|
|||||||
`link <https://sandbox.paypal.com/cgi-bin/customerprofileweb?cmd=_profile-language-encoding>`_
|
`link <https://sandbox.paypal.com/cgi-bin/customerprofileweb?cmd=_profile-language-encoding>`_
|
||||||
to configure the encoding format in a test environment.
|
to configure the encoding format in a test environment.
|
||||||
|
|
||||||
|
Settings in Odoo
|
||||||
|
================
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
:ref:`payment_acquirers/add_new`
|
||||||
|
|
||||||
|
Credentials
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Odoo needs your **API Credentials** to connect with your PayPal account. To do so, go to
|
||||||
|
:menuselection:`Accounting --> Configuration --> Payment Acquirers` and :guilabel:`Activate` PayPal.
|
||||||
|
Then, enter your PayPal account credentials in the :guilabel:`Credentials` tab:
|
||||||
|
|
||||||
|
- :guilabel:`Email`: the login email address in Paypal;
|
||||||
|
- :guilabel:`PDT Identity Token`: the key used to verify the authenticity of transactions;
|
||||||
|
- :guilabel:`Use IPN`: enable for PayPal to work properly in Odoo.
|
||||||
|
|
||||||
|
.. tip::
|
||||||
|
Save the :guilabel:`PDT Identity Token` for later use.
|
||||||
|
|
||||||
|
To set the :guilabel:`PDT Identity Token`, switch to :ref:`developer mode <developer-mode>` and
|
||||||
|
retrieve the token by following the configuration steps at :ref:`paypal/pdt`.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
The PayPal **Merchant ID** is not required in Odoo.
|
||||||
|
.. important::
|
||||||
|
If you are trying PayPal as a test, using a :ref:`PayPal Sandbox account <paypal/testing>`,
|
||||||
|
change the :guilabel:`State` to :guilabel:`Test Mode`. We recommend doing this on a test Odoo
|
||||||
|
database rather than on your main database.
|
||||||
|
|
||||||
|
Extra fees
|
||||||
|
----------
|
||||||
|
|
||||||
|
You can charge **extra fees** to customers choosing to pay with PayPal in order to cover the
|
||||||
|
transaction fees PayPal charges you. Once redirected to Paypal, your customer sees an extra amount
|
||||||
|
applied to the order amount.
|
||||||
|
|
||||||
|
To activate this option, go to :menuselection:`Accounting --> Configuration --> Payment Acquirers`
|
||||||
|
and select :guilabel:`PayPal`. Then, go to the :guilabel:`Fees` tab and tick the :guilabel:`Add
|
||||||
|
Extra Fees` box.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
- You can refer to `Paypal Fees <https://www.paypal.com/webapps/mpp/paypal-fees>`_ to set up
|
||||||
|
fees.
|
||||||
|
- `Traders in the EU <https://europa.eu/youreurope/citizens/consumers/shopping/pricing-payments/index_en.htm>`_ are not allowed to charge extra fees for paying with credit cards.
|
||||||
|
|
||||||
.. _paypal/testing:
|
.. _paypal/testing:
|
||||||
|
|
||||||
Test environment
|
Test environment
|
||||||
@@ -121,19 +140,21 @@ Test environment
|
|||||||
Configuration
|
Configuration
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
Thanks to Paypal Sandbox accounts, you can test the entire payment flow in Odoo.
|
Thanks to PayPal sandbox accounts, you can test the entire payment flow in Odoo.
|
||||||
|
|
||||||
Log into the `Paypal Developer Site <https://developer.paypal.com/>`_ using your Paypal
|
Log into the `Paypal Developer Site <https://developer.paypal.com/>`_ using your PayPal credentials,
|
||||||
credentials, which creates two sandbox accounts:
|
which creates two sandbox accounts:
|
||||||
|
|
||||||
- A business account (to use as merchants, e.g.,
|
- A business account (to use as merchants, e.g.,
|
||||||
`pp.merch01-facilitator@example.com <mailto:pp.merch01-facilitator@example.com>`_).
|
`pp.merch01-facilitator@example.com <mailto:pp.merch01-facilitator@example.com>`_);
|
||||||
- A default personal account (to use as shoppers, e.g.,
|
- A default personal account (to use as shoppers, e.g.,
|
||||||
`pp.merch01-buyer@example.com <mailto:pp.merch01-buyer@example.com>`_).
|
`pp.merch01-buyer@example.com <mailto:pp.merch01-buyer@example.com>`_).
|
||||||
|
|
||||||
Log into Paypal Sandbox using the merchant account and follow the same configuration instructions.
|
Log into PayPal sandbox using the merchant account and follow the same configuration instructions.
|
||||||
Enter your sandbox credentials in Odoo and ensure Paypal is set on *Test Mode*. We recommend doing
|
Enter your sandbox credentials in Odoo (:menuselection:`Accounting --> Configuration --> Payment
|
||||||
this on a test Odoo database rather than your main database.
|
Acquirer --> PayPal` in the :guilabel:`Credentials` tab, and make sure the status is set on
|
||||||
|
:guilabel:`Test Mode`. We recommend doing this on a test Odoo database rather than your main
|
||||||
|
database.
|
||||||
|
|
||||||
Run a test transaction from Odoo using the sandbox personal account.
|
Run a test transaction from Odoo using the sandbox personal account.
|
||||||
|
|
||||||
|
|||||||
|
After Width: | Height: | Size: 14 KiB |
@@ -1,39 +1,52 @@
|
|||||||
===================================
|
==============
|
||||||
How to get paid with wire transfers
|
Wire transfers
|
||||||
===================================
|
==============
|
||||||
|
|
||||||
**Wire Transfer** is the default payment method available. The aim is providing your customers with
|
The **Wire transfer** payment method allows you to provide payment instructions to your customers,
|
||||||
your bank details so they can pay on their own. This is very easy to start with but slow and
|
such as the bank details and communication. They are displayed:
|
||||||
inefficient process-wise. Opt for payment acquirers as soon as you can!
|
|
||||||
|
|
||||||
How to provide customers with payment instructions
|
- at the end of the checkout process, once the customer has selected :guilabel:`Wire transfer` as a
|
||||||
==================================================
|
payment method and clicked the :guilabel:`Pay now` button:
|
||||||
|
|
||||||
Put your payment instructions in the **Thanks Message** of your payment method.
|
.. image:: wire_transfer/payment_instructions_checkout.png
|
||||||
|
:alt: Payment instructions at checkout
|
||||||
|
|
||||||
|
- on the customer portal:
|
||||||
|
|
||||||
|
.. image:: wire_transfer/payment_instructions_portal.png
|
||||||
|
:alt: Payment instructions on the customer portal
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
- While this method is very accessible and requires minimal setup, it is very inefficient
|
||||||
|
process-wise. We recommend setting up a :doc:`payment acquirer <../payment_acquirers>` instead.
|
||||||
|
- Online orders remain in the :guilabel:`Quotation sent` (i.e., unpaid order) stage until you
|
||||||
|
receive the payment and :guilabel:`Confirm` the order.
|
||||||
|
|
||||||
|
.. tip::
|
||||||
|
**Wire transfer** can be used as a template for other payment methods that are processed
|
||||||
|
manually, such as checks, by renaming or duplicating it.
|
||||||
|
|
||||||
|
Configuration
|
||||||
|
=============
|
||||||
|
|
||||||
|
**Wire Transfer** is installed and enabled by default.
|
||||||
|
|
||||||
|
To configure it, go to :menuselection:`Accounting / Website --> Configuration -->
|
||||||
|
Payment Acquirers`, and open the :guilabel:`Wire Transfer` card. Then, in the
|
||||||
|
:guilabel:`Configuration` tab:
|
||||||
|
|
||||||
|
- Select the :guilabel:`Communication` to be used;
|
||||||
|
|
||||||
|
- :guilabel:`Based on Document Reference`: sales order or invoice number
|
||||||
|
- :guilabel:`Based on Customer ID`: customer identifier
|
||||||
|
|
||||||
|
- Tick the :guilabel:`Enable QR codes` check box to activate :doc:`QR code payments
|
||||||
|
<../accounting/customer_invoices/epc_qr_code>`.
|
||||||
|
|
||||||
|
Define the payment instructions in the :guilabel:`Messages` tab:
|
||||||
|
|
||||||
.. image:: wire_transfer/payment_instructions.png
|
.. image:: wire_transfer/payment_instructions.png
|
||||||
:align: center
|
:alt: Define payment instructions
|
||||||
|
|
||||||
They will appear to the customers when they place an order.
|
|
||||||
|
|
||||||
.. image:: wire_transfer/payment_customer_instructions.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
How to manage an order once you get paid
|
|
||||||
========================================
|
|
||||||
|
|
||||||
Whenever a customer pays by wire transfer, the order stays in an intermediary stage **Quotation
|
|
||||||
Sent** (i.e. unpaid order). When you get paid, you confirm the order manually to launch the
|
|
||||||
delivery.
|
|
||||||
|
|
||||||
How to create other manual payment methods
|
|
||||||
==========================================
|
|
||||||
|
|
||||||
If you manage a B2B business, you can create other manually-processed payment methods like paying by
|
|
||||||
check. To do so, just rename *Wire Transfer* or duplicate it.
|
|
||||||
|
|
||||||
.. image:: wire_transfer/payment_check.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
.. seealso::
|
.. seealso::
|
||||||
- :doc:`../payment_acquirers`
|
:ref:`payment_acquirers/journal`
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 6.0 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 36 KiB |
@@ -1,137 +1,282 @@
|
|||||||
=================================
|
=====================================
|
||||||
Manage lots of identical products
|
Use lots to manage groups of products
|
||||||
=================================
|
=====================================
|
||||||
|
|
||||||
Lots are useful for products you receive in great quantity and for which
|
*Lots* are one of the two ways to identify and track products in Odoo. A lot usually indicates a
|
||||||
a lot number can help in reporting, quality controls, or any other info.
|
specific batch of an item that was received, is currently stored, or was shipped from a warehouse,
|
||||||
Lots will help identify a number of pieces having, for instance, a
|
but can also pertain to a batch of products manufactured in-house, as well.
|
||||||
production fault. It can be useful for a batch production of clothes or
|
|
||||||
food.
|
|
||||||
|
|
||||||
Odoo has the capacity to manage lots, ensuring compliance with the
|
Manufacturers assign lot numbers to groups of products that have common properties; this can lead to
|
||||||
traceability requirements imposed by the majority of industries.
|
multiple goods sharing the same lot number. This helps to identify a number of products in a single
|
||||||
|
group, and allows for end-to-end traceability of these products through each step in their
|
||||||
|
lifecycles.
|
||||||
|
|
||||||
The double-entry management in Odoo enables you to run very advanced
|
Lots are useful for products that are manufactured or received in large quantities (such as clothes
|
||||||
traceability.
|
or food), and can be used to trace a product back to a group. This is especially useful when
|
||||||
|
managing product recalls or expiration dates.
|
||||||
|
|
||||||
Setting Up
|
.. seealso::
|
||||||
==========
|
:doc:`/applications/inventory_and_mrp/inventory/management/lots_serial_numbers/serial_numbers`
|
||||||
|
|
||||||
Application Configuration
|
Enable lots & serial numbers
|
||||||
-------------------------
|
============================
|
||||||
|
|
||||||
First, you need to activate the tracking of lot numbers. To do so, go to
|
To track products using lots, the *Lots & Serial Numbers* feature must be enabled. Go to
|
||||||
:menuselection:`Inventory --> Configuration --> Settings` and tick *Lots & Serial
|
the :menuselection:`Inventory app --> Configuration --> Settings`, scroll down to the
|
||||||
Numbers*. Then, click on save.
|
:guilabel:`Traceability` section, and click the box next to :guilabel:`Lots & Serial Numbers`. Then,
|
||||||
|
click the :guilabel:`Save` button to save changes.
|
||||||
|
|
||||||
.. image:: lots/lots_01.png
|
.. image:: lots/lots-enabled-lots-setting.png
|
||||||
:align: center
|
:align: center
|
||||||
|
:alt: Enabled lots and serial numbers feature in inventory settings.
|
||||||
|
|
||||||
Product Configuration
|
Track products by lots
|
||||||
---------------------
|
======================
|
||||||
|
|
||||||
Now, you have to configure which products you want to track by serial
|
Once the :guilabel:`Lots & Serial Numbers` setting has been activated, individual products can now
|
||||||
numbers.
|
be configured to be tracked using lots. To do this, go to the :menuselection:`Inventory app -->
|
||||||
|
Products --> Products`, and choose a product.
|
||||||
|
|
||||||
Go to :menuselection:`Master Data --> Products` and open the product of your choice.
|
Once on the product form, click :guilabel:`Edit` to make changes to the form. Then, click the
|
||||||
There, click on *Edit* and select *Tracking by Lots* in the
|
:guilabel:`Inventory` tab. In the :guilabel:`Traceability` section, click :guilabel:`By Lots`. Then,
|
||||||
inventory tab.
|
click :guilabel:`Save` to save changes. Existing or new lot numbers can now be assigned to
|
||||||
|
newly-received or manufactured batches of this product.
|
||||||
|
|
||||||
.. image:: lots/lots_02.png
|
.. important::
|
||||||
:align: center
|
If a product has stock on-hand prior to activating tracking by lots or serial numbers, an
|
||||||
|
inventory adjustment might need to be performed to assign lot numbers to the existing stock.
|
||||||
|
|
||||||
.. image:: lots/lots_03.png
|
.. image:: lots/lots-tracking-product-form.png
|
||||||
:align: center
|
:align: center
|
||||||
|
:alt: Enabled tracking by lots feature on product form.
|
||||||
|
|
||||||
Manage Lots
|
Create new lots for products already in stock
|
||||||
===========
|
---------------------------------------------
|
||||||
|
|
||||||
Receipts
|
New lots can be created for products already in stock with no assigned lot number. To do this, go to
|
||||||
--------
|
the :menuselection:`Inventory app --> Products --> Lots/Serial Numbers`, and click
|
||||||
|
:guilabel:`Create`. Doing so reveals a separate page where a new :guilabel:`Lot/Serial Number` is
|
||||||
|
generated automatically.
|
||||||
|
|
||||||
In order to receive a product tracked by lots, you have to specify its
|
.. tip::
|
||||||
lot numbers. You have several ways of doing so:
|
While Odoo automatically generates a new :guilabel:`Lot/Serial Number` to follow the most recent
|
||||||
|
number, it can be edited and changed to any desired number, by clicking the line under the
|
||||||
|
:guilabel:`Lot/Serial Number` field, and changing the generated number.
|
||||||
|
|
||||||
1. Manually assign the different lot numbers
|
Once the new :guilabel:`Lot/Serial Number` is generated, click the blank field next to
|
||||||
|
:guilabel:`Product` to reveal a drop-down menu. From this menu, select the product to which this new
|
||||||
|
number will be assigned.
|
||||||
|
|
||||||
2. Copy/paste lot numbers from an Excel file
|
This form also provides the option to adjust the :guilabel:`Quantity`, assign a unique
|
||||||
|
:guilabel:`Internal Reference` number (for traceability purposes), and assign this specific lot or
|
||||||
|
serial number configuration to a specific website in the :guilabel:`Website` field (if working in a
|
||||||
|
multi-website environment).
|
||||||
|
|
||||||
First, you need to open the detailed operations of your picking.
|
A detailed description of this specific lot or serial number can also be added in the
|
||||||
|
:guilabel:`Description` tab below.
|
||||||
|
|
||||||
.. image:: lots/lots_04.png
|
When all desired configurations are complete, click the :guilabel:`Save` button to save all changes.
|
||||||
:align: center
|
|
||||||
|
|
||||||
Manually assign the different lot numbers
|
.. image:: lots/lots-new-lot-number.png
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
:align: center
|
||||||
|
:alt: New lot number creation form with assigned product.
|
||||||
|
|
||||||
When opening the detailed operations, you can click on *Add a line*.
|
After a new lot number has been created, saved, and assigned to the desired product, navigate back
|
||||||
Then, you will be able to fill the lot number in. Once done, you can
|
to the product form in the :menuselection:`Inventory` app, by going to :menuselection:`Products -->
|
||||||
click on *Add a line* again to register a new lot number.
|
Products`, and selecting the product to which this newly-created lot number was just assigned.
|
||||||
|
|
||||||
.. image:: lots/lots_05.png
|
On that product's detail form, click the :guilabel:`Lot/Serial Numbers` smart button to view the new
|
||||||
:align: center
|
lot number. When additional quantity of this product is received or manufactured, this new lot
|
||||||
|
number can be selected and assigned to it.
|
||||||
|
|
||||||
Copy/paste lot number from an Excel file
|
Manage lots for shipping and receiving
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
======================================
|
||||||
|
|
||||||
Once the spreadsheet containing the lot numbers you received from your
|
Lot numbers can be assigned for both **incoming** and **outgoing** goods. For incoming goods, lot
|
||||||
supplier and copy the list. Then, you can paste them in the *Lot/Serial
|
numbers are assigned directly on the purchase order form. For outgoing goods, lot numbers are
|
||||||
Number Name* column for Odoo to automatically create the necessary
|
assigned directly on the sales order form.
|
||||||
lines. After that, you will have to manually enter the number of
|
|
||||||
products that are contained in each one of the lots.
|
|
||||||
|
|
||||||
.. image:: lots/lots_06.png
|
Manage lots on receipts
|
||||||
:align: center
|
-----------------------
|
||||||
|
|
||||||
.. image:: lots/lots_05.png
|
Assigning lot numbers to **incoming** goods can be done directly from the purchase order (PO).
|
||||||
:align: center
|
|
||||||
|
|
||||||
.. image:: lots/lots_07.png
|
To create a :abbr:`PO (purchase order)`, go to :menuselection:`Purchase app --> Create`. Doing so
|
||||||
:align: center
|
reveals a new, blank request for quotation (RFQ) form.
|
||||||
|
|
||||||
Operation Types
|
On this :abbr:`RFQ (request for quotation)`, fill out the necessary information by adding a
|
||||||
---------------
|
:guilabel:`Vendor`, and adding the desired products to the :guilabel:`Product` lines, by clicking
|
||||||
|
:guilabel:`Add a product` (under the :guilabel:`Products` tab).
|
||||||
|
|
||||||
Of course, you also have the possibility to define how you will manage
|
Choose the desired quantity of the product to order by changing the number in the
|
||||||
lots for each operation type. To do so, open the *Inventory* app and
|
:guilabel:`Quantity` column.
|
||||||
go to :menuselection:`Configuration --> Operation Types`.
|
|
||||||
|
|
||||||
For each type (receipts, internal transfers, deliveries, …), you can
|
Once the :abbr:`RFQ (request for quotation)` has been filled out, click :guilabel:`Confirm Order`.
|
||||||
decide if you allow to create new lot numbers or only use existing ones.
|
When the :abbr:`RFQ (request for quotation)` is confirmed, it becomes a :guilabel:`Purchase Order`,
|
||||||
By default, the creation of new lots is only allowed at product
|
and a :guilabel:`Receipt` smart button appears. Click the :guilabel:`Receipt` smart button to be
|
||||||
reception, and using existing lot numbers isn’t allowed in this
|
taken to the warehouse receipt form.
|
||||||
operation. If you have inter-warehouse transfers and track products by
|
|
||||||
lots, it can be useful to allow using existing lot numbers in receipts
|
|
||||||
too.
|
|
||||||
|
|
||||||
.. image:: lots/lots_08.png
|
.. note::
|
||||||
:align: center
|
Clicking :guilabel:`Validate` before assigning a lot number to the ordered product quantities
|
||||||
|
will result in a :guilabel:`User Error` pop-up. The pop-up requires entry of a lot or serial
|
||||||
|
number for the ordered products. The :abbr:`RFQ (request for quotation)` **cannot** be validated
|
||||||
|
without a lot number being assigned.
|
||||||
|
|
||||||
|
.. image:: lots/lots-user-error-popup.png
|
||||||
|
:align: center
|
||||||
|
:alt: Add lot/serial number user error popup.
|
||||||
|
|
||||||
|
From here, click the :guilabel:`Additional Options` menu, represented by a :guilabel:`hamburger
|
||||||
|
(four horizontal lines)` icon, located to the right of the :guilabel:`Unit of Measure` column in the
|
||||||
|
:guilabel:`Operations` tab). Clicking that icon reveals a :guilabel:`Detailed Operations` pop-up.
|
||||||
|
|
||||||
|
In this pop-up, configure a number of different fields, including the assignation of a lot number,
|
||||||
|
under the :guilabel:`Lot/Serial Number Name` column, located at the bottom of the pop-up.
|
||||||
|
|
||||||
|
There are two ways to assign lot numbers: **manually** and **copy/paste**.
|
||||||
|
|
||||||
|
- **Manually assign lot numbers**: Click :guilabel:`Add a line` and choose the location the products
|
||||||
|
will be stored in under the :guilabel:`To` column. Then, type a new :guilabel:`Lot Number Name`
|
||||||
|
and set the :guilabel:`Done` quantity.
|
||||||
|
|
||||||
|
.. image:: lots/lots-assign-lot-number-popup.png
|
||||||
|
:align: center
|
||||||
|
:alt: Assign lot number detailed operations popup.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
If quantities should be processed in multiple locations and lots, click :guilabel:`Add a line`
|
||||||
|
and type a new :guilabel:`Lot Number Name` for additional quantities. Repeat until the
|
||||||
|
:guilabel:`Quantity Done` matches the :guilabel:`Demand`.
|
||||||
|
|
||||||
|
- **Copy/paste lot numbers from a spreadsheet**: Populate a spreadsheet with all of the lot numbers
|
||||||
|
received from the supplier (or manually chosen to assign upon receipt). Then, copy and paste them
|
||||||
|
in the :guilabel:`Lot/Serial Number Name` column. Odoo will automatically create the necessary
|
||||||
|
number of lines based on the amount of numbers pasted in the column. From here, the :guilabel:`To`
|
||||||
|
locations and :guilabel:`Done` quantities can be manually entered in each of the lot number lines.
|
||||||
|
|
||||||
|
.. image:: lots/lots-excel-spreadsheet.png
|
||||||
|
:align: center
|
||||||
|
:alt: List of lot numbers copied on excel spreadsheet.
|
||||||
|
|
||||||
|
Once all product quantities have been assigned a lot number, click :guilabel:`Confirm` to close the
|
||||||
|
pop-up. Then, click :guilabel:`Validate`.
|
||||||
|
|
||||||
|
A :guilabel:`Traceability` smart button appears upon validating the receipt. Click the
|
||||||
|
:guilabel:`Traceability` smart button to see the updated :guilabel:`Traceability Report`, which
|
||||||
|
includes: a :guilabel:`Reference` document, the :guilabel:`Product` being traced, the
|
||||||
|
:guilabel:`Lot/Serial #` assigned, and more.
|
||||||
|
|
||||||
|
Manage lots on delivery orders
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
Assigning lot numbers to **outgoing** goods can be done directly from the sales order (SO).
|
||||||
|
|
||||||
|
To create an :abbr:`SO (sales order)`, go to the :menuselection:`Sales app --> Create`. Doing so
|
||||||
|
reveals a new, blank quotation form.
|
||||||
|
|
||||||
|
On this blank quotation form, fill out the necessary information by adding a :guilabel:`Customer`,
|
||||||
|
and adding products to the :guilabel:`Product` lines (in the :guilabel:`Order Lines` tab) by
|
||||||
|
clicking :guilabel:`Add a product`.
|
||||||
|
|
||||||
|
Then, choose the desired quantity to sell by changing the number in the :guilabel:`Quantity` column.
|
||||||
|
|
||||||
|
Once the quotation has been filled out, click the :guilabel:`Confirm` button to confirm the
|
||||||
|
quotation. When the quotation is confirmed, it becomes an :abbr:`SO (sales order)`, and a
|
||||||
|
:guilabel:`Delivery` smart button appears.
|
||||||
|
|
||||||
|
Click the :guilabel:`Delivery` smart button to view the warehouse receipt form for that specific
|
||||||
|
:abbr:`SO (sales order)`.
|
||||||
|
|
||||||
|
From here, click the :guilabel:`Additional Options` menu, represented by a `hamburger` icon (four
|
||||||
|
horizontal lines, located to the right of the :guilabel:`Unit of Measure` column in the
|
||||||
|
:guilabel:`Operations` tab). Clicking that icon reveals a :guilabel:`Detailed Operations` pop-up.
|
||||||
|
|
||||||
|
In the pop-up, a :guilabel:`Lot/Serial Number` will be chosen by default, with the full
|
||||||
|
:guilabel:`Reserved` quantity taken from that specific lot (if there is enough stock in that
|
||||||
|
particular lot).
|
||||||
|
|
||||||
|
If there is insufficient stock in that lot, or if partial quantities of the :guilabel:`Demand`
|
||||||
|
should be taken from multiple lots, change the quantity in the :guilabel:`Done` column to only
|
||||||
|
include that specific part of the total quantity.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
The lot automatically chosen for delivery orders varies, depending on the selected removal
|
||||||
|
strategy (:abbr:`FIFO (First In, First Out)`, :abbr:`LIFO (Last In, First Out)`, or :abbr:`FEFO
|
||||||
|
(First Expiry, First Out)`). It will also depend on the quantity ordered, and if there is enough
|
||||||
|
quantity in one lot to fulfill the order.
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
:doc:`/applications/inventory_and_mrp/inventory/routes/strategies/removal`
|
||||||
|
|
||||||
|
Then, click :guilabel:`Add a line`, select an additional (different) :guilabel:`Lot/Serial Number`,
|
||||||
|
apply the rest of the :guilabel:`Done` quantities, and click :guilabel:`Confirm` to close the
|
||||||
|
pop-up. Lastly, click the :guilabel:`Validate` button to deliver the products.
|
||||||
|
|
||||||
|
.. image:: lots/lots-detailed-operations-popup.png
|
||||||
|
:align: center
|
||||||
|
:alt: Detailed operations popup for source lot number on sales order.
|
||||||
|
|
||||||
|
Upon validating the delivery order, a :guilabel:`Traceability` smart button appears. Click the
|
||||||
|
:guilabel:`Traceability` smart button to see the updated :guilabel:`Traceability Report`, which
|
||||||
|
includes a :guilabel:`Reference` document, the :guilabel:`Product` being traced, the
|
||||||
|
:guilabel:`Date`, and the :guilabel:`Lot/Serial #` assigned.
|
||||||
|
|
||||||
|
The :guilabel:`Traceability Report` can also include a :guilabel:`Reference` receipt from the
|
||||||
|
previous purchase order, if the product quantities shared the same lot number.
|
||||||
|
|
||||||
|
Manage lots for different operations types
|
||||||
|
==========================================
|
||||||
|
|
||||||
|
In Odoo, the creation of new lots is only allowed upon **receiving** products from a purchase order,
|
||||||
|
by default. **Existing** lot numbers cannot be used.
|
||||||
|
|
||||||
|
For sales orders, the opposite is true: new lot numbers cannot be created on the delivery order,
|
||||||
|
only existing lot numbers can be used.
|
||||||
|
|
||||||
|
To change the ability to use new (or existing) lot numbers on any operation type, go to the
|
||||||
|
:menuselection:`Inventory app --> Configuration --> Operations Types`, and select the desired
|
||||||
|
:guilabel:`Operation Type`.
|
||||||
|
|
||||||
|
For :guilabel:`Receipts`, found on the :menuselection:`Operations Types` page, the :guilabel:`Use
|
||||||
|
Existing Lots/Serial Numbers` option can be enabled, by clicking :guilabel:`Edit`, and then clicking
|
||||||
|
the checkbox beside the :guilabel:`Use Existing Lots/Serial Numbers` option (in the
|
||||||
|
:guilabel:`Traceability` section). Lastly, click the :guilabel:`Save` button to save the changes.
|
||||||
|
|
||||||
|
For :guilabel:`Delivery Orders`, the :guilabel:`Create New Lots/Serial Numbers` option can be
|
||||||
|
enabled, by clicking :guilabel:`Edit`, and clicking the checkbox beside the :guilabel:`Create New
|
||||||
|
Lots/Serial Numbers` option. Be sure to click the :guilabel:`Save` button to save all changes.
|
||||||
|
|
||||||
|
.. image:: lots/lots-operations-type-form.png
|
||||||
|
:align: center
|
||||||
|
:alt: Enabled traceability setting on operations type form.
|
||||||
|
|
||||||
|
.. tip::
|
||||||
|
For inter-warehouse transfers involving products tracked by lots, it can be useful to enable the
|
||||||
|
:guilabel:`Use Existing Lots/Serial Numbers` option for warehouse receipts.
|
||||||
|
|
||||||
Lots traceability
|
Lots traceability
|
||||||
=================
|
=================
|
||||||
|
|
||||||
The lot number given to the products allows you to keep track of where
|
Manufacturers and companies can refer to traceability reports to see the entire lifecycle of a
|
||||||
they were received, put in stock, to whom they were sold and where they
|
product: where (and when) it came from, where it was stored, and who (and when) it went to.
|
||||||
were shipped to.
|
|
||||||
|
|
||||||
To track an item, open the *Inventory* module and, in :menuselection:`Master Data -->
|
To see the full traceability of a product, or group by lots, go to the :menuselection:`Inventory app
|
||||||
Lots/Serial Numbers`, click on the lot number corresponding to your
|
--> Products --> Lots/Serial Numbers`. Doing so reveals the :menuselection:`Lots/Serial Numbers`
|
||||||
search.
|
dashboard.
|
||||||
|
|
||||||
.. image:: lots/lots_09.png
|
From here, products with lot numbers assigned to them will be listed by default, and can be expanded
|
||||||
:align: center
|
to show the lot numbers those products have assigned to them.
|
||||||
|
|
||||||
When you open the *Traceability* information, you see in which
|
To group by lots (or serial numbers), begin by removing any filters in the search bar. Then, click
|
||||||
documents the lot number has been used.
|
the :guilabel:`Group By` drop-down, select :guilabel:`Add Custom Group`, and select
|
||||||
|
:guilabel:`Lot/Serial Number` from the drop-down menu. Then, click :guilabel:`Apply`.
|
||||||
|
|
||||||
.. image:: lots/lots_10.png
|
Doing so displays all existing lots and serial numbers, and can be expanded to show all quantities
|
||||||
:align: center
|
of products with that assigned number.
|
||||||
|
|
||||||
Now, if you want to locate the lot number, you can do so by clicking on
|
.. image:: lots/lots-traceability-report.png
|
||||||
the *Location* stat button.
|
:align: center
|
||||||
|
:alt: Lots and serial numbers traceability report.
|
||||||
|
|
||||||
.. image:: lots/lots_11.png
|
.. seealso::
|
||||||
:align: center
|
:doc:`/applications/inventory_and_mrp/inventory/management/lots_serial_numbers/differences`
|
||||||
|
|
||||||
.. image:: lots/lots_12.png
|
|
||||||
:align: center
|
|
||||||
|
|||||||
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 66 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 39 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 8.2 KiB |
|
Before Width: | Height: | Size: 9.0 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 8.4 KiB |
|
Before Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 9.7 KiB |
|
Before Width: | Height: | Size: 7.3 KiB |
|
Before Width: | Height: | Size: 5.7 KiB |