Compare commits
91 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| dc7681af00 | |||
| 7e29da60b9 | |||
| 8edb63948c | |||
| 76c781226d | |||
| fd4065b3c6 | |||
| b755d0330e | |||
| b5dbf4779a | |||
| db05d69be6 | |||
| c795231f1c | |||
| 5114140efe | |||
| dd7ab18b9e | |||
| 32cb0d8244 | |||
| 80b4cd05d3 | |||
| 421e760581 | |||
| 3bd570ae64 | |||
| 3e199d9825 | |||
| ca475f8ad5 | |||
| ae0c4d809d | |||
| 3758cd5899 | |||
| 9514d7df55 | |||
| f704ee9cc1 | |||
| 0031e37c63 | |||
| 89b550252a | |||
| 27d8dc2acd | |||
| 4367502c08 | |||
| 9988d0b214 | |||
| 665bf423ec | |||
| 8bf5772a97 | |||
| 6462ed0112 | |||
| 1c2ce72416 | |||
| fb681d1305 | |||
| e005fa9896 | |||
| 7d70725925 | |||
| 4590a4c25a | |||
| 057a1c11d2 | |||
| 7d01392c9a | |||
| 35aae86dbd | |||
| a9c82ebb94 | |||
| 453284ba8e | |||
| 42115759bc | |||
| 94a6a0b204 | |||
| f51b991fd4 | |||
| c76f97777a | |||
| e80d7ae220 | |||
| f27df8f077 | |||
| 06d5e0b096 | |||
| 137e58719b | |||
| 9cac3b3d1a | |||
| 7dfd6421db | |||
| b0a042b928 | |||
| facb3f184e | |||
| 13544bca17 | |||
| 9e54525d61 | |||
| 1ed317ebd7 | |||
| 0df9068892 | |||
| 2161dd5acf | |||
| 9989131931 | |||
| f1d048fdff | |||
| 5cfd1623ae | |||
| 432d9bb10b | |||
| 1be31fda81 | |||
| 4d61833e46 | |||
| 46d85d4f00 | |||
| 5720cd2802 | |||
| 9fc59e3237 | |||
| 5b04581623 | |||
| 5c82ba7762 | |||
| b7316e2e2e | |||
| 4e61b3585e | |||
| 11401af3dd | |||
| 3d0a19f329 | |||
| 89bccb44ff | |||
| 899ee1c4c1 | |||
| ab4cfb431f | |||
| 9f65cba6dc | |||
| 3b50c7a565 | |||
| 4af52da507 | |||
| a7bb89ce47 | |||
| 532b6be429 | |||
| 80e8576263 | |||
| 75fd5255eb | |||
| 070ffa86c0 | |||
| 7b5ce24bba | |||
| 05a09da86a | |||
| d0ca9fbafe | |||
| c7713b218f | |||
| 978bebf93c | |||
| 388003e6f1 | |||
| 7a41103958 | |||
| 63a9962742 | |||
| 414bae03ec |
@@ -43,7 +43,7 @@ Configuration samples
|
||||
|
||||
* Show only databases with names beginning with 'mycompany'
|
||||
|
||||
in ``/etc/odoo.conf`` set:
|
||||
in :ref:`the configuration file <reference/cmdline/config_file>` set:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
@@ -55,7 +55,7 @@ in ``/etc/odoo.conf`` set:
|
||||
was sent to ``www.mycompany.com`` or ``mycompany.co.uk``, but not
|
||||
for ``www2.mycompany.com`` or ``helpdesk.mycompany.com``.
|
||||
|
||||
in ``/etc/odoo.conf`` set:
|
||||
in :ref:`the configuration file <reference/cmdline/config_file>` set:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
@@ -150,7 +150,7 @@ Configuration sample
|
||||
* with 'pwd' as a password
|
||||
* filtering only db with a name beginning with 'mycompany'
|
||||
|
||||
in ``/etc/odoo.conf`` set:
|
||||
in :ref:`the configuration file <reference/cmdline/config_file>` set:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
@@ -238,7 +238,7 @@ Configuration sample
|
||||
* We'll use 8 workers + 1 for cron. We'll also use a monitoring system to measure cpu load, and check if it's between 7 and 7.5 .
|
||||
* RAM = 9 * ((0.8*150) + (0.2*1024)) ~= 3Go RAM for Odoo
|
||||
|
||||
in ``/etc/odoo.conf``:
|
||||
in :ref:`the configuration file <reference/cmdline/config_file>`:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
@@ -273,7 +273,7 @@ Configuration sample
|
||||
* Redirect http requests to https
|
||||
* Proxy requests to odoo
|
||||
|
||||
in ``/etc/odoo.conf`` set:
|
||||
in :ref:`the configuration file <reference/cmdline/config_file>` set:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
|
||||
@@ -282,14 +282,6 @@ SSH. If you do not know the difference between the two, the best option is most
|
||||
are following the :doc:`Getting started </developer/tutorials/getting_started>` developer tutorial,
|
||||
or plan on contributing to Odoo source code, choose SSH.
|
||||
|
||||
.. note::
|
||||
**The Enterprise Git repository does not contain the full Odoo source code**. It is only a
|
||||
collection of extra add-ons. The main server code is in the Community version. Running the
|
||||
Enterprise version actually means running the server from the Community version with the
|
||||
addons-path option set to the folder with the Enterprise version. You need to clone both the
|
||||
Community and Enterprise repository to have a working Odoo Enterprise installation. See
|
||||
:ref:`setup/install/editions` to get access to the Enterprise repository.
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Windows
|
||||
@@ -351,7 +343,8 @@ or plan on contributing to Odoo source code, choose SSH.
|
||||
collection of extra add-ons. The main server code is in the Community version. Running the
|
||||
Enterprise version actually means running the server from the Community version with the
|
||||
addons-path option set to the folder with the Enterprise version. You need to clone both the
|
||||
Community and Enterprise repository to have a working Odoo Enterprise installation.
|
||||
Community and Enterprise repository to have a working Odoo Enterprise installation. See
|
||||
:ref:`setup/install/editions` to get access to the Enterprise repository.
|
||||
|
||||
.. _setup/install/source/prepare:
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
|
||||
.. _setup/enterprise:
|
||||
|
||||
===============================
|
||||
Upgrade Community to Enterprise
|
||||
===============================
|
||||
===================================
|
||||
Switch from Community to Enterprise
|
||||
===================================
|
||||
|
||||
Depending on your current installation, there are multiple ways to upgrade
|
||||
your community version.
|
||||
@@ -98,7 +98,7 @@ On Windows
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ odoo.exe -d <database_name> -i web_enterprise --stop-after-init
|
||||
$ ..\python\python.exe odoo-bin -d <database_name> -i web_enterprise --stop-after-init
|
||||
|
||||
* No need to manually launch the server, the service is running.
|
||||
You should be able to connect to your Odoo Enterprise instance using your usual
|
||||
|
||||
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 39 KiB |
@@ -2,25 +2,15 @@
|
||||
Odoo Online database management
|
||||
===============================
|
||||
|
||||
To manage a database, sign in to https://www.odoo.com and access the `database management page
|
||||
<https://www.odoo.com/my/databases>`_ by clicking on the user icon, then on
|
||||
:guilabel:`My Databases`.
|
||||
To manage a database, go to the `database manager <https://www.odoo.com/my/databases>`_ and sign in
|
||||
as the database administrator.
|
||||
|
||||
.. image:: odoo_online/my-databases.png
|
||||
:align: center
|
||||
:alt: Clicking on the user icon opens a drop-down menu. "My databases" button is highlighted.
|
||||
All the main database management options are available by clicking the database name, except the
|
||||
upgrade option, which can be accessed by clicking the **arrow in a circle** icon next to the
|
||||
database name. It is only displayed if an upgrade is available.
|
||||
|
||||
.. note::
|
||||
Make sure to connect as the administrator of the database that changes will be made on.
|
||||
|
||||
.. image:: odoo_online/dropdown-menu.png
|
||||
:align: right
|
||||
:alt: Clicking on the gear icon opens the drop-down menu.
|
||||
|
||||
Open the drop-down menu next to the database that changes will be made on by clicking on the gear
|
||||
icon.
|
||||
|
||||
Several actions are available:
|
||||
.. image:: odoo_online/database-manager.png
|
||||
:alt: Accessing the database management options
|
||||
|
||||
- :ref:`odoo_online/upgrade`
|
||||
- :ref:`odoo_online/duplicate`
|
||||
@@ -37,39 +27,24 @@ Several actions are available:
|
||||
Upgrade
|
||||
=======
|
||||
|
||||
If the database is *not* on the latest **Online version**, the administrator should receive an
|
||||
invitation to :doc:`upgrade <../upgrade>` the database. A :guilabel:`Rolling Release`` button on the
|
||||
database's main screen proposes an upgrade to the latest version (e.g., 14.0 to 16.1).
|
||||
|
||||
.. important::
|
||||
- | **If the Odoo database's version is lower than the latest major release:**
|
||||
| The database must be upgraded within two months. After these two months, an automatic
|
||||
upgrade is initiated.
|
||||
- | **If the Odoo database's version is equal to or higher than the latest major release:**
|
||||
| Disregard the invitation to upgrade as the database probably wouldn't benefit from new
|
||||
features every two months.
|
||||
|
||||
.. note::
|
||||
Versions that are not supported anymore become deprecated and need to be updated to avoid
|
||||
security issues. Odoo recommends that the company initiate the upgrade, as this method allows for
|
||||
the company to request a test upgrade of the database to check for any discrepancies.
|
||||
Trigger a database upgrade.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`../upgrade`
|
||||
- :doc:`supported_versions`
|
||||
For more information about the upgrade process, check out the :doc:`Odoo Online upgrade
|
||||
documentation <../upgrade/odoo_online>`.
|
||||
|
||||
.. _odoo_online/duplicate:
|
||||
|
||||
Duplicate
|
||||
=========
|
||||
|
||||
This allows to make an exact copy of the database to be able to perform testing without compromising
|
||||
the daily operations.
|
||||
Create an exact copy of the database, which can be used to perform testing without compromising
|
||||
daily operations.
|
||||
|
||||
.. important::
|
||||
- By checking :guilabel:`For testing purposes`, all external communication (emails, payments,
|
||||
delivery orders, etc.) are disabled by default on the duplicated database.
|
||||
- Duplicate databases expire automatically after 15 days.
|
||||
- By checking :guilabel:`For testing purposes`, all external actions (emails, payments, delivery
|
||||
orders, etc.) are disabled by default on the duplicated database.
|
||||
- Duplicated databases expire automatically after 15 days.
|
||||
|
||||
.. _odoo_online/rename:
|
||||
|
||||
@@ -83,28 +58,31 @@ Rename the database and its URL.
|
||||
Download
|
||||
========
|
||||
|
||||
Instantly download a ZIP file with a backup of the database.
|
||||
Download a ZIP file containing a backup of the database.
|
||||
|
||||
.. note::
|
||||
Databases are backed up daily according to the `Odoo Cloud SLA
|
||||
Databases are backed up daily as per the `Odoo Cloud Hosting SLA
|
||||
<https://www.odoo.com/cloud-sla>`_.
|
||||
|
||||
.. _odoo_online/domains:
|
||||
|
||||
Domains
|
||||
=======
|
||||
Domain names
|
||||
============
|
||||
|
||||
Configure custom domains to access the database via another URL.
|
||||
Use a custom :doc:`domain name <domain_names>` to access the database via another URL.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`domain_names`
|
||||
.. tip::
|
||||
You can :ref:`register a domain name for free <domain-name/odoo-register>`.
|
||||
|
||||
.. _odoo_online/tags:
|
||||
|
||||
Tags
|
||||
====
|
||||
|
||||
Add tags to sort your databases out. You can search the tags in the search bar.
|
||||
Add tags to easily identify and sort your databases.
|
||||
|
||||
.. tip::
|
||||
You can search for tags in the search bar.
|
||||
|
||||
.. _odoo_online/delete:
|
||||
|
||||
@@ -114,44 +92,43 @@ Delete
|
||||
Delete a database instantly.
|
||||
|
||||
.. danger::
|
||||
Deleting a database means that all data is permanently lost. The deletion is instant and for all
|
||||
users. It is recommended to create a backup of the database before deleting it.
|
||||
Deleting a database means that all data is permanently lost. The deletion is instant and applies
|
||||
to all users. It is recommended to create a backup of the database before deleting it.
|
||||
|
||||
Carefully read the warning message that pops up and proceed only if the implications of deleting a
|
||||
database are fully understood:
|
||||
Carefully read the warning message and only proceed if the implications of deleting a database are
|
||||
fully understood.
|
||||
|
||||
.. image:: odoo_online/delete.png
|
||||
:align: center
|
||||
:alt: A warning message is prompted before deleting a database.
|
||||
:alt: The warning message displayed before deleting a database
|
||||
|
||||
.. note::
|
||||
- Only an administrator can delete a database.
|
||||
- The database name is immediately available for a new database.
|
||||
- It is not possible to delete a database if it is expired or linked to a subscription. If
|
||||
needed, please get in touch with `Odoo Support <https://www.odoo.com/help>`_.
|
||||
- The database name is immediately made available to anyone.
|
||||
- Deleting a database if it has expired or is linked to a subscription is impossible. In that
|
||||
case, contact `Odoo Support <https://www.odoo.com/help>`_.
|
||||
|
||||
.. _odoo_online/contact-support:
|
||||
|
||||
Contact Support
|
||||
===============
|
||||
Contact us
|
||||
==========
|
||||
|
||||
Access the Odoo `support page <https://www.odoo.com/help>`_ with your database's details already
|
||||
Access the `Odoo.com support page <https://www.odoo.com/help>`_ with the database's details already
|
||||
pre-filled.
|
||||
|
||||
.. _odoo_online/users:
|
||||
|
||||
Invite / Remove Users
|
||||
Invite / remove users
|
||||
=====================
|
||||
|
||||
To invite users, fill out the email address of the new user and click on :guilabel:`Invite`. To add
|
||||
multiple users, click on :guilabel:`Add more users`.
|
||||
To invite users, fill out the new user's email address and click :guilabel:`Invite`. To add multiple
|
||||
users, click :guilabel:`Add more users`.
|
||||
|
||||
.. image:: odoo_online/invite-users.png
|
||||
:align: center
|
||||
:alt: Clicking on "Add more users" adds additional email fields.
|
||||
:alt: Inviting a user on a database
|
||||
|
||||
To remove users, select the users to remove and click on :guilabel:`Remove`.
|
||||
To remove users, select them and click :guilabel:`Remove`.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`/applications/general/users/manage_users`
|
||||
- :doc:`/applications/general/users/delete_account`
|
||||
- :doc:`../../applications/general/users/manage_users`
|
||||
- :doc:`../../applications/general/users/delete_account`
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 5.5 KiB |
|
Before Width: | Height: | Size: 9.6 KiB |
@@ -45,41 +45,101 @@ these databases if they have one, using their regular credentials.
|
||||
|
||||
In addition, they cannot use the webshell nor have access to the server logs.
|
||||
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | | User | Admin |
|
||||
+=====================+=================+===========+===========+
|
||||
|Development | History | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | 1-click connect | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Logs | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Shell/SSH | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Mails | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Settings | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
|Production & Staging | History | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | 1-click connect | | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Logs | | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Shell/SSH | | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Mails | | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Monitoring | | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Backups | | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Settings | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
|Status | | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
|Settings | | | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: auto
|
||||
|
||||
* -
|
||||
-
|
||||
- User
|
||||
- Admin
|
||||
* - Development
|
||||
- History
|
||||
- |green|
|
||||
- |green|
|
||||
* -
|
||||
- 1-click connect
|
||||
- |green|
|
||||
- |green|
|
||||
* -
|
||||
- Logs
|
||||
- |green|
|
||||
- |green|
|
||||
* -
|
||||
- Shell/SSH
|
||||
- |green|
|
||||
- |green|
|
||||
* -
|
||||
- Mails
|
||||
- |green|
|
||||
- |green|
|
||||
* -
|
||||
- Upgrade
|
||||
- |green|
|
||||
- |green|
|
||||
* -
|
||||
- Settings
|
||||
- |green|
|
||||
- |green|
|
||||
* - Production & Staging
|
||||
- History
|
||||
- |green|
|
||||
- |green|
|
||||
* -
|
||||
- 1-click connect
|
||||
-
|
||||
- |green|
|
||||
* -
|
||||
- Logs
|
||||
-
|
||||
- |green|
|
||||
* -
|
||||
- Shell/SSH
|
||||
-
|
||||
- |green|
|
||||
* -
|
||||
- Mails
|
||||
-
|
||||
- |green|
|
||||
* -
|
||||
- Monitoring
|
||||
-
|
||||
- |green|
|
||||
* -
|
||||
- Backups
|
||||
-
|
||||
- |green|
|
||||
* -
|
||||
- Upgrade
|
||||
-
|
||||
- |green|
|
||||
* -
|
||||
- Settings
|
||||
- |green|\*
|
||||
- |green|
|
||||
* - Status
|
||||
-
|
||||
- |green|
|
||||
- |green|
|
||||
* - Settings
|
||||
-
|
||||
-
|
||||
- |green|
|
||||
|
||||
.. note::
|
||||
\* Only in staging branches
|
||||
|
||||
.. |green| raw:: html
|
||||
|
||||
<span class="text-success" style="font-size: 32px; line-height: 0.5">●</span>
|
||||
|
||||
.. |orange| raw:: html
|
||||
|
||||
<span class="text-warning" style="font-size: 32px; line-height: 0.5">●</span>
|
||||
|
||||
.. |red| raw:: html
|
||||
|
||||
<span class="text-danger" style="font-size: 32px; line-height: 0.5">●</span>
|
||||
|
||||
Public Access
|
||||
=============
|
||||
|
||||
@@ -2,29 +2,91 @@
|
||||
Odoo Online
|
||||
===========
|
||||
|
||||
Requesting a test upgrade
|
||||
=========================
|
||||
Odoo databases can be manually upgraded directly from the main Odoo website. To upgrade an Odoo
|
||||
database, navigate to the `database manager <https://www.odoo.com/my/databases>`_ page and sign in.
|
||||
|
||||
#. Go to your `database manager <https://www.odoo.com/my/databases/>`_
|
||||
#. Click on your profile icon and select *My Databases*.
|
||||
The database manager page displays all of the Odoo databases associated with the user's account. Any
|
||||
databases that are not already on the most recent version of Odoo display an **arrow in a circle**
|
||||
icon next to the database name, indicating that the database can be upgraded.
|
||||
|
||||
.. image:: odoo_online/accessing-my-databases.png
|
||||
:alt: Selecting My Databases under my profile
|
||||
.. image:: odoo_online/databases-page.png
|
||||
:align: center
|
||||
:alt: The database manager page with an upgrade button next to the name of a database.
|
||||
|
||||
#. Click on the up arrow button next to your main database name to proceed to the test upgrade.
|
||||
.. important::
|
||||
- If the database's version is **lower** than the latest major release: the database must be
|
||||
upgraded within two months. After these two months, an automatic upgrade is initiated.
|
||||
- If the database's version is **equal** to or **higher** than the latest major release:
|
||||
you can disregard the invitation to upgrade, as the database probably would not benefit from
|
||||
new features every two months.
|
||||
|
||||
.. image:: odoo_online/upgrade-option.png
|
||||
:alt: Selecting the action settings icon
|
||||
If a database is *not* on the latest online version, its administrator should receive an invitation
|
||||
to upgrade on the database's dashboard, displayed as an **arrow in a circle**.
|
||||
|
||||
#. In the pop-up message that appears, select the target version and then :guilabel:`Test` as
|
||||
purpose.
|
||||
.. image:: odoo_online/database-notification.png
|
||||
:alt: Invitation to upgrade on the database dashboard.
|
||||
|
||||
.. note::
|
||||
The :guilabel:`Production` purpose doesn't appear if you didn't test your upgraded database at
|
||||
least once.
|
||||
.. note::
|
||||
Versions that are not supported anymore become deprecated and must be updated to avoid
|
||||
security issues. It is recommended to initiate the upgrade yourself and not wait for the
|
||||
automatic upgrade, as the former method allows you to request a test upgrade of the database to
|
||||
check for any discrepancies.
|
||||
|
||||
#. This triggers the automated upgrade process. A confirmation email is then sent to you with the
|
||||
the link to the upgraded database or to provide information if the upgrade failed.
|
||||
Test database
|
||||
=============
|
||||
|
||||
.. note::
|
||||
You can also see and access your test database from your *My Databases* page.
|
||||
Click on the **arrow in a circle** icon to start the upgrade process. On the :guilabel:`Upgrade your
|
||||
database` pop-up, select the version of Odoo that the platform will be upgraded to. In the
|
||||
:guilabel:`Email to notify` field, enter an email address that will receive email notifications
|
||||
about the database upgrade.
|
||||
|
||||
There is also a :guilabel:`Purpose` section on the pop-up that is used to specify the reason for the
|
||||
upgrade. However, at this stage of the process, the only selectable option is :guilabel:`Test`, as
|
||||
Odoo requires users to create a test copy of the upgraded database before converting the actual
|
||||
database.
|
||||
|
||||
.. image:: odoo_online/upgrade-pop-up.png
|
||||
:align: center
|
||||
:alt: The "Upgrade your database" pop-up.
|
||||
|
||||
After filling out the form, click the :guilabel:`Upgrade` button. The pop-up disappears and the
|
||||
database being upgraded shows a red :guilabel:`Upgrade in progress` tag next to its name. An email
|
||||
confirming that the upgrade is in progress is also sent to the email address specified on the
|
||||
pop-up.
|
||||
|
||||
.. image:: odoo_online/upgrade-in-progress.png
|
||||
:align: center
|
||||
:alt: The "Upgrade in progress" tag next to the database name.
|
||||
|
||||
Once the upgrade is complete, a new test database appears on the `database manager
|
||||
<https://www.odoo.com/my/databases>`_ page. To access the test database, click the drop-down arrow
|
||||
(:guilabel:`⯆`) to the left of the main database's name. Doing so makes the test version appear
|
||||
below it. Finally, click the green :guilabel:`Connect` button on the right side of the test
|
||||
version's row to go to the database.
|
||||
|
||||
.. image:: odoo_online/test-database.png
|
||||
:align: center
|
||||
:alt: A test database on the database manager page.
|
||||
|
||||
Except for being on the newer version of Odoo, the test database is an exact copy of the one being
|
||||
upgraded. It is important to do extensive testing in this database to ensure that the upgrade has
|
||||
not altered or corrupted any data, and that all workflows still proceed as expected.
|
||||
|
||||
Production database
|
||||
===================
|
||||
|
||||
After confirming the integrity of the new version, return to the `database manager
|
||||
<https://www.odoo.com/my/databases>`_ page. Once again, click on the **arrow in a circle** icon next
|
||||
to the database being upgraded. The :guilabel:`Upgrade your database` pop-up appears as before,
|
||||
except that there is now a :guilabel:`Production` option under the :guilabel:`Purpose` section.
|
||||
|
||||
Select the :guilabel:`Production` option and then click :guilabel:`Upgrade` to begin the upgrade
|
||||
process. As before, a notification email is sent to the email address provided and a red
|
||||
:guilabel:`Upgrade in progress` tag appears next to the name of the database.
|
||||
|
||||
The production database is then taken offline and will be upgraded automatically. The time it takes
|
||||
to upgrade the production database should be similar to the time that was necessary to upgrade the
|
||||
test database. Make sure to inform database users of the scheduled downtime.
|
||||
|
||||
After the upgrade is finished, the :guilabel:`Upgrade in progress` tag disappears and the database
|
||||
is upgraded to the version specified.
|
||||
|
||||
|
Before Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 8.3 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
|
Before Width: | Height: | Size: 5.1 KiB |
|
After Width: | Height: | Size: 15 KiB |
@@ -85,6 +85,8 @@ You can edit the accounting information and bank account number according to you
|
||||
- :doc:`get_started/multi_currency`
|
||||
- :doc:`bank/transactions`
|
||||
|
||||
.. _bank_accounts/suspense:
|
||||
|
||||
Suspense account
|
||||
----------------
|
||||
|
||||
|
||||
@@ -188,6 +188,8 @@ you will see the follow-up message and all overdue invoices.
|
||||
|
||||
.. image:: customer_invoices/invoice12.png
|
||||
|
||||
.. _customer-invoices/aging-report:
|
||||
|
||||
Customer aging report:
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@@ -228,7 +230,9 @@ the material has been shipped to the customer.
|
||||
:titlesonly:
|
||||
|
||||
customer_invoices/overview
|
||||
customer_invoices/customer_addresses
|
||||
customer_invoices/payment_terms
|
||||
customer_invoices/terms_conditions
|
||||
customer_invoices/cash_discounts
|
||||
customer_invoices/credit_notes
|
||||
customer_invoices/cash_rounding
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
==============================
|
||||
Delivery and invoice addresses
|
||||
==============================
|
||||
|
||||
Companies often have multiple locations, and it is common that a customer invoice should be sent to
|
||||
one address and the delivery should be sent to another. Odoo's **Customer Addresses** feature is
|
||||
designed to handle this scenario by making it easy to specify which address to use for each case.
|
||||
|
||||
.. seealso::
|
||||
:doc:`overview`
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
To specify a sales order's invoice and delivery addresses, first go to :menuselection:`Accounting
|
||||
--> Configuration --> Settings`. In the :guilabel:`Customer Invoices` section, enable
|
||||
:guilabel:`Customer Addresses` and click :guilabel:`Save`.
|
||||
|
||||
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.
|
||||
|
||||
Invoice and deliver to different addresses
|
||||
==========================================
|
||||
|
||||
Delivery orders and their delivery slip reports use the address set as the :guilabel:`Delivery
|
||||
Address` on the sales order. By default, invoice reports show both the shipping address and the
|
||||
invoice address to assure the customer that the delivery is going to the correct location.
|
||||
|
||||
Emails also go to different addresses. The quotation and sales order are sent to the main contact's
|
||||
email, as usual, but the invoice is sent to the email of the address set as the
|
||||
:guilabel:`Invoice Address` on the sales order.
|
||||
|
||||
.. note::
|
||||
- Reports, such as the delivery slip and invoice report, can be :doc:`customized using Studio
|
||||
</applications/productivity/studio/pdf_reports>`.
|
||||
- If :doc:`Send by Post <snailmail>` is checked when you click :guilabel:`Send & Print`, the
|
||||
invoice will be mailed to the invoice address.
|
||||
@@ -21,7 +21,7 @@ transportation, insurance, customs clearance, and other relevant aspects of the
|
||||
- **CPT**: Carriage paid to
|
||||
- **CIP**: Carriage and insurance paid to
|
||||
- **DPU**: Delivered at place unloaded
|
||||
- **DPA**: Delivered at place
|
||||
- **DAP**: Delivered at place
|
||||
- **DDP**: Delivered duty paid
|
||||
|
||||
.. seealso::
|
||||
|
||||
@@ -2,120 +2,141 @@
|
||||
Payment terms and installment plans
|
||||
===================================
|
||||
|
||||
**Payment Terms** specify all the conditions under which a sale is paid, mostly to ensure customers
|
||||
pay their invoices correctly and on time.
|
||||
**Payment terms** specify all the conditions of a sale's payment to help ensure customers pay their
|
||||
invoices correctly and on time.
|
||||
|
||||
Payment Terms can be applied to sales orders, customer invoices, supplier bills, and contacts. These
|
||||
conditions cover:
|
||||
Payment terms are generally defined on documents such as sales orders, customer invoices, and
|
||||
vendor bills. Payment terms cover:
|
||||
|
||||
- The due date
|
||||
- Some discounts
|
||||
- Any other condition on the payment
|
||||
|
||||
Defining Payment Terms automatically calculates the payments' due dates. This is particularly
|
||||
helpful for managing installment plans.
|
||||
- The due date(s)
|
||||
- Early payment discounts
|
||||
- Any other conditions on the payment
|
||||
|
||||
An **installment plan** allows the customers to pay an invoice in parts, with the amounts and
|
||||
payment dates defined beforehand by the seller.
|
||||
|
||||
**Examples of Payment Terms:**
|
||||
|
||||
- | **Immediate Payment**
|
||||
| The full payment is due on the day of the invoice's issuance.
|
||||
- | **15 Days** (or **Net 15**)
|
||||
| The full payment is due 15 days after the invoice date.
|
||||
- | **21 MFI**
|
||||
| The full payment is due by the 21st of the month following the invoice date.
|
||||
- | **2% 10, Net 30 EOM**
|
||||
| 2% :doc:`cash discount <cash_discounts>` if the payment is received within ten days. Otherwise,
|
||||
the full payment is due at the end of the month following the invoice date.
|
||||
.. example::
|
||||
Immediate Payment
|
||||
The full payment is due on the day of the invoice's issuance.
|
||||
15 Days (or Net 15)
|
||||
The full payment is due 15 days after the invoice date.
|
||||
21 MFI
|
||||
The full payment is due by the 21st of the month following the invoice date.
|
||||
30% Advance End of Following Month
|
||||
30% is due on the day of the invoice's issuance. The remaining balance is due at the end of the
|
||||
following month.
|
||||
2% 10, Net 30 EOM
|
||||
A 2% :doc:`cash discount <cash_discounts>` if the payment is received within ten days.
|
||||
Otherwise, the full payment is due at the end of the month following the invoice date.
|
||||
|
||||
.. note::
|
||||
Payment terms are not to be confused with down payment invoices. If, for a specific order, you
|
||||
issue several invoices to your customer, that is neither a payment term nor an installment plan,
|
||||
but an invoicing policy.
|
||||
|
||||
.. note::
|
||||
This document is about the *Payment Terms* feature, not *Terms & Conditions*.
|
||||
- Payment terms are not to be confused with :doc:`down payment invoices
|
||||
</applications/sales/sales/invoicing/down_payment>`. If, for a specific order, you issue
|
||||
multiple invoices to your customer, that is neither a payment term nor an installment plan but
|
||||
an invoicing policy.
|
||||
- This page is about the *payment terms* feature, not :doc:`terms & conditions
|
||||
<terms_conditions>`, which can be used to declare contractual obligations regarding content
|
||||
use, return policies, and other policies surrounding the sale of goods and services.
|
||||
|
||||
.. seealso::
|
||||
- `Odoo Tutorials: payment terms <https://www.odoo.com/slides/slide/payment-terms-1679>`_
|
||||
- :doc:`cash_discounts`
|
||||
- `Odoo Tutorials: Payment Terms <https://www.odoo.com/slides/slide/payment-terms-1679>`_
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
Go to :menuselection:`Accounting --> Configuration --> Payment Terms` and click on *Create*.
|
||||
To create new payment terms, follow these steps:
|
||||
|
||||
The **Description on the Invoice** is the text displayed on the document (sale order, invoice,
|
||||
etc.).
|
||||
#. Go to :menuselection:`Accounting --> Configuration --> Payment Terms` and click on
|
||||
:guilabel:`New`.
|
||||
#. Enter a name in the :guilabel:`Payment Terms` field. This field is the name displayed in the
|
||||
database and is not customer-facing.
|
||||
#. Enter the text to be displayed on the document (sales order, invoice, etc.) in the
|
||||
:guilabel:`Description on the Invoice` field.
|
||||
#. Tick the :guilabel:`Display terms on invoice` checkbox to display a breakdown of each payment and
|
||||
its due date on the invoice report, if desired.
|
||||
#. In the :guilabel:`Terms` section, add a set of rules (terms) to define what needs to be paid and
|
||||
by which due date(s). Defining terms automatically calculates the payments' due date(s). This is
|
||||
particularly helpful for managing **installment plans** (:dfn:`payment terms with multiple
|
||||
terms`).
|
||||
|
||||
In the **Terms** section, you can add a set of rules, called *terms*, to define what needs to be
|
||||
paid and by which due date.
|
||||
|
||||
To add a term, click on *Add a line*, and define its *Type*, *Value*, and *Due Date Computation*.
|
||||
|
||||
.. important::
|
||||
- Terms are computed in the order they are set up.
|
||||
- The **balance** should always be used for the last line.
|
||||
|
||||
In the following example, 30% is due on the day of issuance, and the balance is due at the end of
|
||||
the following month.
|
||||
|
||||
.. image:: payment_terms/configuration.png
|
||||
:align: center
|
||||
:alt: Example of Payment Terms. The last line is the balance due on the 31st of the following
|
||||
month.
|
||||
|
||||
Using Payment Terms
|
||||
===================
|
||||
|
||||
Payment Terms can be defined in the **Due Date** field, with the **Terms** drop-down list, on:
|
||||
|
||||
- | **Quotations**
|
||||
| To set specific payment terms automatically on all invoices generated from a quotation.
|
||||
- | **Customer Invoices**
|
||||
| To set specific payment terms on an invoice.
|
||||
- | **Vendor Bills**
|
||||
| To set specific payment terms on a bill. This is mostly useful when you need to manage vendor
|
||||
terms with several installments. Otherwise, setting the *Due Date* is enough.
|
||||
To add a term, click on :guilabel:`Add a line`, define its :guilabel:`Due Type` and
|
||||
:guilabel:`Value`, and fill out the appropriate fields to define when the term is due, including
|
||||
any :doc:`discounts <cash_discounts>`. Due dates are calculated by taking the invoice/bill date,
|
||||
first adding the :guilabel:`Months`, and then adding the :guilabel:`Days`. If the :guilabel:`End
|
||||
of month` toggle is enabled, the due date will then be the end of that month, plus any
|
||||
:guilabel:`Days after End of month`.
|
||||
|
||||
.. tip::
|
||||
You can also define a **Due Date** manually. If Payment Terms are already defined, empty the
|
||||
field so you can select a date.
|
||||
To instead specify a number of days *before the end of the month*, use a negative value in the
|
||||
:guilabel:`Days after End of month` field.
|
||||
|
||||
Payment Terms can be defined with the **Payment Terms** field on:
|
||||
To test that your payment terms are configured correctly, enter an invoice amount and invoice date
|
||||
in the :guilabel:`Example` section to generate the payments that would be due and their due dates
|
||||
using these payment terms.
|
||||
|
||||
- | **Contacts**
|
||||
| To set specific payment terms automatically on new sales orders, invoices, and bills of a
|
||||
contact. This can be modified in the contact’s *Form View*, under the *Sales & Purchase* tab.
|
||||
.. important::
|
||||
- Terms are computed in the order of their due dates.
|
||||
- The **balance** should always be used for the last line.
|
||||
|
||||
Journal Entries
|
||||
.. example::
|
||||
In the following example, 30% is due on the day of issuance, and the balance is due at the end of
|
||||
the following month.
|
||||
|
||||
.. image:: payment_terms/configuration.png
|
||||
:alt: Example of Payment Terms. The last line is the balance due on the 31st of the following
|
||||
month.
|
||||
|
||||
Using payment terms
|
||||
===================
|
||||
|
||||
Payment terms can be defined using the :guilabel:`Payment Terms` field on:
|
||||
|
||||
- **Contacts:** To automatically set default payment terms on a contact's new sales orders,
|
||||
invoices, and bills. This can be modified in the contact form, under the :guilabel:`Sales &
|
||||
Purchase` tab.
|
||||
- **Quotations/Sales Orders:** To set specific payment terms automatically on all invoices generated
|
||||
from a quotation or sales order.
|
||||
|
||||
Payment terms can be defined using the :guilabel:`Due Date` field, with the :guilabel:`Terms`
|
||||
drop-down list on:
|
||||
|
||||
- **Customer invoices:** To set specific payment terms on an invoice.
|
||||
- **Vendor bills:** To set specific payment terms on a bill.
|
||||
|
||||
.. tip::
|
||||
Setting payment terms on a vendor bill is mostly useful for managing vendor terms with multiple
|
||||
installments or cash discounts. Otherwise, manually setting the **due date** is enough. If
|
||||
payment terms are already defined, empty the field to select a date.
|
||||
|
||||
Journal entries
|
||||
===============
|
||||
|
||||
Invoices with specific Payment Terms generate different *Journal Entries*, with one *Journal Item*
|
||||
for every computed *Due Date*.
|
||||
Invoices with specific payment terms generate different *journal entries*, with one *journal item*
|
||||
for every computed *due date*.
|
||||
|
||||
This makes for easier *Follow-ups* and *Reconciliation* since Odoo takes each due date into account,
|
||||
rather than just the balance due date. It also helps to get an accurate *Aged Receivable report*.
|
||||
This makes for easier :doc:`follow-ups </applications/finance/accounting/payments/follow_up>` and
|
||||
:doc:`reconciliation </applications/finance/accounting/bank/reconciliation>` since Odoo takes each
|
||||
due date into account, rather than just the balance due date. It also helps to get an accurate
|
||||
:ref:`aged receivable report <customer-invoices/aging-report>`.
|
||||
|
||||
.. image:: payment_terms/journal-entry.png
|
||||
:align: center
|
||||
:alt: The amount debited on the Account Receivable is split into two Journal Items with distinct
|
||||
Due Dates
|
||||
.. example::
|
||||
.. image:: payment_terms/journal-entry.png
|
||||
:alt: The amount debited to the account receivable is split into two journal items with
|
||||
distinct due dates
|
||||
|
||||
In this example, an invoice of $1000 has been issued with the following payment terms: *30% is due
|
||||
on the day of issuance, and the balance is due at the end of the following month.*
|
||||
In this example, an invoice of $1000 has been issued with the following payment terms: *30% is
|
||||
due on the day of issuance, and the balance is due at the end of the following month.*
|
||||
|
||||
+----------------------+-------------+---------+---------+
|
||||
| Account | Due date | Debit | Credit |
|
||||
+======================+=============+=========+=========+
|
||||
| Account Receivable | February 21 | 300 | |
|
||||
+----------------------+-------------+---------+---------+
|
||||
| Account Receivable | March 31 | 700 | |
|
||||
+----------------------+-------------+---------+---------+
|
||||
| Product Sales | | | 1000 |
|
||||
+----------------------+-------------+---------+---------+
|
||||
+----------------------+-------------+---------+---------+
|
||||
| Account | Due date | Debit | Credit |
|
||||
+======================+=============+=========+=========+
|
||||
| Account Receivable | February 21 | 300 | |
|
||||
+----------------------+-------------+---------+---------+
|
||||
| Account Receivable | March 31 | 700 | |
|
||||
+----------------------+-------------+---------+---------+
|
||||
| Product Sales | | | 1000 |
|
||||
+----------------------+-------------+---------+---------+
|
||||
|
||||
The $1000 debited on the Account Receivable is split into two distinct *Journal Items*. Both of
|
||||
them have their own **Due Date**.
|
||||
The $1000 debited to the account receivable is split into two distinct journal items. Both of
|
||||
them have their own due date.
|
||||
|
||||
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 8.2 KiB |
|
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 22 KiB |
@@ -0,0 +1,39 @@
|
||||
==================================
|
||||
Default terms and conditions (T&C)
|
||||
==================================
|
||||
|
||||
Specifying terms and conditions is essential to establish important contractual points, such as
|
||||
return and refunds, warranty, and after-sale services.
|
||||
|
||||
You can add default terms and conditions at the bottom of all customer invoices, sales orders, and
|
||||
quotations, either as text or a link to a web page.
|
||||
|
||||
.. seealso::
|
||||
`Odoo Tutorial: Terms & Conditions <https://www.odoo.com/slides/slide/terms-conditions-1680>`_
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
Go to :menuselection:`Accounting --> Configuration --> Settings`. Under the :guilabel:`Customer
|
||||
Invoices`, enable :guilabel:`Default Terms & Conditions`. By default, the :guilabel:`Add a Note`
|
||||
option is selected, and the terms and conditions are displayed at the bottom of the document. Enter
|
||||
the terms and conditions in the text box below.
|
||||
|
||||
.. image:: terms_conditions/terms-note.png
|
||||
:alt: Example of terms and conditions as a note
|
||||
|
||||
.. tip::
|
||||
You can also add a PDF version of your terms and conditions as an attachment when sending the
|
||||
document via email. Edit the email templates if you want to include them by default.
|
||||
|
||||
Alternatively, to display the terms and conditions on a web page, select the :guilabel:`Add a link
|
||||
to a Web Page` option and click :guilabel:`Save`. Click :guilabel:`Update Terms`, edit the
|
||||
content, and click :guilabel:`Save`. The link to that page is then added as a note in your document.
|
||||
|
||||
.. note::
|
||||
You can edit the layout and content of the page using the :doc:`Website
|
||||
</applications/websites/website>` app. If the Website app is activated, the :guilabel:`Edit in
|
||||
Website Builder` option then replaces :guilabel:`Update Terms`.
|
||||
|
||||
.. image:: terms_conditions/terms-webpage.png
|
||||
:alt: Example of terms and conditions as a web page
|
||||
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 12 KiB |
@@ -187,3 +187,6 @@ To do so, check the :guilabel:`Deprecated` box in the account's settings, and sa
|
||||
* :doc:`../vendor_bills/deferred_expenses`
|
||||
* :doc:`../customer_invoices/deferred_revenues`
|
||||
* :doc:`../../fiscal_localizations`
|
||||
* `Odoo Tutorials: Chart of accounts <https://www.odoo.com/slides/slide/chart-of-accounts-1630>`_
|
||||
* `Odoo Tutorials: Update your chart of accounts
|
||||
<https://www.odoo.com/slides/slide/update-your-chart-of-accounts-1658>`_
|
||||
|
||||
@@ -101,8 +101,7 @@ Journals
|
||||
If a currency is set on a **journal**, that journal only handles transactions in that currency.
|
||||
|
||||
To do so, go to :menuselection:`Accounting --> Configuration --> Journals`, open the journal you
|
||||
want to edit, and select a currency in the field :guilabel:`Currency`. If left empty, all active
|
||||
currencies are handled instead of just one.
|
||||
want to edit, and select a currency in the field :guilabel:`Currency`.
|
||||
|
||||
.. image:: multi_currency/journal-currency.png
|
||||
:align: center
|
||||
@@ -118,7 +117,8 @@ Multi-currency accounting
|
||||
Invoices, bills, and other documents
|
||||
------------------------------------
|
||||
|
||||
For all documents, you can select the currency and journal to use for the transaction.
|
||||
For all documents, you can select the currency and journal to use for the transaction on the
|
||||
document itself.
|
||||
|
||||
.. image:: multi_currency/currency-field.png
|
||||
:align: center
|
||||
@@ -139,13 +139,13 @@ To register a payment in a currency other than your company's main currency, cli
|
||||
|
||||
.. _multi-currency/mca-statements:
|
||||
|
||||
Bank statements
|
||||
---------------
|
||||
Bank transactions
|
||||
-----------------
|
||||
|
||||
When creating or importing bank statements, the amount is in the company's main currency. To see
|
||||
additional fields related to foreign currencies, click on the **columns dropdown button**
|
||||
(:guilabel:`⋮`) next to :guilabel:`Amount`, and check :guilabel:`Amount Currency` and
|
||||
:guilabel:`Foreign Currency`.
|
||||
When creating or importing bank transactions, the amount is in the company's main currency. To input
|
||||
a **foreign currency**, select a currency in the :guilabel:`Foreign Currency`. Once selected, enter
|
||||
the :guilabel:`Amount` in your main currency for it to automatically get converted in the foreign
|
||||
currency in the :guilabel:`Amount in Currency field`.
|
||||
|
||||
.. image:: multi_currency/foreign-fields.png
|
||||
:align: center
|
||||
|
||||
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 11 KiB |
@@ -91,7 +91,7 @@ Batch Payment`.
|
||||
- :doc:`payments/batch`
|
||||
- :doc:`payments/batch_sdd`
|
||||
|
||||
.. _payments-matching:
|
||||
.. _payments/matching:
|
||||
|
||||
Payments matching
|
||||
-----------------
|
||||
|
||||
@@ -50,17 +50,16 @@ SEPA Direct Debit as a payment method
|
||||
-------------------------------------
|
||||
|
||||
SDD can be used as a payment method both on your **eCommerce** or on the **Customer Portal** by
|
||||
activating SDD as a **Payment Provider**. With this method, your customers can create and sign their
|
||||
mandates themselves.
|
||||
activating SDD as a **Payment Provider**. With this method, your customers can create their mandates.
|
||||
To ensure the validity of the information given by the customer, they will have to confirm each
|
||||
mandate with one successful bank transfer of the expected amount.
|
||||
|
||||
To do so, go to :menuselection:`Accounting --> Configuration --> Payment Providers`, click on *SEPA
|
||||
Direct Debit*, and set it up according to your needs.
|
||||
To do so, go to :menuselection:`Accounting app --> Configuration --> Payment Acquirers`, click on
|
||||
To do so, go to :menuselection:`Accounting app --> Configuration --> Payment Providers`, click on
|
||||
:guilabel:`SEPA Direct Debit`.
|
||||
|
||||
.. important::
|
||||
Make sure to change the :guilabel:`State` field to :guilabel:`Enabled`, and to check
|
||||
:guilabel:`Online Signature`, as this is necessary to let your customers sign their mandates.
|
||||
Make sure to change the :guilabel:`State` field to :guilabel:`Enabled` and set the provider as
|
||||
"Published" so that it is available for your customers.
|
||||
|
||||
Customers using SDD as payment method get prompted to add their IBAN, email address, and to sign
|
||||
their SEPA Direct Debit mandate.
|
||||
|
||||
@@ -2,128 +2,122 @@
|
||||
Checks
|
||||
======
|
||||
|
||||
There are two ways to handle payments received by checks. Odoo support
|
||||
both approaches so that you can use the one that better fits your
|
||||
habits.
|
||||
There are two ways to handle payments received by checks in Odoo, either by using :ref:`outstanding
|
||||
accounts <checks/outstanding-account>` or by :ref:`bypassing the reconciliation process
|
||||
<checks/reconciliation-bypass>`.
|
||||
|
||||
1. **Undeposited Funds:**
|
||||
once you receive the check, you record a payment
|
||||
by check on the invoice. (using a Check journal and posted on the
|
||||
Undeposited Fund account) Then, once the check arrives in your
|
||||
bank account, move money from Undeposited Funds to your bank
|
||||
account.
|
||||
**Using outstanding accounts is recommended**, as your bank account balance stays accurate by taking
|
||||
into account checks yet to be cashed.
|
||||
|
||||
2. **One journal entry only:**
|
||||
once your receive the check, you record a
|
||||
payment on your bank, paid by check, without going through the
|
||||
**Undeposited Funds**. Once you process your bank statement, you do
|
||||
the matching with your bank feed and the check payment, without
|
||||
creating a dedicated journal entry.
|
||||
.. note::
|
||||
Both methods produce the same data in your accounting at the end of the process. But if you
|
||||
have checks that have not been cashed in, the **Outstanding Account** method reports these
|
||||
checks in the **Outstanding Receipts** account. However, funds appear in your bank account
|
||||
whether or not they are reconciled, as the bank value is reflected at the moment of the bank
|
||||
statement.
|
||||
|
||||
We recommend the first approach as it is more accurate (your bank
|
||||
account balance is accurate, taking into accounts checks that have not
|
||||
been cashed yet). Both approaches require the same effort.
|
||||
.. seealso::
|
||||
* :ref:`Outstanding accounts <bank/outstanding-accounts>`
|
||||
* :ref:`Bank reconciliation <accounting/reconciliation>`
|
||||
|
||||
Even if the first method is cleaner, Odoo support the second approach
|
||||
because some accountants are used to it (quickbooks and peachtree
|
||||
users).
|
||||
.. _checks/outstanding-account:
|
||||
|
||||
.. Note::
|
||||
You may have a look at the *Deposit Ticket feature* if you deposit
|
||||
several checks to your bank accounts in batch.
|
||||
Method 1: Outstanding account
|
||||
=============================
|
||||
|
||||
Option 1: Undeposited Funds
|
||||
===========================
|
||||
When you receive a check, you :doc:`record a payment <../bank/reconciliation>` by check on the
|
||||
invoice. Then, when your bank account is credited with the check's amount, you reconcile the payment
|
||||
and statement to move the amount from the **Outstanding Receipt** account to the **Bank** account.
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
.. tip::
|
||||
You can create a new payment method named *Checks* if you would like to identify such payments
|
||||
quickly. To do so, go to :menuselection:`Accounting --> Configuration --> Journals --> Bank`,
|
||||
click the :guilabel:`Incoming Payments` tab, and :guilabel:`Add a line`. As :guilabel:`Payment
|
||||
Method`, select :guilabel:`Manual`, and enter `Checks` as name.
|
||||
|
||||
- Create a journal **Checks**
|
||||
.. _checks/reconciliation-bypass:
|
||||
|
||||
- Set **Undeposited Checks** as a default credit/debit account
|
||||
Method 2: Reconciliation bypass
|
||||
===============================
|
||||
|
||||
- Set the bank account related to this journal as **Allow Reconciliation**
|
||||
When you receive a check, you :doc:`record a payment <../bank/reconciliation>` on the related
|
||||
invoice. The amount is then moved from the **Account Receivable** to the **Bank** account, bypassing
|
||||
the reconciliation and creating only **one journal entry**.
|
||||
|
||||
From check payments to bank statements
|
||||
--------------------------------------
|
||||
To do so, you *must* follow the following setup. Go to :menuselection:`Accounting --> Configuration
|
||||
--> Journals --> Bank`. Click the :guilabel:`Incoming Payments` tab and then :guilabel:`Add a line`,
|
||||
select :guilabel:`Manual` as :guilabel:`Payment Method`, and enter `Checks` as :guilabel:`Name`.
|
||||
Click the toggle menu button, tick :guilabel:`Outstanding Receipts accounts`, and in the
|
||||
:guilabel:`Outstanding Receipts accounts` column, and set the :guilabel:`Bank` account for the
|
||||
**Checks** payment method.
|
||||
|
||||
The first way to handle checks is to create a check journal. Thus,
|
||||
checks become a payment method in itself and you will record two
|
||||
transactions.
|
||||
.. image:: checks/outstanding-payment-accounts.png
|
||||
:alt: Bypass the Outstanding Receipts account using the Bank account.
|
||||
|
||||
Once you receive a customer check, go to the related invoice and click
|
||||
on **Register Payment**. Fill in the information about the payment:
|
||||
Payment registration
|
||||
====================
|
||||
|
||||
- Payment method: Check Journal (that you configured with the debit and
|
||||
credit default accounts as **Undeposited Funds**)
|
||||
.. note::
|
||||
By default, there are two ways to register payments made by check:
|
||||
|
||||
- Memo: write the Check number
|
||||
- **Manual**: for single checks;
|
||||
- **Batch**: for multiple checks at once.
|
||||
|
||||
.. image:: checks/check02.png
|
||||
This documentation focuses on **single-check** payments. For **batch deposits**, see :doc:`the
|
||||
batch payments documentation <batch>`.
|
||||
|
||||
This operation will produce the following journal entry:
|
||||
Once you receive a customer check, go to the related invoice (:menuselection:`Accounting -->
|
||||
Customer --> Invoices)`, and click :guilabel:`Register Payment`. Fill in the payment information:
|
||||
|
||||
- :guilabel:`Journal: Bank`;
|
||||
- :guilabel:`Payment method`: :guilabel:`Manual` (or **Checks** if you have created a specific
|
||||
payment method);
|
||||
- :guilabel:`Memo`: enter the check number;
|
||||
- Click :guilabel:`Create Payment`.
|
||||
|
||||
.. image:: checks/payment-checks.png
|
||||
:alt: Check payment info
|
||||
|
||||
The generated journal entries are different depending on the payment registration method chosen.
|
||||
|
||||
Journal entries
|
||||
===============
|
||||
|
||||
Outstanding account
|
||||
-------------------
|
||||
|
||||
The invoice is marked as :guilabel:`In Payment` as soon as you record the payment. This operation
|
||||
produces the following **journal entry**:
|
||||
|
||||
+----------------------+-------------------+----------+----------+
|
||||
| Account | Statement Match | Debit | Credit |
|
||||
+======================+===================+==========+==========+
|
||||
| Account Receivable | | | 100.00 |
|
||||
+----------------------+-------------------+----------+----------+
|
||||
| Undeposited Funds | | 100.00 | |
|
||||
| Outstanding Receipts | | 100.00 | |
|
||||
+----------------------+-------------------+----------+----------+
|
||||
|
||||
The invoice is marked as paid as soon as you record the check.
|
||||
|
||||
Then, once you get the bank statements, you will match this statement
|
||||
with the check that is in Undeposited Funds.
|
||||
Then, once you receive the bank statements, match this statement with the check of the **Outstanding
|
||||
Receipts** account. This produces the following **journal entry**:
|
||||
|
||||
+---------------------+-------------------+----------+----------+
|
||||
| Account | Statement Match | Debit | Credit |
|
||||
+=====================+===================+==========+==========+
|
||||
| Undeposited Funds | X | | 100.00 |
|
||||
| Outstanding Receipts| X | | 100.00 |
|
||||
+---------------------+-------------------+----------+----------+
|
||||
| Bank | | 100.00 | |
|
||||
+---------------------+-------------------+----------+----------+
|
||||
|
||||
If you use this approach to manage received checks, you get the list of checks that have not been
|
||||
cashed in the **Outstanding Receipt** account (accessible, for example, from the general ledger).
|
||||
|
||||
If you use this approach to manage received checks, you get the list of
|
||||
checks that have not been cashed in the **Undeposit Funds** account
|
||||
(accessible, for example, from the general ledger).
|
||||
Reconciliation bypass
|
||||
---------------------
|
||||
|
||||
.. Note::
|
||||
Both methods will produce the same data in your accounting at the
|
||||
end of the process. But, if you have checks that have not been cashed,
|
||||
this one is cleaner because those checks have not been reported yet on
|
||||
your bank account.
|
||||
The invoice is marked as :guilabel:`Paid` as soon as you record the check.
|
||||
|
||||
Option 2: One journal entry only
|
||||
================================
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
These is nothing to configure if you plan to manage your checks using
|
||||
this method.
|
||||
|
||||
From check payments to bank statements
|
||||
--------------------------------------
|
||||
|
||||
Once you receive a customer check, go to the related invoice and click
|
||||
on **Register Payment**. Fill in the information about the payment:
|
||||
|
||||
- **Payment method:** the bank that will be used for the deposit
|
||||
|
||||
- Memo: write the check number
|
||||
|
||||
.. image:: checks/check03.png
|
||||
|
||||
The invoice is marked as paid as soon as you record the check.
|
||||
|
||||
Once you will receive the bank statements, you will do the matching with
|
||||
the statement and this actual payment. (technically: point this payment
|
||||
and relate it to the statement line)
|
||||
|
||||
With this approach, you will get the following journal entry in your
|
||||
books:
|
||||
With this approach, you bypass the use of **outstanding accounts**, effectively getting only one
|
||||
journal entry in your books and bypassing the reconciliation:
|
||||
|
||||
+----------------------+-------------------+----------+----------+
|
||||
| Account | Statement Match | Debit | Credit |
|
||||
@@ -132,17 +126,3 @@ books:
|
||||
+----------------------+-------------------+----------+----------+
|
||||
| Bank | | 100.00 | |
|
||||
+----------------------+-------------------+----------+----------+
|
||||
|
||||
.. tip::
|
||||
You may also record the payment directly without going on the
|
||||
customer invoice, using the menu :menuselection:`Sales --> Payments`. This method may
|
||||
be more convenient if you have a lot of checks to record in a batch but
|
||||
you will have to reconcile entries afterwards (matching payments with
|
||||
invoices)
|
||||
|
||||
If you use this approach to manage received checks, you can use the
|
||||
report **Bank Reconciliation Report** to verify which checks have been
|
||||
received or paid by the bank. (this report is available from the **More**
|
||||
option from the Accounting dashboard on the related bank account).
|
||||
|
||||
.. image:: checks/check01.png
|
||||
|
||||
|
Before Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 13 KiB |
@@ -3,9 +3,9 @@ Follow-up on invoices
|
||||
=====================
|
||||
|
||||
A follow-up message can be sent to customers when a payment is overdue. Odoo helps you identify late
|
||||
payments and allows you to schedule and send the appropriate reminders, using **follow-up actions**
|
||||
that trigger automatically one or more actions according to the number of overdue days. You can send
|
||||
your follow-ups via different means such as email, post, or SMS.
|
||||
payments and allows you to schedule and send the appropriate reminders using **follow-up actions**
|
||||
that automatically trigger one or more actions according to the number of overdue days. You can send
|
||||
your follow-ups via different means, such as email, post, or SMS.
|
||||
|
||||
.. seealso::
|
||||
- `Odoo Tutorials: Payment Follow-up <https://www.odoo.com/slides/slide/payment-follow-up-1682>`_
|
||||
@@ -14,47 +14,63 @@ Configuration
|
||||
=============
|
||||
|
||||
To configure a :guilabel:`Follow-Up Action`, go to :menuselection:`Accounting --> Configuration -->
|
||||
Follow-up Levels`. Several follow-up actions are available by default, and you can customize them
|
||||
any way you want or create new ones to trigger the following actions:
|
||||
Follow-up Levels`, and select or create (a) new follow-up level(s). Several follow-up actions are
|
||||
available by default under the :guilabel:`Notification` tab, and the **name** as well as the
|
||||
**number of days** can be changed. The follow-up :guilabel:`Actions` available are:
|
||||
|
||||
- Send an email;
|
||||
- :ref:`Send an SMS message <pricing/pricing_and_faq>`;
|
||||
- Print a letter;
|
||||
- :ref:`Send a letter <customer_invoices/snailmail>`;
|
||||
- Manual action (creates a task).
|
||||
- :guilabel:`Send Email`;
|
||||
- :ref:`Send a Letter <customer_invoices/snailmail>`;
|
||||
- :ref:`Send an SMS message <pricing/pricing_and_faq>`.
|
||||
|
||||
It is also possible to automatically send a reminder by enabling the :guilabel:`Auto Execute`
|
||||
option, within a specific :guilabel:`Follow-Up Action`.
|
||||
You can use a pre-filled template for your messages by selecting a :guilabel:`Content Template`. To
|
||||
change the template used, hover over the field and click the :guilabel:`-->`. If enabled, SMS
|
||||
messages have a specific :guilabel:`Sms Template` field.
|
||||
|
||||
It is possible to automatically send a reminder by enabling the :guilabel:`Automatic` option, and
|
||||
attaching the *open* invoice(s) by enabling :guilabel:`Attach Invoices`, within a specific follow-up
|
||||
action.
|
||||
|
||||
By clicking on the :guilabel:`Activity` tab, scheduling activities (tasks) is possible. That way,
|
||||
an activity is automatically scheduled when the follow-up is triggered. To do so, enable
|
||||
:guilabel:`Schedule Activity`, and select a :guilabel:`Responsible` person for the task. Choose an
|
||||
:guilabel:`Activity Type`, and enter a :guilabel:`Summary` on how to handle the activity, if
|
||||
desired.
|
||||
|
||||
.. tip::
|
||||
To send a reminder before the actual due date is reached, set a negative number of due days.
|
||||
Set a negative number of days to send a reminder before the actual due date.
|
||||
|
||||
Follow-up reports
|
||||
=================
|
||||
|
||||
The overdue invoices you need to follow up on are available in :menuselection:`Accounting -->
|
||||
Customers --> Follow-up Reports`. From there, you can identify all the customers that have late
|
||||
unpaid invoices.
|
||||
Overdue invoices you need to follow up on are available in :menuselection:`Accounting --> Customers
|
||||
--> Follow-up Reports`. By default, Odoo filters by :guilabel:`Overdue Invoices`, but you can also
|
||||
filter by :guilabel:`In need of action` in the :guilabel:`Filters` menu.
|
||||
|
||||
When you open a customer, you see all their unpaid invoices (overdue or not). The due dates of the
|
||||
late invoices appear in red. Select the invoices that are not late yet in the :guilabel:`Excluded`
|
||||
column to exclude them from the reminder you send.
|
||||
When selecting an invoice, you can see all of the customer's unpaid invoices (overdue or not), with
|
||||
the due dates of late invoices appearing in red. You can exclude invoices from a reminder by
|
||||
clicking :guilabel:`Exclude from Follow-ups`. You can set either :guilabel:`Automatic` or
|
||||
:guilabel:`Manual` reminders as well as a :guilabel:`Responsible` person for that customer.
|
||||
|
||||
It is up to you to decide how to remind your customer. You can select :guilabel:`Print Letter`,
|
||||
:guilabel:`Send By Email`, :guilabel:`Send By Post`, :guilabel:`Send By SMS`. Then, click on
|
||||
:guilabel:`Done` to view the next follow-up that needs your attention.
|
||||
To send reminders, click on :guilabel:`Follow up`, and select the action(s) you want to perform
|
||||
from:
|
||||
|
||||
- :guilabel:`Print`;
|
||||
- :guilabel:`Email`;
|
||||
- :guilabel:`Sms`;
|
||||
- :guilabel:`By post`.
|
||||
|
||||
You can :guilabel:`Attach Invoices` and change the content templates from this view. When done,
|
||||
click :guilabel:`Send` or :guilabel:`Send & Print`.
|
||||
|
||||
.. note::
|
||||
- The contact information available on the invoice or on the contact form is used to send the
|
||||
reminder.
|
||||
- The contact information on the invoice or the contact form is used to send the reminder.
|
||||
- When the reminder is sent, it is documented in the chatter of the invoice.
|
||||
- If it is not the right time for a reminder, you can specify the :guilabel:`Next Reminder Date`
|
||||
and click on :guilabel:`Remind me later`. You will get the next report according to the next
|
||||
reminder date set on the statement.
|
||||
- If it is not the right time for a reminder, you can specify the :guilabel:`Next Reminder` date.
|
||||
You will get the next report according to the next reminder date set.
|
||||
|
||||
.. tip::
|
||||
Reconcile your bank statements right before launching your follow-up process to avoid sending a
|
||||
reminder to a customer that has already paid you.
|
||||
Reconcile all bank statements right before launching the follow-up process to avoid sending a
|
||||
reminder to a customer that has already paid.
|
||||
|
||||
Debtor's trust level
|
||||
--------------------
|
||||
|
||||
@@ -30,6 +30,8 @@ you want to compare the chosen time period with. You can choose up to 12
|
||||
periods back from the date of the report if you don't want to use the
|
||||
default **Previous 1 Period** option.
|
||||
|
||||
.. _reporting/balance-sheet:
|
||||
|
||||
Balance Sheet
|
||||
-------------
|
||||
|
||||
@@ -103,6 +105,8 @@ occurred during a certain period of time.
|
||||
|
||||
.. image:: reporting/main_reports05.png
|
||||
|
||||
.. _reporting/aged-payable:
|
||||
|
||||
Aged Payable
|
||||
------------
|
||||
|
||||
@@ -112,6 +116,8 @@ have gone unpaid.
|
||||
|
||||
.. image:: reporting/main_reports02.png
|
||||
|
||||
.. _reporting/aged-receivable:
|
||||
|
||||
Aged Receivable
|
||||
---------------
|
||||
|
||||
@@ -129,6 +135,8 @@ operating, investing and financing activities.
|
||||
|
||||
.. image:: reporting/main_reports03.png
|
||||
|
||||
.. _reporting/tax-report:
|
||||
|
||||
Tax Report
|
||||
----------
|
||||
|
||||
|
||||
@@ -2,115 +2,111 @@
|
||||
Year-end closing
|
||||
================
|
||||
|
||||
Before going ahead with closing a fiscal year, there are a few steps one
|
||||
should typically take to ensure that your accounting is correct, up to
|
||||
date, and accurate:
|
||||
|
||||
- Make sure you have fully reconciled your **bank account(s)** up to
|
||||
year end and confirm that your ending book balances agree with
|
||||
your bank statement balances.
|
||||
|
||||
- Verify that all **customer invoices** have been entered and approved.
|
||||
|
||||
- Confirm that you have entered and agreed all **vendor bills**.
|
||||
|
||||
- Validate all **expenses**, ensuring their accuracy.
|
||||
|
||||
- Corroborate that all **received payments** have been entered and
|
||||
recorded accurately.
|
||||
Year-end closing is vital for maintaining financial accuracy, complying with regulations, making
|
||||
informed decisions, and ensuring transparency in reporting.
|
||||
|
||||
.. _year-end/fiscal-years:
|
||||
|
||||
Manage fiscal years
|
||||
===================
|
||||
Fiscal years
|
||||
============
|
||||
|
||||
In most cases, the fiscal years last 12 months. If it is your case, you
|
||||
just have to define what is the last day of your fiscal year in the
|
||||
accounting settings. By default, it is set on the 31st December.
|
||||
By default, the fiscal year is set to last 12 months and end on December 31st. However, its duration
|
||||
and end date can vary due to cultural, administrative, and economic considerations.
|
||||
|
||||
However, there might be some exceptions. For example, if it is the first
|
||||
fiscal year of your business, it could last more or less than 12 months.
|
||||
In this case, some additional configuration is required.
|
||||
To modify these values, go to :menuselection:`Accounting --> Configuration --> Settings`. Under the
|
||||
:guilabel:`Fiscal Periods` section, change the :guilabel:`Last Day` field if necessary.
|
||||
|
||||
Go to :menuselection:`accounting --> configuration --> settings` and activate
|
||||
the fiscal years.
|
||||
|
||||
You can then configure your fiscal years in
|
||||
:menuselection:`accounting --> configuration --> fiscal years`.
|
||||
If the period lasts *more* than or *less* than 12 months, enable :guilabel:`Fiscal Years` and
|
||||
:guilabel:`Save`. Go back to the :guilabel:`Fiscal Periods` section and click :guilabel:`➜ Fiscal
|
||||
Years`. From there, click :guilabel:`Create`, give it a :guilabel:`Name`, and both a
|
||||
:guilabel:`Start Date` and :guilabel:`End Date`.
|
||||
|
||||
.. note::
|
||||
You only have to create fiscal years if they last more or less
|
||||
than 12 months.
|
||||
Once the set fiscal period is over, Odoo automatically reverts to the default periodicity, taking
|
||||
into account the value specified in the :guilabel:`Last Day` field.
|
||||
|
||||
.. _year-end/checklist:
|
||||
|
||||
Year-end checklist
|
||||
==================
|
||||
|
||||
- Run a **Tax report**, and verify that your tax information is correct.
|
||||
Before closure
|
||||
--------------
|
||||
|
||||
- Reconcile all accounts on your **Balance Sheet**:
|
||||
Before closing a fiscal year, ensure first everything is accurate and up-to-date:
|
||||
|
||||
- Agree your bank balances in Odoo against your actual bank balances
|
||||
on your statements. Utilize the **Bank Reconciliation** report to
|
||||
assist with this.
|
||||
- Make sure all bank accounts are fully :doc:`reconciled <../bank/reconciliation>` up to year-end,
|
||||
and confirm that the ending book balances match the bank statement balances.
|
||||
- Verify that all :doc:`customer invoices <../customer_invoices>` have been entered and
|
||||
approved and that there are no draft invoices.
|
||||
- Confirm that all :doc:`vendor bills <../vendor_bills>` have been entered and agreed upon.
|
||||
- Validate all :doc:`expenses <../../expenses>`, ensuring their accuracy.
|
||||
- Corroborate that all :doc:`received payments <../payments>` have been encoded and recorded
|
||||
accurately.
|
||||
- Close all :ref:`suspense accounts <bank_accounts/suspense>`.
|
||||
- Book all :doc:`depreciation <../vendor_bills/assets>` and :doc:`deferred revenue
|
||||
<../customer_invoices/deferred_revenues>` entries.
|
||||
|
||||
- Reconcile all transactions in your cash and bank accounts by
|
||||
running your **Aged Receivables** and **Aged Payables** reports.
|
||||
Closing a fiscal year
|
||||
---------------------
|
||||
|
||||
- Audit your accounts, being sure to fully understand the
|
||||
transactions affecting them and the nature of the
|
||||
transactions, making sure to include loans and fixed assets.
|
||||
Then, to close the fiscal year:
|
||||
|
||||
- Run the optional **Payments Matching** feature, under the **More**
|
||||
dropdown on the dashboard, validating any open **Vendor Bills** and
|
||||
**Customer Invoices** with their payments. This step is optional,
|
||||
however it may assist the year-end process if all outstanding
|
||||
payments and invoices are reconciled, and could lead finding
|
||||
errors or mistakes in the system.
|
||||
- Run a :ref:`tax report <reporting/tax-report>`, and verify that all tax information is correct.
|
||||
- Reconcile all accounts on the :ref:`balance sheet <reporting/balance-sheet>`:
|
||||
|
||||
- Your accountant/bookkeeper will likely verify your balance sheet
|
||||
items and book entries for:
|
||||
- Update the bank balances in Odoo according to the actual balances found on the bank statements.
|
||||
- Reconcile all transactions in the cash and bank accounts by running the :ref:`aged receivables
|
||||
<reporting/aged-receivable>` and :ref:`aged payables <reporting/aged-payable>` reports.
|
||||
- Audit all accounts, being sure to fully understand all transactions and their nature, making
|
||||
sure to include loans and fixed assets.
|
||||
- Optionally, run :ref:`payments matching <payments/matching>` to validate any open vendor bills
|
||||
and customer invoices with their payments. While this step is optional, it could assist the
|
||||
year-end closing process if all outstanding payments and invoices are reconciled, potentially
|
||||
finding errors or mistakes in the system.
|
||||
|
||||
- Year-end manual adjustments, using the **Adviser Journal Entries**
|
||||
menu (For example, the **Current Year Earnings** and **Retained
|
||||
Earnings** reports).
|
||||
Next, the accountant likely verifies balance sheet items and book entries for:
|
||||
|
||||
- **Work in Progress**.
|
||||
- year-end manual adjustments,
|
||||
- work in progress,
|
||||
- depreciation journal entries,
|
||||
- loans,
|
||||
- tax adjustments,
|
||||
- etc.
|
||||
|
||||
- **Depreciation Journal Entries**.
|
||||
If the accountant is going through the year-end audit, they may want to have paper copies of all
|
||||
balance sheet items (such as loans, bank accounts, prepayments, sales tax statements, etc.) to
|
||||
compare these with the balances in Odoo.
|
||||
|
||||
- **Loans**.
|
||||
.. tip::
|
||||
During this process, it is good practice to set a :guilabel:`Journal Entries Lock Date` to the
|
||||
last day (inclusive) of the preceding fiscal year by going to :menuselection:`Accounting -->
|
||||
Accounting --> Lock Dates`. This way, the accountant can be confident that nobody changes the
|
||||
transactions while auditing the books. Users from the *accountant* access group can still create
|
||||
and modify entries.
|
||||
|
||||
- **Tax adjustments**.
|
||||
Current year's earnings
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
If your accountant/bookkeeper is going through end of the year auditing,
|
||||
they may want to have paper copies of all balance sheet items (such as
|
||||
loans, bank accounts, prepayments, sales tax statements, etc...) to
|
||||
agree these against your Odoo balances.
|
||||
Odoo uses a unique account type called **current year's earnings** to display the amount difference
|
||||
between the **income** and **expenses** accounts.
|
||||
|
||||
During this process, it is good practice to set the **Lock date for
|
||||
Non-Advisers** to the last day of the preceding financial year, which is
|
||||
set under the accounting configuration. This way, the accountant can be
|
||||
confident that nobody is changing the previous year transactions
|
||||
while auditing the books.
|
||||
.. note::
|
||||
The chart of accounts can only contain one account of this type. By default, it is a 999999
|
||||
account named :guilabel:`Undistributed Profits/Losses`.
|
||||
|
||||
.. image:: year_end/close_fiscal_year01.png
|
||||
To allocate the current year's earnings, create a miscellaneous entry to book them to any equity
|
||||
account. Once done, confirm whether or not the current year's earnings in the **balance sheet** is
|
||||
correctly reporting a balance of zero. If that is the case, set an :guilabel:`All Users Lock Date`
|
||||
to the last day of the fiscal year by going to :menuselection:`Accounting --> Accounting --> Lock
|
||||
Dates`.
|
||||
|
||||
.. _year-end/closing:
|
||||
.. warning::
|
||||
Setting an :guilabel:`All Users Lock Date` is **irreversible** and cannot be removed.
|
||||
|
||||
Closing the fiscal year
|
||||
=======================
|
||||
|
||||
In Odoo there is no need to do a specific year end closing entry in order to
|
||||
close out income statement accounts. The reports are created in
|
||||
real-time, meaning that the **Income statement** corresponds directly with
|
||||
the year-end date you specify in Odoo. Therefore, any time you generate
|
||||
the **Income Statement**, the beginning date will correspond with the
|
||||
beginning of the **Fiscal Year** and the account balances will all be 0.
|
||||
|
||||
Once the accountant/bookkeeper has created the journal entry to allocate
|
||||
the **Current Year Earnings**, you should set the **Lock Date** to the last day
|
||||
of the fiscal year. Making sure that before doing so, you confirm
|
||||
whether or not the current year earnings in the **Balance Sheet** is
|
||||
correctly reporting a 0 balance.
|
||||
.. note::
|
||||
A specific year-end closing entry is **optional** in order to close out the **profit and loss
|
||||
statement**. The reports are created in real-time, meaning that the profit and loss statement
|
||||
corresponds directly with the year-end date specified in Odoo. Therefore, any time the **income
|
||||
statement** is generated, the beginning date corresponds with the beginning of the **fiscal
|
||||
year** and all account balances should equal zero.
|
||||
|
||||
|
Before Width: | Height: | Size: 3.6 KiB |
@@ -2,61 +2,64 @@
|
||||
EU intra-community distance selling
|
||||
===================================
|
||||
|
||||
**Distance sales within the European Union** include cross-border sales of goods and services to a
|
||||
private consumer (B2C) in another EU Member State when the seller doesn't meet face-to-face with the
|
||||
customer. Organizations must ensure that the VAT on distance sales is paid to the Member State in
|
||||
which the goods or services are delivered.
|
||||
EU intra-community distance selling involves the cross-border trade of goods and services from
|
||||
vendors registered for VAT purposes to individuals (B2C) located in a European Union member state.
|
||||
The transaction is conducted remotely, typically through online platforms, mail orders, telephone,
|
||||
or other means of communication.
|
||||
|
||||
EU intra-community distance selling is subject to specific VAT rules and regulations. The vendor
|
||||
must charge VAT per the VAT rate applicable in the buyer's country.
|
||||
|
||||
.. note::
|
||||
This remains true even if your organization is located outside of the European Union.
|
||||
|
||||
While this regulation mainly applies to :doc:`eCommerce <../../../websites/ecommerce>` sales to
|
||||
private EU consumers, it is also valid for mail order sales and telesales.
|
||||
|
||||
The Union **One-Stop Shop (OSS)** is an online portal where businesses can register for the OSS and
|
||||
declare their intra-community distance sales. Each EU member state integrates an online OSS portal.
|
||||
|
||||
The **EU intra-community Distance Selling** feature helps your organization comply with this
|
||||
regulation by creating and configuring new :doc:`fiscal positions <fiscal_positions>` and
|
||||
:doc:`taxes <../taxes>` based on your company's country.
|
||||
|
||||
.. seealso::
|
||||
- `European Commission: OSS | Taxation and Customs Union
|
||||
<https://ec.europa.eu/taxation_customs/business/vat/oss_en>`_
|
||||
|
||||
.. _eu_distance_selling/configuration:
|
||||
This remains applicable even if the vendor is located outside of the European Union.
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
Go to :menuselection:`Accounting/Invoicing --> Settings --> Taxes` and enable **EU intra-community
|
||||
Distance Selling**.
|
||||
The **EU Intra-community Distance Selling** feature helps you comply with this regulation by
|
||||
creating and configuring new **fiscal positions** and **taxes** based on your company's country. To
|
||||
enable it, go to :menuselection:`Accounting --> Configuration --> Settings --> Taxes`, tick
|
||||
:guilabel:`EU Intra-community Distance Selling`, and :guilabel:`Save`.
|
||||
|
||||
.. image:: eu_distance_selling/enable-feature.png
|
||||
:align: center
|
||||
:alt: EU intra-community Distance Selling feature in Odoo Accounting settings
|
||||
|
||||
.. _eu_distance_selling/taxes:
|
||||
.. tip::
|
||||
Whenever you add or modify taxes, you can automatically update your fiscal positions. To do so,
|
||||
go to :menuselection:`Accounting/Invoicing --> Settings --> Taxes --> EU Intra-community Distance
|
||||
Selling` and click on the :guilabel:`Refresh tax mapping`.
|
||||
|
||||
Fiscal Positions and Taxes
|
||||
==========================
|
||||
|
||||
Once enabled, the feature automatically creates all the necessary taxes and fiscal positions needed
|
||||
for each EU member state, based on your company's country.
|
||||
|
||||
We highly recommend checking that the proposed mapping is suitable for the products and services you
|
||||
sell before using it.
|
||||
|
||||
.. _eu_distance_selling/refresh-mapping:
|
||||
|
||||
Refresh tax mapping
|
||||
-------------------
|
||||
|
||||
Whenever you add or modify taxes, you can update automatically your fiscal positions.
|
||||
|
||||
To do so, go to :menuselection:`Accounting/Invoicing --> Settings --> Taxes --> EU intra-community
|
||||
Distance Selling` and click on the *Refresh tax mapping* button.
|
||||
.. note::
|
||||
We highly recommend checking that the proposed mapping is suitable for the products and services
|
||||
you sell before using it.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`fiscal_positions`
|
||||
- :doc:`../taxes`
|
||||
- :doc:`../../fiscal_localizations`
|
||||
- :doc:`fiscal_positions`
|
||||
|
||||
One-Stop Shop (OSS)
|
||||
===================
|
||||
|
||||
The :abbr:`OSS (One-Stop Shop)` system introduced by the European Union simplifies VAT collection
|
||||
for **cross-border** sales of goods and services. It primarily applies to business-to-consumer
|
||||
**(B2C)** cases. With the OSS, businesses can register for VAT in their home country and use a
|
||||
single online portal to handle VAT obligations for their sales within the EU. There are **two
|
||||
primary schemes**: the **Union OSS** scheme for cross-border services and the **Import OSS** scheme
|
||||
for goods valued at or below €150.
|
||||
|
||||
Reports
|
||||
-------
|
||||
|
||||
To generate **OSS sales** or **OSS imports** reports and submit them onto the OSS portal, go to
|
||||
:menuselection:`Accounting --> Reporting --> Tax Report`, click :guilabel:`Report: Generic Tax
|
||||
report`, and select either :guilabel:`OSS Sales` or :guilabel:`OSS Imports`. Once selected, click on
|
||||
:guilabel:`PDF`, :guilabel:`XLSX`, or :guilabel:`XML` in the top-left corner. This generates the
|
||||
currently-opened report in the selected format. Once generated, log into the platform of your
|
||||
competent federal authority to submit it onto the OSS portal.
|
||||
|
||||
.. image:: eu_distance_selling/oss-report.png
|
||||
:alt: OSS reports view
|
||||
|
||||
.. seealso::
|
||||
- `European Commission: OSS | Taxation and Customs Union <https://ec.europa.eu/taxation_customs/business/vat/oss_en>`_
|
||||
|
||||
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 4.5 KiB |
|
After Width: | Height: | Size: 8.6 KiB |
@@ -37,7 +37,7 @@ appropriately completed:
|
||||
- :guilabel:`Vendor`: Odoo automatically fills some information based on the vendor's registered
|
||||
information, previous purchase orders, or bills.
|
||||
- :guilabel:`Bill Reference`: add the sales order reference provided by the vendor and is used to do
|
||||
the :ref:`matching <payments-matching>` when you receive the products.
|
||||
the :ref:`matching <payments/matching>` when you receive the products.
|
||||
- :guilabel:`Auto-Complete`: select a past bill/purchase order to automatically complete the
|
||||
document. The :guilabel:`Vendor` field should be completed prior to completing this field.
|
||||
- :guilabel:`Bill Date`: is the issuance date of the document.
|
||||
|
||||
@@ -4,34 +4,42 @@
|
||||
Expenses
|
||||
========
|
||||
|
||||
Odoo **Expenses** streamlines the management of expenses. After an employee submits their 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).
|
||||
|
||||
.. seealso::
|
||||
`Odoo Expenses: product page <https://www.odoo.com/app/expenses>`_
|
||||
|
||||
Set expense types
|
||||
=================
|
||||
Set expense categories
|
||||
======================
|
||||
|
||||
The first step to track expenses is to configure the different *expense types* for the company
|
||||
(managed as *products* in Odoo). Each "product" can be as specific or generalized as needed. Go to
|
||||
:menuselection:`Expenses app --> Configuration --> Expense Products` to view the current expensable
|
||||
products in a default kanban view.
|
||||
The first step to track expenses is to configure the different types of expenses for the company
|
||||
(managed as *expense categories* in Odoo). Each category can be as specific or generalized as
|
||||
needed. Go to :menuselection:`Expenses app --> Configuration --> Expense Categories` to view the
|
||||
current expensable categories in a default list view.
|
||||
|
||||
.. image:: expenses/products.png
|
||||
.. image:: expenses/categories.png
|
||||
:align: center
|
||||
:alt: Set expense costs on products.
|
||||
|
||||
To create a new expense product, click :guilabel:`Create`. A product form will appear. Only two
|
||||
fields are required, the :guilabel:`Product Name` and the :guilabel:`Unit of Measure`. Enter the
|
||||
:guilabel:`Product Name` in the field, and select the :guilabel:`Unit of Measure` from the drop-down
|
||||
menu (most products will be set to :guilabel:`Units`).
|
||||
To create a new expense category, click :guilabel:`New`. A product form will appear, with the
|
||||
description field labeled :guilabel:`Product Name`.
|
||||
|
||||
.. note::
|
||||
Expense categories are managed like products in Odoo. The expense category form follows the
|
||||
standard product form in Odoo, and the information entered is similar. Expense products will be
|
||||
referred to as expense categories throughout this document since the main menu refers to these as
|
||||
:guilabel:`Expense Categories`.
|
||||
|
||||
Only two fields are required, the :guilabel:`Product Name` and the :guilabel:`Unit of Measure`.
|
||||
Enter the :guilabel:`Product Name` in the field, and select the :guilabel:`Unit of Measure` from the
|
||||
drop-down menu (most products will be set to :guilabel:`Units`).
|
||||
|
||||
.. tip::
|
||||
The *Sales* app is where specification on the units of measure are created and edited (e.g.
|
||||
units, miles, nights, etc.). Go to :menuselection:`Sales app --> Configuration --> Settings` and
|
||||
ensure `Units of Measure` is checked off in the `Product Catalog` section. Click on the
|
||||
ensure `Units of Measure` is enabled in the `Product Catalog` section. Click on the
|
||||
:guilabel:`Units of Measure` internal link to view, create, and edit the units of measure. Refer
|
||||
to :doc:`this document </applications/inventory_and_mrp/inventory/management/products/uom>` to
|
||||
learn more about units of measure and how to configure them.
|
||||
@@ -45,16 +53,23 @@ a specific expense should always be reimbursed for a particular price, enter tha
|
||||
:guilabel:`Cost` field. Otherwise, leave the :guilabel:`Cost` set to `0.00`, and employees will
|
||||
report the actual cost when submitting an expense report.
|
||||
|
||||
.. note::
|
||||
The :guilabel:`Cost` field is always visible on the expense category form, but the
|
||||
:guilabel:`Sales Price` field is *only* visible if the :guilabel:`Sales Price` is selected under
|
||||
the :guilabel:`Re-Invoice Expenses` section. Otherwise, the :guilabel:`Sales Price` field is
|
||||
hidden.
|
||||
|
||||
.. example::
|
||||
Here are some examples for when to set a specific :guilabel:`Cost` on a product vs. leaving the
|
||||
:guilabel:`Cost` at `0.00`:
|
||||
|
||||
- **Meals**: Set the :guilabel:`Cost` to `0.00`. When an employee logs an expense for a meal, they
|
||||
enter the actual amount of the bill and will be reimbursed for that amount. An expense for a
|
||||
meal costing $95.23 would equal a reimbursement for $95.23.
|
||||
- **Meals**: Set the :guilabel:`Cost` to `0.00`. When an employee logs an expense for a meal,
|
||||
they enter the actual amount of the bill and will be reimbursed for that amount. An expense for
|
||||
a meal costing $95.23 would equal a reimbursement for $95.23.
|
||||
- **Mileage**: Set the :guilabel:`Cost` to `0.30`. When an employee logs an expense for
|
||||
"mileage", they enter the number of miles driven, and are reimbursed 0.30 per mile they
|
||||
entered. An expense for 100 miles would equal a reimbursement for $30.00.
|
||||
"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", the reimbursement would be for $75.00.
|
||||
- **Expenses**: Set the :guilabel:`Cost` to `0.00`. When an employee logs an expense that is not
|
||||
@@ -66,7 +81,7 @@ Select an :guilabel:`Expense Account` if using the Odoo *Accounting* app. It is
|
||||
with the accounting department to determine the correct account to reference in this field as it
|
||||
will affect reports.
|
||||
|
||||
Set a tax on each product in the :guilabel:`Vendor Taxes` and :guilabel:`Customer Taxes` fields if
|
||||
Set a tax on each product in the :guilabel:`Vendor Taxes` and :guilabel:`Customer Taxes` fields, if
|
||||
applicable. It is considered good practice to use a tax that is configured with :ref:`Tax Included
|
||||
in Price <taxes/included-in-price>`. Taxes will be automatically configured if this is set.
|
||||
|
||||
@@ -79,64 +94,74 @@ Manually create a new expense
|
||||
-----------------------------
|
||||
|
||||
To record a new expense, begin in the main :menuselection:`Expenses` app dashboard, which presents
|
||||
the default :guilabel:`My Expenses to Report` view. This view can also be accessed from
|
||||
:menuselection:`Expenses app --> My Expenses --> My Expenses to Report`.
|
||||
the default :guilabel:`My Expenses` view. This view can also be accessed from
|
||||
:menuselection:`Expenses app --> My Expenses --> My Expenses`.
|
||||
|
||||
First, click :guilabel:`Create`, and then fill out the various fields on the form.
|
||||
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:`Product`: Select the product from the drop-down menu that most closely corresponds to
|
||||
the expense. For example, an airplane ticket would be appropriate for an expense
|
||||
:guilabel:`Product` named :guilabel:`Air Travel`.
|
||||
- :guilabel:`Unit Price`: Enter the total amount paid for the expense in one of two ways:
|
||||
- :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, enter the cost in the :guilabel:`Unit Price`
|
||||
field, and leave the :guilabel:`Quantity` `1.00`.
|
||||
#. If the expense is for multiples of the same item/expense, enter the price *per unit* in the
|
||||
:guilabel:`Unit Price` field, and enter the *quantity of units* in the :guilabel:`Quantity`
|
||||
field.
|
||||
#. 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::
|
||||
In the case of a hotel stay, for example, the :guilabel:`Unit Price` would be set as the
|
||||
cost *per night*, and set the :guilabel:`Quantity` to the *number of nights* stayed.
|
||||
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:`Taxes`: If taxes were paid on the expense, select the tax percentage using the
|
||||
drop-down menu. Tax options are pre-configured based on the localization setting selected when the
|
||||
database was created. Adding any new taxes should only be done when necessary.
|
||||
- :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 selected, the :guilabel:`Total` value will update in real time to show the added
|
||||
taxes.
|
||||
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`.
|
||||
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:`Bill Reference`: If there is any reference text that should be included for the
|
||||
expense, enter it in this field.
|
||||
- :guilabel:`Account`: Select the expense account that this expense should be logged on from the
|
||||
drop-down menu.
|
||||
- :guilabel:`Employee`: Using the drop-down menu, select the employee this expense is for.
|
||||
- :guilabel:`Customer to Reinvoice`: If the expense is something that should be paid for by a
|
||||
customer, select the customer that will be invoiced for this expense from the drop-down menu. For
|
||||
example, if a customer wishes to have an on-site meeting, and agrees to pay for the expenses
|
||||
associated with it (such as travel, hotel, meals, etc.), then all expenses tied to that meeting
|
||||
would indicate that customer as the :guilabel:`Customer to Reinvoice`.
|
||||
- :guilabel:`Analytic Account`: Select the account the expense should be written against from the
|
||||
drop-down menu.
|
||||
- :guilabel:`Company`: If multiple companies are set-up, select the company this expense should be
|
||||
filed for from the drop-down menu. If there is only one company, this field will be automatically
|
||||
populated.
|
||||
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.
|
||||
|
||||
Once all the fields have been filled out, click :guilabel:`Save`.
|
||||
|
||||
.. image:: expenses/expense-filled-in.png
|
||||
:align: center
|
||||
:alt: A filled in expense form for a client lunch.
|
||||
@@ -144,23 +169,37 @@ Once all the fields have been filled out, click :guilabel:`Save`.
|
||||
Attach a receipt
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
After the expense is saved, the next step is to attach a receipt. A new :guilabel:`Attach Receipt`
|
||||
button appears after the entry is saved, beneath the former :guilabel:`Save` button (which turns
|
||||
into an :guilabel:`Edit` button).
|
||||
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/save-receipt.png
|
||||
.. image:: expenses/receipt-icon.png
|
||||
:align: center
|
||||
:alt: Attach a receipt after saving the record.
|
||||
:alt: Attach a receipt and it appears in the chatter.
|
||||
|
||||
Click the new :guilabel:`Attach Receipt` button, and a file explorer appears. Navigate to the
|
||||
receipt to be attached, and click :guilabel:`Open`. A new :guilabel:`Receipts` smart button appears
|
||||
at the top, and the new receipt is recorded in the chatter. More than one receipt can be attached to
|
||||
an individual expense, as needed. The number of receipts attached to the expense will be noted on
|
||||
the smart button.
|
||||
Create new expenses from a scanned receipt
|
||||
------------------------------------------
|
||||
|
||||
.. image:: expenses/receipt-smartbutton.png
|
||||
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: Attach a receipt after saving the record.
|
||||
: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
|
||||
-----------------------------------------------
|
||||
@@ -169,7 +208,7 @@ Instead of individually creating each expense in the *Expenses* app, expenses ca
|
||||
created by sending an email to an email alias.
|
||||
|
||||
To do so, first, an email alias needs to be configured. Go to :menuselection:`Expenses app -->
|
||||
Configuration --> Settings`. Ensure :guilabel:`Incoming Emails` is checked off.
|
||||
Configuration --> Settings`. Ensure :guilabel:`Incoming Emails` is enabled.
|
||||
|
||||
.. image:: expenses/email-alias.png
|
||||
:align: center
|
||||
@@ -182,36 +221,35 @@ Configuration --> Settings`. Ensure :guilabel:`Incoming Emails` is checked off.
|
||||
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, 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.
|
||||
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 product's internal reference, go to :menuselection:`Expenses app -->
|
||||
Configuration --> Expense Products`. If an internal reference is listed on the product, it is
|
||||
visible in this view as :guilabel:`(Ref###)`.
|
||||
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/internal-ref-numbers.png
|
||||
.. image:: expenses/ref.png
|
||||
:align: center
|
||||
:alt: Internal reference numbers are listed in the main Expense Products view.
|
||||
:alt: Internal reference numbers are listed in the main Expense Categories view.
|
||||
|
||||
To add an internal reference on an expense product, click on the product, then click
|
||||
:guilabel:`Edit`. In edit mode, enter the :guilabel:`Internal Reference` in the field. Beneath the
|
||||
:guilabel:`Internal Reference` field, this sentence appears: :guilabel:`Use this reference as a
|
||||
subject prefix when submitting by email.`.
|
||||
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/meals-internal-reference.png
|
||||
.. 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 :guilabel:`Employees` app, and refer to the :guilabel:`Work Email` in the main field.
|
||||
card in the :menuselection:`Employees` app, and refer to the :guilabel:`Work Email`
|
||||
|
||||
.. image:: expenses/authenticated-email-address.png
|
||||
:align: center
|
||||
@@ -219,55 +257,85 @@ subject prefix when submitting by email.`.
|
||||
|
||||
.. example::
|
||||
If submitting an expense via email for a $25.00 meal during a work trip, the email subject would
|
||||
be `Ref005 Meal $25.00`.
|
||||
be `FOOD $25.00`.
|
||||
|
||||
Explanation:
|
||||
|
||||
- The :guilabel:`Internal Reference` for the expense product `Meals` is `Ref005`
|
||||
- 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 to Report`.
|
||||
Expenses --> My Expenses`.
|
||||
|
||||
First, each individual expense for the report must be selected by clicking the check box next to
|
||||
each entry, or quickly select all the expenses in the list by clicking the check box next to
|
||||
:guilabel:`Expense Date`.
|
||||
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.
|
||||
|
||||
Once the expenses have been selected, click the :guilabel:`Create Report` button. The new report
|
||||
appears with all the expenses listed, and the number of documents is visible in the
|
||||
:guilabel:`Documents` smart button.
|
||||
.. 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.
|
||||
|
||||
It is recommended to add a short summary for each report to help keep expenses organized. Click the
|
||||
:guilabel:`Edit` button, and the :guilabel:`Expense Report Summary` field appears. Enter a short
|
||||
description for the expense report (such as `Client Trip NYC`, or `Repairs for Company Car`). Next,
|
||||
select a :guilabel:`Manager` from the drop-down menu to assign a manager to review the report.
|
||||
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. 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.
|
||||
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::
|
||||
:guilabel:`Add a line` only appears when the document is in edit mode. It does not appear
|
||||
otherwise.
|
||||
Expense reports can be created in one of three places:
|
||||
|
||||
When all edits have been completed, click :guilabel:`Save`.
|
||||
#. 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
|
||||
------------------------
|
||||
@@ -277,18 +345,21 @@ approval. Reports must be individually submitted, and cannot be submitted in bat
|
||||
specific report from the list of expense reports (if the report is not already open). To view all
|
||||
expense reports, go to :menuselection:`Expenses app --> My Expenses --> My Reports`.
|
||||
|
||||
If the list is large, grouping the results by status may be helpful since only reports that are in a
|
||||
:guilabel:`Draft` mode need to be submitted, reports with an :guilabel:`Approved` or
|
||||
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 far right. If the
|
||||
:guilabel:`Status` column is not visible, click the :guilabel:`⋮ (additional options)` icon at
|
||||
the end of the row, and check the box next to :guilabel:`Status`.
|
||||
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.
|
||||
@@ -304,16 +375,17 @@ Approve expenses
|
||||
|
||||
In Odoo, not just anyone can approve expense reports— only users with the necessary rights (or
|
||||
permissions) can. This means that a user must have at least *Team Approver* rights for the
|
||||
*Expenses* app. Employees with the necessary rights can review expense reports, and approve or
|
||||
reject them, as well as provide feedback thanks to the integrated communication tool.
|
||||
*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. In the
|
||||
:guilabel:`Access Rights` tab of a user's card in the :menuselection:`Settings` app, the
|
||||
:guilabel:`Administration` section is set to one of three options:
|
||||
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
|
||||
@@ -332,53 +404,75 @@ there are four options:
|
||||
- :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
|
||||
- :guilabel:`Administrator`: The user can view and approve any expense report, as well as access the
|
||||
reporting and configuration menus in the *Expenses* app.
|
||||
|
||||
Users who are able to approve expense reports (typically managers) can easily view all expense
|
||||
reports to validate. Go to :menuselection:`Expenses app --> Expense Reports --> Reports to
|
||||
Approve`. This view lists all the expense reports that have been submitted but not approved, as
|
||||
noted by the :guilabel:`Submitted` tag in the status column.
|
||||
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/reports-to-approve.png
|
||||
.. 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 reports in the list. Next, click on the :guilabel:`⚙️ Action (gear)` icon, then click
|
||||
:guilabel:`Approve Report`.
|
||||
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:`Refuse`, or :guilabel:`Reset to
|
||||
draft`. Click :guilabel:`Approve` to approve the report.
|
||||
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, then click :guilabel:`Refuse`.
|
||||
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:`Reports to Approve` view, click on :guilabel:`Filters`, then click :guilabel:`My Team`.
|
||||
This presents all the reports for the manager's team.
|
||||
: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.
|
||||
|
||||
.. note::
|
||||
If more information is needed, such as a receipt is missing, communication is easy from the
|
||||
chatter. In an individual report, simply type in a message, tagging the proper person (if
|
||||
needed), and post it to the chatter by clicking :guilabel:`Send`. The message is posted in the
|
||||
chatter, and the person tagged will be notified via email of the message, as well as anyone
|
||||
following.
|
||||
.. 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
|
||||
@@ -390,8 +484,9 @@ Post expenses in accounting
|
||||
===========================
|
||||
|
||||
Once an expense report is approved, the next step is to post the report to the accounting journal.
|
||||
To view all expense reports to post, go to :menuselection:`Expenses --> Expense Reports --> Reports
|
||||
To Post`.
|
||||
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
|
||||
@@ -400,23 +495,24 @@ To Post`.
|
||||
Just like approvals, expense reports can be posted in two ways (individually or several at once). To
|
||||
post multiple expense reports at once, remain in the list view. First, select the reports to post by
|
||||
clicking the check box next to each report, or click the box next to :guilabel:`Employee` to select
|
||||
all reports in the list. Next, click on the :guilabel:`⚙️ Action (gear)` icon, then click
|
||||
:guilabel:`Post Entries`.
|
||||
all the reports in the list. Next, click :guilabel:`Post Entries`.
|
||||
|
||||
.. image:: expenses/post-entries.png
|
||||
:align: center
|
||||
:alt: Post multiple reports from the Post Entries view.
|
||||
: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`, or :guilabel:`Refuse`. Click :guilabel:`Post Journal Entries` to post the report.
|
||||
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, then click :guilabel:`Refuse`. Refused reports
|
||||
can be viewed by going to :menuselection:`Expenses app --> Expense Reports --> All Reports`. This
|
||||
list shows all reports, including the refused ones.
|
||||
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.
|
||||
|
||||
.. note::
|
||||
.. important::
|
||||
To post expense reports to an accounting journal, the user must have following access rights:
|
||||
|
||||
- Accounting: Accountant or Adviser
|
||||
@@ -428,8 +524,8 @@ Reimburse employees
|
||||
===================
|
||||
|
||||
After an expense report is posted to an accounting journal, the next step is to reimburse the
|
||||
employee. To view all expense reports to pay, go to :menuselection:`Expenses --> Expense Reports -->
|
||||
Reports To Pay`.
|
||||
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
|
||||
@@ -438,99 +534,121 @@ Reports To Pay`.
|
||||
Just like approvals and posting, expense reports can be paid in two ways (individually or several at
|
||||
once). To pay multiple expense reports at once, remain in the list view. First, select the reports
|
||||
to pay by clicking the check box next to each report, or click the box next to :guilabel:`Employee`
|
||||
to select all reports in the list. Next, click on the :guilabel:`⚙️ Action (gear)` icon, then click
|
||||
:guilabel:`Register Payment`.
|
||||
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 clicking the checkboxes, clicking the gear, then post the entries.
|
||||
: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 report, then creating a sales order with the expensed
|
||||
items on it. Then, managers approve the expense report, and the accounting department posts the
|
||||
journal entries. Finally, the customer is invoiced.
|
||||
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 product. Go to :menuselection:`Expenses app -->
|
||||
Configuration --> Expense Products`. Click on the expense product to edit, then click
|
||||
:guilabel:`Edit`. Under the :guilabel:`Invoicing` section, select the :guilabel:`Invoicing Policy`
|
||||
and :guilabel:`Re-Invoicing Policy` by clicking the radio button next to the desired selection.
|
||||
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:`Invoicing Policy`:
|
||||
:guilabel:`Re-Invoicing Expenses`:
|
||||
|
||||
- :guilabel:`Ordered quantities`: Expense product will only invoice expenses based on the ordered
|
||||
quantity.
|
||||
- :guilabel:`Delivered quantities`: Expense product will only invoice expenses based on the
|
||||
delivered quantity.
|
||||
|
||||
:guilabel:`Re-Invoicing Policy`:
|
||||
|
||||
- :guilabel:`No`: Expense product will not be re-invoiced.
|
||||
- :guilabel:`At cost`: Expense product will invoice expenses at their real cost.
|
||||
- :guilabel:`At sales price`: Expense product will invoice the price set on the sale order.
|
||||
- :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 :guilabel:`Customer to Reinvoice` from the
|
||||
drop-down menu. Next, select the :guilabel:`Analytic Account` the expense will be posted to.
|
||||
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.
|
||||
|
||||
Create a quote and sales order
|
||||
------------------------------
|
||||
.. 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.
|
||||
|
||||
In the :menuselection:`Sales` app, create a quote for the customer being invoiced, listing the
|
||||
expense products. First, click :guilabel:`Create` to create a new quotation. Next, select the
|
||||
:guilabel:`Customer` being invoiced for the expenses from the drop-down menu.
|
||||
|
||||
In the :guilabel:`Order Lines` tab, click :guilabel:`Add a product`. In the :guilabel:`Product`
|
||||
field, select the first item being invoiced from the drop-down menu, or type in the product name.
|
||||
Then, update the :guilabel:`Quantity`, the :guilabel:`Delivered` quantity, and the :guilabel:`Unit
|
||||
Price` if needed. Repeat this for all products being invoiced. When all the products have been added
|
||||
to the quote, click :guilabel:`Confirm` and the quotation becomes a sales order.
|
||||
|
||||
.. image:: expenses/expenses-salesorder.png
|
||||
:align: center
|
||||
:alt: Create and confirm the sales order with the expenses listed as products.
|
||||
|
||||
Once the quote turns into a sales order, a :guilabel:`Delivered` column appears. The delivered
|
||||
quantity must be updated for each item. Click on the `0.000` field for each product, and enter the
|
||||
delivered quantity. When all delivered quantities have been entered, click :guilabel:`Save`.
|
||||
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 Account` is
|
||||
set on every expense line of a report. If an :guilabel:`Analytic Account` is missing, click
|
||||
:guilabel:`Edit` and select the correct account from the drop-down menu, then click
|
||||
:guilabel:`Approve` or :guilabel:`Refuse`.
|
||||
<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.
|
||||
<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 quote has turned into a sales order, and the expense report has been approved, it is time
|
||||
to invoice the customer. Go to :menuselection:`Sales app --> To Invoice --> Orders to Invoice` to
|
||||
view the sales orders ready to be invoiced.
|
||||
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)`.
|
||||
|
||||
Next, find the sales order related to the expense report, click into it, and then click
|
||||
:guilabel:`Create Invoice` and a :guilabel:`Create invoices` pop-up window appears. Select if the
|
||||
invoice is a :guilabel:`Regular invoice`, :guilabel:`Down payment (percentage)`, or :guilabel:`Down
|
||||
payment (fixed amount)` by clicking the radio button next to the selection. For either down payment
|
||||
options, enter the amount (fixed or percentage) in the :guilabel:`Down Payment Amount` field.
|
||||
Finally, click either :guilabel:`create and view invoice` or :guilabel:`create invoice`.
|
||||
.. 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.
|
||||
|
||||
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 8.6 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 7.8 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 8.0 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 9.0 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 7.2 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 6.3 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 7.7 KiB |
|
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 9.1 KiB |
|
Before Width: | Height: | Size: 8.3 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
@@ -107,8 +107,8 @@ available on Odoo.
|
||||
- Poland - Accounting
|
||||
- Portugal - Accounting
|
||||
- Romania - Accounting
|
||||
- Saudi Arabia - Accounting
|
||||
- Singapore - Accounting
|
||||
- :doc:`Saudi Arabia - Accounting <fiscal_localizations/saudi_arabia>`
|
||||
- :doc:`Singapore - Accounting <fiscal_localizations/singapore>`
|
||||
- Slovak - Accounting
|
||||
- Slovenian - Accounting
|
||||
- South Africa - Accounting
|
||||
@@ -124,7 +124,7 @@ available on Odoo.
|
||||
- United States - Accounting
|
||||
- Uruguay - Accounting
|
||||
- Venezuela - Accounting
|
||||
- Vietnam - Accounting
|
||||
- :doc:`Vietnam - Accounting <fiscal_localizations/vietnam>`
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
@@ -148,7 +148,10 @@ available on Odoo.
|
||||
fiscal_localizations/mexico
|
||||
fiscal_localizations/netherlands
|
||||
fiscal_localizations/peru
|
||||
fiscal_localizations/saudi_arabia
|
||||
fiscal_localizations/singapore
|
||||
fiscal_localizations/spain
|
||||
fiscal_localizations/switzerland
|
||||
fiscal_localizations/vietnam
|
||||
fiscal_localizations/united_arab_emirates
|
||||
fiscal_localizations/united_kingdom
|
||||
|
||||
@@ -2,75 +2,66 @@
|
||||
Australia
|
||||
=========
|
||||
|
||||
.. _australia/keypay:
|
||||
.. _australia/employment-hero:
|
||||
|
||||
KeyPay Australian Payroll
|
||||
=========================
|
||||
Employment Hero Australian Payroll
|
||||
==================================
|
||||
|
||||
The KeyPay Module synchronizes payslip accounting entries (e.g., expenses, social charges,
|
||||
liabilities, taxes) from KeyPay to Odoo automatically. Payroll administration is still done in
|
||||
KeyPay. We only record the journal entries in Odoo.
|
||||
The Employment Hero module synchronizes payslip accounting entries (e.g., expenses, social charges,
|
||||
liabilities, taxes) from Employment Hero to Odoo automatically. Payroll administration is still done
|
||||
in Employment Hero. We only record the journal entries in Odoo.
|
||||
|
||||
Configuration Steps
|
||||
-------------------
|
||||
.. important::
|
||||
KeyPay was rebranded as **Employment Hero** in March 2023.
|
||||
|
||||
#. Create a company located in Australia.
|
||||
#. Check that the Australian localization module (Australia - Accounting) is installed.
|
||||
#. Configure the *KeyPay API*.
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
.. image:: australia/australia-keypay-api.png
|
||||
:align: center
|
||||
:alt: Odoo Accounting settings includes a section for the Australian Loclization
|
||||
#. :ref:`Activate <general/install>` the :guilabel:`Employment Hero Australian Payroll` module
|
||||
(technical name: `l10n_au_keypay`).
|
||||
#. Configure the **Employment Hero API** by going to :menuselection:`Accounting --> Configuration -->
|
||||
Settings`. More fields become visible after clicking on :guilabel:`Enable Employment Hero
|
||||
Integration`.
|
||||
|
||||
#. More fields become visible after clicking on *Enable KeyPay Integration*.
|
||||
.. image:: australia/employment-hero-integration.png
|
||||
:alt: Enabling Employment Hero Integration in Odoo Accounting displays new fields in the
|
||||
settings
|
||||
|
||||
.. image:: australia/australia-keypay-integration.png
|
||||
:align: center
|
||||
:alt: Enabling KeyPay Integration in Odoo Accounting displays new fields in the settings
|
||||
- You can find the API Key in the :guilabel:`My Account` section of the Employment Hero platform.
|
||||
|
||||
#. You can find the API Key in the *My Account* section of the KeyPay platform.
|
||||
.. image:: australia/employment-hero-myaccount.png
|
||||
:alt: "Account Details" section on the Employment Hero dashboard
|
||||
|
||||
.. image:: australia/australia-keypay-myaccount.png
|
||||
:align: center
|
||||
:alt: "Account Details" section on the KeyPay dashboard
|
||||
- The **Payroll URL** is pre-filled with `https://keypay.yourpayroll.com.au`. *Please do not
|
||||
change it.*
|
||||
- You can find the **Business ID** in the Employment Hero URL. (i.e., `189241`)
|
||||
|
||||
#. The **Payroll URL** is pre-filled with ``https://keypay.yourpayroll.com.au``. *Please do not
|
||||
change it.*
|
||||
#. You can find the **Business ID** in the KeyPay URL. (i.e., ``189241``)
|
||||
.. image:: australia/employment-hero-business-id.png
|
||||
:alt: The Employment Hero "Business ID" number is in the URL
|
||||
|
||||
.. image:: australia/australia-keypay-business-id.png
|
||||
:align: center
|
||||
:alt: The KeyPay "Business ID" number is in the URL
|
||||
|
||||
#. You can choose any Odoo journal to post the payslip entries.
|
||||
- You can choose any Odoo journal to post the payslip entries.
|
||||
|
||||
How does the API work?
|
||||
----------------------
|
||||
|
||||
The API syncs the journal entries from KeyPay to Odoo and leaves them in draft mode. The reference
|
||||
includes the KeyPay payslip entry ID in brackets for the user to easily retrieve the same record in
|
||||
KeyPay and Odoo.
|
||||
The API syncs the journal entries from Employment Hero to Odoo and leaves them in draft mode. The
|
||||
reference includes the Employment Hero payslip entry ID in brackets for the user to easily retrieve
|
||||
the same record in Employment Hero and Odoo.
|
||||
|
||||
.. image:: australia/australia-keypay-journal-entry.png
|
||||
:align: center
|
||||
:alt: Example of a KeyPay Journal Entry in Odoo Accounting (Australia)
|
||||
.. image:: australia/employment-hero-journal-entry.png
|
||||
:alt: Example of a Employment Hero Journal Entry in Odoo Accounting (Australia)
|
||||
|
||||
.. note::
|
||||
The API sync is triggered by scheduled actions.
|
||||
By default, the synchronization happens once per week. You can fetch the records manually by going
|
||||
to :menuselection:`Accounting --> Configuration --> Settings` and, in the :guilabel:`Enable
|
||||
Employment Hero Integration` option, click on :guilabel:`Fetch Payruns Manually`.
|
||||
|
||||
.. image:: australia/australia-keypay-scheduled-actions.png
|
||||
:align: center
|
||||
:alt: Scheduled Actions settings for KeyPay Payroll in Odoo (debug mode)
|
||||
Employment Hero payslip entries also work based on double-entry bookkeeping.
|
||||
|
||||
KeyPay payslip entries also work based on double-entry bookkeeping. Debit must equal credit (like in
|
||||
Odoo).
|
||||
The accounts used by Employment Hero are defined in the section :guilabel:`Payroll settings`.
|
||||
|
||||
The accounts used by KeyPay are defined in the section **Payroll settings**.
|
||||
.. image:: australia/employment-hero-chart-of-accounts.png
|
||||
:alt: Chart of Accounts menu in Employment Hero
|
||||
|
||||
.. image:: australia/australia-keypay-chart-of-accounts.png
|
||||
:align: center
|
||||
:alt: Chart of Accounts menu in KeyPay
|
||||
|
||||
For the API to work, you need to create the same accounts as the default accounts of your KeyPay
|
||||
business (**same name and same code**) in Odoo. You also need to choose the correct account types in
|
||||
Odoo to generate accurate financial reports.
|
||||
For the API to work, you need to create the same accounts as the default accounts of your Employment
|
||||
Hero business (**same name and same code**) in Odoo. You also need to choose the correct account
|
||||
types in Odoo to generate accurate financial reports.
|
||||
|
||||
|
Before Width: | Height: | Size: 72 KiB |
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 83 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 59 KiB |
|
After Width: | Height: | Size: 28 KiB |
@@ -2,7 +2,274 @@
|
||||
Belgium
|
||||
=======
|
||||
|
||||
.. _belgium/introduction:
|
||||
.. _belgium/configuration:
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
Install the :guilabel:`🇧🇪 Belgium` :ref:`fiscal localization package
|
||||
<fiscal_localizations/packages>` to get all the default accounting features of the Belgian
|
||||
localization, following the :abbr:`IFRS(International Financial Reporting Standards)` rules.
|
||||
|
||||
:ref:`Install <general/install>` the :guilabel:`Belgium - Disallowed Expenses Data` module
|
||||
(`l10n_be_disallowed_expenses`) to manage :ref:`disallowed expenses <belgium/disallowed-expenses>`.
|
||||
|
||||
.. _belgium/coa:
|
||||
|
||||
Chart of accounts
|
||||
=================
|
||||
|
||||
You can reach the :guilabel:`Chart of accounts` by going to :menuselection:`Accounting -->
|
||||
Configuration --> Accounting: Chart of Accounts`.
|
||||
|
||||
The Belgian chart of accounts includes pre-configured accounts as described in the :abbr:`PCMN(Plan
|
||||
Comptable Minimum Normalisé)`. To add a new account, click :guilabel:`New`. A new line appears. Fill
|
||||
it in, click :guilabel:`Save`, and then :guilabel:`Setup` to configure it further.
|
||||
|
||||
.. seealso::
|
||||
:doc:`../accounting/get_started/chart_of_accounts`
|
||||
|
||||
.. _belgium/taxes:
|
||||
|
||||
Taxes
|
||||
=====
|
||||
|
||||
Default Belgian taxes are created automatically when the :guilabel:`Belgium - Accounting` and
|
||||
the :guilabel:`Belgium - Accounting Reports` modules are installed. Each tax impacts the Belgian
|
||||
:guilabel:`Tax Report`, available by going to :menuselection:`Accounting --> Reporting -->
|
||||
Statements Reports: Tax Report`.
|
||||
|
||||
In Belgium, the standard VAT rate is **21%**, but there are lower rates for some categories of goods
|
||||
and services. An intermediate rate of **12%** is applied on social housing and food served in
|
||||
restaurants, while a reduced rate of **6%** applies to most basic goods, such as food, water supply,
|
||||
books, and medicine. A **0%** rate applies to some exceptional goods and services, such as some
|
||||
daily and weekly publications, as well as recycled goods.
|
||||
|
||||
.. _belgium/non-deductible:
|
||||
|
||||
Non-deductible taxes
|
||||
--------------------
|
||||
|
||||
In Belgium, some taxes are not fully deductible, such as taxes on the maintenance of cars. This
|
||||
means a part of these taxes is considered as an expense.
|
||||
|
||||
In Odoo, you can configure non-deductible taxes by creating tax rules for these taxes and linking
|
||||
them to the corresponding accounts. This way, the system automatically calculates the taxes and
|
||||
allocates them to the appropriate accounts.
|
||||
|
||||
To configure a new non-deductible tax, go to :menuselection:`Accounting --> Configuration -->
|
||||
Accounting: Taxes`, and click :guilabel:`New`:
|
||||
|
||||
#. :guilabel:`Add a line` and select :guilabel:`Base` in the :guilabel:`Based On` column;
|
||||
#. :guilabel:`Add a line`, then select :guilabel:`on tax` in the :guilabel:`Based on` column and
|
||||
enter the **non-deductible** percentage in the :guilabel:`%` column;
|
||||
#. On the :guilabel:`of tax` line, select the :guilabel:`Tax Grid(s)` related to your tax;
|
||||
#. :guilabel:`Add a line` with the **deductible** percentage in the :guilabel:`%` column;
|
||||
#. Set :guilabel:`of tax` in :guilabel:`Based On`;
|
||||
#. Select :guilabel:`411000 VAT recoverable` as account, and select the related tax grid.
|
||||
|
||||
Once you have created a non-deductible tax, you can apply it to your transactions by selecting the
|
||||
appropriate tax during the encoding of bills and credit notes. The system automatically calculates
|
||||
the tax amount and allocates it to the corresponding accounts based on the tax rules configured.
|
||||
|
||||
.. example::
|
||||
With the Belgian localization, the **21% car** tax is created by default (50% non-deductible).
|
||||
|
||||
.. image:: belgium/deductible-tax.png
|
||||
:alt: Example of not-fully deductible tax
|
||||
|
||||
.. seealso::
|
||||
- :doc:`Taxes <../accounting/taxes>`
|
||||
- :doc:`../accounting/reporting/tax_returns`
|
||||
|
||||
.. _belgium/reports:
|
||||
|
||||
Reports
|
||||
=======
|
||||
|
||||
Here is the list of Belgian-specific reports available:
|
||||
|
||||
- Balance sheet;
|
||||
- Profit & loss;
|
||||
- Tax report;
|
||||
- Partner VAT Listing;
|
||||
- EC Sales List;
|
||||
- Intrastat.
|
||||
|
||||
You can access Belgian-specific versions of reports by clicking on the **book** icon when on a
|
||||
report and selecting its Belgian version: **(BE)**.
|
||||
|
||||
.. image:: belgium/belgian-reports.png
|
||||
:alt: Belgian version of reports
|
||||
|
||||
.. seealso::
|
||||
:doc:`../accounting/reporting`
|
||||
|
||||
.. _belgium/disallowed-expenses:
|
||||
|
||||
Disallowed expenses report
|
||||
--------------------------
|
||||
|
||||
**Disallowed expenses** are expenses that can be deducted from your accounting result but not from
|
||||
your fiscal result.
|
||||
|
||||
The **disallowed expenses report** is available by going to :menuselection:`Accounting --> Reporting
|
||||
--> Management: Disallowed Expenses`. It allows financial results in real-time, and periodic
|
||||
changes. This report is generated based on the **disallowed expenses categories** that you can reach
|
||||
by going to :menuselection:`Accounting --> Configuration --> Management: Disallowed Expenses
|
||||
Categories`. Some categories already exist by default but do not have any rates. Click on
|
||||
:guilabel:`Set Rates` to update a specific category.
|
||||
|
||||
.. tip::
|
||||
- You can add multiple rates for various dates. In that case, the rate used to calculate the
|
||||
expense depends on the date at which it is calculated, and the rate set for that date.
|
||||
- If you have the **Fleet** app installed, tick the :guilabel:`Car Category` box when applicable.
|
||||
This makes the vehicle mandatory while booking a vendor bill.
|
||||
|
||||
To link a disallowed expenses category with a specific account, go to :menuselection:`Accounting -->
|
||||
Configuration --> Acounting: Chart of Accounts`. Find the account you want, and click on
|
||||
:guilabel:`Setup`. Add the :guilabel:`Disallowed Expense category` in the :guilabel:`Disallowed
|
||||
Expenses` field. From now, when an expense is created with this account, the disallowed expense is
|
||||
calculated based on the rate mentioned in the :guilabel:`Disallowed Expense category`.
|
||||
|
||||
Let's take an example reflecting **restaurant** and **car expenses**.
|
||||
|
||||
.. _belgium/restaurant-expenses:
|
||||
|
||||
Restaurant expenses
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
In Belgium, 31% of **restaurant** expenses are non-deductible. Create a new **disallowed expenses
|
||||
category** and set both :guilabel:`Related Account(s)` and :guilabel:`Current Rate`.
|
||||
|
||||
.. image:: belgium/restaurant-expenses.png
|
||||
:alt: Disallowed expenses categories
|
||||
|
||||
.. _belgium/vehicle-split:
|
||||
|
||||
Car expenses: vehicle split
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
In Belgium, the deductible percentage varies from car to car and, therefore, should be indicated for
|
||||
each vehicle. To do so, open :menuselection:`Fleet` and select a vehicle. In the :guilabel:`Tax
|
||||
info` tab, go to the :guilabel:`Disallowed Expenses Rate` section and click on :guilabel:`Add a
|
||||
line`. Add a :guilabel:`Start Date` and a :guilabel:`%`. The amounts go in the same account for all
|
||||
car expenses.
|
||||
|
||||
When you create a bill for car expenses, you can link each expense to a specific car by filling the
|
||||
:guilabel:`Vehicle` column, so the right percentage is applied.
|
||||
|
||||
.. image:: belgium/car-bill.png
|
||||
:alt: Disallowed expenses categories
|
||||
|
||||
The :guilabel:`vehicle split` option available in the disallowed expenses report allows you to see
|
||||
the rate and disallowed amount for each car.
|
||||
|
||||
.. image:: belgium/vehicle-split.png
|
||||
:alt: Disallowed expenses categories
|
||||
|
||||
.. _belgium/forms:
|
||||
|
||||
Fee form 281.50 and form 325
|
||||
============================
|
||||
|
||||
.. _belgium/281.50:
|
||||
|
||||
Fee form 281.50
|
||||
---------------
|
||||
|
||||
Annually, a **281.50 fee form** must be reported to the fiscal authorities. To do so, the tag
|
||||
`281.50` must be added on the **contact form** of the entities concerned by the **281.50** fee. To
|
||||
add the tag, open :menuselection:`Contacts`, select the person or company you want to create a
|
||||
**281.50 fee form** for, and add the `281.50` tag in the :guilabel:`Tags` field.
|
||||
|
||||
.. image:: belgium/281-50.png
|
||||
:alt: add the tag 281.50 on a contact form
|
||||
|
||||
.. note::
|
||||
Make sure the **street, zip code, country**, and **VAT number** are also informed on the
|
||||
**Contact form**.
|
||||
|
||||
Then, depending on the nature of the expense, add the corresponding `281.50` tag on the impact
|
||||
accounts. To do so, go to :menuselection:`Accounting --> Configuration --> Accounting: Chart of
|
||||
Accounts`, and click on :guilabel:`Setup` to add the corresponding `281.50` tag on the impacted
|
||||
accounts, i.e., :guilabel:`281.50 - Commissions`, depending on the nature of the expense.
|
||||
|
||||
.. _belgium/325:
|
||||
|
||||
Form 325
|
||||
--------
|
||||
|
||||
You can create a **325 form** by going to :menuselection:`Accounting --> Reporting --> Belgium:
|
||||
Create 325 form`. A new page pops up: select the right options and click :guilabel:`Generate 325
|
||||
form`. To open an already generated **325 form**, go to :menuselection:`Accounting --> Reporting -->
|
||||
Belgium: Open 325 forms`.
|
||||
|
||||
.. image:: belgium/325-form.png
|
||||
:alt: Add the tag 281-50 on a contact form
|
||||
|
||||
.. _belgium/coda-soda:
|
||||
|
||||
CODA and SODA statements
|
||||
========================
|
||||
|
||||
.. _belgium/coda:
|
||||
|
||||
CODA
|
||||
----
|
||||
|
||||
**CODA** is an electronic XML format used to import Belgian bank statements. You can download CODA
|
||||
files from your bank and import them directly into Odoo by clicking :guilabel:`Import Statement`
|
||||
from your :guilabel:`Bank` journal on your dashboard.
|
||||
|
||||
.. image:: belgium/coda-import.png
|
||||
:alt: Import CODA files
|
||||
|
||||
.. seealso::
|
||||
:ref:`Import bank statements files <transactions/import>`
|
||||
|
||||
.. _belgium/soda:
|
||||
|
||||
SODA
|
||||
----
|
||||
|
||||
**SODA** is an electronic XML format used to import accounting entries related to salaries. SODA
|
||||
files can be imported into the journal you use to record salaries by going to your Accounting
|
||||
**dashboard** and clicking :guilabel:`Upload` in the related journal card form.
|
||||
|
||||
Once your **SODA** files are imported, the entries are created automatically in your 'salary'
|
||||
journal.
|
||||
|
||||
.. image:: belgium/soda-import.png
|
||||
:alt: Import SODA files
|
||||
|
||||
.. _belgium/einvoicing:
|
||||
|
||||
Electronic invoicing
|
||||
====================
|
||||
|
||||
Odoo supports the **Peppol BIS Billing 3.0 (UBL)** electronic invoicing format. To enable it for a
|
||||
customer, go to :menuselection:`Accounting --> Customers --> Customers`, open their contact form,
|
||||
and under the :guilabel:`Accounting` tab, select the :guilabel:`Peppol BIS Billing 3.0` format.
|
||||
|
||||
.. seealso::
|
||||
:doc:`../accounting/customer_invoices/electronic_invoicing`
|
||||
|
||||
.. _belgium/cash-discount:
|
||||
|
||||
Cash discount
|
||||
=============
|
||||
|
||||
In Belgium, if an early payment discount is offered on an invoice, the tax is calculated based on
|
||||
the discounted total amount, whether the customer benefits from the discount or not.
|
||||
|
||||
To apply the right tax amount and report it correctly in your VAT return, set the tax reduction as
|
||||
:guilabel:`Always (upon invoice)`.
|
||||
|
||||
.. seealso::
|
||||
:doc:`../accounting/customer_invoices/cash_discounts`
|
||||
|
||||
.. _belgium/pos-restaurant-certification:
|
||||
|
||||
Fiscal certification: POS restaurant
|
||||
====================================
|
||||
@@ -12,14 +279,14 @@ use a government-certified **Cash Register System** for their receipts. This app
|
||||
earnings (excluding VAT, drinks, and take-away food) exceed 25,000 euros.
|
||||
|
||||
This government-certified system entails the use of a :ref:`certified POS system
|
||||
<belgium/certified>`, along with a device called a :ref:`Fiscal Data Module <belgium/fdm>` (or
|
||||
<belgium/certified-pos>`, along with a device called a :ref:`Fiscal Data Module <belgium/fdm>` (or
|
||||
**black box**) and a :ref:`VAT Signing Card <belgium/vat>`.
|
||||
|
||||
.. important::
|
||||
Do not forget to register as *foodservice industry manager* on the `Federal Public Service
|
||||
Finance registration form <https://www.systemedecaisseenregistreuse.be/fr/enregistrement>`_.
|
||||
|
||||
.. _belgium/certified:
|
||||
.. _belgium/certified-pos:
|
||||
|
||||
Certified POS system
|
||||
--------------------
|
||||
@@ -121,7 +388,6 @@ As a pre-requisite, :ref:`activate <general/install>` the `Belgian Registered Ca
|
||||
(technical name: `pos_blackbox_be`).
|
||||
|
||||
.. image:: belgium/be-modules.png
|
||||
:align: center
|
||||
:alt: black box modules for belgian fiscal certification
|
||||
|
||||
Once the module is activated, add your VAT number to your company information. To set it up, go to
|
||||
@@ -131,7 +397,6 @@ so, go to the :guilabel:`Employees` app and open an employee form. There, go to
|
||||
settings tab --> Attendance/Point of Sale`, and fill in the :guilabel:`INSZ or BIS number` field.
|
||||
|
||||
.. image:: belgium/bis-number.png
|
||||
:align: center
|
||||
:alt: ISNZ or BIS number field on employee form
|
||||
|
||||
.. tip::
|
||||
@@ -160,7 +425,6 @@ database. To verify that the IoT Box recognizes the FDM, go to the IoT homepage
|
||||
:guilabel:`IOT Device` section, which should display the FDM.
|
||||
|
||||
.. image:: belgium/iot-devices.png
|
||||
:align: center
|
||||
:alt: Hardware status page on a registered IoT Box
|
||||
|
||||
Then, add the IoT to your POS. To do so, go to :menuselection:`Point of Sale --> Configuration -->
|
||||
|
||||
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 6.0 KiB |
|
After Width: | Height: | Size: 5.7 KiB |
|
After Width: | Height: | Size: 37 KiB |