Compare commits
163 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4ef19dca03 | |||
| ea7fd9b847 | |||
| 33c6784f68 | |||
| 2948da8318 | |||
| a3a667baa9 | |||
| 06135f66b7 | |||
| 985373622a | |||
| ea54d7f4b6 | |||
| 3efe78c40f | |||
| e2a99be2fa | |||
| 28cd889ecb | |||
| d8ee860d02 | |||
| 3ac8cb59e8 | |||
| ec743decbf | |||
| 0118039e60 | |||
| 203a15e556 | |||
| 669a62c625 | |||
| c30312137c | |||
| f7b4153e69 | |||
| 30e1b1f450 | |||
| 78743fa901 | |||
| 717a22e828 | |||
| 7aed0550bc | |||
| cd9889b304 | |||
| fdf51021b9 | |||
| 87c4b394e5 | |||
| 8c2cd0737a | |||
| 1ae6cc202d | |||
| a89ea48c8f | |||
| 38fe8febfb | |||
| d7cf79723e | |||
| f6594f91cf | |||
| 08d1ef2a45 | |||
| 7916a08773 | |||
| 8155a72901 | |||
| 5651bfda49 | |||
| 8cf0318a83 | |||
| 66d0209956 | |||
| 1df78f08cd | |||
| a8820ba3bb | |||
| f47d0c503a | |||
| 4e782b9e9a | |||
| 56b7b4f83a | |||
| 26b906340a | |||
| d94ac4b904 | |||
| a9005ec623 | |||
| 447d131247 | |||
| 6f74ae28ba | |||
| 50ff7a625a | |||
| e661c7f66e | |||
| 123e0fffb3 | |||
| 851f53f469 | |||
| 431c7eb685 | |||
| 7480a11576 | |||
| 019f94ed25 | |||
| 189d942f06 | |||
| 46e66e0d8b | |||
| fa6b8382e7 | |||
| 9d02b5207c | |||
| f91ab96191 | |||
| 21a13dfc1a | |||
| 6b5398eda1 | |||
| 758499d987 | |||
| f381273038 | |||
| 1b26e3f90e | |||
| e72758f68b | |||
| 7428de7be4 | |||
| d3872493b3 | |||
| 6bbd3186e9 | |||
| 1e14a5b6f8 | |||
| 125bef72b0 | |||
| e092ca7e41 | |||
| f0c877fb45 | |||
| daf41d8a5d | |||
| bc9355564d | |||
| 47a8a8b1e3 | |||
| 64f4e8d46c | |||
| a395e108ac | |||
| 0cae14e43b | |||
| 5dfa8128aa | |||
| 2626f81d23 | |||
| e1230a82d7 | |||
| 7369a1e4e9 | |||
| 788f624d49 | |||
| 54e7676d5a | |||
| 0816e187a5 | |||
| 4e0c53b4a2 | |||
| 9e7418ea8e | |||
| d758c9d995 | |||
| 2ab76700cb | |||
| 3cbc88c467 | |||
| ccfe1af307 | |||
| 99b06db261 | |||
| ed64d6fb4c | |||
| a2ac238691 | |||
| 172f0eb226 | |||
| 330b7ef64a | |||
| 1df7b0e6c5 | |||
| db73dd629e | |||
| 1bddb2f2c9 | |||
| 0e4978b783 | |||
| 56e9c3d343 | |||
| c7c9e3d6f0 | |||
| d9fc72e1dd | |||
| 632f7c65ce | |||
| a4b8a53aab | |||
| 976968cd3a | |||
| 183f981184 | |||
| aa65246560 | |||
| 8956e39eea | |||
| b693187c7c | |||
| e1df7a714b | |||
| 9f25d5e345 | |||
| f5a5b57be3 | |||
| b9cdeb304a | |||
| 18be17dada | |||
| 682a290793 | |||
| 649b6bcd5c | |||
| 9d4fc6cd55 | |||
| fb1f81f735 | |||
| 50d0d32bf6 | |||
| f84c00cb0d | |||
| 70701aa589 | |||
| 85cb4170af | |||
| a8292df22f | |||
| 8ab0935d74 | |||
| 9486fece94 | |||
| cd31079f69 | |||
| 2935c3b2df | |||
| b00ae1f3b0 | |||
| 0f87ffef1a | |||
| 23e773f31e | |||
| a1371aee87 | |||
| f2f9b32a1d | |||
| ad06489c98 | |||
| 86fa534deb | |||
| 3667e71c92 | |||
| 599e50159e | |||
| cc7857b363 | |||
| 4b3fecf2cb | |||
| 1f788bf750 | |||
| 0edc606b42 | |||
| 8377f9f068 | |||
| b81c06ecef | |||
| 36de103e3a | |||
| 3d920ded85 | |||
| 2b6fa74e40 | |||
| 7674dbdbbc | |||
| a76635c09c | |||
| d4565c6c20 | |||
| 81b1a9fd8e | |||
| d91cead9e7 | |||
| 4827f3fe20 | |||
| 4a24238376 | |||
| e6d68071fc | |||
| bce2a875c5 | |||
| b738a4e002 | |||
| 3da71625f1 | |||
| 833109636a | |||
| 044670f15e | |||
| 1bb11f0654 | |||
| 63789b0aa7 | |||
| 04aacf8863 |
@@ -231,6 +231,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-17.4': "Odoo Online",
|
||||
'saas-17.2': "Odoo Online",
|
||||
'saas-17.1': "Odoo Online",
|
||||
'17.0': "Odoo 17",
|
||||
@@ -252,11 +253,13 @@ languages_names = {
|
||||
'es': 'ES',
|
||||
'fr': 'FR',
|
||||
'it': 'IT',
|
||||
'ko': 'KO',
|
||||
'ja': 'JA',
|
||||
'ko': 'KR',
|
||||
'nl': 'NL',
|
||||
'pt_BR': 'PT',
|
||||
'ro': 'RO',
|
||||
'sv': 'SV',
|
||||
'th': 'TH',
|
||||
'uk': 'UA',
|
||||
'zh_CN': 'ZH (CN)',
|
||||
'zh_TW': 'ZH (TW)'
|
||||
@@ -391,6 +394,9 @@ def setup(app):
|
||||
app.add_config_value('is_remote_build', None, 'env') # Whether the build is remotely deployed
|
||||
app.add_config_value('source_read_replace_vals', {}, 'env')
|
||||
app.connect('source-read', source_read_replace)
|
||||
# TODO uncomment after moving to >= v7.2.5 to also substitute placeholders in included files.
|
||||
# See https://github.com/sphinx-doc/sphinx/commit/ff1831
|
||||
# app.connect('include-read', source_read_replace)
|
||||
|
||||
app.add_lexer('json', JsonLexer)
|
||||
app.add_lexer('xml', XmlLexer)
|
||||
|
||||
@@ -46,7 +46,7 @@ Trigger a database upgrade.
|
||||
|
||||
.. seealso::
|
||||
For more information about the upgrade process, check out the :ref:`Odoo Online upgrade
|
||||
documentation <upgrade/request-test-database>`.
|
||||
documentation <upgrade-request-test>`.
|
||||
|
||||
.. _odoo_online/duplicate:
|
||||
|
||||
|
||||
@@ -29,3 +29,32 @@ We advise that:
|
||||
- Your scheduled actions should be
|
||||
`idempotent <https://stackoverflow.com/a/1077421/3332416>`_: they must not
|
||||
cause side-effects if they are started more often than expected.
|
||||
|
||||
.. _ip-address-change:
|
||||
|
||||
How can I automate tasks when an IP address change occurs?
|
||||
----------------------------------------------------------
|
||||
|
||||
**Odoo.sh notifies project administrators of IP address changes.**
|
||||
Additionally, when the IP address of a production instance changes, an HTTP `GET` request is made
|
||||
to the path `/_odoo.sh/ip-change` with the new IP address included as a query string parameter
|
||||
(`new`), along with the previous IP address as an additional parameter (`old`).
|
||||
|
||||
This mechanism allows custom actions to be applied in response to the IP address change
|
||||
(e.g., sending an email, contacting a firewall API, configuring database objects, etc.)
|
||||
|
||||
For security reasons, the `/_odoo.sh/ip-change` route is accessible only internally by the platform
|
||||
itself and returns a `403` response if accessed through any other means.
|
||||
|
||||
Here is a pseudo-implementation example:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
class IPChangeController(http.Controller):
|
||||
|
||||
@http.route('/_odoo.sh/ip-change', auth='public')
|
||||
def ip_change(self, old=None, new=None):
|
||||
_logger.info("IP address changed from %s to %s", old, new)
|
||||
# Then perform whatever action required for your use case, e.g., update an
|
||||
# ir.config_parameter, send an email, contact an external firewall service's API, ...
|
||||
return 'ok'
|
||||
|
||||
@@ -402,9 +402,9 @@ we are considering the feature if there is enough demand.
|
||||
|
||||
In case the domain of your users email addresses use SPF (Sender Policy Framework) or DKIM
|
||||
(DomainKeys Identified Mail), don't forget to authorize Odoo as a sending host in your domain name
|
||||
settings to increase the deliverability of your outgoing emails.
|
||||
The configuration steps are explained in the documentation about :ref:`SPF
|
||||
<email_communication/spf_compliant>` and :ref:`DKIM <email_communication/dkim_compliant>`.
|
||||
settings to increase the deliverability of your outgoing emails. The configuration steps are
|
||||
explained in the documentation about :ref:`SPF <email-domain-spf>` and :ref:`DKIM
|
||||
<email-domain-dkim>`.
|
||||
|
||||
.. Warning::
|
||||
Forgetting to configure your SPF or DKIM to authorize Odoo as a sending host can lead to the
|
||||
|
||||
@@ -33,7 +33,6 @@ In you alias config (:file:`/etc/aliases`):
|
||||
- `Postfix aliases <http://www.postfix.org/aliases.5.html>`_
|
||||
- `Postfix virtual <http://www.postfix.org/virtual.8.html>`_
|
||||
|
||||
|
||||
For Exim
|
||||
--------
|
||||
|
||||
@@ -47,5 +46,5 @@ For Exim
|
||||
- `Exim <https://www.exim.org/docs.html>`_
|
||||
|
||||
.. tip::
|
||||
If you don't have access/manage your email server, use :ref:`inbound messages
|
||||
<email_communication/inbound_messages>`.
|
||||
If you do not have access/manage your email server, use :ref:`incoming mail servers
|
||||
<email-inbound-custom-domain-incoming-server>`.
|
||||
|
||||
@@ -31,6 +31,12 @@ This matrix shows the support status of every version.
|
||||
- On-Premise
|
||||
- Release date
|
||||
- End of support
|
||||
* - Odoo saas~17.4
|
||||
- |green|
|
||||
- N/A
|
||||
- N/A
|
||||
- July 2024
|
||||
-
|
||||
* - Odoo saas~17.2
|
||||
- |green|
|
||||
- N/A
|
||||
@@ -49,48 +55,12 @@ This matrix shows the support status of every version.
|
||||
- |green|
|
||||
- November 2023
|
||||
- October 2026 (planned)
|
||||
* - Odoo saas~16.4
|
||||
- |red|
|
||||
- N/A
|
||||
- N/A
|
||||
- August 2023
|
||||
-
|
||||
* - Odoo saas~16.3
|
||||
- |red|
|
||||
- N/A
|
||||
- N/A
|
||||
- June 2023
|
||||
-
|
||||
* - Odoo saas~16.2
|
||||
- |red|
|
||||
- N/A
|
||||
- N/A
|
||||
- March 2023
|
||||
-
|
||||
* - Odoo saas~16.1
|
||||
- |red|
|
||||
- N/A
|
||||
- N/A
|
||||
- February 2023
|
||||
-
|
||||
* - **Odoo 16.0**
|
||||
- |green|
|
||||
- |green|
|
||||
- |green|
|
||||
- October 2022
|
||||
- November 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|
|
||||
|
||||
@@ -2,31 +2,55 @@
|
||||
Upgrade
|
||||
=======
|
||||
|
||||
An upgrade is the process of moving your database from an older version to a newer :doc:`supported
|
||||
version <supported_versions>` (e.g., Odoo 14.0 to Odoo 16.0). Frequently upgrading is essential as
|
||||
each version comes with new and improved features, bug fixes, and security patches.
|
||||
An upgrade involves moving a database from an older version to a newer supported version (e.g., from
|
||||
Odoo 15.0 to Odoo 17.0). Regular upgrades are crucial as each version offers new features, bug
|
||||
fixes, and security patches. Using a :doc:`supported version <supported_versions>` is strongly
|
||||
recommended. Each major version is supported for three years.
|
||||
|
||||
.. _upgrade_faq/rolling_release:
|
||||
Depending on the hosting type and Odoo version used, a database upgrade can be **mandatory**.
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Odoo Online
|
||||
|
||||
- If a database is on a **major version** (e.g., 15.0, 16.0, 17.0), an upgrade is mandatory
|
||||
every two years.
|
||||
- If a database is on a **minor version** (e.g., 17.1, 17.2, 17.4), an upgrade is mandatory
|
||||
a few weeks after the next version is released. Minor versions are usually released every
|
||||
three months.
|
||||
|
||||
.. group-tab:: Odoo.sh
|
||||
|
||||
After the initial three years of support, you will have another two years to complete the
|
||||
upgrade. You will be notified when an upgrade is required.
|
||||
|
||||
.. image:: upgrade/odoo-sh-message.png
|
||||
:alt: The "unsupported version" popup on Odoo.sh.
|
||||
|
||||
.. group-tab:: On-premise
|
||||
|
||||
You can stay on the same version indefinitely, even if it is not recommended. Note that the
|
||||
smaller the version gap, the easier the upgrade should be.
|
||||
|
||||
.. spoiler:: Automatic upgrades: Odoo Online's Rolling Release process
|
||||
|
||||
The Rolling Release process allows Odoo Online customers to upgrade their database directly from
|
||||
a message prompt sent to the database administrator as soon as a new version is released. The
|
||||
invitation to upgrade is only sent if no issues are detected during the automatic tests.
|
||||
You will receive a notification in your database a few weeks before a mandatory upgrade will be
|
||||
automatically carried out. You are in control of the process as long as the deadline is not
|
||||
reached.
|
||||
|
||||
.. image:: upgrade/rr-upgrade-message.png
|
||||
:alt: The upgrade message prompt on the top right of the database
|
||||
|
||||
It is strongly recommended to manually :ref:`test the upgrade first <upgrade/test_your_db>`.
|
||||
Clicking :guilabel:`I want to test first` redirects to `the database manager
|
||||
<https://www.odoo.com/my/databases/>`_, where it is possible to request an upgraded test database
|
||||
and check it for any discrepancies.
|
||||
Concretely, Odoo’s Upgrade Team performs a silent test upgrade of every database that should be
|
||||
upgraded. If the test is successful and lasts less than 20 minutes, you can directly trigger the
|
||||
upgrade from the database. If the test fails, you can test an upgrade using the `database manager
|
||||
<https://www.odoo.com/my/databases>`_.
|
||||
|
||||
It is **not** recommended to click :guilabel:`Upgrade Now` without testing first, as it
|
||||
immediately triggers the live production database upgrade.
|
||||
When you are invited to upgrade, it is strongly recommended to :ref:`request an upgraded test
|
||||
database <upgrade-request-test>` first and spend time :ref:`testing <upgrade-testing>` it.
|
||||
|
||||
If the Rolling Release process detects an issue with the upgrade, it will be deactivated until
|
||||
the issue is resolved.
|
||||
An automatic upgrade to the next version will be triggered if no action is taken before the
|
||||
specified due date.
|
||||
|
||||
An upgrade does not cover:
|
||||
|
||||
@@ -40,36 +64,40 @@ An upgrade does not cover:
|
||||
If your database contains custom modules, it cannot be upgraded until a version of your custom
|
||||
modules is available for the target version of Odoo. For customers maintaining their own custom
|
||||
modules, we recommend to parallelize the process by :ref:`requesting an upgraded database
|
||||
<upgrade/request-test-database>` while also :doc:`upgrading the source code of your custom
|
||||
<upgrade-request-test>` while also :doc:`upgrading the source code of your custom
|
||||
modules </developer/howtos/upgrade_custom_db>`.
|
||||
|
||||
.. _upgrade-nutshell:
|
||||
|
||||
Upgrading in a nutshell
|
||||
-----------------------
|
||||
=======================
|
||||
|
||||
#. Request an upgraded test database (see :ref:`obtaining an upgraded test database
|
||||
<upgrade/request-test-database>`).
|
||||
<upgrade-request-test>`).
|
||||
#. If applicable, upgrade the source code of your custom module to be compatible with the new
|
||||
version of Odoo (see :doc:`/developer/howtos/upgrade_custom_db`).
|
||||
#. Thoroughly test the upgraded database (see :ref:`testing the new version of the database
|
||||
<upgrade/test_your_db>`).
|
||||
#. Report any issue encountered during the testing to Odoo by `submitting a ticket for an issue
|
||||
related to my future upgrade (I am testing an upgrade) <https://odoo.com/help?stage=migration>`_.
|
||||
<upgrade-testing>`).
|
||||
#. Report any issue encountered during the testing to Odoo by going to the `Support page and
|
||||
selecting "An issue related to my future upgrade (I am testing an upgrade)"
|
||||
<https://www.odoo.com/help?stage=migration>`_.
|
||||
#. Once all issues are resolved and you are confident that the upgraded database can be used as
|
||||
your main database without any issues, plan the upgrade of your production database.
|
||||
#. Request the upgrade for the production database, rendering it unavailable for the time it takes
|
||||
to complete the process (see :ref:`upgrading the production database <upgrade/upgrade-prod>`).
|
||||
#. Report any issue encountered during the upgrade to Odoo by `submitting a ticket for an issue
|
||||
related to my upgrade (production) <https://odoo.com/help?stage=post_upgrade>`_.
|
||||
to complete the process (see :ref:`upgrading the production database <upgrade-production>`).
|
||||
#. Report any issue encountered during the upgrade to Odoo by going to the `Support page and
|
||||
selecting "An issue related to my upgrade (production)"
|
||||
<https://www.odoo.com/help?stage=post_upgrade>`_.
|
||||
|
||||
.. _upgrade/request-test-database:
|
||||
.. _upgrade-request-test:
|
||||
|
||||
Obtaining an upgraded test database
|
||||
-----------------------------------
|
||||
===================================
|
||||
|
||||
The `Upgrade page <https://upgrade.odoo.com/>`_ is the main platform for requesting an upgraded
|
||||
The `Upgrade page <https://upgrade.odoo.com>`_ is the main platform for requesting an upgraded
|
||||
database. However, depending on the hosting type, you can upgrade from the command line
|
||||
(on-premise), the `Odoo Online database manager <https://odoo.com/my/databases>`_, or your `Odoo.sh
|
||||
project <https://odoo.sh/project>`_.
|
||||
(on-premise), the Odoo Online `database manager <https://www.odoo.com/my/databases>`_, or your
|
||||
`Odoo.sh project <https://www.odoo.sh/project>`_.
|
||||
|
||||
.. note::
|
||||
The Upgrade platform follows the same `Privacy Policy <https://www.odoo.com/privacy>`_ as the
|
||||
@@ -81,7 +109,7 @@ project <https://odoo.sh/project>`_.
|
||||
.. group-tab:: Odoo Online
|
||||
|
||||
Odoo Online databases can be manually upgraded via the `database manager
|
||||
<https://odoo.com/my/databases>`_.
|
||||
<https://www.odoo.com/my/databases>`_.
|
||||
|
||||
The database manager displays all databases associated with the user's account. Databases
|
||||
not on the most recent version of Odoo display an arrow in a circle icon next to their name,
|
||||
@@ -115,8 +143,7 @@ project <https://odoo.sh/project>`_.
|
||||
.. image:: upgrade/odoo-sh-staging.png
|
||||
:alt: Odoo.sh project and tabs
|
||||
|
||||
The **latest production daily automatic backup** is then sent to the `upgrade platform
|
||||
<https://upgrade.odoo.com>`_.
|
||||
The **latest production daily automatic backup** is then sent to the Upgrade platform.
|
||||
|
||||
Once the upgrade platform is done upgrading the backup and uploading it on the branch, it is
|
||||
put in a **special mode**: each time a **commit is pushed** on the branch, a **restore
|
||||
@@ -142,6 +169,21 @@ project <https://odoo.sh/project>`_.
|
||||
|
||||
$ python <(curl -s https://upgrade.odoo.com/upgrade) test -d <your db name> -t <target version>
|
||||
|
||||
.. note::
|
||||
This command has some requirements on the environment it runs in:
|
||||
|
||||
- Some external commands that must be provided by the operating system, normally found in
|
||||
any Linux distribution (including WSL). An error will be displayed if one or several of
|
||||
them are missing.
|
||||
- The system user that executes the command needs to be configured with access to the
|
||||
database. Please refer to the PostgreSQL documentation of the `client environment
|
||||
<https://www.postgresql.org/docs/current/libpq-envars.html>`_ or the `client password
|
||||
file <https://www.postgresql.org/docs/current/libpq-pgpass.html>`_ for this requirement.
|
||||
- The script needs to be able to reach one or multiple servers of the upgrade platform
|
||||
both on TCP port 443 and to any random TCP port in the range between 32768 and 60999.
|
||||
This can be in conflict with your restrictive firewall and may need an exception added
|
||||
to the firewall configuration.
|
||||
|
||||
The following command can be used to display the general help and the main commands:
|
||||
|
||||
.. code-block:: console
|
||||
@@ -149,7 +191,7 @@ project <https://odoo.sh/project>`_.
|
||||
$ python <(curl -s https://upgrade.odoo.com/upgrade) --help
|
||||
|
||||
An upgraded test database can also be requested via the `Upgrade page
|
||||
<https://upgrade.odoo.com/>`_.
|
||||
<https://upgrade.odoo.com>`_.
|
||||
|
||||
.. important::
|
||||
In databases where custom modules are installed, their source code must be up-to-date with
|
||||
@@ -175,22 +217,20 @@ project <https://odoo.sh/project>`_.
|
||||
.. note::
|
||||
You can request multiple test databases if you wish to test an upgrade more than once.
|
||||
|
||||
.. _upgrade/upgrade_report:
|
||||
|
||||
.. note::
|
||||
When an upgrade request is completed, an upgrade report is attached to the successful upgrade
|
||||
email, and it becomes available in the Discuss app for users who are part of the "Administration
|
||||
/ Settings" group. This report provides important information about the changes introduced by
|
||||
the new version.
|
||||
|
||||
.. _upgrade/test_your_db:
|
||||
.. _upgrade-testing:
|
||||
|
||||
Testing the new version of the database
|
||||
---------------------------------------
|
||||
=======================================
|
||||
|
||||
It is essential to spend some time testing the upgraded test database to ensure that you are not
|
||||
stuck in your day-to-day activities by a change in views, behavior, or an error message once the
|
||||
upgrade goes live.
|
||||
It is essential to test the upgraded test database to ensure that you are not stuck in your
|
||||
day-to-day activities by a change in views, behavior, or an error message once the upgrade goes
|
||||
live.
|
||||
|
||||
.. note::
|
||||
Test databases are neutralized, and some features are disabled to prevent them from impacting the
|
||||
@@ -245,9 +285,10 @@ working correctly and to get more familiar with the new version.
|
||||
This list is **not** exhaustive. Extend the example to your other apps based on your use of Odoo.
|
||||
|
||||
If you face an issue while testing your upgraded test database, you can request the assistance of
|
||||
Odoo by `submitting a ticket for an issue related to my future upgrade (I am testing an upgrade)
|
||||
<https://odoo.com/help?stage=migration>`_. In any case, it is essential to report any problem
|
||||
encountered during the testing to fix it before upgrading your production database.
|
||||
Odoo by going to the `Support page and selecting "An issue related to my future upgrade (I am
|
||||
testing an upgrade)" <https://www.odoo.com/help?stage=migration>`_. In any case, it is essential to
|
||||
report any problem encountered during the testing to fix it before upgrading your production
|
||||
database.
|
||||
|
||||
You might encounter significant differences with standard views, features, fields, and models during
|
||||
testing. Those changes cannot be reverted on a case-by-case basis. However, if a change introduced
|
||||
@@ -265,12 +306,12 @@ module to make it compatible with the new version of Odoo.
|
||||
- Server actions in the action menu on form views, as well as by selecting multiple records on
|
||||
list views
|
||||
|
||||
.. _upgrade/upgrade-prod:
|
||||
.. _upgrade-production:
|
||||
|
||||
Upgrading the production database
|
||||
---------------------------------
|
||||
=================================
|
||||
|
||||
Once the :ref:`tests <upgrade/test_your_db>` are completed and you are confident that the upgraded
|
||||
Once the :ref:`tests <upgrade-testing>` are completed and you are confident that the upgraded
|
||||
database can be used as your main database without any issues, it is time to plan the go-live day.
|
||||
|
||||
Your production database will be unavailable during its upgrade. Therefore, we recommend planning
|
||||
@@ -288,15 +329,15 @@ day before upgrading the production database is also recommended.**
|
||||
- Business interruptions (e.g., no longer having the possibility to validate an action)
|
||||
- Poor customer experience (e.g., an eCommerce website that does not work correctly)
|
||||
|
||||
The process of upgrading a production database is similar to upgrading a test database with a few
|
||||
exceptions.
|
||||
The process of upgrading a production database is similar to upgrading a test database, but with a
|
||||
few exceptions.
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Odoo Online
|
||||
|
||||
The process is similar to :ref:`obtaining an upgraded test database
|
||||
<upgrade/request-test-database>`, except for the purpose option, which must be set to
|
||||
<upgrade-request-test>`, except for the purpose option, which must be set to
|
||||
:guilabel:`Production` instead of :guilabel:`Test`.
|
||||
|
||||
.. warning::
|
||||
@@ -306,8 +347,8 @@ exceptions.
|
||||
|
||||
.. group-tab:: Odoo.sh
|
||||
|
||||
The process is similar to :ref:`obtaining an upgraded test database
|
||||
<upgrade/request-test-database>` on the :guilabel:`Production` branch.
|
||||
The process is similar to :ref:`obtaining an upgraded test database <upgrade-request-test>` on
|
||||
the :guilabel:`Production` branch.
|
||||
|
||||
.. image:: upgrade/odoo-sh-prod.png
|
||||
:alt: View from the upgrade tab
|
||||
@@ -337,7 +378,8 @@ exceptions.
|
||||
$ python <(curl -s https://upgrade.odoo.com/upgrade) production -d <your db name> -t <target version>
|
||||
|
||||
An upgraded production database can also be requested via the `Upgrade page
|
||||
<https://upgrade.odoo.com/>`_.
|
||||
<https://upgrade.odoo.com>`_.
|
||||
|
||||
Once the database is uploaded, any modification to your production database will **not** be
|
||||
present on your upgraded database. This is why we recommend not using it during the upgrade
|
||||
process.
|
||||
@@ -347,14 +389,14 @@ exceptions.
|
||||
a filestore. Therefore, the upgraded database filestore must be merged with the production
|
||||
filestore before deploying the new version.
|
||||
|
||||
In case of an issue with your production database, you can request the assistance of Odoo by
|
||||
`submitting a ticket for an issue related to my upgrade (production)
|
||||
<https://odoo.com/help?stage=post_upgrade>`_.
|
||||
In case of an issue with your production database, you can request the assistance of Odoo by going
|
||||
to the `Support page and selecting "An issue related to my future upgrade (I am testing an upgrade)"
|
||||
<https://www.odoo.com/help?stage=migration>`_.
|
||||
|
||||
.. _upgrade/sla:
|
||||
.. _upgrade-sla:
|
||||
|
||||
Service-level agreement (SLA)
|
||||
-----------------------------
|
||||
=============================
|
||||
|
||||
With Odoo Enterprise, upgrading a database to the most recent version of Odoo is **free**, including
|
||||
any support required to rectify potential discrepancies in the upgraded database.
|
||||
@@ -363,8 +405,10 @@ Information about the upgrade services included in the Enterprise Licence is ava
|
||||
:ref:`Odoo Enterprise Subscription Agreement <upgrade>`. However, this section clarifies what
|
||||
upgrade services you can expect.
|
||||
|
||||
.. _upgrade-sla-covered:
|
||||
|
||||
Upgrade services covered by the SLA
|
||||
===================================
|
||||
-----------------------------------
|
||||
|
||||
Databases hosted on Odoo's cloud platforms (Odoo Online and Odoo.sh) or self-hosted (On-Premise) can
|
||||
benefit from upgrade services at all times for:
|
||||
@@ -378,8 +422,10 @@ benefit from upgrade services at all times for:
|
||||
Upgrade services are limited to the technical conversion and adaptation of a database (standard
|
||||
modules and data) to make it compatible with the version targeted by the upgrade.
|
||||
|
||||
.. _upgrade-sla-not-covered:
|
||||
|
||||
Upgrade services not covered by the SLA
|
||||
=======================================
|
||||
---------------------------------------
|
||||
|
||||
The following upgrade-related services are **not** included:
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 14 KiB |
@@ -2,6 +2,9 @@
|
||||
Export and import data
|
||||
======================
|
||||
|
||||
.. |list| replace:: :icon:`oi-view-list` :guilabel:`(list)` icon
|
||||
.. |actions| replace:: :icon:`fa-cog` :guilabel:`Actions`
|
||||
|
||||
In Odoo, it is sometimes necessary to export or import data for running reports, or for data
|
||||
modification. This document covers the export and import of data into and out of Odoo.
|
||||
|
||||
@@ -20,9 +23,9 @@ can aid in reporting on activities, although, Odoo provides a precise and easy r
|
||||
each available application.
|
||||
|
||||
With Odoo, the values can be exported from any field in any record. To do so, activate the list view
|
||||
(:guilabel:`≣ (four horizontal lines)` icon), on the items that need to be exported, and then
|
||||
select the records that should be exported. To select a record, tick the checkbox next to the
|
||||
corresponding record. Finally, click on :guilabel:`⚙️ Action`, and then :guilabel:`Export`.
|
||||
(|list|), on the items that need to be exported, then select the records that should be exported. To
|
||||
select a record, tick the checkbox next to the corresponding record. Finally, click on |actions|,
|
||||
then :guilabel:`Export`.
|
||||
|
||||
.. image:: export_import_data/list-view-export.png
|
||||
:align: center
|
||||
@@ -36,9 +39,10 @@ several options for the data to export:
|
||||
:alt: Overview of options to consider when exporting data in Odoo..
|
||||
|
||||
#. With the :guilabel:`I want to update data (import-compatable export)` option ticked, the system
|
||||
only shows the fields that can be imported. This is helpful in the case where the existing
|
||||
records need to be updated. This works like a filter. Leaving the box unticked, gives many more
|
||||
field options because it shows all the fields, not just the ones that can be imported.
|
||||
only shows the fields that can be imported. This is helpful in the case where the :ref:`existing
|
||||
records need to be updated <essentials/update-data>`. This works like a filter. Leaving the box
|
||||
unticked, gives many more field options because it shows all the fields, not just the ones that
|
||||
can be imported.
|
||||
#. When exporting, there is the option to export in two formats: `.csv` and `.xls`. With `.csv`,
|
||||
items are separated by a comma, while `.xls` holds information about all the worksheets in a
|
||||
file, including both content and formatting.
|
||||
@@ -70,7 +74,8 @@ Import data into Odoo
|
||||
=====================
|
||||
|
||||
Importing data into Odoo is extremely helpful during implementation, or in times where data needs to
|
||||
be updated in bulk. The following documentation covers how to import data into an Odoo database.
|
||||
be :ref:`updated in bulk <essentials/update-data>`. The following documentation covers how to import
|
||||
data into an Odoo database.
|
||||
|
||||
.. warning::
|
||||
Imports are permanent and **cannot** be undone. However, it is possible to use filters (`created
|
||||
@@ -158,6 +163,9 @@ Once the template is downloaded, proceed to follow these steps:
|
||||
using the fields that should be imported. This way, if there is not a sample import template,
|
||||
the names are accurate.
|
||||
|
||||
|
||||
.. _essentials/external-id:
|
||||
|
||||
Import from another application
|
||||
-------------------------------
|
||||
|
||||
@@ -166,7 +174,8 @@ from previous software to facilitate the transition to Odoo.
|
||||
|
||||
Setting an ID is not mandatory when importing, but it helps in many cases:
|
||||
|
||||
- Update imports: import the same file several times without creating duplicates.
|
||||
- :ref:`Update imports <essentials/update-data>`: import the same file several times without
|
||||
creating duplicates.
|
||||
- :ref:`Import relation fields <export_import_data/relation-fields>`.
|
||||
|
||||
To recreate relationships between different records, the unique identifier from the original
|
||||
@@ -176,10 +185,7 @@ When another record is imported that links to the first one, use **XXX/ID** (XXX
|
||||
the original unique identifier. This record can also be found using its name.
|
||||
|
||||
.. warning::
|
||||
It should be noted that there will be a conflict if two or more records have the same name.
|
||||
|
||||
The :guilabel:`External ID` (ID) can also be used to update the original import, if modified data
|
||||
needs to be re-imported later, therefore, it is a good practice to specify it whenever possible.
|
||||
It should be noted that conflicts occur if two (or more) records have the same *External ID*.
|
||||
|
||||
Field missing to map column
|
||||
---------------------------
|
||||
@@ -476,3 +482,43 @@ The two files produced are ready to be imported in Odoo without any modification
|
||||
imported these two :abbr:`CSV (Comma-separated Values)` files, there are four contacts and three
|
||||
companies (the first two contacts are linked to the first company). Keep in mind to first import
|
||||
the companies, and then the people.
|
||||
|
||||
.. _essentials/update-data:
|
||||
|
||||
Update data in Odoo
|
||||
===================
|
||||
|
||||
Existing data can be updated in bulk through a data import, as long as the :ref:`External ID
|
||||
<essentials/external-id>` remains consistent.
|
||||
|
||||
Prepare data export
|
||||
-------------------
|
||||
|
||||
To update data through an import, first navigate to the data to be updated, and select the |list| to
|
||||
activate list view. On the far-left side of the list, tick the checkbox for any record to be
|
||||
updated. Then, click |actions|, and select :icon:`fa-upload` :guilabel:`Export` from the drop-down
|
||||
menu.
|
||||
|
||||
On the resulting :guilabel:`Export Data` pop-up window, tick the checkbox labeled, :guilabel:`I want
|
||||
to update data (import-compatible export)`. This automatically includes the *External ID* in the
|
||||
export. Additionally, it limits the :guilabel:`Fields to export` list to **only** include fields
|
||||
that are able to be imported.
|
||||
|
||||
.. note::
|
||||
The :guilabel:`External ID` field does **not** appear in the :guilabel:`Fields to export` list
|
||||
unless it is manually added, but it is still included in the export. However, if the :guilabel:`I
|
||||
want to update data (import-compatible export)` checkbox is ticked, it is included in the export.
|
||||
|
||||
Select the required fields to be included in the export using the :ref:`options <export-data>` on
|
||||
the pop-up window, then click :guilabel:`Export`.
|
||||
|
||||
Import updated data
|
||||
-------------------
|
||||
|
||||
After exporting, make any necessary changes to the data file. When the file is ready, it can be
|
||||
:ref:`imported <import-data>` by following the same process as a normal data import.
|
||||
|
||||
.. danger::
|
||||
When updating data, it is extremely important that the *External ID* remain consistent, as
|
||||
this is how the system identifies a record. If an ID is altered, or removed, the system may add a
|
||||
duplicate record, instead of updating the existing one.
|
||||
|
||||
@@ -89,7 +89,7 @@ settings. To use a service, simply interact with it wherever it appears in the d
|
||||
- :doc:`Lead mining <../sales/crm/acquire_leads/lead_mining>`
|
||||
- :doc:`Enrich your contacts base with Partner Autocomplete
|
||||
<../sales/crm/optimize/partner_autocomplete>`
|
||||
- :doc:`SMS essentials <../marketing/sms_marketing/essentials/sms_essentials>`
|
||||
- :doc:`SMS Marketing <../marketing/sms_marketing>`
|
||||
|
||||
.. _in_app_purchase/credits:
|
||||
|
||||
@@ -119,7 +119,7 @@ Credits are purchased in *Packs* from the `Odoo IAP Catalog
|
||||
The number of credits consumed depends on the length of the SMS and the country of destination.
|
||||
|
||||
For more information, refer to the :doc:`SMS Pricing and FAQ
|
||||
<../marketing/sms_marketing/pricing/pricing_and_faq>` documentation.
|
||||
<../marketing/sms_marketing/pricing_and_faq>` documentation.
|
||||
|
||||
.. _iap/buying_credits:
|
||||
|
||||
|
||||
@@ -181,6 +181,75 @@ It is possible to *customize groups* by using a field present on the model. To d
|
||||
cluster, the next one that is added further divides the main group's categories, and so on.
|
||||
Furthermore, filters and groups can be used together to refine the view even more.
|
||||
|
||||
.. _search/comparison:
|
||||
|
||||
Comparison
|
||||
==========
|
||||
|
||||
Certain reporting dashboards include a :guilabel:`Comparison` section in the drop-down menus of
|
||||
their :guilabel:`Search...` bars. This includes the :doc:`Overall Equipment Effectiveness
|
||||
<../inventory_and_mrp/manufacturing/reporting/oee>` report for the *Manufacturing* app, and the
|
||||
:doc:`Purchase <../inventory_and_mrp/purchase/advanced/analyze>` report for the *Purchase* app,
|
||||
among others.
|
||||
|
||||
The options in the :icon:`fa-adjust` :guilabel:`Comparison` section are used to compare data from
|
||||
two different time periods. There are two comparison options to choose from: :guilabel:`(Time
|
||||
Filter): Previous Period` and :guilabel:`(Time Filter): Previous Year`.
|
||||
|
||||
.. important::
|
||||
For some reports, the :guilabel:`Comparison` section **only** appears in the
|
||||
:guilabel:`Search...` bar drop-down menu if one (or more) time periods have been selected in the
|
||||
:guilabel:`Filters` column. This is because, if no time period is specified, there is nothing to
|
||||
compare.
|
||||
|
||||
Additionally, some reports only allow use of the :guilabel:`Comparison` feature when the
|
||||
:icon:`fa-pie-chart` :guilabel:`(pie chart)` graph type, or the :icon:`oi-view-pivot`
|
||||
:guilabel:`(pivot)` view, is selected. A :guilabel:`Comparison` option can be selected even if
|
||||
another view is enabled, but doing so does **not** change the way data is displayed on the
|
||||
report.
|
||||
|
||||
.. image:: search/comparison-section.png
|
||||
:align: center
|
||||
:alt: The Search... bar for the production analysis report.
|
||||
|
||||
To view data using one of the two comparisons, begin by selecting a time period in the
|
||||
:guilabel:`Filters` column of the :guilabel:`Search...` bar drop-down menu. Then, select either
|
||||
:guilabel:`(Time Filter): Previous Period` or :guilabel:`(Time Filter): Previous Year` in the
|
||||
:guilabel:`Comparison` section.
|
||||
|
||||
With one of the :guilabel:`Comparison` options enabled, the report compares the data for the
|
||||
selected period, with the data for the same unit of time (month, quarter, year), one period or year
|
||||
prior. The way the data is displayed depends on the selected view:
|
||||
|
||||
- The :icon:`fa-bar-chart` :guilabel:`(bar chart)` shows two bars, side-by-side, for each unit of
|
||||
time for the selected time period. The left bar represents the selected time period, while the
|
||||
right bar represents the previous time period.
|
||||
- The :icon:`fa-line-chart` :guilabel:`(line chart)` is displayed with two lines, one representing
|
||||
the selected time period, and the other representing the previous time period.
|
||||
- The :icon:`fa-pie-chart` :guilabel:`(pie chart)` appears as a large circle with a smaller circle
|
||||
inside. The larger circle represents the selected time period, while the smaller circle represents
|
||||
the previous time period.
|
||||
- The :icon:`oi-view-pivot` :guilabel:`(pivot table)` is displayed with each column split into two
|
||||
smaller columns. The right column represents the selected time period, while the left column
|
||||
represents the previous time period.
|
||||
|
||||
.. example::
|
||||
In the :guilabel:`Production Analysis` report of the :menuselection:`Manufacturing` app, data for
|
||||
the second quarter of 2024 is compared to data for the second quarter of 2023. :guilabel:`Q2` is
|
||||
selected in the :guilabel:`End Date` filter section of the :guilabel:`Search...` bar drop-down
|
||||
menu. In the :guilabel:`Comparison` section, :guilabel:`End Date: Previous Year` is selected.
|
||||
|
||||
The current year is 2024, so the larger circle shows data for the second quarter (Q2) of 2024.
|
||||
The smaller circle shows data for the second quarter (Q2) of 2023, which is the same time period,
|
||||
but one *year* prior.
|
||||
|
||||
If :guilabel:`End Date: Previous Period` is selected instead, the smaller circle shows data for
|
||||
the first quarter (Q1) of 2024, which is the same time period, but one *period* prior.
|
||||
|
||||
.. image:: search/comparison.png
|
||||
:align: center
|
||||
:alt: The comparison view of the Production Analysis report.
|
||||
|
||||
.. _search/favorites:
|
||||
|
||||
Favorites
|
||||
|
||||
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 31 KiB |
@@ -211,7 +211,7 @@ available methods are standard price, average price, :abbr:`LIFO (Last-In, First
|
||||
:abbr:`FIFO (First-In, First-Out).`
|
||||
|
||||
.. seealso::
|
||||
:doc:`../inventory_and_mrp/inventory/warehouses_storage/inventory_valuation/inventory_valuation_config`
|
||||
:doc:`../inventory_and_mrp/inventory/product_management/inventory_valuation/inventory_valuation_config`
|
||||
|
||||
Retained earnings
|
||||
=================
|
||||
|
||||
@@ -36,6 +36,8 @@ follow the instructions.
|
||||
.. seealso::
|
||||
:doc:`bank/bank_synchronization`
|
||||
|
||||
.. _bank_accounts/create:
|
||||
|
||||
Create a bank account
|
||||
---------------------
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ First synchronization
|
||||
---------------------
|
||||
|
||||
You can start synchronization either by going to the Accounting app and
|
||||
:menuselection:`Accounting Dashboard --> Configuration --> Banks: Add a Bank Account`.
|
||||
:menuselection:`Accounting --> Configuration --> Add a Bank Account`.
|
||||
|
||||
Now you can search for your bank institution. Select it and follow the steps to synchronize with it.
|
||||
|
||||
@@ -70,19 +70,19 @@ By default, transactions fetched from an online source are grouped inside the sa
|
||||
one bank statement is created per month. You can change the bank statement creation periodicity
|
||||
in your journal settings.
|
||||
|
||||
You can find all your synchronizations by going to :menuselection:`Accounting Dashboard -->
|
||||
Configuration --> Accounting: Online Synchronization`.
|
||||
To view all your synchronizations, activate the :ref:`developer mode <developer-mode>` and go to
|
||||
:menuselection:`Accounting --> Configuration --> Online Synchronization`.
|
||||
|
||||
Synchronize manually
|
||||
--------------------
|
||||
|
||||
After your first synchronization, the created journals are synchronized by default every 12 hours.
|
||||
If you wish, you can synchronize manually by clicking on the :guilabel:`Synchronize Now` button on
|
||||
the dashboard.
|
||||
If you wish, you can synchronize them manually by clicking on the :guilabel:`Synchronize Now` button
|
||||
on the dashboard.
|
||||
|
||||
Or you can go to :menuselection:`Accounting Dashboard --> Configuration -->
|
||||
Accounting: Online Synchronization`, select your institution and then click on the
|
||||
:guilabel:`fetch transactions` button.
|
||||
Alternatively, activate the :ref:`developer mode <developer-mode>`, go to
|
||||
:menuselection:`Accounting --> Configuration --> Online Synchronization`, select your institution,
|
||||
and then click the :guilabel:`Fetch transactions` button.
|
||||
|
||||
.. important::
|
||||
Some institutions do not allow transactions to be fetched automatically. For such institutions,
|
||||
@@ -96,9 +96,10 @@ Issues
|
||||
Synchronization in error
|
||||
------------------------
|
||||
|
||||
To report a connection error to the `Odoo support <https://www.odoo.com/help>`_, go to
|
||||
:menuselection:`Accounting Dashboard--> Configuration --> Accounting: Online Synchronization`,
|
||||
select the connection that failed, and copy the error description and the reference.
|
||||
To report a connection error to the `Odoo support <https://www.odoo.com/help>`_, activate the
|
||||
:ref:`developer mode <developer-mode>`, go to :menuselection:`Accounting --> Configuration -->
|
||||
Online Synchronization`, select the connection that failed, and copy the error description and the
|
||||
reference.
|
||||
|
||||
Synchronization disconnected
|
||||
----------------------------
|
||||
@@ -128,14 +129,14 @@ Finally, make sure all your users refresh their Odoo page by pressing CTRL+F5.
|
||||
|
||||
.. Note::
|
||||
|
||||
- All previous synchronizations are disconnected during the installation and won't work anymore.
|
||||
- You can find them directly in the synchronization menu
|
||||
(:menuselection:`Accounting Dashboard --> Configuration -->
|
||||
Accounting: Online Synchronization`). It is not possible to resynchronize these connections;
|
||||
you have to make new ones.
|
||||
- Do not uninstall `account_online_sync`, which is the previous module for online
|
||||
- All previous synchronizations are disconnected during the installation and will not work
|
||||
anymore. To view them, activate the :ref:`developer mode <developer-mode>` and go to
|
||||
:menuselection:`Accounting --> Configuration --> Online Synchronization`). It is not possible
|
||||
to resynchronize these connections; you have to make new ones.
|
||||
- Do not uninstall the `account_online_sync` module, which is the previous module for online
|
||||
synchronization. The new one overrides it.
|
||||
- By default, `account_online_synchronization` is installed automatically with Accounting.
|
||||
- By default, the `account_online_synchronization` module is installed automatically with
|
||||
Accounting.
|
||||
|
||||
FAQ
|
||||
===
|
||||
@@ -145,11 +146,11 @@ The synchronization is not working in real-time. Is that normal?
|
||||
|
||||
The process is not intended to work in real-time as third party providers synchronize your accounts
|
||||
at different intervals. To force the synchronization and fetch the statements, go to your
|
||||
:guilabel:`Accounting Dashboard`, and click on the :guilabel:`Synchronize Now` button. You can also
|
||||
synchronize and fetch transactions through :menuselection:`Accounting Dashboard -->
|
||||
Configuration --> Accounting: Online Synchronization`. Some providers only allow one refresh per
|
||||
day, so it is possible that clicking on :guilabel:`Synchronize Now` does not get your latest
|
||||
transactions if you already performed such action earlier in the day.
|
||||
:guilabel:`Accounting Dashboard`, and click on the :guilabel:`Synchronize Now` button. Synchronize
|
||||
and fetch transactions by activating the :ref:`developer mode <developer-mode>` and going to
|
||||
:menuselection:`Accounting --> Configuration --> Online Synchronization`. Some providers only allow
|
||||
one refresh per day, so it is possible that clicking on :guilabel:`Synchronize Now` does not get
|
||||
your latest transactions if you already performed such action earlier in the day.
|
||||
|
||||
A transaction can be visible on your bank account but not be fetched if it has the status
|
||||
:guilabel:`Pending`. Only transactions with the :guilabel:`Posted` status will be retrieved. If the
|
||||
@@ -158,9 +159,9 @@ transaction is not **Posted** yet, you will have to wait until the status change
|
||||
Is the Online Bank Synchronization feature included in my contract?
|
||||
-------------------------------------------------------------------
|
||||
|
||||
- **Community Version**: No, this feature is not included in the Community Version.
|
||||
- **Online Version**: Yes, even if you benefit from the One App Free contract.
|
||||
- **Enterprise Version**: Yes, if you have a valid enterprise contract linked to your database.
|
||||
- **Community Edition**: No, this feature is not included in the Community Version.
|
||||
- **Online Edition**: Yes, even if you benefit from the One App Free contract.
|
||||
- **Enterprise Edition**: Yes, if you have a valid enterprise contract linked to your database.
|
||||
|
||||
Some banks have a status "Beta." What does this mean?
|
||||
-----------------------------------------------------
|
||||
@@ -186,9 +187,9 @@ Why don't I see any transactions?
|
||||
---------------------------------
|
||||
|
||||
During your first synchronization, you selected the bank accounts you decided to synchronize with
|
||||
Odoo. If you didn't synchronize any of your accounts, you can go to
|
||||
:menuselection:`Accounting Dashboard --> Configuration --> Accounting: Online Synchronization` to
|
||||
click on the :guilabel:`Fetch Account` button on the connection.
|
||||
Odoo. If you didn't synchronize any of your accounts, activate the :ref:`developer mode
|
||||
<developer-mode>`, go to :menuselection:`Accounting --> Configuration --> Online Synchronization`,
|
||||
and click the :guilabel:`Fetch Account` button on the connection.
|
||||
|
||||
There may also be no new transactions.
|
||||
|
||||
@@ -198,9 +199,9 @@ database, please `submit a support ticket <https://www.odoo.com/help>`_.
|
||||
How can I update my bank credentials?
|
||||
-------------------------------------
|
||||
|
||||
You can update your credentials by going to :menuselection:`Accounting Dashboard -->
|
||||
Configuration --> Accounting: Online Synchronization`,open the connection you want to update your
|
||||
credentials and click on the :guilabel:`Update Credentials` button.
|
||||
To update your credentials, activate the :ref:`developer mode <developer-mode>` and go to
|
||||
:menuselection:`Accounting --> Configuration --> Online Synchronization`. Open the connection you
|
||||
want to update your credentials and click the :guilabel:`Update Credentials` button.
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
@@ -7,7 +7,6 @@ in one place. It offers non-intrusive connectivity to ASPSPs' official APIs acro
|
||||
storing data.
|
||||
|
||||
.. image:: enablebanking/enablebanking.png
|
||||
:align: center
|
||||
:alt: Enable Banking logo
|
||||
|
||||
**Odoo** synchronizes directly with banks to get access to all bank transactions and automatically
|
||||
@@ -30,7 +29,6 @@ Link bank accounts with Odoo
|
||||
:guilabel:`Continue authentication`;
|
||||
|
||||
.. image:: enablebanking/enablebankingauth.png
|
||||
:align: center
|
||||
:alt: Enable Banking authentication page
|
||||
|
||||
#. Finally, you are redirected to your bank's login page.
|
||||
|
||||
@@ -6,15 +6,11 @@ Ponto
|
||||
place and directly see all their transactions within one app. It is a third-party solution that is
|
||||
continuously expanding the number of bank institutions that can be synchronized with Odoo.
|
||||
|
||||
.. image:: ponto/ponto-logo.png
|
||||
:align: center
|
||||
:alt: Logo of the Ponto brand
|
||||
|
||||
**Odoo** can synchronize directly with your bank to get all bank statements imported automatically
|
||||
into your database.
|
||||
|
||||
Ponto is a paid third-party provider that can handle the synchronization between your bank accounts
|
||||
and Odoo. `Its pricing is 4€/month per account/integration <https://myponto.com/en#pricing>`_.
|
||||
and Odoo.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`../bank_synchronization`
|
||||
@@ -31,34 +27,29 @@ Link your bank accounts with Ponto
|
||||
#. Once you are logged in, create an *organization*.
|
||||
|
||||
.. image:: ponto/ponto-organization.png
|
||||
:align: center
|
||||
:alt: Fill out the form to add an organization in Ponto.
|
||||
|
||||
#. | Go to :menuselection:`Accounts --> Live`, and click on *Add account*.
|
||||
| You might have to add your **Billing Information** first.
|
||||
#. Go to :menuselection:`Accounts --> Live`, and click :guilabel:`Add account`. You might have to
|
||||
add your **Billing Information** first.
|
||||
#. Select your country, your bank institutions, give your consent to Ponto, and follow the steps
|
||||
on-screen to link your bank account with your Ponto account.
|
||||
|
||||
.. image:: ponto/ponto-add-account.png
|
||||
:align: center
|
||||
:alt: Add bank accounts to your Ponto account.
|
||||
|
||||
#. Make sure to add all bank accounts you want to synchronize with your Odoo database before moving
|
||||
on to the next steps.
|
||||
#. Add all bank accounts you want to synchronize with your Odoo database and move to the next steps.
|
||||
|
||||
Link your Ponto account with your Odoo database
|
||||
-----------------------------------------------
|
||||
|
||||
#. Go to :menuselection:`Accounting --> Configuration --> Add a Bank Account`.
|
||||
#. Search your institution, make sure to select the right institution. By selecting the institution,
|
||||
you can verify that the third party provider is Ponto.
|
||||
#. Click on *Connect* and follow the steps.
|
||||
#. At some point, you will have to authorize the accounts you want to access in Odoo. Please select
|
||||
**all the accounts** you want to synchronize. Even the ones coming from other banking
|
||||
institutions.
|
||||
#. Search for your institution and select it so you can verify that the third party provider is
|
||||
Ponto.
|
||||
#. Click :guilabel:`Connect` and follow the steps.
|
||||
#. Select **all accounts** you want to access and synchronize in Odoo, even the ones coming from
|
||||
other banking institutions.
|
||||
|
||||
.. image:: ponto/ponto-select-accounts.png
|
||||
:align: center
|
||||
:alt: Selection of the accounts you wish to synchronize with Odoo.
|
||||
|
||||
#. Finish the flow.
|
||||
@@ -70,26 +61,26 @@ Link your Ponto account with your Odoo database
|
||||
Update your synchronization credentials
|
||||
---------------------------------------
|
||||
|
||||
You might have to update your Ponto credentials or modify the synchronization settings.
|
||||
To update your Ponto credentials or modify the synchronization settings, activate the
|
||||
:ref:`developer mode <developer-mode>`, go to :menuselection:`Accounting --> Configuration -->
|
||||
Online Synchronization`, and select the institution from which you want to fetch the other
|
||||
accounts. Click :guilabel:`Fetch Accounts` to start the flow.
|
||||
|
||||
To do so, go to :menuselection:`Accounting --> Configuration --> Online Synchronization` and select
|
||||
the institution you want to fetch the other accounts. Click on *Fetch Accounts* button to start the
|
||||
flow.
|
||||
|
||||
During the update, select **all the accounts** you want to synchronize, even the ones coming
|
||||
from other banking institutions.
|
||||
.. note::
|
||||
During the update, select **all accounts** you want to synchronize, even the ones coming from
|
||||
other banking institutions.
|
||||
|
||||
Fetch new accounts
|
||||
------------------
|
||||
|
||||
You might want to add new online accounts to your connection.
|
||||
To add new online accounts to your connection, activate the :ref:`developer mode <developer-mode>`,
|
||||
go to :menuselection:`Accounting --> Configuration --> Online Synchronization`, and select the
|
||||
institution from which you want to fetch the other accounts. Click :guilabel:`Fetch Accounts` to
|
||||
start the flow.
|
||||
|
||||
To do so, go to :menuselection:`Accounting --> Configuration --> Online Synchronization` and select
|
||||
the institution you want to fetch the other accounts. Click on *Fetch Accounts* button to start the
|
||||
flow.
|
||||
|
||||
Don't forget to keep authorization for existing accounts (for all institutions that you
|
||||
have synchronized with Ponto).
|
||||
.. note::
|
||||
Don't forget to keep authorization for existing accounts (for all institutions that you have
|
||||
synchronized with Ponto).
|
||||
|
||||
FAQ
|
||||
===
|
||||
@@ -102,7 +93,7 @@ You selected an institution from the list and did not authorize any accounts fro
|
||||
I have an error about that my authorization has expired
|
||||
-------------------------------------------------------
|
||||
|
||||
Every **3 months** (90 days) you must re-authorize the connection between your bank account
|
||||
Every **6 months** (180 days) you must re-authorize the connection between your bank account
|
||||
and Ponto. This must be done from the `Ponto website <https://myponto.com>`_. If you do not
|
||||
do this, the synchronization will stop for these accounts.
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 2.5 KiB |
@@ -6,11 +6,6 @@ Salt Edge
|
||||
from your bank accounts. It supports ~5000 institutions in more than 50
|
||||
countries.
|
||||
|
||||
.. image:: saltedge/saltedge-logo.png
|
||||
:align: center
|
||||
:width: 50%
|
||||
:alt: Salt Edge Logo
|
||||
|
||||
Odoo can synchronize directly with your bank to get all bank statements imported
|
||||
automatically into your database.
|
||||
|
||||
@@ -34,20 +29,17 @@ Link your bank accounts with Odoo
|
||||
account.
|
||||
|
||||
.. image:: saltedge/saltedge-contact-email.png
|
||||
:align: center
|
||||
:alt: Email address to provide to Salt Edge for the creation of your account.
|
||||
|
||||
#. After entering your email address, you are redirected to Salt Edge to continue
|
||||
the synchronization process.
|
||||
|
||||
.. image:: saltedge/saltedge-login-page.png
|
||||
:align: center
|
||||
:alt: Salt Edge Login page.
|
||||
|
||||
#. Make sure you give your consent by checking the consent checkbox.
|
||||
|
||||
.. image:: saltedge/saltedge-give-consent.png
|
||||
:align: center
|
||||
:alt: Salt Edge give consent page.
|
||||
|
||||
#. Complete the synchronization by following the steps.
|
||||
@@ -56,11 +48,10 @@ Link your bank accounts with Odoo
|
||||
Update your credentials
|
||||
-----------------------
|
||||
|
||||
You might have to update your Salt Edge credentials or modify the synchronization settings.
|
||||
|
||||
To do so, go to :menuselection:`Accounting --> Configuration --> Online Synchronization` and
|
||||
select the institution you want to update credentials. Click on the *Update Credentials* button
|
||||
to start the flow and follow the steps.
|
||||
To update your Salt Edge credentials or modify the synchronization settings, activate the
|
||||
:ref:`developer mode <developer-mode>`, go to :menuselection:`Accounting --> Configuration -->
|
||||
Online Synchronization`, and select the institution you want to update credentials. Click
|
||||
:guilabel:`Update Credentials` to start the flow and follow the steps.
|
||||
|
||||
Don't forget to check the consent checkbox. Otherwise, Odoo may not be able to access
|
||||
your information.
|
||||
@@ -68,14 +59,14 @@ your information.
|
||||
Fetch new accounts
|
||||
------------------
|
||||
|
||||
You might want to add new online accounts to your connection.
|
||||
To add new online accounts to your connection, activate the :ref:`developer mode <developer-mode>`,
|
||||
go to :menuselection:`Accounting --> Configuration --> Online Synchronization`, and select the
|
||||
institution to fetch the new accounts. Click :guilabel:`Fetch Accounts` to start the flow and
|
||||
follow the steps.
|
||||
|
||||
To do so, go to :menuselection:`Accounting --> Configuration --> Online Synchronization` and
|
||||
select the institution to fetch the new accounts. Click on the *Fetch Accounts* button
|
||||
to start the flow and follow the steps.
|
||||
|
||||
Don't forget to check the consent checkbox. Otherwise, Odoo may not be able to access
|
||||
your information.
|
||||
.. note::
|
||||
Don't forget to check the consent checkbox. Otherwise, Odoo may not be able to access your
|
||||
information.
|
||||
|
||||
FAQ
|
||||
===
|
||||
@@ -94,15 +85,15 @@ record.
|
||||
I have an error saying that I have already synchronized this account
|
||||
--------------------------------------------------------------------
|
||||
|
||||
You have probably already synchronized your bank account with Salt Edge, please check on your `dashboard
|
||||
<https://www.saltedge.com/dashboard>`_ that you don't already have a connection with the same
|
||||
credentials.
|
||||
You have probably already synchronized your bank account with Salt Edge, please check on your
|
||||
`dashboard <https://www.saltedge.com/dashboard>`_ that you don't already have a connection with the
|
||||
same credentials.
|
||||
|
||||
In case you already have a synchronization with the same credentials present on your Salt Edge
|
||||
dashboard and this synchronization has not been created with Odoo, please delete it and create it
|
||||
from your Odoo database.
|
||||
If you already have a synchronization with the same credentials present on your Salt Edge
|
||||
dashboard and this synchronization has not been created with Odoo, delete it and create it from your
|
||||
Odoo database.
|
||||
|
||||
In case you already have a connection with the same credentials present on your Salt Edge dashboard
|
||||
and this synchronization was created with Odoo, you will normally be able to find it by going to
|
||||
:menuselection:`Accounting --> Configuration --> Online Synchronization`. Please make sure to do an
|
||||
*Update Credentials* to reactivate the connection.
|
||||
If you already have a connection with the same credentials present on your Salt Edge dashboard
|
||||
and this synchronization was created with Odoo, activate the :ref:`developer
|
||||
mode <developer-mode>`, go to :menuselection:`Accounting --> Configuration --> Online
|
||||
Synchronization`, and click :guilabel:`Update Credentials` to reactivate the connection.
|
||||
|
||||
|
Before Width: | Height: | Size: 11 KiB |
@@ -18,8 +18,13 @@ To specify a sales order's invoice and delivery addresses, first go to :menusele
|
||||
|
||||
On quotations and sales orders, there are now fields for :guilabel:`Invoice Address` and
|
||||
:guilabel:`Delivery Address`. If the customer has an invoice or delivery address listed on their
|
||||
contact record, the corresponding field will use that address by default, but any contact's address
|
||||
can be used instead.
|
||||
:ref:`contact record <sales/send_quotations/contact-form-config>`, the corresponding field uses that
|
||||
address, by default, but any contact's address can be used instead.
|
||||
|
||||
.. seealso::
|
||||
For more information, refer to the documentation on :ref:`Contact Form Configuration
|
||||
<sales/send_quotations/contact-form-config>`.
|
||||
|
||||
|
||||
Invoice and deliver to different addresses
|
||||
==========================================
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
Get started
|
||||
===========
|
||||
|
||||
When you first open your Odoo Accounting app, the *Accounting Overview* page welcomes you with a
|
||||
step-by-step onboarding banner, a wizard that helps you get started. This onboarding banner is
|
||||
When you first open your Odoo Accounting app, the :guilabel:`Accounting Dashboard` welcomes you with
|
||||
a step-by-step onboarding banner, a wizard that helps you get started. This onboarding banner is
|
||||
displayed until you choose to close it.
|
||||
|
||||
The settings visible in the onboarding banner can still be modified later by going to
|
||||
@@ -22,69 +22,22 @@ Accounting onboarding banner
|
||||
|
||||
The step-by-step Accounting onboarding banner is composed of four steps:
|
||||
|
||||
.. image:: get_started/setup_accounting_onboarding.png
|
||||
.. image:: get_started/accounting-onboarding-banner.png
|
||||
:alt: Step-by-step onboarding banner in Odoo Accounting
|
||||
|
||||
#. :ref:`accounting-setup-company`
|
||||
#. :ref:`accounting-setup-bank`
|
||||
#. :ref:`accounting-setup-periods`
|
||||
#. :ref:`accounting-setup-bank`
|
||||
#. :ref:`accounting-setup-taxes`
|
||||
#. :ref:`accounting-setup-chart`
|
||||
|
||||
.. _accounting-setup-company:
|
||||
|
||||
Company Data
|
||||
------------
|
||||
|
||||
This menu allows you to add your company’s details such as the name, address, logo, website, phone
|
||||
number, email address, and Tax ID, or VAT number. These details are then displayed on your documents,
|
||||
such as on invoices.
|
||||
|
||||
.. image:: get_started/setup_company.png
|
||||
:alt: Add your company's details in Odoo Accounting and Odoo Invoicing
|
||||
|
||||
.. note::
|
||||
You can also change these settings by going to :menuselection:`Settings --> General Settings -->
|
||||
Settings --> Companies` and clicking on **Update Info**.
|
||||
|
||||
.. _accounting-setup-bank:
|
||||
|
||||
Bank Account
|
||||
------------
|
||||
|
||||
Connect your bank account to your database and have your bank statements synced automatically. To do
|
||||
so, find your bank in the list, click on *Connect*, and follow the instructions on-screen.
|
||||
|
||||
.. note::
|
||||
:doc:`Click here <bank/bank_synchronization>` for more information about this feature.
|
||||
|
||||
If your Bank Institution can’t be synchronized automatically, or if you prefer not to sync it with
|
||||
your database, you may also configure your bank account manually by clicking on *Create it*, and
|
||||
filling out the form.
|
||||
|
||||
- **Name**: the bank account's name, as displayed on Odoo.
|
||||
- **Account Number**: your bank account number (IBAN in Europe).
|
||||
- **Bank**: click on *Create and Edit* to configure the bank's details. Add the bank institution's
|
||||
name and its Identifier Code (BIC or SWIFT).
|
||||
- **Code**: this code is your Journal's *Short Code*, as displayed on Odoo. By default, Odoo creates
|
||||
a new Journal with this Short Code.
|
||||
- **Journal**: This field is displayed if you have an existing Bank Journal that is not linked yet
|
||||
to a bank account. If so, then select the *Journal* you want to use to record the financial
|
||||
transactions linked to this bank account or create a new one by clicking on *Create and Edit*.
|
||||
|
||||
.. note::
|
||||
- You can add as many bank accounts as needed with this tool by going to :menuselection:`Accounting
|
||||
--> Configuration`, and clicking on *Add a Bank Account*.
|
||||
- :doc:`Click here <bank>` for more information about Bank
|
||||
Accounts.
|
||||
|
||||
.. _accounting-setup-periods:
|
||||
|
||||
Accounting Periods
|
||||
------------------
|
||||
|
||||
Define here your **Fiscal Years**’ opening and closing dates, which are used to generate reports
|
||||
automatically, and your **Tax Return Periodicity**, along with a reminder to never miss a tax return
|
||||
deadline.
|
||||
Define the **Fiscal Years**’ opening and closing dates, which are used to generate reports
|
||||
automatically, and set your **Tax Return Periodicity**, along with a reminder to never miss a tax
|
||||
return deadline.
|
||||
|
||||
By default, the opening date is set on the 1st of January and the closing date on the 31st of
|
||||
December, as this is the most common use.
|
||||
@@ -93,6 +46,49 @@ December, as this is the most common use.
|
||||
You can also change these settings by going to :menuselection:`Accounting --> Configuration -->
|
||||
Settings --> Fiscal Periods` and updating the values.
|
||||
|
||||
.. _accounting-setup-bank:
|
||||
|
||||
Bank Account
|
||||
------------
|
||||
|
||||
Connect your bank account to your database and have your bank statements synced automatically. To do
|
||||
so, find your bank in the list, click :guilabel:`Connect`, and follow the instructions on-screen.
|
||||
|
||||
.. note::
|
||||
:doc:`Click here <bank/bank_synchronization>` for more information about this feature.
|
||||
|
||||
If your Bank Institution can’t be synchronized automatically, or if you prefer not to sync it with
|
||||
your database, you can also configure your bank account manually by typing its name, clicking
|
||||
:guilabel:`Create your Bank Account`, and filling out the form.
|
||||
|
||||
- :guilabel:`Name`: the bank account's name, as displayed in Odoo.
|
||||
- :guilabel:`Account Number`: your bank account number (IBAN in Europe).
|
||||
- :guilabel:`Bank`: click :guilabel:`Create and edit` to configure the bank's details. Add the
|
||||
bank institution's :guilabel:`Name` and its :guilabel:`Identifier Code` (BIC or SWIFT).
|
||||
- :guilabel:`Code`: this code is your Journal's :guilabel:`Short Code`, as displayed in Odoo.
|
||||
By default, Odoo creates a new Journal with this short code.
|
||||
- :guilabel:`Journal`: This field is displayed if you have an existing bank journal that is not
|
||||
linked yet to a bank account. If so, then select the :guilabel:`Journal` you want to use to record
|
||||
the financial transactions linked to this bank account or create a new one by clicking
|
||||
:guilabel:`Create and Edit`.
|
||||
|
||||
.. note::
|
||||
- You can add as many bank accounts as needed with this tool by going to
|
||||
:menuselection:`Accounting --> Configuration --> Add a Bank Account`.
|
||||
- :doc:`Click here <bank>` for more information about Bank Accounts.
|
||||
|
||||
.. _accounting-setup-taxes:
|
||||
|
||||
Taxes
|
||||
-----
|
||||
|
||||
This menu allows you to create new taxes, (de)activate, or modify existing taxes. Depending on the
|
||||
:doc:`localization package <../fiscal_localizations>` installed on your database, taxes required for
|
||||
your country are already configured.
|
||||
|
||||
.. note::
|
||||
:doc:`Click here <taxes>` for more information about taxes.
|
||||
|
||||
.. _accounting-setup-chart:
|
||||
|
||||
Chart of Accounts
|
||||
@@ -102,85 +98,83 @@ With this menu, you can add accounts to your **Chart of Accounts** and indicate
|
||||
opening balances.
|
||||
|
||||
Basic settings are displayed on this page to help you review your Chart of Accounts. To access all
|
||||
the settings of an account, click on the *double arrow button* at the end of the line.
|
||||
the settings of an account, click on the :guilabel:`Setup` button at the end of the line.
|
||||
|
||||
.. image:: get_started/setup_chart_of_accounts.png
|
||||
:alt: Setup of the Chart of Accounts and their opening balances in Odoo Accounting
|
||||
|
||||
.. note::
|
||||
:doc:`Click here <get_started/chart_of_accounts>` for more information on how to configure your Chart of
|
||||
Accounts.
|
||||
:doc:`Click here <get_started/chart_of_accounts>` for more information on how to configure your
|
||||
Chart of Accounts.
|
||||
|
||||
Invoicing onboarding banner
|
||||
===========================
|
||||
|
||||
There is another step-by-step onboarding banner that helps you take advantage of your Odoo Invoicing
|
||||
and Accounting apps. The *Invoicing onboarding banner* is the one that welcomes you if you use the
|
||||
and Accounting apps. The Invoicing onboarding banner is the one that welcomes you if you use the
|
||||
Invoicing app rather than the Accounting app.
|
||||
|
||||
If you have Odoo Accounting installed on your database, you can reach it by going to
|
||||
:menuselection:`Accounting --> Customers --> Invoices`.
|
||||
|
||||
The Invoicing onboarding banner is composed of four main steps:
|
||||
The Invoicing onboarding banner consists of four main steps:
|
||||
|
||||
.. image:: get_started/setup_invoicing_onboarding.png
|
||||
.. image:: get_started/invoicing-onboarding-banner.png
|
||||
:alt: Step-by-step onboarding banner in Odoo Invoicing
|
||||
|
||||
#. :ref:`invoicing-setup-company`
|
||||
#. :ref:`invoicing-setup-layout`
|
||||
#. :ref:`invoicing-setup-payment`
|
||||
#. :ref:`invoicing-setup-sample`
|
||||
#. :ref:`invoicing-setup-invoice`
|
||||
#. :ref:`invoicing-setup-payments`
|
||||
|
||||
.. _invoicing-setup-company:
|
||||
|
||||
Company Data
|
||||
------------
|
||||
|
||||
This form is the same as :ref:`the one presented in the Accounting onboarding banner
|
||||
<accounting-setup-company>`.
|
||||
Add your company’s details, such as the name, address, logo, website, phone number, email address,
|
||||
and Tax ID or VAT number. These details are then displayed on your documents, such as invoices.
|
||||
|
||||
.. note::
|
||||
You can also change the company's details by going to :menuselection:`Settings --> General
|
||||
Settings`, scrolling down to the :guilabel:`Companies` section, and :guilabel:`Update Info`.
|
||||
|
||||
.. _invoicing-setup-layout:
|
||||
|
||||
Invoice Layout
|
||||
Documents Layout
|
||||
----------------
|
||||
|
||||
Customize the :ref:`default invoice layout <studio/pdf-reports/default-layout>`.
|
||||
|
||||
.. note::
|
||||
You can also change the invoice layout by going to :menuselection:`Settings --> General
|
||||
Settings`, scrolling down to the :guilabel:`Companies` section, and clicking :guilabel:`Configure
|
||||
Document Layout`.
|
||||
|
||||
.. _invoicing-setup-invoice:
|
||||
|
||||
Create Invoice
|
||||
--------------
|
||||
|
||||
With this tool, you can design the appearance of your documents by selecting which layout template,
|
||||
paper format, colors, font, and logo you want to use.
|
||||
|
||||
You can also add your *Company Tagline* and the content of the documents’ *footer*. Note that Odoo
|
||||
automatically adds the company's phone number, email, website URL, and Tax ID (or VAT number) to the
|
||||
footer, according to the values you previously configured in the :ref:`Company Data
|
||||
<accounting-setup-company>`.
|
||||
|
||||
.. image:: get_started/setup_document_layout.png
|
||||
:alt: Document layout configuration in Odoo Invoicing
|
||||
Create your first invoice.
|
||||
|
||||
.. tip::
|
||||
Add your **bank account number** and a link to your **General Terms & Condition** in the footer.
|
||||
This way, your contacts can find the full content of your GT&C online without having to print
|
||||
them on the invoices you issue.
|
||||
|
||||
.. note::
|
||||
These settings can also be modified by going to :menuselection:`Settings --> General Settings`,
|
||||
under the *Business Documents* section.
|
||||
.. _invoicing-setup-payments:
|
||||
|
||||
.. _invoicing-setup-payment:
|
||||
Online Payments
|
||||
---------------
|
||||
|
||||
Payment Method
|
||||
--------------
|
||||
Get started with Stripe and enable secure integrated credit and debit card payments within Odoo.
|
||||
|
||||
This menu helps you configure the payment methods with which your customers can pay you.
|
||||
.. tip::
|
||||
To use other payment providers, go to
|
||||
:guilabel:`Invoicing --> Configuration --> Payment Providers` and
|
||||
:doc:`enable the desired providers <../payment_providers>`.
|
||||
|
||||
.. important::
|
||||
Configuring a *Payment Provider* with this tool also activates the *Invoice Online Payment*
|
||||
option automatically. With this, users can directly pay online, from their Customer Portal.
|
||||
|
||||
.. _invoicing-setup-sample:
|
||||
|
||||
Sample Invoice
|
||||
--------------
|
||||
|
||||
Send yourself a sample invoice by email to make sure everything is correctly configured.
|
||||
|
||||
.. seealso::
|
||||
* :doc:`bank`
|
||||
@@ -197,4 +191,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
|
||||
get_started/tax_units
|
||||
|
||||
|
After Width: | Height: | Size: 21 KiB |
@@ -26,12 +26,12 @@ valuation <inventory/avg_price/leaving_inventory>`.
|
||||
.. note::
|
||||
This document addresses a specific use case for theoretical purposes. For instructions on how to
|
||||
set up and use |AVCO|, refer to the :doc:`inventory valuation configuration
|
||||
<../../../inventory_and_mrp/inventory/warehouses_storage/inventory_valuation/inventory_valuation_config>`
|
||||
<../../../inventory_and_mrp/inventory/product_management/inventory_valuation/inventory_valuation_config>`
|
||||
doc.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`Using inventory valuation
|
||||
<../../../inventory_and_mrp/inventory/warehouses_storage/inventory_valuation/using_inventory_valuation>`
|
||||
<../../../inventory_and_mrp/inventory/product_management/inventory_valuation/using_inventory_valuation>`
|
||||
- :ref:`Other inventory valuation methods <inventory/warehouses_storage/costing_methods>`
|
||||
|
||||
Configuration
|
||||
@@ -44,7 +44,7 @@ product category page, set :guilabel:`Costing Method` to `Average Cost (AVCO)` a
|
||||
|
||||
.. seealso::
|
||||
:doc:`Inventory valuation configuration
|
||||
<../../../inventory_and_mrp/inventory/warehouses_storage/inventory_valuation/inventory_valuation_config>`
|
||||
<../../../inventory_and_mrp/inventory/product_management/inventory_valuation/inventory_valuation_config>`
|
||||
|
||||
Using average cost valuation
|
||||
============================
|
||||
|
||||
|
After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 71 KiB |
@@ -1,50 +1,35 @@
|
||||
=========
|
||||
VAT units
|
||||
Tax 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
|
||||
A **tax 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
|
||||
VAT-taxable enterprise. **Tax 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
|
||||
designated as the **representative** company of the **tax unit**. **Tax 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
|
||||
VAT taxes. They form up as a **tax 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
|
||||
To create a **tax unit**, go to :menuselection:`Accounting --> Configuration --> Tax Units`, and
|
||||
click :guilabel:`New`. Enter a **name** for the unit, select a :guilabel:`Country`, the
|
||||
:guilabel:`Companies` to incorporate in the unit, the :guilabel:`Main Company`, and the
|
||||
:guilabel:`Tax ID` of the **constituent** company of that tax unit.
|
||||
|
||||
Fiscal position
|
||||
---------------
|
||||
|
||||
As transactions between constituents of the same **VAT unit** are not subject to VAT, it is possible
|
||||
As transactions between constituents of the same **tax 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.
|
||||
|
||||
@@ -61,13 +46,12 @@ Do the same for the :guilabel:`Account Mapping` tab if required, and repeat this
|
||||
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
|
||||
.. image:: tax_units/fiscal-positions.png
|
||||
:alt: Tax mapping of fiscal position for tax 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**.
|
||||
:guilabel:`Fiscal Position` field, input the **fiscal position** created for the **tax unit**.
|
||||
Repeat the process for each **constituent** company card form, on each company database.
|
||||
|
||||
.. seealso::
|
||||
@@ -76,11 +60,10 @@ Repeat the process for each **constituent** company card form, on each company d
|
||||
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
|
||||
The **representative** company can access the aggregated tax report of the **tax unit** by going to
|
||||
:menuselection:`Accounting --> Reporting --> Tax Report`, and selecting the **tax 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
|
||||
.. image:: tax_units/report.png
|
||||
:alt: tax unit tax report
|
||||
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 4.9 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 10 KiB |
@@ -16,6 +16,8 @@ Go to :menuselection:`Accounting --> Configuration --> Settings --> Customer Pay
|
||||
Deposit multiple payments in batch
|
||||
==================================
|
||||
|
||||
.. _batch-payments/register-payments:
|
||||
|
||||
Register payments
|
||||
-----------------
|
||||
|
||||
|
||||
@@ -91,5 +91,5 @@ select :guilabel:`Process follow-ups`.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`/applications/essentials/in_app_purchase`
|
||||
- :doc:`/applications/marketing/sms_marketing/pricing/pricing_and_faq`
|
||||
- :doc:`/applications/marketing/sms_marketing/pricing_and_faq`
|
||||
- :doc:`../customer_invoices/snailmail`
|
||||
|
||||
@@ -30,8 +30,9 @@ Non-EEA territories:
|
||||
- Jersey;
|
||||
- Isle of Man.
|
||||
|
||||
When paying a bill in Odoo, you can select SEPA mandates as a payment option. At the day's end,
|
||||
you can generate the SEPA file containing all bank wire transfers and send it to the bank.
|
||||
When paying a bill in Odoo, you can select SEPA mandates as a payment option. At the end of the day,
|
||||
you can generate the SEPA file containing all bank wire transfers and upload it to your online
|
||||
banking interface to process the payments.
|
||||
|
||||
By default, the file follows the SEPA Credit Transfer **'pain.001.001.03'** specifications. This is
|
||||
a well-defined standard among banks. However, for Swiss and German companies, other formats are used
|
||||
@@ -69,7 +70,7 @@ the BIC (bank identifier code) in the :guilabel:`Journal Entries` tab.
|
||||
Registering payments
|
||||
--------------------
|
||||
|
||||
You can register and vendor payments made with SEPA. To do so, go to :menuselection:`Accounting -->
|
||||
You can register any vendor payments made with SEPA. To do so, go to :menuselection:`Accounting -->
|
||||
Vendors --> Payments`. When creating your payment, select :guilabel:`SEPA Credit Transfer` as the
|
||||
:guilabel:`Payment Method`.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
================
|
||||
Financial budget
|
||||
Analytic budgets
|
||||
================
|
||||
|
||||
Managing budgets is an essential part of running a business. Budgets help people become more
|
||||
|
||||
@@ -336,7 +336,6 @@ drop the taxes in the :ref:`order they should be computed <taxes/base-subsequent
|
||||
.. seealso::
|
||||
- :doc:`taxes/fiscal_positions`
|
||||
- :doc:`taxes/B2B_B2C`
|
||||
- :doc:`taxes/taxcloud`
|
||||
- :doc:`reporting/tax_returns`
|
||||
|
||||
.. toctree::
|
||||
@@ -347,6 +346,5 @@ drop the taxes in the :ref:`order they should be computed <taxes/base-subsequent
|
||||
taxes/vat_verification
|
||||
taxes/fiscal_positions
|
||||
taxes/avatax
|
||||
taxes/taxcloud
|
||||
taxes/eu_distance_selling
|
||||
taxes/B2B_B2C
|
||||
|
||||
@@ -22,18 +22,18 @@ can maintain control of tax-calculations in-house with this simple :abbr:`API (a
|
||||
programming interface)` integration.
|
||||
|
||||
.. important::
|
||||
Some limitations exist in Odoo while using *AvaTax* for tax calculation:
|
||||
Some limitations exist in Odoo while using AvaTax for tax calculation:
|
||||
|
||||
- *AvaTax* is **not** supported in Odoo's *Point of Sale* app, because a dynamic tax calculation
|
||||
model is excessive for transactions within a single delivery address, such as stores or
|
||||
restaurants.
|
||||
- *AvaTax* and Odoo use the company address and **not** the warehouse address.
|
||||
- Exercise tax is **not** supported. This includes tobacco/vape taxes, fuel taxes, and other
|
||||
- AvaTax is **not** supported in Odoo's **Point of Sale** app, because a dynamic tax
|
||||
calculation model is excessive for transactions within a single delivery address, such as
|
||||
stores or restaurants.
|
||||
- AvaTax and Odoo use the company address, **not** the warehouse address.
|
||||
- Excise tax is **not** supported. This includes tobacco/vape taxes, fuel taxes, and other
|
||||
specific industries.
|
||||
|
||||
.. seealso::
|
||||
Avalara's support documents: `About AvaTax
|
||||
<https://community.avalara.com/support/s/document-item?language=en_US&bundleId=dqa1657870670369_dqa1657870670369&topicId=About_AvaTax.html&_LANG=enus>`_
|
||||
<https://community.avalara.com/support/s/document-item?language=en_US>`_
|
||||
|
||||
Set up on AvaTax
|
||||
================
|
||||
@@ -47,7 +47,7 @@ connect with Avalara to purchase a license: `Avalara: Let's Talk
|
||||
:ref:`Odoo setup <avatax/credentials>`. In Odoo, this number is the :guilabel:`API ID`.
|
||||
|
||||
Then, `create a basic company profile
|
||||
<https://community.avalara.com/support/s/document-item?bundleId=dqa1657870670369_dqa1657870670369&topicId=Create_a_Basic_company_profile.html&_LANG=enus>`_.
|
||||
<https://www.odoo.com/r/2k0>`_.
|
||||
|
||||
Create basic company profile
|
||||
----------------------------
|
||||
@@ -57,15 +57,15 @@ products/services sold (and their sales locations), and customer tax exemptions,
|
||||
Follow the Avalara documentation for creating a basic company profile:
|
||||
|
||||
#. `Add company information
|
||||
<https://community.avalara.com/support/s/document-item?bundleId=dqa1657870670369_dqa1657870670369&topicId=Add_your_company_information.html&_LANG=enus>`_.
|
||||
<https://www.odoo.com/r/XZDW>`_.
|
||||
#. `Tell us where the company collects and pays tax
|
||||
<https://community.avalara.com/support/s/document-item?bundleId=dqa1657870670369_dqa1657870670369&topicId=Tell_us_where_you_collect_and_pay_tax.html&_LANG=enus>`_.
|
||||
<https://www.odoo.com/r/E6g>`_.
|
||||
#. `Verify jurisdictions and activate the company
|
||||
<https://community.avalara.com/support/s/document-item?bundleId=dqa1657870670369_dqa1657870670369&topicId=Verify_your_jurisdictions_and_activate_your_company.html&_LANG=enus>`_.
|
||||
<https://www.odoo.com/r/NIy>`_.
|
||||
#. `Add other company locations for location-based filing
|
||||
<https://community.avalara.com/support/s/document-item?bundleId=dqa1657870670369_dqa1657870670369&topicId=Add_other_company_locations_for_location-based_filing.html&_LANG=enus>`_.
|
||||
<https://www.odoo.com/r/GF4>`_.
|
||||
#. `Add a marketplace to the company profile
|
||||
<https://community.avalara.com/support/s/document-item?bundleId=dqa1657870670369_dqa1657870670369&topicId=Add_marketplace_transactions_to_your_company_profile.html&_LANG=enus>`_.
|
||||
<https://www.odoo.com/r/QA5>`_.
|
||||
|
||||
.. _avatax/create_avalara_credentials:
|
||||
|
||||
@@ -86,7 +86,7 @@ company would like to integrate.
|
||||
Log in to create the :guilabel:`License Key`. Go to :menuselection:`Settings --> License and API
|
||||
Keys`. Click :guilabel:`Generate License Key`.
|
||||
|
||||
.. note::
|
||||
.. important::
|
||||
A warning appears stating: `If your business app is connected to Avalara solutions, the
|
||||
connection will be broken until you update the app with the new license key. This action cannot
|
||||
be undone.`
|
||||
@@ -100,9 +100,9 @@ with *AvaTax* and Odoo, then click :guilabel:`Generate license key`.
|
||||
If this is an additional license key, ensure the previous connection can be broken. There is
|
||||
**only** one license key associated with each of the Avalara sandbox and production accounts.
|
||||
|
||||
.. important::
|
||||
Copy this key to a safe place. It is **strongly encouraged** to backup the license key for future
|
||||
reference. This key cannot be retrieved after leaving this screen.
|
||||
.. warning::
|
||||
Copy this key to a safe place. It is strongly encouraged to back up the license key for
|
||||
future reference. This key **cannot** be retrieved after leaving this screen.
|
||||
|
||||
Odoo configuration
|
||||
==================
|
||||
@@ -210,6 +210,7 @@ and :guilabel:`Amazon/Avatax Bridge`, respectively.
|
||||
<../../fiscal_localizations>` documentation:
|
||||
|
||||
- :doc:`../../fiscal_localizations/brazil`
|
||||
- :doc:`../../fiscal_localizations/united_states`
|
||||
|
||||
.. _avatax/credentials:
|
||||
|
||||
@@ -424,7 +425,7 @@ menu, and select a category, or :guilabel:`Search More...` to find one that is n
|
||||
|
||||
.. important::
|
||||
Mapping an :guilabel:`AvaTax Category` on either the *Product* or *Product Category* should be
|
||||
completed for every *Product* or *Product Category*, depending the route that is chosen.
|
||||
completed for every *Product* or *Product Category*, depending on the route that is chosen.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`fiscal_positions`
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
====================
|
||||
TaxCloud integration
|
||||
====================
|
||||
|
||||
.. warning::
|
||||
The out-of-the-box Odoo TaxCloud integration has begun its decommissioning. Starting in Odoo 17,
|
||||
new installations are prohibited, and in Odoo 18 the TaxCloud module(s) won't exist at all. Odoo
|
||||
recommends the use of the Avatax platform.
|
||||
|
||||
If you are hosted on-premise or on Odoo.SH and you wish to use Taxcloud, you can contact them
|
||||
directly `here <https://taxcloud.com/blog/odoo-integration/>`_.
|
||||
|
||||
.. seealso::
|
||||
:doc:`avatax`
|
||||
@@ -50,7 +50,6 @@ appropriately completed:
|
||||
<get_started/multi_currency>`.
|
||||
|
||||
.. image:: vendor_bills/bill-completion.png
|
||||
:align: center
|
||||
:alt: filling the vendor bill
|
||||
|
||||
.. note::
|
||||
@@ -72,12 +71,25 @@ Click :guilabel:`Confirm` when the document is completed. The status of your doc
|
||||
Bill Payment
|
||||
============
|
||||
|
||||
Upon payment of the vendor bill, click on :guilabel:`Register Payment`. A new window pops up.
|
||||
Upon payment of the vendor bill, click on :guilabel:`Register Payment` to open a new payment window.
|
||||
|
||||
Select the :guilabel:`Journal`, the :guilabel:`Payment Method`, the :guilabel:`Amount` you wish to
|
||||
pay (full or partial payment), and the :guilabel:`Currency`. Odoo fills the :guilabel:`Memo` field
|
||||
automatically if the :guilabel:`Payment Reference` has been set correctly in the vendor bill. If
|
||||
the field is empty, we recommend you select the vendor invoice number as a reference.
|
||||
pay (full or partial payment), and the :guilabel:`Currency`. In the case of a partial payment (when
|
||||
the :guilabel:`Amount` paid is less than the total remaining amount on the vendor bill), the
|
||||
:guilabel:`Payment Difference` field displays the outstanding balance.
|
||||
You have two options:
|
||||
|
||||
- :guilabel:`Keep open`: to keep the bill open and mark it with a :guilabel:`Partial` banner;
|
||||
- :guilabel:`Mark as fully paid`: In this case, select an account in the
|
||||
:guilabel:`Post Difference In` field and change the :guilabel:`Label` if needed. A journal entry
|
||||
will be created to balance the account receivable with the selected account.
|
||||
|
||||
.. image:: vendor_bills/partial-payment.png
|
||||
:alt: register a partial payment
|
||||
|
||||
The :guilabel:`Memo` field is filled automatically if the :guilabel:`Payment Reference` has been
|
||||
set correctly in the vendor bill. If the field is empty, select the vendor invoice number as a
|
||||
reference.
|
||||
|
||||
Once confirmed, an :guilabel:`In Payment` banner appears on the bill until it is :doc:`reconciled
|
||||
<bank/reconciliation>`.
|
||||
|
||||
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
@@ -5,8 +5,8 @@ Expenses
|
||||
========
|
||||
|
||||
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).
|
||||
in Odoo, they are reviewed by management and accounting teams. Once approved, payments can then be
|
||||
processed, and disbursed back to the employee for reimbursement.
|
||||
|
||||
.. seealso::
|
||||
`Odoo Expenses: product page <https://www.odoo.com/app/expenses>`_
|
||||
@@ -41,7 +41,7 @@ drop-down menu (most products will be set to :guilabel:`Units`).
|
||||
units, miles, nights, etc.). Go to :menuselection:`Sales app --> Configuration --> Settings` and
|
||||
ensure `Units of Measure` is enabled in the `Product Catalog` section. Click on the
|
||||
:guilabel:`Units of Measure` internal link to :doc:`view, create, and edit the units of measure
|
||||
<../inventory_and_mrp/inventory/product_management/product_replenishment/uom>`.
|
||||
<../inventory_and_mrp/inventory/product_management/configure/uom>`.
|
||||
|
||||
.. image:: expenses/new-expense-product.png
|
||||
:align: center
|
||||
@@ -62,16 +62,16 @@ report the actual cost when submitting an expense report.
|
||||
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,
|
||||
- **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**: set the :guilabel:`Cost` to `0.30`. When an employee logs an expense for
|
||||
"mileage", they enter the number of miles driven in the :guilabel:`Quantity` field, 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**: 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
|
||||
- **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.
|
||||
@@ -84,570 +84,20 @@ Set a tax on each product in the :guilabel:`Vendor Taxes` and :guilabel:`Custome
|
||||
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` view. This view can also be accessed from
|
||||
:menuselection:`Expenses app --> My Expenses --> My Expenses`.
|
||||
|
||||
First, click :guilabel:`New`, 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:`Category`: Select the expense category from the drop-down menu that most closely
|
||||
corresponds to the expense. For example, an airplane ticket would be appropriate for an expense
|
||||
:guilabel:`Category` named :guilabel:`Air Travel`.
|
||||
- :guilabel:`Total`: Enter the total amount paid for the expense in one of two ways:
|
||||
|
||||
#. If the expense is for one single item/expense, and the category selected was for a single item,
|
||||
enter the cost in the :guilabel:`Total` field (the :guilabel:`Quantity` field is hidden).
|
||||
#. If the expense is for multiples of the same item/expense with a fixed price, the
|
||||
:guilabel:`Unit Price` is displayed. Enter the quantity in the :guilabel:`Quantity` field, and
|
||||
the total cost is automatically updated with the correct total (the :guilabel:`Unit Price` x
|
||||
the :guilabel:`Quantity` = the total). Be advised, the word "total" does not appear, the total
|
||||
cost simply appears below the :guilabel:`Quantity`.
|
||||
|
||||
.. example::
|
||||
For example, in the case of mileage driven, the :guilabel:`Unit Price` is populated as the
|
||||
cost *per mile*. Set the :guilabel:`Quantity` to the *number of miles* driven, and the total
|
||||
is calculated.
|
||||
|
||||
- :guilabel:`Included Taxes`: If taxes were configured on the expense category, the tax percentage
|
||||
and amount appear automatically after entering either the :guilabel:`Total` or the
|
||||
:guilabel:`Quantity`.
|
||||
|
||||
.. note::
|
||||
When a tax is configured on an expense category, the :guilabel:`Included Taxes` value will
|
||||
update in real time as the :guilabel:`Total` or :guilabel:`Quantity` is updated.
|
||||
|
||||
- :guilabel:`Employee`: Using the drop-down menu, select the employee this expense is for.
|
||||
- :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`. Depending on the expense
|
||||
category selected, this field may not appear.
|
||||
- :guilabel:`Bill Reference`: If there is any reference text that should be included for the
|
||||
expense, enter it in this field.
|
||||
- :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:`Account`: Select the expense account that this expense should be logged on from the
|
||||
drop-down menu.
|
||||
- :guilabel:`Customer to Reinvoice`: If the expense is something that should be paid for by a
|
||||
customer, select the :abbr:`SO (Sales Order)` and customer that will be invoiced for this expense
|
||||
from the drop-down menu. All sales orders in the drop-down menu list both the :abbr:`SO (Sales
|
||||
Order)` as well as the company the sales order is written for, but after the expense is saved, the
|
||||
customer name disappears and only the :abbr:`SO (Sales Order)` is visible on the expense.
|
||||
|
||||
.. example::
|
||||
A customer wishes to have an on-site meeting for a custom garden (design and installation) and
|
||||
agrees to pay for the expenses associated with it (such as travel, hotel, meals, etc.). All
|
||||
expenses tied to that meeting would indicate the sales order for the custom garden (which also
|
||||
references the customer) as the :guilabel:`Customer to Reinvoice`.
|
||||
|
||||
- :guilabel:`Analytic Distribution`: Select the account(s) the expense should be written against
|
||||
from the drop-down menu for either :guilabel:`Projects`, :guilabel:`Departments`, or both.
|
||||
Multiple accounts can be listed for each category if needed. Adjust the percentage for each
|
||||
analytic account by typing in the percentage value next to the account.
|
||||
- :guilabel:`Company`: If multiple companies are set up, select the company this expense should be
|
||||
filed for from the drop-down menu. The current company will automatically populate this field.
|
||||
- :guilabel:`Notes...`: If any notes are needed in order to clarify the expense, enter them in the
|
||||
notes field.
|
||||
|
||||
.. image:: expenses/expense-filled-in.png
|
||||
:align: center
|
||||
:alt: A filled in expense form for a client lunch.
|
||||
|
||||
Attach a receipt
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
After the expense is created, the next step is to attach a receipt. Click the :guilabel:`Attach
|
||||
Receipt` button, and a file explorer appears. Navigate to the receipt to be attached, and click
|
||||
:guilabel:`Open`. The new receipt is recorded in the chatter, and the number of receipts will appear
|
||||
next to the :guilabel:`📎 (paperclip)` icon beneath the expense form. 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 paperclip icon.
|
||||
|
||||
.. image:: expenses/receipt-icon.png
|
||||
:align: center
|
||||
:alt: Attach a receipt and it appears in the chatter.
|
||||
|
||||
Create new expenses from a scanned receipt
|
||||
------------------------------------------
|
||||
|
||||
Rather than manually inputting all of the information for an expense, expenses can be created by
|
||||
scanning a PDF receipt.
|
||||
|
||||
First, in the main :guilabel:`Expenses` app dashboard view (this view can also be accessed from
|
||||
:menuselection:`Expenses app --> My Expenses --> My Expenses`), click :guilabel:`Scan`, and a file
|
||||
explorer pops up. Navigate to the receipt to be uploaded, click on it to select it, and then click
|
||||
:guilabel:`Open`.
|
||||
|
||||
.. image:: expenses/scan.png
|
||||
:align: center
|
||||
:alt: Create an expense by scanning a receipt. Click Scan at the top of the Expenses dashboard
|
||||
view.
|
||||
|
||||
The receipt is scanned, and a new entry is created with today's date as the :guilabel:`Expense
|
||||
Date`, and any other fields it can populate based on the scanned data, such as the total. Click on
|
||||
the new entry to open the individual expense form, and make any changes needed. The scanned receipt
|
||||
appears in the chatter.
|
||||
|
||||
Automatically create new expenses from an email
|
||||
-----------------------------------------------
|
||||
|
||||
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 enabled.
|
||||
|
||||
.. image:: expenses/email-alias.png
|
||||
:align: center
|
||||
:alt: Create the domain alias by clicking the link.
|
||||
|
||||
.. note::
|
||||
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:`/applications/websites/website/configuration/domain_names`. Once the domain alias is
|
||||
configured, the email address field will be visible beneath the incoming emails section.
|
||||
|
||||
Next, enter the email address to be used in the email field, and 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.
|
||||
|
||||
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.
|
||||
|
||||
To check an expense categories internal reference, go to :menuselection:`Expenses app -->
|
||||
Configuration --> Expense Categories`. If an internal reference is listed on the expense category,
|
||||
it is listed in the :guilabel:`Internal Reference` column.
|
||||
|
||||
.. image:: expenses/ref.png
|
||||
:align: center
|
||||
:alt: Internal reference numbers are listed in the main Expense Categories view.
|
||||
|
||||
To add an internal reference on an expense category, click on the category to open the form. Enter
|
||||
the 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.`
|
||||
|
||||
.. image:: expenses/mileage-internal-reference.png
|
||||
:align: center
|
||||
:alt: Internal reference numbers are listed in the main Expense Products view.
|
||||
|
||||
.. 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 :menuselection:`Employees` app, and refer to the :guilabel:`Work Email`
|
||||
|
||||
.. 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 `FOOD $25.00`.
|
||||
|
||||
Explanation:
|
||||
|
||||
- The :guilabel:`Internal Reference` for the expense category `Meals` is `FOOD`
|
||||
- The :guilabel:`Cost` for the expense is `$25.00`
|
||||
|
||||
.. _expenses/report:
|
||||
|
||||
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`.
|
||||
|
||||
Expenses are color coded by status. Any expense with a status of :guilabel:`To Report` (expenses
|
||||
that still need to be added to an expense report) the text appears in blue. All other statuses
|
||||
(:guilabel:`To Submit`, :guilabel:`Submitted`, and :guilabel:`Approved`) the text appears in black.
|
||||
|
||||
First, select each individual expense for the report 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`.
|
||||
|
||||
Another way to quickly add all expenses that are not on an expense report is to click
|
||||
:guilabel:`Create Report` without selecting any expenses, and Odoo will select all expenses with a
|
||||
status of :guilabel:`To Submit` that are not already on a report.
|
||||
|
||||
.. image:: expenses/create-report.png
|
||||
:align: center
|
||||
:alt: Select the expenses to submit, then create the report.
|
||||
|
||||
.. note::
|
||||
Any expense can be selected from the :guilabel:`My Expenses` list, regardless of status. The
|
||||
:guilabel:`Create Report` button is visible as long as there is a minimum of 1 expense with a
|
||||
status of :guilabel:`To Report` selected. When the :guilabel:`Create Report` button is clicked,
|
||||
only expenses with a status of :guilabel:`To Submit` that are *not* currently on another expense
|
||||
report will appear in the newly created expense report.
|
||||
|
||||
Once the expenses have been selected, click the :guilabel:`Create Report` button. The new report
|
||||
appears with all the expenses listed in the :guilabel:`Expense` tab. If there is a receipt attached
|
||||
to an individual expense, a :guilabel:`📎 (paperclip)` icon appears next to the :guilabel:`Customer
|
||||
to Reinvoice` and :guilabel:`Analytic Distribution` columns.
|
||||
|
||||
When the report is created, the date range for the expenses appears in the :guilabel:`Expense Report
|
||||
Summary` field by default. It is recommended to edit this field with a short summary for each report
|
||||
to help keep expenses organized. Enter a short description for the expense report (such as `Client
|
||||
Trip NYC`, or `Repairs for Company Car`) in the :guilabel:`Expense Report Summary` field. Next,
|
||||
select a :guilabel:`Manager` from the drop-down menu to assign a manager to review the report. If
|
||||
needed, the :guilabel:`Journal` can be changed. Use the drop-down menu to select a different
|
||||
:guilabel:`Journal`.
|
||||
|
||||
.. 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. A pop up appears with all the available
|
||||
expenses that can be added to the report (with a status of :guilabel:`To Submit`). 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. If a new expense needs to be added that does *not* appear on the list, click
|
||||
:guilabel:`New` to create a new expense and add it to the report.
|
||||
|
||||
.. image:: expenses/add-an-expense-line.png
|
||||
:align: center
|
||||
:alt: Add more expenses to the report before submitting.
|
||||
|
||||
.. note::
|
||||
Expense reports can be created in one of three places:
|
||||
|
||||
#. Go to the main :menuselection:`Expenses` app dashboard (also accessed by going to
|
||||
:menuselection:`Expenses app --> My Expenses --> My Expenses`)
|
||||
#. Go to :menuselection:`Expenses app --> My Expenses --> My Reports`
|
||||
#. Go to :menuselection:`Expenses app --> Expense Reports`
|
||||
|
||||
In any of these views, click :guilabel:`New` to create a new expense report.
|
||||
|
||||
.. _expenses/submit:
|
||||
|
||||
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 have a
|
||||
:guilabel:`To Submit` status need to be submitted, reports with an :guilabel:`Approved` or
|
||||
:guilabel:`Submitted` status do not.
|
||||
|
||||
The :guilabel:`To Submit` expenses are easily identifiable not just from the :guilabel:`To Submit`
|
||||
status, but the text appears in blue, while the other expenses text appears in black.
|
||||
|
||||
.. 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 right. If the
|
||||
:guilabel:`Status` column is not visible, click the :guilabel:`Additional Options (two dots)`
|
||||
icon at the end of the row, and enable :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, approve or reject
|
||||
them, and 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. Check the
|
||||
:guilabel:`Access Rights` tab of a user's card in the :menuselection:`Settings` app. the
|
||||
:guilabel:`Administration` section (bottom right of the :guilabel:`Access Rights` tab) 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>` 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 they have access rights to. Go to :menuselection:`Expenses app --> Expense Reports`, and a
|
||||
list appears with all expense reports that have a status of either :guilabel:`To Submit`,
|
||||
:guilabel:`Submitted`, :guilabel:`Approved`, :guilabel:`Posted`, or :guilabel:`Done`. Expense
|
||||
reports with a status of :guilabel:`Refused` are hidden in the default view.
|
||||
|
||||
.. image:: expenses/expense-reports-list.png
|
||||
:align: center
|
||||
:alt: Reports to validate are found on the Reports to Approve page.
|
||||
|
||||
When viewing expense reports, there is a panel of filters that can be enabled or disabled on the
|
||||
left side. The three categories that filters can be applied on are :guilabel:`Status`,
|
||||
:guilabel:`Employee`, and :guilabel:`Company`. To view only expense reports with a particular
|
||||
status, enable the specific status filter to display the expense reports with only that status.
|
||||
Disable the specific status filter to hide the reports with that status. To view expense reports for
|
||||
a particular employee and/or company, enable the specific employee name filter and/or company filter
|
||||
in the :guilabel:`Employee` and :guilabel:`Company` sections.
|
||||
|
||||
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 the reports in the list.
|
||||
|
||||
.. important::
|
||||
Only reports with a status of :guilabel:`Submitted` can be approved. It is recommended to only
|
||||
display the submitted reports by adjusting the status filter on the left side by only having the
|
||||
:guilabel:`Submitted` filter enabled.
|
||||
|
||||
If a report is selected that is unable to be approved, the :guilabel:`Approve Report` button
|
||||
**will not appear**, indicating there is a problem with the selected report(s).
|
||||
|
||||
Next, click the :guilabel:`Approve Report` button.
|
||||
|
||||
.. 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:`Report in Next Payslip`,
|
||||
: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, and 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:`Expense Reports` view, click the drop-down arrow in the right-side of the search box, and
|
||||
click on :guilabel:`My Team` in the :guilabel:`Filters` section. This presents all the reports for
|
||||
the manager's team.
|
||||
|
||||
.. image:: expenses/my-team-filter.png
|
||||
:align: center
|
||||
:alt: Select the My Team filter.
|
||||
|
||||
.. tip::
|
||||
If more information is needed, such as a missing receipt, communication is easy from the chatter.
|
||||
In an individual report, simply click :guilabel:`Send message` to open the message text box. 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 any followers.
|
||||
|
||||
The only people that can be tagged in a message are *followers*. To see who is a follower, click
|
||||
on the :guilabel:`👤 (person)` icon to display the followers of the expense.
|
||||
|
||||
.. 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, go to :menuselection:`Expenses app --> Expense Reports`. To view only the
|
||||
expense reports that have been approved and need to be posted, adjust the filters on the left side
|
||||
so that only the :guilabel:`Approved` status is enabled.
|
||||
|
||||
.. 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 the reports in the list. Next, click :guilabel:`Post Entries`.
|
||||
|
||||
.. image:: expenses/post-entries.png
|
||||
:align: center
|
||||
:alt: Post multiple reports at a time from the Expense Reports view, with the Approved filter.
|
||||
|
||||
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`, :guilabel:`Refuse`, or :guilabel:`Reset to Draft`. 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, and then click :guilabel:`Refuse`. Refused
|
||||
reports can be viewed by going to :menuselection:`Expenses app --> Expense Reports`, then adjusting
|
||||
the filters on the left so that only :guilabel:`Refused` is selected. This will only show the
|
||||
refused expense reports.
|
||||
|
||||
.. important::
|
||||
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 the expense reports to pay, go to :menuselection:`Expenses app --> 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 the reports in the list. Next, click :guilabel:`Register Payment`.
|
||||
|
||||
.. image:: expenses/register-payment.png
|
||||
:align: center
|
||||
:alt: Post multiple reports by selecting them, clicking the gear, and 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.
|
||||
|
||||
A :guilabel:`Register Payment` pop-up appears, and the :guilabel:`Journal`, :guilabel:`Payment
|
||||
Method`, and :guilabel:`Payment Date` can be modified, if needed. When the selections are correct,
|
||||
click :guilabel:`Create Payment` to send the payment to the employee.
|
||||
|
||||
To pay an individual report, click on a report in the list view to go to a detailed view of that
|
||||
report. Click :guilabel:`Register Payment` to pay the employee. A :guilabel:`Register Payment`
|
||||
pop-up appears, but when paying an individual expense report instead of several at once, more
|
||||
options appear in the pop-up. In addition to the :guilabel:`Journal`, :guilabel:`Payment Method`,
|
||||
and :guilabel:`Payment Date` fields, a :guilabel:`Recipient Bank Account`, :guilabel:`Amount`, and
|
||||
:guilabel:`Memo` field appear. Select the employee's bank account from the drop-down menu to
|
||||
directly deposit the payment to their account. When all other selections are correct, click
|
||||
:guilabel:`Create Payment` to send the payment to the employee.
|
||||
|
||||
.. image:: expenses/two-payment-posting-options.png
|
||||
:align: center
|
||||
:alt: Different options appear when registering an individual expense report versus multiple
|
||||
expense reports at once.
|
||||
|
||||
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, referencing the :abbr:`SO (Sales Order)` the expense
|
||||
should be added to, and then creating the expense report. Next, managers approve the expense report,
|
||||
and the accounting department posts the journal entries. Finally, once the expense report is posted
|
||||
to a journal, the expense(s) appears on the :abbr:`SO (Sales Order)` that was referenced. The sales
|
||||
order can then be invoiced, thus invoicing the customer for the expense.
|
||||
|
||||
Setup
|
||||
-----
|
||||
|
||||
First, specify the invoicing policy for each expense category. Go to :menuselection:`Expenses app
|
||||
--> Configuration --> Expense Categories`. Click on the expense category to open the expense
|
||||
category form. Under the :guilabel:`Invoicing` section, click the radio button next to the desired
|
||||
selection for :guilabel:`Re-Invoicing Expenses`. Options are :guilabel:`None`, :guilabel:`At cost`,
|
||||
and :guilabel:`Sales price`.
|
||||
|
||||
:guilabel:`Re-Invoicing Expenses`:
|
||||
|
||||
- :guilabel:`None`: Expense category will not be re-invoiced.
|
||||
- :guilabel:`At cost`: Expense category will invoice expenses at their real cost.
|
||||
- :guilabel:`At sales price`: Expense category will invoice the price set on the sale order.
|
||||
|
||||
Create an expense
|
||||
-----------------
|
||||
|
||||
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 *sales order* the expense will appear on in
|
||||
the :guilabel:`Customer to Reinvoice` section, from the drop-down menu. Next, select the
|
||||
:guilabel:`Analytic Account` the expense will be posted to. After the expense(s) are created, the
|
||||
expense report needs to be :ref:`created <expenses/report>` and :ref:`submitted <expenses/submit>`
|
||||
as usual.
|
||||
|
||||
.. image:: expenses/reinvoice-expense.png
|
||||
:align: center
|
||||
:alt: Ensure the customer to be invoiced is called out on the expense.
|
||||
|
||||
.. important::
|
||||
Selecting a :guilabel:`Customer to Reinvoice` when creating an expense is critical, since this is
|
||||
what causes the expenses to be automatically invoiced after an expense report is approved.
|
||||
|
||||
The :guilabel:`Customer to Reinvoice` field can be modified *until an expense report is*
|
||||
**approved**, then the field is no longer able to be modified.
|
||||
|
||||
Validate and post expenses
|
||||
--------------------------
|
||||
|
||||
Only employees with permissions (typically managers or supervisors) can :ref:`approve expenses
|
||||
<expenses/approve>`. Before approving an expense report, ensure the :guilabel:`Analytic
|
||||
Distribution` is set on every expense line of a report. If an :guilabel:`Analytic Distribution` is
|
||||
missing, assign the correct account(s) from the drop-down menu, and 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. The :abbr:`SO (Sales
|
||||
Order)` is **only** updated *after the journal entries are posted*. One the journal entries are
|
||||
posted, the expenses now appear on the referenced :abbr:`SO (Sales Order)`.
|
||||
|
||||
Invoice expenses
|
||||
----------------
|
||||
|
||||
Once the :abbr:`SO (Sales Order)` has been updated, it is time to invoice the customer. After the
|
||||
expense report has been approved and the journal entries have been posted, click the
|
||||
:guilabel:`Sales Orders` smart button to open the :abbr:`SO (Sales Order)`. The expenses to be
|
||||
re-invoiced are now on the :abbr:`SO (Sales Order)`.
|
||||
|
||||
.. image:: expenses/sales-order.png
|
||||
:align: center
|
||||
:alt: After the expense report is posted to the journal entry, the sales order can be called up
|
||||
by clicking on the sales order number.
|
||||
|
||||
.. note::
|
||||
More than one :abbr:`SO (Sales Order)` can be referenced on an expense report. If more than one
|
||||
:abbr:`SO (Sales Order)` is referenced, the :guilabel:`Sales Orders` smart button will list the
|
||||
number of :abbr:`SO (Sales Order)`'s. If multiple :abbr:`SO (Sales Order)`'s are listed, the
|
||||
:guilabel:`Sales Orders` smart button opens a list view of all the :abbr:`SO (Sales Order)`'s on
|
||||
the expense report. Click on a :abbr:`SO (Sales Order)` to open the individual :abbr:`SO (Sales
|
||||
Order)`.
|
||||
|
||||
The expenses are listed in the :abbr:`SO (Sales Order)` :guilabel:`Order Lines` tab.
|
||||
|
||||
.. image:: expenses/so-details.png
|
||||
:align: center
|
||||
:alt: See the expenses listed on the sales order after clicking into it.
|
||||
|
||||
Next, click :guilabel:`Create Invoice`, and select if the invoice is for a :guilabel:`Regular
|
||||
invoice`, a :guilabel:`Down payment (percentage)`, or a :guilabel:`Down payment (fixed amount)` by
|
||||
clicking the radio button next to it. Then, click :guilabel:`Create Invoice`. The customer has now
|
||||
been invoiced for the expenses.
|
||||
.. seealso::
|
||||
- :doc:`expenses/log_expenses`
|
||||
- :doc:`expenses/expense_reports`
|
||||
- :doc:`expenses/approve_expenses`
|
||||
- :doc:`expenses/post_expenses`
|
||||
- :doc:`expenses/reimburse`
|
||||
- :doc:`expenses/reinvoice_expenses`
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
expenses/log_expenses
|
||||
expenses/expense_reports
|
||||
expenses/approve_expenses
|
||||
expenses/post_expenses
|
||||
expenses/reimburse
|
||||
expenses/reinvoice_expenses
|
||||
|
||||
@@ -0,0 +1,119 @@
|
||||
================
|
||||
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, approve or reject
|
||||
them, and provide feedback thanks to the integrated communication tool.
|
||||
|
||||
Please refer to the :doc:`access rights documentation </applications/general/users>` to learn more
|
||||
about managing users and their access rights.
|
||||
|
||||
View expense reports
|
||||
====================
|
||||
|
||||
Users who are able to approve expense reports, typically managers, can easily view all expense
|
||||
reports they have access rights to. Go to :menuselection:`Expenses app --> Expense Reports`, to view
|
||||
the :guilabel:`All Reports` dashboard.
|
||||
|
||||
A list of all expense reports with a status of either :guilabel:`To Submit`, :guilabel:`Submitted`,
|
||||
:guilabel:`Approved`, :guilabel:`Posted`, or :guilabel:`Done` appears. Expense reports with a status
|
||||
of :guilabel:`Refused` are hidden, by default.
|
||||
|
||||
.. image:: approve_expenses/expense-reports-list.png
|
||||
:align: center
|
||||
:alt: Reports to validate are found on the Reports to Approve page.
|
||||
|
||||
Approve expense reports
|
||||
=======================
|
||||
|
||||
Expense reports can be approved in two ways: :ref:`individually <expenses/individual>` or :ref:`in
|
||||
bulk <expenses/multiple>`.
|
||||
|
||||
.. important::
|
||||
Only reports with a status of :guilabel:`Submitted` can be approved.
|
||||
|
||||
It is recommended to display only :guilabel:`Submitted` reports by ticking the checkbox beside
|
||||
the :guilabel:`Submitted` filter, in the left column, under the :guilabel:`Status` section.
|
||||
|
||||
If a report is **not** able to be approved, the :guilabel:`Approve Report` button **does not**
|
||||
appear on the :guilabel:`All Reports` page.
|
||||
|
||||
.. _expenses/individual:
|
||||
|
||||
Approve individual reports
|
||||
--------------------------
|
||||
|
||||
To approve an individual report, navigate to :menuselection:`Expenses app --> Expense Reports`, and
|
||||
click on an individual report to view the report form.
|
||||
|
||||
From here, several options are presented: :guilabel:`Approve`, :guilabel:`Refuse`, and
|
||||
:guilabel:`Reset to draft`.
|
||||
|
||||
Click :guilabel:`Approve` to approve the report.
|
||||
|
||||
.. _expenses/multiple:
|
||||
|
||||
Approve multiple reports
|
||||
------------------------
|
||||
|
||||
To approve multiple expense reports at once, first navigate to :menuselection:`Expenses app -->
|
||||
Expense Reports` to view a list of expense reports. Next, select the reports to approve by ticking
|
||||
the checkbox next to each report being approved, or tick the checkbox next to the
|
||||
:guilabel:`Employee` column title to select all the reports in the list.
|
||||
|
||||
Next, click the :guilabel:`Approve Report` button.
|
||||
|
||||
.. image:: approve_expenses/approve-report.png
|
||||
:align: center
|
||||
:alt: Approve multiple reports by clicking the checkboxes next to each report.
|
||||
|
||||
.. tip::
|
||||
It is possible for team managers to view all the expense reports for just their team members.
|
||||
|
||||
To do so, while on the :guilabel:`All Reports` page, click the :icon:`fa-caret-down`
|
||||
:guilabel:`(down arrow)` to the right of the search bar, then click :guilabel:`My Team` in the
|
||||
:icon:`fa-filter` :guilabel:`Filters` section.
|
||||
|
||||
This presents all the reports for only the manager's team.
|
||||
|
||||
.. image:: approve_expenses/my-team-filter.png
|
||||
:align: center
|
||||
:alt: Select the My Team filter.
|
||||
|
||||
Refuse expense reports
|
||||
======================
|
||||
|
||||
Expense reports can **only** be refused on the individual expense report, and **not** from the
|
||||
:guilabel:`All Reports` dashboard. To open an individual expense report, navigate to
|
||||
:menuselection:`Expenses app --> Expense Reports`, then click on an individual expense report to
|
||||
view the report form.
|
||||
|
||||
If more information is needed, such as a missing receipt, communicate any necessary information
|
||||
requests in the *chatter* of the report form. On the individual expense report, click
|
||||
:guilabel:`Send message` to open a message text box.
|
||||
|
||||
Type in a message, tagging the proper people, and post it to the *chatter* by clicking
|
||||
:guilabel:`Send`. The message is posted in the chatter, and the tagged people are notified, via
|
||||
email.
|
||||
|
||||
.. note::
|
||||
The only people that can be tagged in a message are *followers* of the specific report. To see
|
||||
who is a follower, click the :icon:`fa-user-o` :guilabel:`(user)` icon to display the followers
|
||||
of the expense report.
|
||||
|
||||
.. image:: approve_expenses/chatter.png
|
||||
:align: center
|
||||
:alt: Send messages in the chatter.
|
||||
|
||||
To refuse an expense report, click :guilabel:`Refuse`, and a :guilabel:`Refuse Expense` pop-up
|
||||
window appears. Enter a brief explanation for the refusal beneath the :guilabel:`REASON TO REFUSE
|
||||
EXPENSE` field, then click :guilabel:`Refuse`.
|
||||
|
||||
.. image:: approve_expenses/refuse-expense.png
|
||||
:align: center
|
||||
:alt: Send messages in the chatter.
|
||||
|
||||
Once the expense report is refused, the status changes to :guilabel:`Refused`, and the only button
|
||||
that appears in the top-left is :guilabel:`Reset to Draft`.
|
||||
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 7.6 KiB After Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 26 KiB |
@@ -0,0 +1,129 @@
|
||||
===============
|
||||
Expense reports
|
||||
===============
|
||||
|
||||
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. Open the main :menuselection:`Expenses app` dashboard, which
|
||||
displays the :guilabel:`My Expenses` dashboard, by default. Alternatively, navigate to
|
||||
:menuselection:`Expenses app --> My Expenses --> My Expenses`.
|
||||
|
||||
Expenses are color-coded by status. Any expense with a status of :guilabel:`To Report` (expenses
|
||||
that still need to be added to an expense report) is shown in blue text. All other statuses
|
||||
(:guilabel:`To Submit`, :guilabel:`Submitted`, and :guilabel:`Approved`) the text appears in black.
|
||||
|
||||
.. _expenses/create_report:
|
||||
|
||||
Create expense reports
|
||||
======================
|
||||
|
||||
First, select each desired expense to be added to the report on the :guilabel:`My Expenses`
|
||||
dashboard, by ticking the checkbox next to each entry, or quickly select all the expenses in the
|
||||
list by ticking the checkbox next to the :guilabel:`Expense Date` column title, if needed.
|
||||
|
||||
Another way to quickly add all expenses that are not on a expense report, is to click the
|
||||
:guilabel:`Create Report` button, *without* selecting any expenses, and Odoo automatically selects
|
||||
all expenses with a status of :guilabel:`To Submit` that are not already on a report.
|
||||
|
||||
.. image:: expense_reports/create-report.png
|
||||
:align: center
|
||||
:alt: Select the expenses to submit, then create the report.
|
||||
|
||||
.. note::
|
||||
Any expense can be selected from the :guilabel:`My Expenses` list, except for expenses with a
|
||||
status of :guilabel:`Approved`.
|
||||
|
||||
The :guilabel:`Create Report` button is visible as long as there is a minimum of one expense on
|
||||
the list with a status of either :guilabel:`To Report` or :guilabel:`To Submit`.
|
||||
|
||||
When the :guilabel:`Create Report` button is clicked, all expenses with a status of :guilabel:`To
|
||||
Submit` that are *not* currently on another expense report appears in the newly-created expense
|
||||
report.
|
||||
|
||||
If all expenses on the :guilabel:`My Expenses` report are already associated with another expense
|
||||
report, an :guilabel:`Invalid Operation` pop-up window appears, stating :guilabel:`You have no
|
||||
expenses to report.`
|
||||
|
||||
Once the expenses have been selected, click the :guilabel:`Create Report` button. The new report
|
||||
appears with all the expenses listed in the :guilabel:`Expense` tab. If there is a receipt attached
|
||||
to an individual expense, a :icon:`fa-paperclip` :guilabel:`(paperclip)` icon appears between the
|
||||
:guilabel:`Customer to Reinvoice` and :guilabel:`Analytic Distribution` columns.
|
||||
|
||||
When the report is created, the date range for the expenses appears in the :guilabel:`Expense Report
|
||||
Summary` field, by default. It is recommended to edit this field with a short summary for each
|
||||
report to help keep expenses organized. Enter a description for the expense report, such as `Client
|
||||
Trip NYC`, or `Office Supplies for Presentation`, in the :guilabel:`Expense Report Summary` field.
|
||||
|
||||
The :guilabel:`Employee`, :guilabel:`Paid By`, and :guilabel:`Company` fields autopoulate with the
|
||||
information listed on the individual expenses.
|
||||
|
||||
Next, select a :guilabel:`Manager` from the drop-down menu to assign a manager to review the report.
|
||||
If needed, update the :guilabel:`Journal` field, using the drop-down menu.
|
||||
|
||||
.. image:: expense_reports/expense-report-summary.png
|
||||
:align: center
|
||||
:alt: Enter a short description and select a manager for the report.
|
||||
|
||||
If some expenses are missing from the report, they can still be added from this report form. To do
|
||||
so, click :guilabel:`Add a line` at the bottom of the :guilabel:`Expense` tab.
|
||||
|
||||
An :guilabel:`Add: Expense Lines` pop-up window appears, displaying all the available expenses (with
|
||||
a :guilabel:`To Submit` status) that can be added to the report.
|
||||
|
||||
If a new expense needs to be added that does **not** appear on the list, click :guilabel:`New` to
|
||||
:doc:`create a new expense <../expenses/log_expenses>` and add it to the report.
|
||||
|
||||
Tick the checkbox next to each expense being added, then click :guilabel:`Select`.
|
||||
|
||||
Doing so removes the pop-up window, and the items now appear on the report.
|
||||
|
||||
.. image:: expense_reports/add-an-expense-line.png
|
||||
:align: center
|
||||
:alt: Add more expenses to the report before submitting.
|
||||
|
||||
.. note::
|
||||
Expense reports can be created in one of three places:
|
||||
|
||||
#. Navigate to the main :menuselection:`Expenses app` dashboard (also accessible, via
|
||||
:menuselection:`Expenses app --> My Expenses --> My Expenses`)
|
||||
#. Navigate to :menuselection:`Expenses app --> My Expenses --> My Reports`
|
||||
#. Navigate to :menuselection:`Expenses app --> Expense Reports`
|
||||
|
||||
In any of these views, click :guilabel:`New` to create a new expense report.
|
||||
|
||||
.. _expenses/submit:
|
||||
|
||||
Submit expense reports
|
||||
======================
|
||||
|
||||
When an expense report is completed, the next step is to submit the report to a manager for
|
||||
approval. To view all expense reports, navigate to :menuselection:`Expenses app --> My Expenses -->
|
||||
My Reports`. Open the specific report from the list of expense reports.
|
||||
|
||||
.. note::
|
||||
Reports must be individually submitted, and **cannot** be submitted in batches.
|
||||
|
||||
If the list is large, grouping the results by status may be helpful, since only reports with a
|
||||
:guilabel:`To Submit` status need to be submitted; reports with an :guilabel:`Approved` or
|
||||
:guilabel:`Submitted` status do not.
|
||||
|
||||
The :guilabel:`To Submit` expenses are identifiable by the :guilabel:`To Submit` status, and by the
|
||||
blue text, while all other expense text appears in black.
|
||||
|
||||
.. image:: expense_reports/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. If the :guilabel:`Status`
|
||||
column is not visible, click the :icon:`oi-settings-adjust` :guilabel:`(additional options)` icon
|
||||
at the end of the row, and tick the checkbox beside :guilabel:`Status` from the resulting
|
||||
drop-down menu.
|
||||
|
||||
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::
|
||||
:doc:`Approving <../expenses/approve_expenses>` expenses, :doc:`posting
|
||||
<../expenses/post_expenses>` expenses, and :doc:`reimbursing <../expenses/reimburse>` expenses
|
||||
are **only** for users with the appropriate :doc:`access rights documentation
|
||||
</applications/general/users>`.
|
||||
|
Before Width: | Height: | Size: 8.6 KiB After Width: | Height: | Size: 8.6 KiB |
|
After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 29 KiB |
@@ -0,0 +1,230 @@
|
||||
============
|
||||
Log expenses
|
||||
============
|
||||
|
||||
Before expenses can be reimbursed, each individual expense needs to be logged in the database.
|
||||
Expense records can be created in three different ways: :ref:`manually enter an expense record
|
||||
<expenses/manual_expense>`, :ref:`upload a receipt <expenses/upload_receipt>`, or :ref:`email a
|
||||
receipt <expenses/email_expense>` to a preconfigured email address.
|
||||
|
||||
.. _expenses/manual_expense:
|
||||
|
||||
Manually enter expenses
|
||||
=======================
|
||||
|
||||
To record a new expense, open the :menuselection:`Expenses app`, which displays the :guilabel:`My
|
||||
Expenses` page, by default.
|
||||
|
||||
.. tip::
|
||||
This view can also be accessed from :menuselection:`Expenses app --> My Expenses --> My
|
||||
Expenses`.
|
||||
|
||||
Then, click :guilabel:`New`, and then fill out the following fields on the form that appears:
|
||||
|
||||
- :guilabel:`Description`: Enter a short description for the expense. This should be concise and
|
||||
informative, such as `lunch with client` or `hotel for conference`.
|
||||
- :guilabel:`Category`: Select the expense category from the drop-down menu that most closely
|
||||
corresponds to the expense.
|
||||
- :guilabel:`Total`: Enter the total amount paid for the expense in one of two ways:
|
||||
|
||||
#. If the expense is for a single item/expense, and the category selected was for a single item,
|
||||
enter the cost in the :guilabel:`Total` field (the :guilabel:`Quantity` field is hidden).
|
||||
#. If the expense is for multiples of the same item/expense with a fixed price, the
|
||||
:guilabel:`Unit Price` is displayed. Enter the quantity in the :guilabel:`Quantity` field, and
|
||||
the total cost is automatically updated with the correct total. The total cost appears below
|
||||
the :guilabel:`Quantity`.
|
||||
|
||||
.. example::
|
||||
In the case of mileage driven, the :guilabel:`Unit Price` is populated as the cost *per
|
||||
mile*. Set the :guilabel:`Quantity` to the *number of miles driven*, and the total is
|
||||
calculated.
|
||||
|
||||
- :guilabel:`Included Taxes`: If taxes were configured on the expense category, the tax percentage
|
||||
and amount appear automatically after entering either the :guilabel:`Total` or the
|
||||
:guilabel:`Quantity`.
|
||||
|
||||
.. note::
|
||||
When a tax is configured on an expense category, the :guilabel:`Included Taxes` value updates
|
||||
in real time, as the :guilabel:`Total` or :guilabel:`Quantity` is updated.
|
||||
|
||||
- :guilabel:`Employee`: Using the drop-down menu, select the employee this expense is for.
|
||||
- :guilabel:`Paid By`: Click the radio button to indicate who paid for the expense, and should be
|
||||
reimbursed. Select either :guilabel:`Employee (to reimburse)` or :guilabel:`Company`. Depending on
|
||||
the expense category selected, this field may not appear.
|
||||
- :guilabel:`Expense Date`: Using the calendar popover window that appears when this field is
|
||||
clicked, enter the date the expense was incurred.
|
||||
- :guilabel:`Account`: Using the drop-down menu, select the expense account the expense should be
|
||||
logged in.
|
||||
- :guilabel:`Customer to Reinvoice`: If the expense is something that should be paid for by a
|
||||
customer, select the :abbr:`SO (Sales Order)` and customer that should be invoiced for this
|
||||
expense from the drop-down menu. All sales orders in the drop-down menu list both the :abbr:`SO
|
||||
(Sales Order)`, as well as the company the sales order is written for. After the expense is saved,
|
||||
the customer name disappears, and only the :abbr:`SO (Sales Order)` is visible on the expense.
|
||||
|
||||
.. example::
|
||||
A customer wishes to have an on-site meeting for the design and installation of a custom
|
||||
garden, and agrees to pay for the expenses associated with it (such as travel, hotel, meals,
|
||||
etc). All expenses tied to that meeting would indicate the sales order for the custom garden
|
||||
(which also references the customer) as the :guilabel:`Customer to Reinvoice`.
|
||||
|
||||
- :guilabel:`Analytic Distribution`: Select the account the expense should be written against from
|
||||
the drop-down menu for either :guilabel:`Projects`, :guilabel:`Departments`, or both. Multiple
|
||||
accounts can be listed for each category, if needed. Adjust the percentage for each analytic
|
||||
account by typing in the percentage value next to each account.
|
||||
- :guilabel:`Company`: If multiple companies are set up, select the company the expense should be
|
||||
filed for from the drop-down menu. The current company automatically populates this field.
|
||||
- :guilabel:`Notes...`: If any notes are needed to clarify the expense, enter them in the notes
|
||||
field.
|
||||
|
||||
.. image:: log_expenses/expense-filled-in.png
|
||||
:align: center
|
||||
:alt: A filled in expense form for a client lunch.
|
||||
|
||||
Attach receipts
|
||||
---------------
|
||||
|
||||
After the expense record is created, the next step is to attach a receipt. Click the
|
||||
:guilabel:`Attach Receipt` button, and a file explorer appears. Navigate to the receipt to be
|
||||
attached, and click :guilabel:`Open`.
|
||||
|
||||
The new receipt is recorded in the *chatter*, and the number of receipts appears next to the
|
||||
:icon:`fa-paperclip` :guilabel:`(paperclip)` icon. Multiple receipts can be attached to an
|
||||
individual expense record, as needed.
|
||||
|
||||
.. image:: log_expenses/receipt-icon.png
|
||||
:align: center
|
||||
:alt: Attach a receipt and it appears in the chatter.
|
||||
|
||||
.. _expenses/upload_receipt:
|
||||
|
||||
Upload expenses
|
||||
===============
|
||||
|
||||
It is possible to have expense records created automatically, by uploading a PDF receipt. This
|
||||
feature requires the enabling of a setting, and the purchasing of :abbr:`IAP (in-app purchases)`
|
||||
credits.
|
||||
|
||||
Digitalization settings
|
||||
-----------------------
|
||||
|
||||
To enable receipt scanning, navigate to :menuselection:`Expenses app --> Configuration -->
|
||||
Settings`, and tick the checkbox beside the :guilabel:`Expense Digitization (OCR)` option. Then,
|
||||
click :guilabel:`Save`. When enabled, additional options appear. Click on the corresponding radio
|
||||
button to select one of the following options:
|
||||
|
||||
- :guilabel:`Do not digitize`: turns off receipt digitization.
|
||||
- :guilabel:`Digitize on demand only`: only digitizes receipts when requested. A
|
||||
:guilabel:`Digitize document` button appears on expense records. When clicked, the receipt is
|
||||
scanned and the expense record is updated.
|
||||
- :guilabel:`Digitize automatically`: automatically digitizes all receipts when they are uploaded.
|
||||
|
||||
Beneath these options are two additional links. Click the :icon:`fa-arrow-right` :guilabel:`Buy
|
||||
credits` link to purchase credits for receipt digitization. Click the :icon:`fa-arrow-right`
|
||||
:guilabel:`View My Services` link to view a list of all current services, and their remaining credit
|
||||
balances.
|
||||
|
||||
For more information on document digitization and :abbr:`IAPs (in-app purchases)`, refer to the
|
||||
:doc:`In-app purchase (IAP) <../../essentials/in_app_purchase>` documentation.
|
||||
|
||||
.. note::
|
||||
When the :guilabel:`Expense Digitization (OCR)` option is enabled, a necessary module is
|
||||
installed, so receipts can be scanned. Disabling this option uninstalls the module.
|
||||
|
||||
If, at some point, there is a desire to temporarily stop digitizing receipts, select the
|
||||
:guilabel:`Do not digitize` option. The reason this option is available is so the module is not
|
||||
uninstalled, allowing for digitization to be enabled in the future by selecting one of the other
|
||||
two options.
|
||||
|
||||
Upload receipts
|
||||
---------------
|
||||
|
||||
Open the :guilabel:`Expenses app`, and from the :guilabel:`My Expenses` dashboard, click
|
||||
:guilabel:`Upload`, and a file explorer appears. Navigate to the desired receipt, select it, then
|
||||
click :guilabel:`Open`.
|
||||
|
||||
.. image:: log_expenses/upload.png
|
||||
:align: center
|
||||
:alt: Create an expense by scanning a receipt. Click Scan at the top of the Expenses dashboard
|
||||
view.
|
||||
|
||||
The receipt is scanned, and a new expense record is created. The :guilabel:`Expense Date` field is
|
||||
populated with today's date, along with any other fields based on the scanned data, such as the
|
||||
:guilabel:`Total`.
|
||||
|
||||
Click on the new entry to open the individual expense form, and make any changes, if needed. The
|
||||
scanned receipt appears in the *chatter*.
|
||||
|
||||
.. _expenses/email_expense:
|
||||
|
||||
Email expenses
|
||||
==============
|
||||
|
||||
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, an email alias must first be configured. Navigate to :menuselection:`Expenses app -->
|
||||
Configuration --> Settings`. Ensure the checkbox beside :guilabel:`Incoming Emails` is ticked. The
|
||||
default email alias is *expense@(domain).com*. Change the email alias by entering the desired email
|
||||
in the field to the right of :guilabel:`Alias`. Then, click :guilabel:`Save`.
|
||||
|
||||
.. image:: log_expenses/alias-email.png
|
||||
:align: center
|
||||
:alt: Te default email that populates the expenses email alias.
|
||||
|
||||
.. note::
|
||||
If the domain alias needs to be set up, :icon:`fa-arrow-right` :guilabel:`Setup your domain
|
||||
alias` appears beneath the :guilabel:`Incoming Emails` checkbox, instead of the email address
|
||||
field.
|
||||
|
||||
.. image:: log_expenses/email-alias.png
|
||||
:align: center
|
||||
:alt: Create the domain alias by clicking the link.
|
||||
|
||||
Refer to the :doc:`/applications/websites/website/configuration/domain_names` documentation for
|
||||
setup instructions and more information.
|
||||
|
||||
Once the domain alias is configured, the email address field is visible beneath the
|
||||
:guilabel:`Incoming Emails` feature on the :guilabel:`Settings` page in the **Expenses** app.
|
||||
|
||||
Once 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.
|
||||
|
||||
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 as the subject of the email. 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.
|
||||
|
||||
To check an expense category's internal reference, go to :menuselection:`Expenses app -->
|
||||
Configuration --> Expense Categories`. If an internal reference is listed on the expense category,
|
||||
it is listed in the :guilabel:`Internal Reference` column.
|
||||
|
||||
.. image:: log_expenses/ref.png
|
||||
:align: center
|
||||
:alt: Internal reference numbers are listed in the main Expense Categories view.
|
||||
|
||||
To add an internal reference on an expense category, click on the category to open the expense
|
||||
category form. Enter the :guilabel:`Internal Reference` in the corresponding field. Beneath the
|
||||
:guilabel:`Internal Reference` field, this sentence appears: :guilabel:`Use this reference as a
|
||||
subject prefix when submitting by email.`
|
||||
|
||||
.. image:: log_expenses/mileage-internal-reference.png
|
||||
:align: center
|
||||
:alt: Internal reference numbers are listed in the main Expense Products view.
|
||||
|
||||
.. example::
|
||||
If submitting an expense, via email, for a $25.00 meal during a work trip, the email subject
|
||||
would be `FOOD $25.00`.
|
||||
|
||||
Explanation:
|
||||
|
||||
- The :guilabel:`Internal Reference` for the expense category `Meals` is `FOOD`
|
||||
- The :guilabel:`Cost` for the expense is `$25.00`
|
||||
|
||||
.. 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 :menuselection:`Employees app`, and refer to the :guilabel:`Work Email` field.
|
||||
|
||||
.. image:: log_expenses/authenticated-email-address.png
|
||||
:align: center
|
||||
:alt: Create the domain alias by clicking the link.
|
||||
|
After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 8.5 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 14 KiB |
@@ -0,0 +1,75 @@
|
||||
=============
|
||||
Post expenses
|
||||
=============
|
||||
|
||||
Once an expense report is :doc:`approved <../expenses/approve_expenses>`, the next step is to post
|
||||
the expense report to the proper accounting journal.
|
||||
|
||||
.. important::
|
||||
To post expense reports to an accounting journal, the user **must** have the following
|
||||
:doc:`access rights <../../general/users/access_rights>`:
|
||||
|
||||
- Accounting: *Accountant* or *Adviser*
|
||||
- Expenses: *Manager*
|
||||
|
||||
Only expense reports with an *Approved* status can post the expenses to a journal. To view all
|
||||
expense reports, navigate to :menuselection:`Expenses app --> Expense Reports`. Next, to view
|
||||
**only** approved expense reports that need to be posted, adjust the filters on the left side, so
|
||||
only the :guilabel:`Approved` checkbox is ticked.
|
||||
|
||||
.. image:: post_expenses/post-reports.png
|
||||
:align: center
|
||||
:alt: View reports to post by clicking on expense reports, then reports to post.
|
||||
|
||||
.. note::
|
||||
The default :guilabel:`All Reports` dashboard displays all expense reports, except reports with a
|
||||
status of :guilabel:`Refused`.
|
||||
|
||||
Expense reports can be posted to accounting journals in two ways: :ref:`individually
|
||||
<expenses/post-individual>` or :ref:`in bulk <expenses/post-multiple>`.
|
||||
|
||||
.. _expenses/post-individual:
|
||||
|
||||
Post individual reports
|
||||
-----------------------
|
||||
|
||||
To post an individual report, navigate to :menuselection:`Expenses app --> Expense Reports`, and
|
||||
click on an individual report with a :guilabel:`Status` of :guilabel:`Approved`, to view the report
|
||||
form. In this view, several options are presented: :guilabel:`Post Journal Entries`,
|
||||
:guilabel:`Report In Next Payslip`, :guilabel:`Refuse`, or :guilabel:`Reset to Draft`.
|
||||
|
||||
Click :guilabel:`Post Journal Entries` to post the report.
|
||||
|
||||
The accounting journal the expenses are posted to is listed in the :guilabel:`Journal` field of the
|
||||
expense report.
|
||||
|
||||
After posting the expenses to an accounting journal, a :guilabel:`Journal Entry` smart button
|
||||
appears at the top of the screen. Click the :guilabel:`Journal Entry` smart button, and the details
|
||||
for the journal entry appear, with a status of :guilabel:`Posted`.
|
||||
|
||||
.. _expenses/post-multiple:
|
||||
|
||||
Post multiple reports
|
||||
---------------------
|
||||
|
||||
To post multiple expense reports at once, navigate to :menuselection:`Expenses app --> Expense
|
||||
Reports` to view a list of expense reports. Next, select the reports to approve by ticking the
|
||||
checkbox next to each report being approved.
|
||||
|
||||
.. note::
|
||||
Only expense reports with a status of :guilabel:`Approved` are able to post the expenses to an
|
||||
accounting journal. If an expense report is selected that **cannot** be posted, such as an
|
||||
unapproved report, or the report has already been posted to a journal, the :guilabel:`Post
|
||||
Entries` button is **not** visible.
|
||||
|
||||
.. tip::
|
||||
To select **only** approved expense reports, adjust the filters on the left side, so that only
|
||||
the :guilabel:`Approved` checkbox is ticked. Next, tick the checkbox next to the
|
||||
:guilabel:`Employee` column title to select **all** the :guilabel:`Approved` reports in the list
|
||||
at once.
|
||||
|
||||
Next, click the :guilabel:`Post Entries` button.
|
||||
|
||||
.. image:: post_expenses/post-entries.png
|
||||
:align: center
|
||||
:alt: Post multiple reports at a time from the Expense Reports view, with the Approved filter.
|
||||
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 13 KiB |
@@ -0,0 +1,140 @@
|
||||
===================
|
||||
Reimburse employees
|
||||
===================
|
||||
|
||||
After an expense report is :doc:`posted to an accounting journal <../expenses/post_expenses>`, the
|
||||
next step is to reimburse the employee. Just like approving and posting expenses, employees can be
|
||||
reimbursed in two ways: with cash, check, or direct deposit (:ref:`individually
|
||||
<expenses/reimburse-single>` or :ref:`in bulk <expenses/reimburse-bulk>`), or :ref:`reimbursed in a
|
||||
payslip <expenses/reimburse-payslip>`.
|
||||
|
||||
Settings
|
||||
========
|
||||
|
||||
Reimbursements can be paid via paycheck, check, cash, or bank transfer. To set up payment options,
|
||||
first configure the various settings by navigating to :menuselection:`Expenses app -->
|
||||
Configuration --> Settings`.
|
||||
|
||||
To reimburse employees for expenses :ref:`in their paychecks <expenses/reimburse-payslip>`, tick the
|
||||
checkbox beside the :guilabel:`Reimburse in Payslip` option in the :guilabel:`Expenses` section.
|
||||
|
||||
Next, set how payments are made in the :guilabel:`Accounting` section. Click the drop-down menu
|
||||
under :guilabel:`Payment Methods`, and select the desired payment option. Default options include
|
||||
paying by :guilabel:`Manual (Cash)`, :guilabel:`Checks (Bank)`, :guilabel:`NACHA (Bank)`, and
|
||||
others. Leaving this field blank allows for **all** available payment options to be used.
|
||||
|
||||
When all desired configurations are complete, click :guilabel:`Save` to activate the settings.
|
||||
|
||||
.. _expenses/reimburse-single:
|
||||
|
||||
Reimburse individually
|
||||
======================
|
||||
|
||||
To reimburse an individual expense report, first navigate to :menuselection:`Expenses app -->
|
||||
Expense Reports`. All expense reports are presented in a default list view. Click on the expense
|
||||
report being reimbursed to view the report details.
|
||||
|
||||
.. important::
|
||||
**Only** expense reports with a status of :guilabel:`Posted` can be reimbursed.
|
||||
|
||||
Click the :guilabel:`Register Payment` button in the top-left corner of the expense report, and a
|
||||
:guilabel:`Register Payment` pop-up window appears. Enter the following information in the pop-up
|
||||
window:
|
||||
|
||||
- :guilabel:`Journal`: Select the accounting journal to post the payment to using the drop-down
|
||||
menu. The default options are :guilabel:`Bank` or :guilabel:`Cash`.
|
||||
- :guilabel:`Payment Method`: Select how the payment is made using the drop-down menu. If
|
||||
:guilabel:`Cash` is selected for the :guilabel:`Journal`, the only option available is
|
||||
:guilabel:`Manual`. If :guilabel:`Bank` is selected for the :guilabel:`Journal`, the default
|
||||
options are :guilabel:`Manual` or :guilabel:`Checks`.
|
||||
- :guilabel:`Recipient Bank Account`: Select the employee's bank account the payment is being sent
|
||||
to. If the employee has a bank account on file in the :ref:`Private Information tab
|
||||
<employees/private-info>` of their employee form in the **Employees** app, that bank account
|
||||
populates this field, by default.
|
||||
- :guilabel:`Amount`: The total amount being reimbursed populates this field, by default. The
|
||||
currency, located to the right of the field, can be modified using the drop-down menu.
|
||||
- :guilabel:`Payment Date`: Enter the date the payments are issued in this field. The current date
|
||||
populates this field, by default.
|
||||
- :guilabel:`Memo`: The text entered in the :doc:`Expense Report Summary
|
||||
<../expenses/expense_reports>` field of the expense report populates this field, by default.
|
||||
|
||||
.. image:: reimburse/payment.png
|
||||
:align: center
|
||||
:alt: The Register Payment pop-up window filled out for an individual expense report
|
||||
reimbursement.
|
||||
|
||||
When the fields of the pop-up window are completed, click the :guilabel:`Create Payment` button to
|
||||
register the payment, and reimburse the employee.
|
||||
|
||||
.. _expenses/reimburse-bulk:
|
||||
|
||||
Reimburse in bulk
|
||||
=================
|
||||
|
||||
To reimburse multiple expense reports at once, navigate to :menuselection:`Expenses app --> Expense
|
||||
Reports` to view all expense reports in a list view. Next, adjust the :guilabel:`STATUS` filters on
|
||||
the left side to only present expense reports with a status of :guilabel:`Posted`.
|
||||
|
||||
.. tip::
|
||||
Adjusting the :guilabel:`STATUS` filters to only show :guilabel:`Posted` expense reports is not
|
||||
necessary, but removes the step of selecting each individual report in the list.
|
||||
|
||||
Tick the checkbox next to the :guilabel:`Employee` column title to select all the reports in the
|
||||
list. Once ticked, the number of selected expense reports appears at the top of the page
|
||||
(:guilabel:`(#) Selected`). Additionally, a :guilabel:`Register Payment` button also appears in the
|
||||
upper-left corner.
|
||||
|
||||
.. image:: reimburse/multiple-reports.png
|
||||
:align: center
|
||||
:alt: Expense reports filtered by the status Posted, making the Register Payment button visible.
|
||||
|
||||
Click the :guilabel:`Register Payment` button, and a :guilabel:`Register Payment` pop-up window
|
||||
appears. Enter the following information in the pop-up window:
|
||||
|
||||
- :guilabel:`Journal`: Select the accounting journal the payment should be posted to, using the
|
||||
drop-down menu. The default options are :guilabel:`Bank` or :guilabel:`Cash`.
|
||||
- :guilabel:`Payment Method`: Select how the payment is made using the drop-down menu. If
|
||||
:guilabel:`Cash` is selected for the :guilabel:`Journal`, the only option available is
|
||||
:guilabel:`Manual`. If :guilabel:`Bank` is selected for the :guilabel:`Journal`, the default
|
||||
options are :guilabel:`Manual` or :guilabel:`Checks`.
|
||||
- :guilabel:`Group Payments`: When multiple expense reports are selected for the same employee, this
|
||||
option appears. Tick the checkbox to have only one payment made, rather than issuing multiple
|
||||
payments to the same employee.
|
||||
- :guilabel:`Payment Date`: Enter the date the payments are issued. The current date populates this
|
||||
field, by default.
|
||||
|
||||
.. image:: reimburse/register.png
|
||||
:align: center
|
||||
:alt: The Register Payment pop-up window filled out.
|
||||
|
||||
When the fields on the pop-up window are completed, click the :guilabel:`Create Payments` button to
|
||||
register the payments, and reimburse the employees.
|
||||
|
||||
.. _expenses/reimburse-payslip:
|
||||
|
||||
Report in next payslip
|
||||
======================
|
||||
|
||||
If the *Reimburse in Payslip* option is activated on the *Settings* page, payments can be added to
|
||||
their next payslip, instead of issued manually.
|
||||
|
||||
.. important::
|
||||
Reimbursing expenses on payslips can **only** be done individually, on an expense report with a
|
||||
status of *Approved*. Once an expense report has a status of *Posted*, the option to reimburse in
|
||||
the following payslip does **not** appear.
|
||||
|
||||
Navigate to :menuselection:`Expenses app --> Expense Reports`, and click on the individual expense
|
||||
report being reimbursed on the following paycheck. Click the :guilabel:`Report in Next Payslip`
|
||||
smart button, and the expenses are added to the next payslip issued for that employee. Additionally,
|
||||
a message is logged in the chatter stating the expense is added to the following payslip.
|
||||
|
||||
.. image:: reimburse/pay-via-payslip.png
|
||||
:align: center
|
||||
:alt: The Report in Next Payslip button, visible with an expense report status of Approved.
|
||||
|
||||
The status for the expense report remains :guilabel:`Approved`. The status only changes to
|
||||
:guilabel:`Posted` (and then :guilabel:`Done`), when the paycheck is processed.
|
||||
|
||||
.. seealso::
|
||||
Refer to the :doc:`Payslips <../../hr/payroll/payslips>` documentation for more information about
|
||||
processing paychecks.
|
||||
|
After Width: | Height: | Size: 46 KiB |
|
After Width: | Height: | Size: 47 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 15 KiB |
@@ -0,0 +1,151 @@
|
||||
===================
|
||||
Re-invoice expenses
|
||||
===================
|
||||
|
||||
If expenses are tracked on customer projects, they can be automatically charged back to the
|
||||
customer. This is done by :ref:`creating an expense <expenses/reinvoice-create>`, referencing the
|
||||
sales order the expense is added to, and then :ref:`creating an expense report
|
||||
<expenses/reinvoice-report>`.
|
||||
|
||||
Next, managers :ref:`approve the expense report <expenses/reinvoice-approve>`, before the accounting
|
||||
department :ref:`posts the journal entries <expenses/reinvoice-approve>`.
|
||||
|
||||
Finally, once the expense report is posted to a journal, the expenses appears on the specified
|
||||
:abbr:`SO (Sales Order)`. The :abbr:`SO (Sales Order)` is then :ref:`invoiced <expenses/reinvoice>`,
|
||||
thus charging the customer for the expenses.
|
||||
|
||||
.. important::
|
||||
Approving expenses, posting expenses to accounting, and reinvoicing expenses on :abbr:`SOs (Sales
|
||||
Orders)` is **only** possible for users with the appropriate :doc:`access rights
|
||||
<../../general/users/access_rights>`.
|
||||
|
||||
.. seealso::
|
||||
This document provides lower-level instructions for the creation, submission, approval, and
|
||||
posting of expenses. For fully-detailed instructions for any of these steps, refer to the
|
||||
following documentation:
|
||||
|
||||
- :doc:`Log expenses <../expenses/log_expenses>`
|
||||
- :doc:`Expense reports <../expenses/expense_reports>`
|
||||
- :doc:`Approving expenses <../expenses/approve_expenses>`
|
||||
- :doc:`Posting expenses in accounting <../expenses/post_expenses>`
|
||||
|
||||
Setup
|
||||
=====
|
||||
|
||||
First, specify the invoicing policy for each expense category. Navigate to :menuselection:`Expenses
|
||||
app --> Configuration --> Expense Categories`. Click on an expense category to view the expense
|
||||
category form. Under the :guilabel:`INVOICING` section, click the radio button next to the desired
|
||||
selection for :guilabel:`Re-Invoice Expenses`:
|
||||
|
||||
- :guilabel:`No`: The expense category cannot be re-invoiced.
|
||||
- :guilabel:`At cost`: The expense category invoices expenses at the cost set on the expense
|
||||
category form.
|
||||
- :guilabel:`Sales price`: The expense category invoices at the sales price set on the expense form.
|
||||
|
||||
.. _expenses/reinvoice-create:
|
||||
|
||||
Create an expense
|
||||
=================
|
||||
|
||||
First, when :doc:`creating a new expense <../expenses/log_expenses>`, the correct information needs
|
||||
to be entered to re-invoice the expense to a customer. Using the drop-down menu, select the
|
||||
:abbr:`SO (Sales Order)` to add the expense to in the :guilabel:`Customer to Reinvoice` field.
|
||||
|
||||
Next, select the :guilabel:`Analytic Distribution` the expense is posted to. Multiple accounts can
|
||||
be selected, if desired.
|
||||
|
||||
To add another :guilabel:`Analytic Distribution`, click on the line to reveal the
|
||||
:guilabel:`Analytic` pop-over window. Click :guilabel:`Add a line`, then select the desired
|
||||
:guilabel:`Analytic Distribution` from the drop-down field. If selecting more than one
|
||||
:guilabel:`Analytic Distribution`, the :guilabel:`Percentage` fields **must** be modified. By
|
||||
default, both fields are populated with `100%`. Adjust the percentages for all the fields, so the
|
||||
total of all selected accounts equals `100%`.
|
||||
|
||||
.. example::
|
||||
A painting company agrees to paint an office building that houses two different companies. During
|
||||
the estimate, a meeting is held at the office location to discuss the project.
|
||||
|
||||
Both companies agree to pay for the travel expenses for the painting company employees. When
|
||||
creating the expenses for the mileage and hotels, **both companies** are listed in the
|
||||
:guilabel:`Analytic Distribution` line, for 50% each.
|
||||
|
||||
.. _expenses/reinvoice-report:
|
||||
|
||||
Create an expense report
|
||||
========================
|
||||
|
||||
After the expenses are created, the expense report must be :ref:`created <expenses/create_report>`
|
||||
and :ref:`submitted <expenses/submit>`, in the same manner as all other expenses.
|
||||
|
||||
Once the expense report is submitted, a :icon:`fa-money` :guilabel:`Sales Orders` smart button
|
||||
appears at the top-center of both the expense report, and each individual expense record being
|
||||
reinvoiced.
|
||||
|
||||
.. image:: reinvoice_expenses/reinvoice-expense.png
|
||||
:align: center
|
||||
:alt: Ensure the customer to be invoiced is called out on the expense.
|
||||
|
||||
.. important::
|
||||
Selecting the proper :abbr:`SO (Sales Order)` in the :guilabel:`Customer to Reinvoice` field is
|
||||
**critical**, since this is how expenses are automatically invoiced after an expense report is
|
||||
approved.
|
||||
|
||||
The :guilabel:`Customer to Reinvoice` field can be modified *only* until an expense report is
|
||||
**approved**. After an expense report is approved, the :guilabel:`Customer to Reinvoice` field is
|
||||
no longer able to be modified.
|
||||
|
||||
.. _expenses/reinvoice-approve:
|
||||
|
||||
Approve and post expenses
|
||||
=========================
|
||||
|
||||
Before :doc:`approving an expense report <../expenses/approve_expenses>`, ensure the
|
||||
:guilabel:`Analytic Distribution` section is populated for every expense line.
|
||||
|
||||
If an :guilabel:`Analytic Distribution` entry is missing, assign the correct accounts from the
|
||||
drop-down menu, then click :guilabel:`Approve`.
|
||||
|
||||
.. image:: reinvoice_expenses/analytic-dist.png
|
||||
:align: center
|
||||
:alt: The expense report with all the Analytic Distribution lines populated.
|
||||
|
||||
.. note::
|
||||
The :guilabel:`Approve` button **only** appears after an expense report has been :ref:`submitted
|
||||
<expenses/submit>`.
|
||||
|
||||
The accounting department is typically responsible for :doc:`posting journal entries
|
||||
<../expenses/post_expenses>`. To post expenses to an accounting journal, click :guilabel:`Post
|
||||
Journal Entries`. Once an expense report is approved, it can then be posted.
|
||||
|
||||
The :abbr:`SO (Sales Order)` is **only** updated *after* the journal entries are posted. Once the
|
||||
journal entries are posted, the expenses now appear on the referenced :abbr:`SO (Sales Order)`.
|
||||
|
||||
.. _expenses/reinvoice:
|
||||
|
||||
Invoice expenses
|
||||
================
|
||||
|
||||
After the expense report has been approved, and the journal entries have been posted, the :abbr:`SO
|
||||
(Sales Order)` is updated, and the customer can be invoiced.
|
||||
|
||||
Select the expense report, and click the :icon:`fa-money` :guilabel:`Sales Orders` smart button to
|
||||
open the :abbr:`SO (Sales Order)`. The expenses to be re-invoiced now appear on the :abbr:`SO (Sales
|
||||
Order)`.
|
||||
|
||||
.. note::
|
||||
More than one :abbr:`SO (Sales Order)` can be referenced on an expense report. If more than one
|
||||
:abbr:`SO (Sales Order)` is referenced, clicking the :guilabel:`Sales Orders` smart button opens
|
||||
a list displaying all the :abbr:`SOs (Sales Order)` associated with that expense report. Click on
|
||||
a :abbr:`SO (Sales Order)` to open the individual :abbr:`SO (Sales Order)` details.
|
||||
|
||||
The expenses are listed in the :abbr:`SO (Sales Order)` :guilabel:`Order Lines` tab.
|
||||
|
||||
.. image:: reinvoice_expenses/so-details.png
|
||||
:align: center
|
||||
:alt: See the expenses listed on the sales order after clicking into it.
|
||||
|
||||
Next, click :guilabel:`Create Invoice`, and a :guilabel:`Create invoices` pop-up window appears.
|
||||
Select if the invoice is a :guilabel:`Regular invoice`, a :guilabel:`Down payment (percentage)`, or
|
||||
a :guilabel:`Down payment (fixed amount)`. Then, click :guilabel:`Create Draft Invoice`. Doing so
|
||||
creates a draft invoice for the customer. Click :guilabel:`Confirm` to confirm the invoice, and the
|
||||
customer is invoiced for the expenses.
|
||||
|
After Width: | Height: | Size: 53 KiB |
|
After Width: | Height: | Size: 43 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 9.1 KiB |
|
Before Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 7.5 KiB |
@@ -123,7 +123,7 @@ available on Odoo.
|
||||
- :doc:`UK - Accounting <fiscal_localizations/united_kingdom>`
|
||||
- Ukraine - Accounting
|
||||
- :doc:`United States - Accounting <fiscal_localizations/united_states>`
|
||||
- Uruguay - Accounting
|
||||
- :doc:`Uruguay - Accounting <fiscal_localizations/uruguay>`
|
||||
- Venezuela - Accounting
|
||||
- :doc:`Vietnam - Accounting <fiscal_localizations/vietnam>`
|
||||
|
||||
@@ -163,4 +163,5 @@ available on Odoo.
|
||||
fiscal_localizations/united_arab_emirates
|
||||
fiscal_localizations/united_kingdom
|
||||
fiscal_localizations/united_states
|
||||
fiscal_localizations/uruguay
|
||||
fiscal_localizations/employment_hero
|
||||
|
||||
@@ -1018,69 +1018,37 @@ specific product.
|
||||
Reports
|
||||
=======
|
||||
|
||||
As part of the localization installation, financial reporting for Argentina was added to the
|
||||
:guilabel:`Accounting` dashboard. Access these reports by navigating to :menuselection:`Accounting
|
||||
--> Reporting --> Argentinean Reports`
|
||||
As part of the localization installation, financial reporting for Argentina is available in the
|
||||
:guilabel:`Accounting` dashboard. To access these reports, navigate to :menuselection:`Accounting
|
||||
--> Reporting --> Argentinean Statements`.
|
||||
|
||||
.. image:: argentina/argentinian-reports.png
|
||||
:align: center
|
||||
:alt: Argentinean reports.
|
||||
To access the VAT book report, go to :menuselection:`Accounting --> Reporting --> Tax Report`, click
|
||||
the :icon:`fa-book` (:guilabel:`book`), and select :guilabel:`Argentinean VAT book (AR)`.
|
||||
|
||||
VAT reports
|
||||
-----------
|
||||
|
||||
Sales VAT book
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
This report records all the sales, which are taken as the basis for the accounting records
|
||||
to determine the VAT (Tax Debit). The :guilabel:`Sales VAT` book report can be exported as a `.zip`
|
||||
file using the :guilabel:`VAT BOOK (ZIP)` button at the top left, containing `.txt` files to upload
|
||||
to the AFIP portal.
|
||||
|
||||
.. image:: argentina/sales-vat-book.png
|
||||
:align: center
|
||||
:alt: Sales VAT book.
|
||||
|
||||
Purchases VAT book
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The :guilabel:`Purchases VAT` book report can be exported as a `.zip` file using the
|
||||
:guilabel:`VAT BOOK (ZIP)` button at the top left, which contains `.txt` files to upload to the AFIP
|
||||
portal.
|
||||
|
||||
.. image:: argentina/purchases-vat-book.png
|
||||
:align: center
|
||||
:alt: Purchases VAT book.
|
||||
.. note::
|
||||
The VAT book report can be exported as a `.zip` file by selecting it in the dropdown menu in the
|
||||
top-left corner.
|
||||
|
||||
VAT summary
|
||||
~~~~~~~~~~~
|
||||
-----------
|
||||
|
||||
Pivot table designed to check the monthly VAT totals. This report is for internal use and is not
|
||||
sent to the AFIP.
|
||||
|
||||
.. image:: argentina/vat-summary.png
|
||||
:align: center
|
||||
:alt: VAT Summary.
|
||||
|
||||
IIBB - Reports
|
||||
--------------
|
||||
This pivot table is designed to check the monthly VAT totals. This report is for internal use and is
|
||||
not sent to the AFIP.
|
||||
|
||||
IIBB - Sales by jurisdiction
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
----------------------------
|
||||
|
||||
Pivot table where you can validate the gross income in each jurisdiction. Affidavit for the
|
||||
corresponding taxes to pay; and therefore, it is not sent to the AFIP.
|
||||
This pivot table allows you to validate the gross income in each jurisdiction. It serves as an
|
||||
affidavit for the corresponding taxes due but is not submitted to the AFIP.
|
||||
|
||||
.. image:: argentina/iibb-sales-jurisdiction.png
|
||||
:align: center
|
||||
:alt: IIBB Sales by jurisdiction.
|
||||
|
||||
IIBB - Purchases by jurisdiction
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
--------------------------------
|
||||
|
||||
Pivot table where you can validate the gross purchases in each jurisdiction. Affidavit for the
|
||||
corresponding taxes to pay; and therefore, it is not sent to the AFIP.
|
||||
This pivot table allows you to validate the gross purchases in each jurisdiction. It serves as an
|
||||
affidavit for the corresponding taxes due but is not submitted to the AFIP.
|
||||
|
||||
.. image:: argentina/iibb-purchases-jurisdiction.png
|
||||
:align: center
|
||||
:alt: IIBB Purchases by jurisdiction.
|
||||
|
||||
|
Before Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 52 KiB |