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 = {
|
||||
'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'
|
||||
@@ -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.
|
||||
versions_names = {
|
||||
'master': "Master",
|
||||
'saas-16.3': "Odoo Online",
|
||||
'saas-16.2': "Odoo Online",
|
||||
'saas-16.1': "Odoo Online",
|
||||
'16.0': "Odoo 16",
|
||||
@@ -314,13 +315,16 @@ latex_documents = [
|
||||
'Odoo Enterprise Subscription Agreement (ES)', '', 'howto'),
|
||||
('legal/terms/i18n/partnership_tex_es',
|
||||
'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
|
||||
# `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
|
||||
# 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.
|
||||
latex_logo = 'static/img/odoo_logo.png'
|
||||
|
||||
@@ -43,7 +43,7 @@ Configuration samples
|
||||
|
||||
* 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
|
||||
|
||||
@@ -55,7 +55,7 @@ in ``/etc/odoo.conf`` set:
|
||||
was sent to ``www.mycompany.com`` or ``mycompany.co.uk``, but not
|
||||
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
|
||||
|
||||
@@ -150,7 +150,7 @@ Configuration sample
|
||||
* with 'pwd' as a password
|
||||
* 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
|
||||
|
||||
@@ -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 .
|
||||
* 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
|
||||
|
||||
@@ -273,7 +273,7 @@ Configuration sample
|
||||
* Redirect http requests to https
|
||||
* Proxy requests to odoo
|
||||
|
||||
in ``/etc/odoo.conf`` set:
|
||||
in :ref:`the configuration file <reference/cmdline/config_file>` set:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
|
||||
.. _setup/enterprise:
|
||||
|
||||
===============================
|
||||
Upgrade Community to Enterprise
|
||||
===============================
|
||||
===================================
|
||||
Switch from Community to Enterprise
|
||||
===================================
|
||||
|
||||
Depending on your current installation, there are multiple ways to upgrade
|
||||
your community version.
|
||||
@@ -98,7 +98,7 @@ On Windows
|
||||
|
||||
.. 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.
|
||||
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.**
|
||||
|
||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
||||
| | Odoo Online | Odoo.sh | On-Premise | Release date | End of support |
|
||||
+=================+=============+==========+=============+================+========================+
|
||||
| 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 16.0** | |green| | |green| | |green| | October 2022 | October 2025 (planned) |
|
||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
||||
| Odoo saas~15.2 | |red| | N/A | N/A | March 2022 | 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 |
|
||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: auto
|
||||
|
||||
* -
|
||||
- Odoo Online
|
||||
- Odoo.sh
|
||||
- On-Premise
|
||||
- Release date
|
||||
- End of support
|
||||
* - Odoo saas~16.3
|
||||
- |green|
|
||||
- N/A
|
||||
- N/A
|
||||
- June 2023
|
||||
- September 2023 (planned)
|
||||
* - Odoo saas~16.2
|
||||
- |green|
|
||||
- N/A
|
||||
- N/A
|
||||
- March 2023
|
||||
- July 2023 (planned)
|
||||
* - Odoo saas~16.1
|
||||
- |red|
|
||||
- N/A
|
||||
- N/A
|
||||
- February 2023
|
||||
- April 2023
|
||||
* - **Odoo 16.0**
|
||||
- |green|
|
||||
- |green|
|
||||
- |green|
|
||||
- October 2022
|
||||
- October 2025 (planned)
|
||||
* - Odoo saas~15.2
|
||||
- |red|
|
||||
- N/A
|
||||
- N/A
|
||||
- March 2022
|
||||
- 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::
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | | User | Admin |
|
||||
+=====================+=================+===========+===========+
|
||||
|Development | History | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | 1-click connect | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Logs | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Shell/SSH | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Mails | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Settings | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
|Production & Staging | History | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | 1-click connect | | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Logs | | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Shell/SSH | | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Mails | | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Monitoring | | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Backups | | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Settings | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
|Status | | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
|Settings | | | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: auto
|
||||
|
||||
* -
|
||||
-
|
||||
- User
|
||||
- Admin
|
||||
* - Development
|
||||
- History
|
||||
- |green|
|
||||
- |green|
|
||||
* -
|
||||
- 1-click connect
|
||||
- |green|
|
||||
- |green|
|
||||
* -
|
||||
- Logs
|
||||
- |green|
|
||||
- |green|
|
||||
* -
|
||||
- Shell/SSH
|
||||
- |green|
|
||||
- |green|
|
||||
* -
|
||||
- Mails
|
||||
- |green|
|
||||
- |green|
|
||||
* -
|
||||
- Upgrade
|
||||
- |green|
|
||||
- |green|
|
||||
* -
|
||||
- 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
|
||||
=============
|
||||
|
||||
@@ -55,137 +55,178 @@ accounts, smart matching suggestions, etc.
|
||||
Double-entry bookkeeping
|
||||
========================
|
||||
|
||||
Odoo automatically creates all the behind-the-scenes journal entries
|
||||
for each of your accounting transactions: customer invoices, point of
|
||||
sale order, expenses, inventory moves, etc.
|
||||
Odoo automatically creates all the underlying journal entries for all accounting transactions (e.g.,
|
||||
customer invoices, vendor bills, point-of-sales orders, expenses, inventory valuations, etc.).
|
||||
|
||||
Odoo uses the rules of double-entry bookkeeping system: all journal
|
||||
entries are automatically balanced (sum of debits = sum of credits).
|
||||
Odoo uses the double-entry bookkeeping system, whereby every entry needs a corresponding and
|
||||
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::
|
||||
- :doc:`Understand Odoo's accounting transactions per document
|
||||
<accounting/get_started/cheat_sheet>`
|
||||
:doc:`Accounting Cheat Sheet <accounting/get_started/cheat_sheet>`
|
||||
|
||||
Accrual and Cash Basis Methods
|
||||
==============================
|
||||
|
||||
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
|
||||
Accrual and cash basis
|
||||
======================
|
||||
|
||||
Retained earnings are the portion of income retained by your
|
||||
business. Odoo automatically calculates your current year earnings in
|
||||
real time so no year-end journal or rollover is required. This is
|
||||
calculated by reporting the profit and loss balance to your balance
|
||||
sheet report automatically.
|
||||
Both accrual and cash basis accounting are supported in Odoo. This allows reporting income and
|
||||
expense either when the transaction occurs (accrual basis) or when the payment is made or received
|
||||
(cash basis).
|
||||
|
||||
.. 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::
|
||||
:titlesonly:
|
||||
|
||||
@@ -1,69 +1,61 @@
|
||||
============
|
||||
EPC QR Codes
|
||||
EPC QR codes
|
||||
============
|
||||
|
||||
European Payments Council Quick Response Code,
|
||||
or **EPC QR Code**, are two-dimensional barcodes
|
||||
that customers can scan with their **mobile banking
|
||||
applications** to initiate a **SEPA Credit Transfer
|
||||
(SCT)**, and pay their invoices instantly.
|
||||
European Payments Council quick response codes, or **EPC QR codes**, are two-dimensional barcodes
|
||||
that customers can scan with their **mobile banking applications** to initiate a **SEPA credit
|
||||
transfer (SCT)** and pay their invoices instantly.
|
||||
|
||||
In addition to bringing ease of use and speed,
|
||||
it greatly reduces typing errors that would potentially
|
||||
make for payment issues.
|
||||
In addition to bringing ease of use and speed, it greatly reduces typing errors that would
|
||||
potentially make for payment issues.
|
||||
|
||||
.. note::
|
||||
This feature is only available in several European
|
||||
countries such as Austria, Belgium, Finland, Germany,
|
||||
and The Netherlands.
|
||||
This feature is only available for companies in several European countries such as Austria,
|
||||
Belgium, Finland, Germany, and the Netherlands.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`../bank`
|
||||
- `Odoo Academy: QR Code on Invoices for European Customers <https://www.odoo.com/r/VuU>`_
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
Go to :menuselection:`Accounting --> Configuration --> Settings`
|
||||
and activate the **SEPA QR Code** feature.
|
||||
Go to :menuselection:`Accounting --> Configuration --> Settings` and activate the :guilabel:`QR
|
||||
Codes` feature in the :guilabel:`Customer Payments` section.
|
||||
|
||||
.. image:: epc_qr_code/epc_qr_code01.png
|
||||
:align: center
|
||||
|
||||
Configure your Bank Account’s journal
|
||||
Configure your bank account's journal
|
||||
-------------------------------------
|
||||
|
||||
Make sure that your *Bank Account* is correctly configured
|
||||
on Odoo with your IBAN and BIC.
|
||||
Make sure that your :guilabel:`Bank Account` is correctly configured in Odoo with your IBAN and BIC.
|
||||
|
||||
To do so, go to :menuselection:`Accounting --> Configuration
|
||||
--> Journals`, open your *bank journal*, then fill out the
|
||||
*Bank Account* and *Bank* under the *Bank Account* tab.
|
||||
To do so, go to :menuselection:`Accounting --> Configuration --> Journals`, open your bank journal,
|
||||
then fill out the :guilabel:`Account Number` and :guilabel:`Bank` under the :guilabel:`Bank Account
|
||||
Number` column.
|
||||
|
||||
.. image:: epc_qr_code/epc_qr_code02.png
|
||||
:align: center
|
||||
.. image:: epc_qr_code/bank-journal.png
|
||||
: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
|
||||
long as you issue them to customers that are located in a
|
||||
country where this feature is available.
|
||||
EPC QR codes are added automatically to your invoices. Customers whose bank supports making payments
|
||||
via EPC QR codes will be able to scan the code and pay the invoice.
|
||||
|
||||
Go to :menuselection:`Accounting --> Customers --> Invoices`,
|
||||
and create a new invoice.
|
||||
Go to :menuselection:`Accounting --> Customers --> Invoices`, and create a new invoice.
|
||||
|
||||
Before posting it, open the *Other Info* tab. Odoo automatically
|
||||
fills out the *Bank Account* field with your IBAN.
|
||||
Before posting it, open the :guilabel:`Other Info` tab. Odoo automatically fills out the
|
||||
:guilabel:`Recipient Bank` field with your IBAN.
|
||||
|
||||
Make sure that the account indicated is the one you want to use to
|
||||
receive your customer’s payment as Odoo uses this field to generate
|
||||
the EPC QR Code.
|
||||
.. note::
|
||||
In the :guilabel:`Other Info` tab, the account indicated in the :guilabel:`Recipient Bank` field
|
||||
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
|
||||
:align: center
|
||||
When the invoice is printed or previewed, the QR code is included at the bottom.
|
||||
|
||||
.. image:: epc_qr_code/invoice-qr-code.png
|
||||
:alt: QR code on a customer invoice
|
||||
|
||||
.. tip::
|
||||
If you want to issue an invoice without an EPC QR Code,
|
||||
remove the IBAN indicated in the *Bank Account* field,
|
||||
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>`_
|
||||
If you want to issue an invoice without an EPC QR code, remove the IBAN indicated in the
|
||||
:guilabel:`Recipient Bank` field, under the :guilabel:`Other Info` tab of the invoice.
|
||||
|
||||
|
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/multi_currency
|
||||
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
|
||||
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
|
||||
your follow-ups via different means such as email, post, or SMS.
|
||||
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.
|
||||
|
||||
.. seealso::
|
||||
- `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.
|
||||
|
||||
.. 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
|
||||
=================
|
||||
@@ -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.
|
||||
|
||||
.. note::
|
||||
- The contact information available on the invoice or on the contact form is used to send the
|
||||
reminder.
|
||||
- The contact information on the invoice or the contact form is used to send the reminder.
|
||||
- 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`
|
||||
and click on :guilabel:`Remind me later`. You will get the next report according to the next
|
||||
reminder date set on the statement.
|
||||
|
||||
.. tip::
|
||||
Reconcile your bank statements right before launching your follow-up process to avoid sending a
|
||||
reminder to a customer that has already paid you.
|
||||
Reconcile all bank statements right before launching the follow-up process to avoid sending a
|
||||
reminder to a customer that has already paid.
|
||||
|
||||
Debtor's trust level
|
||||
--------------------
|
||||
|
||||
@@ -304,7 +304,7 @@ directly to a product line.
|
||||
|
||||
taxes/cash_basis
|
||||
taxes/retention
|
||||
taxes/vat_validation
|
||||
taxes/vat_verification
|
||||
taxes/fiscal_positions
|
||||
taxes/avatax
|
||||
taxes/taxcloud
|
||||
|
||||
@@ -2,68 +2,64 @@
|
||||
EU intra-community distance selling
|
||||
===================================
|
||||
|
||||
**Distance sales within the European Union** include cross-border sales of goods and services to a
|
||||
private consumer (B2C) in another EU Member State when the seller doesn't meet face-to-face with the
|
||||
customer. Organizations must ensure that the VAT on distance sales is paid to the Member State in
|
||||
which the goods or services are delivered.
|
||||
EU intra-community distance selling involves the cross-border trade of goods and services from
|
||||
vendors registered for VAT purposes to individuals (B2C) located in a European Union member state.
|
||||
The transaction is conducted remotely, typically through online platforms, mail orders, telephone,
|
||||
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::
|
||||
This remains true even if your organization 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:
|
||||
This remains applicable even if the vendor is located outside of the European Union.
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
Go to :menuselection:`Accounting/Invoicing --> Settings --> Taxes`, then enable **EU intra-community
|
||||
Distance Selling** (or **EU Digital Goods VAT** if you created your database before July 1, 2021),
|
||||
and *Save*.
|
||||
The **EU Intra-community Distance Selling** feature helps you comply with this regulation by
|
||||
creating and configuring new **fiscal positions** and **taxes** based on your company's country. To
|
||||
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
|
||||
:align: center
|
||||
:alt: EU intra-community Distance Selling feature in Odoo Accounting settings
|
||||
|
||||
.. important::
|
||||
Please :ref:`upgrade the module <general/upgrade>` `l10n_eu_service` if you already installed it
|
||||
before **July 1, 2021**, or if you activated the feature **EU Digital Goods VAT** in the
|
||||
Accounting settings. Then, make sure to :ref:`refresh the tax mapping
|
||||
<eu_distance_selling/refresh-mapping>`.
|
||||
.. tip::
|
||||
Whenever you add or modify taxes, you can automatically update your fiscal positions. To do so,
|
||||
go to :menuselection:`Accounting/Invoicing --> Settings --> Taxes --> EU Intra-community Distance
|
||||
Selling` and click on the :guilabel:`Refresh tax mapping`.
|
||||
|
||||
.. _eu_distance_selling/taxes:
|
||||
|
||||
Fiscal Positions and Taxes
|
||||
==========================
|
||||
|
||||
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.
|
||||
.. note::
|
||||
We highly recommend checking that the proposed mapping is suitable for the products and services
|
||||
you sell before using it.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`fiscal_positions`
|
||||
- :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
|
||||
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`,
|
||||
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
|
||||
: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.
|
||||
|
||||
.. image:: vat_validation/vat-validation-contact-form.png
|
||||
.. image:: vat_verification/vat-validation-contact-form.png
|
||||
:align: center
|
||||
: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
|
||||
VAT number is invalid.
|
||||
|
||||
.. image:: vat_validation/vat-validation-error.png
|
||||
.. image:: vat_verification/vat-validation-error.png
|
||||
:align: center
|
||||
: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
|
||||
========
|
||||
|
||||
**Odoo Expenses** streamlines the management of expenses. Employees can submit their expenses;
|
||||
managers can approve them; accountants can record them and process the payments.
|
||||
Odoo **Expenses** streamlines the management of expenses. After an employee submits their expenses
|
||||
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::
|
||||
- `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)
|
||||
that your company allows, from the *Configuration* menu.
|
||||
When a specific expense is reimbursed at a fixed price, set a cost on the product.
|
||||
Otherwise keep the cost at 0.0 and employees will report the real cost per expense.
|
||||
The first step to track expenses is to configure the different *expense types* for the company
|
||||
(managed as *products* in Odoo). Each "product" can be as specific or generalized as needed. Go to
|
||||
:menuselection:`Expenses app --> Configuration --> Expense Products` to view the current expensable
|
||||
products in a default kanban view.
|
||||
|
||||
.. image:: expenses/product.png
|
||||
.. image:: expenses/products.png
|
||||
:align: center
|
||||
:alt: Set expense costs on products.
|
||||
|
||||
Here are some examples:
|
||||
|
||||
* Restaurant:
|
||||
|
||||
* 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.
|
||||
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
|
||||
: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`).
|
||||
|
||||
.. tip::
|
||||
The *Sales* app allows you to specify units of measure for your
|
||||
expense types (units, miles, nights, etc.).
|
||||
Go to :menuselection:`Sales --> Configuration --> Settings` and check
|
||||
*Some products may be sold/purchased in different units of measure (advanced)*.
|
||||
The *Sales* app is where specification on the units of measure are created and edited (e.g.
|
||||
units, miles, nights, etc.). Go to :menuselection:`Sales app --> Configuration --> Settings` and
|
||||
ensure `Units of Measure` is checked off in the `Product Catalog` section. Click on the
|
||||
: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.
|
||||
|
||||
|
||||
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
|
||||
.. image:: expenses/new-expense-product.png
|
||||
:align: center
|
||||
:alt: Set expense costs on products.
|
||||
|
||||
1. Select the related product and enter either the total amount
|
||||
you paid (with Quantity = 1) or the unit price if Quantity is
|
||||
countable (e.g. number of hotel nights).
|
||||
2. Enter the expense date.
|
||||
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.
|
||||
The :guilabel:`Cost` field on the product form is populated with a value of `0.00` by default. When
|
||||
a specific expense should always be reimbursed for a particular price, enter that amount in the
|
||||
:guilabel:`Cost` field. Otherwise, leave the :guilabel:`Cost` set to `0.00`, and employees will
|
||||
report the actual cost when submitting an expense report.
|
||||
|
||||
.. 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
|
||||
: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.
|
||||
Make a snapshot of the receipt and send it by email, or simply forward a bill!
|
||||
After the expense is saved, the next step is to attach a receipt. A new :guilabel:`Attach Receipt`
|
||||
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
|
||||
: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
|
||||
.. image:: expenses/save-receipt.png
|
||||
:align: center
|
||||
:alt: Attach a receipt after saving the record.
|
||||
|
||||
You can also submit expenses one by one from the *Submit to Manager*
|
||||
button on the form view of an expense.
|
||||
Click the new :guilabel:`Attach Receipt` button, and a file explorer appears. Navigate to the
|
||||
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
|
||||
: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
|
||||
.. image:: expenses/receipt-smartbutton.png
|
||||
:align: center
|
||||
:alt: Attach a receipt after saving the record.
|
||||
|
||||
They can review expense reports, approve or reject them, as well as providing
|
||||
feedback thanks to the integrated communication tool.
|
||||
Automatically create new expenses from an email
|
||||
-----------------------------------------------
|
||||
|
||||
.. 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
|
||||
|
||||
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
|
||||
:alt: Create the domain alias by clicking the link.
|
||||
|
||||
.. note::
|
||||
To post an expense, a *Home Address* must be set on the employee.
|
||||
If you get a related blocking message when posting, click the employee,
|
||||
go to *Personal Information* tab and select/create the contact of your employee
|
||||
in the address book.
|
||||
A contact has been automatically created if this person is using Odoo.
|
||||
If the domain alias needs to be set up, :guilabel:`Setup your domain alias` will appear beneath
|
||||
the incoming emails check box instead of the email address field. Refer to this documentation for
|
||||
setup instructions and more information: :doc:`/administration/maintain/domain_names`. Once the
|
||||
domain alias is configured, the email address field will be visible beneath the incoming emails
|
||||
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
|
||||
:menuselection:`Expenses --> Accountant --> Expense Reports To Pay`.
|
||||
To record the payment or pay by check, click *Register a Payment*.
|
||||
To submit an expense via email, create a new email and enter the product's *internal reference* code
|
||||
(if available) and the amount of the expense in the email subject. Next, attach the receipt to the
|
||||
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`
|
||||
* :doc:`accounting/payments/pay_sepa`
|
||||
.. image:: expenses/internal-ref-numbers.png
|
||||
: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
|
||||
your customers automatically.
|
||||
.. note::
|
||||
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
|
||||
-----
|
||||
|
||||
- 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
|
||||
all your Expense types:
|
||||
:guilabel:`Invoicing Policy`:
|
||||
|
||||
- Ordered quantities: it will invoice expenses based on the ordered
|
||||
quantity
|
||||
- :guilabel:`Ordered quantities`: Expense product will only invoice expenses based on the ordered
|
||||
quantity.
|
||||
- :guilabel:`Delivered quantities`: Expense product will only invoice expenses based on the
|
||||
delivered quantity.
|
||||
|
||||
- Delivered quantities: it will invoice expenses based on the
|
||||
expenses quantity
|
||||
:guilabel:`Re-Invoicing Policy`:
|
||||
|
||||
- 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
|
||||
the sale order.
|
||||
Create an expense
|
||||
-----------------
|
||||
|
||||
.. image:: expenses/invoicing_01.png
|
||||
:align: center
|
||||
First, when :ref:`creating a new expense <expenses/new>`, the correct information needs to be
|
||||
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
|
||||
delivered to your customer. If you don't put any expense in the
|
||||
order, it will be added automatically once posted by the
|
||||
accountant.
|
||||
Create a quote and sales order
|
||||
------------------------------
|
||||
|
||||
- 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
|
||||
:align: center
|
||||
In the :guilabel:`Order Lines` tab, click :guilabel:`Add a product`. In the :guilabel:`Product`
|
||||
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
|
||||
line on approving expenses reports. Click the line to add one if
|
||||
missing. Employees are already able to set one when submitting.
|
||||
Once the quote turns into a sales order, a :guilabel:`Delivered` column appears. The delivered
|
||||
quantity must be updated for each item. Click on the `0.000` field for each product, and enter the
|
||||
delivered quantity. When all delivered quantities have been entered, click :guilabel:`Save`.
|
||||
|
||||
.. image:: expenses/invoicing_03.png
|
||||
:align: center
|
||||
Validate and post expenses
|
||||
--------------------------
|
||||
|
||||
- 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
|
||||
----------------
|
||||
|
||||
Now you can invoice the order. It shows up in
|
||||
:menuselection:`Sales --> Invoicing --> Sales`
|
||||
to Invoice. The expenses have been added automatically in the order
|
||||
lines. Such items show up in blue (i.e. to invoice).
|
||||
Once the quote has turned into a sales order, and the expense report has been approved, it is time
|
||||
to invoice the customer. Go to :menuselection:`Sales app --> To Invoice --> Orders to Invoice` to
|
||||
view the sales orders ready to be invoiced.
|
||||
|
||||
.. image:: expenses/invoicing_04.png
|
||||
:align: center
|
||||
|
||||
e (i.e. to invoice).
|
||||
Next, find the sales order related to the expense report, click into it, and then click
|
||||
: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
|
||||
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).
|
||||
#. 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)
|
||||
<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
|
||||
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
|
||||
invoices from Odoo. We have the following PACs available: `Quadrum
|
||||
<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
|
||||
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>`
|
||||
| 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.
|
||||
- | 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
|
||||
directly. :doc:`Click here <../finance/accounting/payments/batch_sdd>` for
|
||||
more information about this payment method.
|
||||
directly.
|
||||
|
||||
.. _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
|
||||
:menuselection:`Developers --> API Credentials`.
|
||||
|
||||
- If you already have an API user, open it.
|
||||
- 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**.
|
||||
Be careful to copy your API key as you'll not be allowed to get it later without generating a new
|
||||
one.
|
||||
@@ -88,17 +90,32 @@ You have to save the webhook to finalize its creation.
|
||||
|
||||
.. _adyen/urls:
|
||||
|
||||
URLs
|
||||
~~~~
|
||||
API URLs
|
||||
~~~~~~~~
|
||||
|
||||
To retrieve the URLs, log into your Adyen account, go to :menuselection:`Developers --> API URLs`.
|
||||
Select one of the URLs listed next to :guilabel:`Classic Recurring API` as your
|
||||
:guilabel:`Recurring API URL` and one listed next to :guilabel:`Checkout API` as your
|
||||
:guilabel:`Checkout API URL`.
|
||||
All Adyen API URLs include a customer area-specific prefix generated by Adyen. To configure the
|
||||
URLs, proceed as follows:
|
||||
|
||||
.. image:: adyen/adyen-api-urls.png
|
||||
:align: center
|
||||
:alt: Get the links for the different API.
|
||||
#. Log into your Adyen account, then go to :menuselection:`Developers --> API URLs`.
|
||||
#. Copy the :guilabel:`Prefix` for your live Customer area (i.e., **data center**) and save it for
|
||||
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
|
||||
-------------
|
||||
|
||||
|
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
|
||||
subscription fee, and creating an account is very easy. That's why we recommend it for starters in
|
||||
Odoo. It works as a seamless flow where the customer is routed to the Paypal website to register the
|
||||
payment.
|
||||
`Paypal <https://www.paypal.com/>`_ is an American online payment acquirer available worldwide, and
|
||||
one of the few that does not charge a subscription fee.
|
||||
|
||||
Settings in Odoo
|
||||
================
|
||||
|
||||
.. 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
|
||||
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
|
||||
--> Account settings --> Website payments`.
|
||||
.. image:: paypal/paypal-account.png
|
||||
: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
|
||||
processed.
|
||||
.. _paypal/auto-return:
|
||||
|
||||
From the *Website payments* settings page, go to :menuselection:`Website preferences --> Update -->
|
||||
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.
|
||||
Auto Return
|
||||
-----------
|
||||
|
||||
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::
|
||||
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
|
||||
feature also displays the payment status to the customers and verifies the authenticity of the
|
||||
payments.
|
||||
:abbr:`IPN (Instant Payment Notifications)` is similar to **PDT**, but allows for more
|
||||
notifications, such as chargeback notifications. To enable **IPN**, go to :menuselection:`Website
|
||||
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 -->
|
||||
Payment data transfer` and select **On**. PayPal displays your **PDT Identity Token** as soon as
|
||||
the change is saved.
|
||||
|
||||
Paypal Account Optional
|
||||
PayPal Account Optional
|
||||
-----------------------
|
||||
|
||||
We advise you to not prompt customers to log in with a Paypal account when they get to pay. Let them
|
||||
pay with debit/credit cards as well, or you might lose some deals. Make sure this setting is turned
|
||||
on.
|
||||
We advise not to prompt customers to log in with a PayPal account upon payment. It is better and
|
||||
more accessible for customers to pay with a debit/credit card. To disable that prompt, go to
|
||||
:menuselection:`Account Settings --> Website payments --> Update` and select :guilabel:`On` for
|
||||
:guilabel:`PayPal account optional`.
|
||||
|
||||
Payment Messages Format
|
||||
-----------------------
|
||||
|
||||
Suppose you use accented characters (or anything else than primary Latin characters) for your
|
||||
customer names or addresses. In that case, you **must** configure the encoding format of the payment
|
||||
request sent by Odoo to Paypal. Otherwise, some transactions fail without notice.
|
||||
If you use accented characters (or anything other than primary Latin characters) for customer names
|
||||
or addresses, then you **must** configure the encoding format of the payment request sent by Odoo to
|
||||
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
|
||||
?cmd=_profile-language-encoding>`_. Then, click *More Options* and set the two default encoding
|
||||
formats as **UTF-8**.
|
||||
|
||||
Your Paypal account is ready!
|
||||
?cmd=_profile-language-encoding>`_. Then, click :guilabel:`More Options` and set the two default
|
||||
encoding formats as :guilabel:`UTF-8`.
|
||||
|
||||
.. tip::
|
||||
- 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>`_
|
||||
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:
|
||||
|
||||
Test environment
|
||||
@@ -121,19 +140,21 @@ Test environment
|
||||
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
|
||||
credentials, which creates two sandbox accounts:
|
||||
Log into the `Paypal Developer Site <https://developer.paypal.com/>`_ using your PayPal credentials,
|
||||
which creates two sandbox accounts:
|
||||
|
||||
- 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.,
|
||||
`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.
|
||||
Enter your sandbox credentials in Odoo and ensure Paypal is set on *Test Mode*. We recommend doing
|
||||
this on a test Odoo database rather than your main database.
|
||||
Log into PayPal sandbox using the merchant account and follow the same configuration instructions.
|
||||
Enter your sandbox credentials in Odoo (:menuselection:`Accounting --> Configuration --> Payment
|
||||
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.
|
||||
|
||||
|
||||
|
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
|
||||
your bank details so they can pay on their own. This is very easy to start with but slow and
|
||||
inefficient process-wise. Opt for payment acquirers as soon as you can!
|
||||
The **Wire transfer** payment method allows you to provide payment instructions to your customers,
|
||||
such as the bank details and communication. They are displayed:
|
||||
|
||||
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
|
||||
:align: center
|
||||
|
||||
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
|
||||
:alt: Define payment instructions
|
||||
|
||||
.. 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
|
||||
a lot number can help in reporting, quality controls, or any other info.
|
||||
Lots will help identify a number of pieces having, for instance, a
|
||||
production fault. It can be useful for a batch production of clothes or
|
||||
food.
|
||||
*Lots* are one of the two ways to identify and track products in Odoo. A lot usually indicates a
|
||||
specific batch of an item that was received, is currently stored, or was shipped from a warehouse,
|
||||
but can also pertain to a batch of products manufactured in-house, as well.
|
||||
|
||||
Odoo has the capacity to manage lots, ensuring compliance with the
|
||||
traceability requirements imposed by the majority of industries.
|
||||
Manufacturers assign lot numbers to groups of products that have common properties; this can lead to
|
||||
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
|
||||
traceability.
|
||||
Lots are useful for products that are manufactured or received in large quantities (such as clothes
|
||||
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
|
||||
:menuselection:`Inventory --> Configuration --> Settings` and tick *Lots & Serial
|
||||
Numbers*. Then, click on save.
|
||||
To track products using lots, the *Lots & Serial Numbers* feature must be enabled. Go to
|
||||
the :menuselection:`Inventory app --> Configuration --> Settings`, scroll down to the
|
||||
: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
|
||||
:align: center
|
||||
.. image:: lots/lots-enabled-lots-setting.png
|
||||
: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
|
||||
numbers.
|
||||
Once the :guilabel:`Lots & Serial Numbers` setting has been activated, individual products can now
|
||||
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.
|
||||
There, click on *Edit* and select *Tracking by Lots* in the
|
||||
inventory tab.
|
||||
Once on the product form, click :guilabel:`Edit` to make changes to the form. Then, click the
|
||||
:guilabel:`Inventory` tab. In the :guilabel:`Traceability` section, click :guilabel:`By Lots`. Then,
|
||||
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
|
||||
:align: center
|
||||
.. important::
|
||||
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
|
||||
:align: center
|
||||
.. image:: lots/lots-tracking-product-form.png
|
||||
: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
|
||||
lot numbers. You have several ways of doing so:
|
||||
.. tip::
|
||||
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
|
||||
:align: center
|
||||
When all desired configurations are complete, click the :guilabel:`Save` button to save all changes.
|
||||
|
||||
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*.
|
||||
Then, you will be able to fill the lot number in. Once done, you can
|
||||
click on *Add a line* again to register a new lot number.
|
||||
After a new lot number has been created, saved, and assigned to the desired product, navigate back
|
||||
to the product form in the :menuselection:`Inventory` app, by going to :menuselection:`Products -->
|
||||
Products`, and selecting the product to which this newly-created lot number was just assigned.
|
||||
|
||||
.. image:: lots/lots_05.png
|
||||
:align: center
|
||||
On that product's detail form, click the :guilabel:`Lot/Serial Numbers` smart button to view the new
|
||||
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
|
||||
supplier and copy the list. Then, you can paste them in the *Lot/Serial
|
||||
Number Name* column for Odoo to automatically create the necessary
|
||||
lines. After that, you will have to manually enter the number of
|
||||
products that are contained in each one of the lots.
|
||||
Lot numbers can be assigned for both **incoming** and **outgoing** goods. For incoming goods, lot
|
||||
numbers are assigned directly on the purchase order form. For outgoing goods, lot numbers are
|
||||
assigned directly on the sales order form.
|
||||
|
||||
.. image:: lots/lots_06.png
|
||||
:align: center
|
||||
Manage lots on receipts
|
||||
-----------------------
|
||||
|
||||
.. image:: lots/lots_05.png
|
||||
:align: center
|
||||
Assigning lot numbers to **incoming** goods can be done directly from the purchase order (PO).
|
||||
|
||||
.. image:: lots/lots_07.png
|
||||
:align: center
|
||||
To create a :abbr:`PO (purchase order)`, go to :menuselection:`Purchase app --> Create`. Doing so
|
||||
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
|
||||
lots for each operation type. To do so, open the *Inventory* app and
|
||||
go to :menuselection:`Configuration --> Operation Types`.
|
||||
Choose the desired quantity of the product to order by changing the number in the
|
||||
:guilabel:`Quantity` column.
|
||||
|
||||
For each type (receipts, internal transfers, deliveries, …), you can
|
||||
decide if you allow to create new lot numbers or only use existing ones.
|
||||
By default, the creation of new lots is only allowed at product
|
||||
reception, and using existing lot numbers isn’t allowed in this
|
||||
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.
|
||||
Once the :abbr:`RFQ (request for quotation)` has been filled out, click :guilabel:`Confirm Order`.
|
||||
When the :abbr:`RFQ (request for quotation)` is confirmed, it becomes a :guilabel:`Purchase Order`,
|
||||
and a :guilabel:`Receipt` smart button appears. Click the :guilabel:`Receipt` smart button to be
|
||||
taken to the warehouse receipt form.
|
||||
|
||||
.. image:: lots/lots_08.png
|
||||
:align: center
|
||||
.. note::
|
||||
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
|
||||
=================
|
||||
|
||||
The lot number given to the products allows you to keep track of where
|
||||
they were received, put in stock, to whom they were sold and where they
|
||||
were shipped to.
|
||||
Manufacturers and companies can refer to traceability reports to see the entire lifecycle of a
|
||||
product: where (and when) it came from, where it was stored, and who (and when) it went to.
|
||||
|
||||
To track an item, open the *Inventory* module and, in :menuselection:`Master Data -->
|
||||
Lots/Serial Numbers`, click on the lot number corresponding to your
|
||||
search.
|
||||
To see the full traceability of a product, or group by lots, go to the :menuselection:`Inventory app
|
||||
--> Products --> Lots/Serial Numbers`. Doing so reveals the :menuselection:`Lots/Serial Numbers`
|
||||
dashboard.
|
||||
|
||||
.. image:: lots/lots_09.png
|
||||
:align: center
|
||||
From here, products with lot numbers assigned to them will be listed by default, and can be expanded
|
||||
to show the lot numbers those products have assigned to them.
|
||||
|
||||
When you open the *Traceability* information, you see in which
|
||||
documents the lot number has been used.
|
||||
To group by lots (or serial numbers), begin by removing any filters in the search bar. Then, click
|
||||
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
|
||||
:align: center
|
||||
Doing so displays all existing lots and serial numbers, and can be expanded to show all quantities
|
||||
of products with that assigned number.
|
||||
|
||||
Now, if you want to locate the lot number, you can do so by clicking on
|
||||
the *Location* stat button.
|
||||
.. image:: lots/lots-traceability-report.png
|
||||
:align: center
|
||||
:alt: Lots and serial numbers traceability report.
|
||||
|
||||
.. image:: lots/lots_11.png
|
||||
:align: center
|
||||
|
||||
.. image:: lots/lots_12.png
|
||||
:align: center
|
||||
.. seealso::
|
||||
:doc:`/applications/inventory_and_mrp/inventory/management/lots_serial_numbers/differences`
|
||||
|
||||
|
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 |