Compare commits
1 Commits
pipu-odoo-
...
16.0-accou
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d7cdf0d5ba |
@@ -51,6 +51,11 @@ file_filter = locale/<lang>/LC_MESSAGES/services.po
|
||||
source_file = locale/sources/services.pot
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-16-doc:r:theme]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/sphinx.po
|
||||
source_file = locale/sources/sphinx.pot
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-16-doc:r:user_settings]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/settings.po
|
||||
source_file = locale/sources/settings.pot
|
||||
|
||||
2
Makefile
@@ -85,4 +85,4 @@ static: $(HTML_BUILD_DIR)/_static/style.css
|
||||
cp -r static/* $(HTML_BUILD_DIR)/_static/
|
||||
|
||||
test:
|
||||
@python tests/main.py $(SOURCE_DIR)/administration $(SOURCE_DIR)/applications $(SOURCE_DIR)/contributing $(SOURCE_DIR)/developer $(SOURCE_DIR)/services redirects
|
||||
python tests/rst_style.py $(SOURCE_DIR)
|
||||
|
||||
12
conf.py
@@ -213,8 +213,6 @@ sphinx.transforms.i18n.docname_to_domain = (
|
||||
# is populated. If a version is passed to `versions` but is not listed here, it will not be shown.
|
||||
versions_names = {
|
||||
'master': "Master",
|
||||
'saas-16.2': "Odoo Online",
|
||||
'saas-16.1': "Odoo Online",
|
||||
'16.0': "Odoo 16",
|
||||
'saas-15.2': "Odoo Online",
|
||||
'15.0': "Odoo 15",
|
||||
@@ -320,12 +318,6 @@ latex_documents = [
|
||||
'odoo_partnership_agreement_es.tex', 'Odoo Partnership Agreement (ES)', '', 'howto'),
|
||||
]
|
||||
|
||||
# List of languages that have legal translations (excluding EN). The keys must be in
|
||||
# `languages_names`. These translations will have a link to their versions of the legal
|
||||
# contracts, instead of the default EN one. The main legal documents are not part of the
|
||||
# translations since they have legal meaning.
|
||||
legal_translations = ['de', 'es', 'fr', 'nl']
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top of the title page.
|
||||
latex_logo = 'static/img/odoo_logo.png'
|
||||
|
||||
@@ -454,10 +446,6 @@ def _generate_alternate_urls(app, pagename, templatename, context, doctree):
|
||||
)
|
||||
)
|
||||
|
||||
# Dynamic generation of localized legal doc links
|
||||
context['legal_translations'] = legal_translations
|
||||
|
||||
|
||||
def _build_url(_version=None, _lang=None):
|
||||
if app.config.is_remote_build:
|
||||
# Project root like https://www.odoo.com/documentation
|
||||
|
||||
@@ -1,109 +1,80 @@
|
||||
=======================================
|
||||
Set up a content delivery network (CDN)
|
||||
=======================================
|
||||
===========================================
|
||||
Setting up a Content Delivery Network (CDN)
|
||||
===========================================
|
||||
|
||||
.. _reference/cdn/keycdn:
|
||||
|
||||
Deploying with KeyCDN
|
||||
=====================
|
||||
Deploying with KeyCDN_
|
||||
======================
|
||||
|
||||
A :abbr:`CDN (Content Delivery Network)` or *content distribution network*, is a geographically
|
||||
distributed network of servers that provides high speed internet content. The :abbr:`CDN (Content
|
||||
Delivery Network)` provides quick, high-quality content delivery for content-heavy websites.
|
||||
.. sectionauthor:: Fabien Meghazi
|
||||
|
||||
This document will guide you through the setup of a KeyCDN_ account with an Odoo powered website.
|
||||
This document will guide you through the setup of a KeyCDN_ account with your
|
||||
Odoo powered website.
|
||||
|
||||
Create a pull zone in the KeyCDN dashboard
|
||||
------------------------------------------
|
||||
Step 1: Create a pull zone in the KeyCDN dashboard
|
||||
--------------------------------------------------
|
||||
|
||||
On the KeyCDN dashboard, start by navigating to the :menuselection:`Zones` menu item on the left. On
|
||||
the form, give a value to the :guilabel:`Zone Name`, which will appear as part of the :abbr:`CDN
|
||||
(Content Delivery Network)`'s :abbr:`URL (Uniform Resource Locator)`. Then, set the :guilabel:`Zone
|
||||
Status` to :guilabel:`active` to engage the zone. For the :guilabel:`Zone Type` set the value to
|
||||
:guilabel:`Pull`, and then, finally, under the :guilabel:`Pull Settings`, enter the
|
||||
:guilabel:`Origin URL`— this address should be the full Odoo database :abbr:`URL (Uniform Resource
|
||||
Locator)`.
|
||||
.. image:: cdn/keycdn_create_a_pull_zone.png
|
||||
:class: img-fluid
|
||||
|
||||
.. example::
|
||||
Use ``https://yourdatabase.odoo.com`` and replace the *yourdatabase* subdomain prefix with the
|
||||
actual name of the database. A custom :abbr:`URL (Uniform Resource Locator)` can be used, as
|
||||
well, in place of the Odoo subdomain that was provided to the database.
|
||||
When creating the zone, enable the CORS option in the
|
||||
:guilabel:`advanced features` submenu. (more on that later)
|
||||
|
||||
.. image:: cdn/keycdn-zone.png
|
||||
:align: center
|
||||
:alt: KeyCDN's Zone configuration page.
|
||||
.. image:: cdn/keycdn_enable_CORS.png
|
||||
:class: img-fluid
|
||||
|
||||
Under the :guilabel:`General Settings` heading below the zone form, click the :guilabel:`Show all
|
||||
settings` button to expand the zone options. This should be the last option on the page. After
|
||||
expanding the :guilabel:`General Settings` ensure that the :guilabel:`CORS` option is
|
||||
:guilabel:`enabled`.
|
||||
Once done, you'll have to wait a bit while KeyCDN_ is crawling your website.
|
||||
|
||||
Next, scroll to the bottom of the zone configuration page and :guilabel:`Save` the changes. KeyCDN
|
||||
will indicate that the new zone will be deployed. This can take about 10 minutes.
|
||||
.. image:: cdn/keycdn_progressbar.png
|
||||
:class: img-fluid
|
||||
|
||||
.. image:: cdn/zone-url.png
|
||||
:align: center
|
||||
:alt: KeyCDN deploying the new Zone.
|
||||
.. note:: a new URL has been generated for your Zone, in this case it is
|
||||
``http://pulltest-b49.kxcdn.com``
|
||||
|
||||
.. note::
|
||||
A new :guilabel:`Zone URL` has been generated for your Zone, in this example it is
|
||||
``pulltest-xxxxx.kxcdn.com``. This value will differ for each database.
|
||||
Step 2: Configure the odoo instance with your zone
|
||||
--------------------------------------------------
|
||||
|
||||
Copy this :guilabel:`Zone URL` to a text editor for later, as it will be used in the next steps.
|
||||
In the Odoo back end, go to the :guilabel:`Website Settings`: menu, then
|
||||
activate the CDN support and copy/paste your zone URL in the
|
||||
:guilabel:`CDN Base URL` field. This field is only visible and configurable if
|
||||
you have developer mode activated.
|
||||
|
||||
Configure the Odoo instance with the new zone
|
||||
---------------------------------------------
|
||||
.. image:: cdn/odoo_cdn_base_url.png
|
||||
:class: img-fluid
|
||||
|
||||
In the Odoo :guilabel:`Website` app, go to the :menuselection:`Settings` and then activate the
|
||||
:guilabel:`Content Delivery Network (CDN)` setting and copy/paste the :guilabel:`Zone URL` value
|
||||
from the earlier step into the :guilabel:`CDN Base URL` field. This field is only visible and
|
||||
configurable when :doc:`Developer Mode <../../applications/general/developer_mode>` is activated.
|
||||
Now your website is using the CDN for the resources matching the
|
||||
:guilabel:`CDN filters` regular expressions.
|
||||
|
||||
.. note::
|
||||
Ensure that there are two *forward slashes* (`//`) before the :guilabel:`CDN Base URL` and one
|
||||
forward slash (`/`) after the :guilabel:`CDN Base URL`.
|
||||
You can have a look to the HTML of your website in order to check if the CDN
|
||||
integration is properly working.
|
||||
|
||||
:guilabel:`Save` the settings when complete.
|
||||
.. image:: cdn/odoo_check_your_html.png
|
||||
:class: img-fluid
|
||||
|
||||
.. image:: cdn/cdn-base-url.png
|
||||
:align: center
|
||||
:alt: Activate the CDN setting in Odoo.
|
||||
|
||||
Now the website is using the CDN for the resources matching the :guilabel:`CDN filters` regular
|
||||
expressions.
|
||||
Why should I activate CORS?
|
||||
---------------------------
|
||||
|
||||
In the HTML of the Odoo website, the :abbr:`CDN (content delivery network)` integration is evidenced
|
||||
as working properly by checking the :abbr:`URL (Uniform Resource Locators)` of images. The *CDN Base
|
||||
URL* value can be seen by using your web browser's :guilabel:`Inspect` feature on the Odoo website.
|
||||
Look for it's record by searching within the :guilabel:`Network` tab inside of devtools.
|
||||
A security restriction in some browsers (Firefox and Chrome at time of writing)
|
||||
prevents a remotely linked CSS file to fetch relative resources on this same
|
||||
external server.
|
||||
|
||||
.. image:: cdn/test-pull.png
|
||||
:align: center
|
||||
:alt: The CDN Base URL can be seen using the inspect function on the Odoo website.
|
||||
If you don't activate the CORS option in the CDN zone, the more obvious
|
||||
resulting problem on a default Odoo website will be the lack of font-awesome
|
||||
icons because the font file declared in the font-awesome CSS won't be loaded on
|
||||
the remote server.
|
||||
|
||||
Prevent security issues by activating cross-origin resource sharing (CORS)
|
||||
--------------------------------------------------------------------------
|
||||
Here's what you would see on your homepage in such a case:
|
||||
|
||||
A security restriction in some browsers (such as Mozilla Firefox and Google Chrome) prevents a
|
||||
remotely linked CSS file to fetch relative resources on this same external server.
|
||||
.. image:: cdn/odoo_font_file_not_loaded.png
|
||||
:class: img-fluid
|
||||
|
||||
If the :abbr:`CORS (Cross-Origin Resource Sharing)` option isn't enabled in the :guilabel:`CDN
|
||||
Zone`, the more obvious resulting problem on a standard Odoo website will be the lack of *Font
|
||||
Awesome* icons because the font file declared in the *Font Awesome* CSS won't be loaded from the
|
||||
remote server.
|
||||
A security error message will also appear in the browser's console:
|
||||
|
||||
When these cross-origin resource issues occur, a security error message similar to the output
|
||||
below will appear in the web browser's developer console:
|
||||
.. image:: cdn/odoo_security_message.png
|
||||
:class: img-fluid
|
||||
|
||||
``Font from origin 'http://pulltest-xxxxx.kxcdn.com' has been blocked from loading /shop:1 by
|
||||
Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin' header is present on the
|
||||
requested resource. Origin 'http://yourdatabase.odoo.com' is therefore not allowed access.``
|
||||
|
||||
.. image:: cdn/odoo-security-message.png
|
||||
:align: center
|
||||
:alt: Error message populated in the browser console.
|
||||
|
||||
Enabling the :abbr:`CORS (Cross-Origin Resource Sharing)` option in the :abbr:`CDN (Content Delivery
|
||||
Network)` settings fixes this issue.
|
||||
Enabling the CORS option in the CDN fixes this issue.
|
||||
|
||||
.. _KeyCDN: https://www.keycdn.com
|
||||
|
||||
|
Before Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 64 KiB |
BIN
content/administration/install/cdn/keycdn_create_a_pull_zone.png
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
content/administration/install/cdn/keycdn_enable_CORS.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
content/administration/install/cdn/keycdn_progressbar.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 7.8 KiB |
BIN
content/administration/install/cdn/odoo_cdn_base_url.png
Normal file
|
After Width: | Height: | Size: 9.8 KiB |
BIN
content/administration/install/cdn/odoo_check_your_html.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
content/administration/install/cdn/odoo_font_file_not_loaded.png
Normal file
|
After Width: | Height: | Size: 6.3 KiB |
BIN
content/administration/install/cdn/odoo_security_message.png
Normal file
|
After Width: | Height: | Size: 7.2 KiB |
|
Before Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 28 KiB |
@@ -161,9 +161,9 @@ Then, create a new email server and check the box for :guilabel:`Outlook`. Next,
|
||||
:guilabel:`Name` (it can be anything) and the Microsoft Outlook email :guilabel:`Username`.
|
||||
|
||||
If the :guilabel:`From Filter` field is empty, enter either a :ref:`domain or email address
|
||||
<email_communication/default>`.
|
||||
<email_communication/default_from>`.
|
||||
|
||||
Then, click on :guilabel:`Connect your Outlook account`.
|
||||
Then, cick on :guilabel:`Connect your Outlook account`.
|
||||
|
||||
A new window from Microsoft opens to complete the :guilabel:`authorization process`. Select the
|
||||
appropriate email address that is being configured in Odoo.
|
||||
|
||||
@@ -201,7 +201,7 @@ Connection`.
|
||||
#. The :guilabel:`From Filter` needs to be set on the server configuration. It is recommended
|
||||
to set it as a domain and not a full email address. It should match the domain in the two
|
||||
proceeding steps. More information can be referenced :ref:`here
|
||||
<email_communication/from_filter>`.
|
||||
<email_servers/outgoing-email-server>`.
|
||||
#. The :guilabel:`mail.default.from` system parameter must have the value
|
||||
`notifications\@yourdomain.com`.
|
||||
#. The :guilabel:`mail.default.from_filter` system parameter must have the value
|
||||
|
||||
@@ -3,22 +3,20 @@ 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`.
|
||||
<https://www.odoo.com/my/databases>`_ by clicking on the user icon, then on *My Databases*.
|
||||
|
||||
.. image:: odoo_online/my-databases.png
|
||||
:align: center
|
||||
:alt: Clicking on the user icon opens a drop-down menu. "My databases" button is highlighted.
|
||||
|
||||
.. note::
|
||||
Make sure to connect as the administrator of the database that changes will be made on.
|
||||
Make sure you are connected as the administrator of the database you want to manage.
|
||||
|
||||
.. 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.
|
||||
Open the drop-down menu next to the database you want to manage by clicking on the gear icon.
|
||||
|
||||
Several actions are available:
|
||||
|
||||
@@ -37,22 +35,22 @@ 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).
|
||||
If you are *not* on the latest **Online version**, you should receive an invitation to :doc:`upgrade
|
||||
<../upgrade>` your database. A **Rolling Release button** on your database's main screen proposes an
|
||||
upgrade to the latest version (e.g., 13.0 to 15.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
|
||||
- | **If your Odoo database's version is lower than the latest major release:**
|
||||
| You must upgrade your database 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
|
||||
- | **If your Odoo database's version is equal to or higher than the latest major release:**
|
||||
| You can disregard the invitation to upgrade as you 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.
|
||||
security issues. We recommend you initiate the upgrade of the database yourself, as this method
|
||||
allows you to request a test upgrade of your database to check for any discrepancies.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`../upgrade`
|
||||
@@ -63,12 +61,12 @@ database's main screen proposes an upgrade to the latest version (e.g., 14.0 to
|
||||
Duplicate
|
||||
=========
|
||||
|
||||
This allows to make an exact copy of the database to be able to perform testing without compromising
|
||||
the daily operations.
|
||||
Make an exact copy of the database to be able to perform testing without compromising the 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.
|
||||
- By checking *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.
|
||||
|
||||
.. _odoo_online/rename:
|
||||
@@ -83,7 +81,7 @@ Rename the database and its URL.
|
||||
Download
|
||||
========
|
||||
|
||||
Instantly download a ZIP file with a backup of the database.
|
||||
Download instantly a ZIP file with a backup of the database.
|
||||
|
||||
.. note::
|
||||
Databases are backed up daily according to the `Odoo Cloud SLA
|
||||
@@ -117,8 +115,8 @@ Delete a database instantly.
|
||||
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.
|
||||
|
||||
Carefully read the warning message that pops up and proceed only if the implications of deleting a
|
||||
database are fully understood:
|
||||
Read carefully the warning message that pops up and proceed only if you fully understand the
|
||||
implications of deleting a database:
|
||||
|
||||
.. image:: odoo_online/delete.png
|
||||
:align: center
|
||||
@@ -129,6 +127,7 @@ database are fully understood:
|
||||
- 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>`_.
|
||||
- To delete your account, please get in touch with `Odoo Support <https://www.odoo.com/help>`_.
|
||||
|
||||
.. _odoo_online/contact-support:
|
||||
|
||||
@@ -143,15 +142,14 @@ pre-filled.
|
||||
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 email address of the new user and click on *Invite*. To add multiple
|
||||
users, click on *Add more users*.
|
||||
|
||||
.. image:: odoo_online/invite-users.png
|
||||
:align: center
|
||||
:alt: Clicking on "Add more users" adds additional email fields.
|
||||
|
||||
To remove users, select the users to remove and click on :guilabel:`Remove`.
|
||||
To remove users, select the users to remove and click on *Remove*.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`/applications/general/users/manage_users`
|
||||
- :doc:`/applications/general/users/delete_account`
|
||||
|
||||
@@ -26,13 +26,9 @@ This matrix shows the support status of every version.
|
||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
||||
| | Odoo Online | Odoo.sh | On-Premise | Release date | End of support |
|
||||
+=================+=============+==========+=============+================+========================+
|
||||
| Odoo saas~16.2 | |green| | N/A | N/A | March 2023 | June 2023 (planned) |
|
||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
||||
| Odoo saas~16.1 | |green| | N/A | N/A | February 2023 | April 2023 |
|
||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
||||
| **Odoo 16.0** | |green| | |green| | |green| | October 2022 | October 2025 (planned) |
|
||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
||||
| Odoo saas~15.2 | |red| | N/A | N/A | March 2022 | January 2023 |
|
||||
| Odoo saas~15.2 | |green| | N/A | N/A | March 2022 | January 2023 |
|
||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
||||
| Odoo saas~15.1 | |red| | N/A | N/A | February 2022 | July 2022 |
|
||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
||||
|
||||
@@ -9,5 +9,5 @@ Bank and cash
|
||||
|
||||
bank/setup
|
||||
bank/feeds
|
||||
bank/misc
|
||||
bank/reconciliation
|
||||
bank/interbank
|
||||
|
||||
@@ -7,7 +7,7 @@ Bank feeds
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
feeds/transactions
|
||||
feeds/bank_statements
|
||||
feeds/bank_synchronization
|
||||
feeds/ponto
|
||||
feeds/saltedge
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
===============
|
||||
Bank statements
|
||||
===============
|
||||
|
||||
Importing your bank statements allows you to keep track of your bank account transactions and
|
||||
reconcile them with the ones recorded in Odoo.
|
||||
|
||||
We recommend using :doc:`the bank synchronization feature <bank_synchronization>` for more
|
||||
efficiency. However, if you do not want to use it or if your bank is not yet supported, other
|
||||
options exist:
|
||||
|
||||
- Import the bank statement files delivered by your bank;
|
||||
- Register the bank statements manually.
|
||||
|
||||
Import bank statements files
|
||||
============================
|
||||
|
||||
Odoo supports multiple file formats to import bank statements:
|
||||
|
||||
- SEPA recommended Cash Management format (CAMT.053);
|
||||
- Comma-separated values (.CSV);
|
||||
- Open Financial Exchange (.OFX);
|
||||
- Quicken Interchange Format (.QIF);
|
||||
- Belgium: Coded Statement of Account (.CODA).
|
||||
|
||||
To import a file, go to the Accounting dashboard and click on :guilabel:`Import (Statements)` under
|
||||
the :guilabel:`Bank` window, or click on the drop-down menu (:guilabel:`⋮`) button and then on
|
||||
:guilabel:`Import Statement`.
|
||||
|
||||
.. image:: bank_statements/bank-overview.png
|
||||
:align: center
|
||||
:alt: Import a bank statement file in Odoo Accounting
|
||||
|
||||
Next, select the file you want to import and click on :guilabel:`Upload`.
|
||||
|
||||
Once the file uploaded, the **import widget** helps you set formatting options and **map** the
|
||||
different columns you want to import. You also can :guilabel:`test` the bank statement file before
|
||||
importing it to your database.
|
||||
|
||||
.. image:: bank_statements/import-bank-statement.png
|
||||
:align: center
|
||||
:alt: Register bank statements manually in Odoo Accounting
|
||||
|
||||
Register bank statements manually
|
||||
=================================
|
||||
|
||||
If needed, you can also record your bank statements manually. To do so, go to the
|
||||
:guilabel:`Accounting dashboard` and click on the :guilabel:`Create Statements` under the
|
||||
:guilabel:`Bank` window. Alternatively, you can click the drop-down menu (:guilabel:`⋮`) button, and
|
||||
then :guilabel:`New Statement`.
|
||||
|
||||
To ease the reconciliation process, make sure to fill out the :guilabel:`Partner` field. You can
|
||||
also type in the payments’ references in the :guilabel:`Label` field. Add a new line for each
|
||||
transaction written on the original bank statement.
|
||||
|
||||
.. image:: bank_statements/bank-statements-03.png
|
||||
:align: center
|
||||
:alt: Register bank statements manually in Odoo Accounting
|
||||
|
||||
.. note::
|
||||
The **Ending Balance** and the **Computed Balance** should have the same amount. If this is not
|
||||
the case, make sure there are no mistakes in the transactions’ amounts.
|
||||
|
After Width: | Height: | Size: 5.4 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 18 KiB |
@@ -197,6 +197,6 @@ Configuration --> Accounting: Online Synchronization`,open the connection you wa
|
||||
credentials and click on the :guilabel:`Update Credentials` button.
|
||||
|
||||
.. seealso::
|
||||
* :doc:`transactions`
|
||||
* :doc:`bank_statements`
|
||||
* :doc:`ponto`
|
||||
* :doc:`saltedge`
|
||||
|
||||
@@ -121,4 +121,4 @@ and we advise you to contact Ponto directly.
|
||||
|
||||
* :doc:`bank_synchronization`
|
||||
* :doc:`saltedge`
|
||||
* :doc:`transactions`
|
||||
* :doc:`bank_statements`
|
||||
|
||||
@@ -108,4 +108,4 @@ and this synchronization was created with Odoo, you will normally be able to fin
|
||||
|
||||
* :doc:`bank_synchronization`
|
||||
* :doc:`ponto`
|
||||
* :doc:`transactions`
|
||||
* :doc:`bank_statements`
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
============
|
||||
Transactions
|
||||
============
|
||||
|
||||
Importing transactions from your bank statements allows keeping track of bank account transactions
|
||||
and reconciling them with the ones recorded in your accounting.
|
||||
|
||||
:doc:`Bank synchronization <bank_synchronization>` automates the process. However, if you do not
|
||||
want to use it or if your bank is not yet supported, other options exist:
|
||||
|
||||
- :ref:`Import bank transactions <import-statements>` delivered by your bank;
|
||||
- :ref:`Register bank transactions <register-transactions>` manually.
|
||||
|
||||
.. _import-statements:
|
||||
|
||||
Import transactions
|
||||
===================
|
||||
|
||||
Odoo supports multiple file formats to import transactions:
|
||||
|
||||
- SEPA recommended Cash Management format (CAMT.053);
|
||||
- Comma-separated values (.CSV);
|
||||
- Open Financial Exchange (.OFX);
|
||||
- Quicken Interchange Format (.QIF);
|
||||
- Belgium: Coded Statement of Account (.CODA).
|
||||
|
||||
To import a file, go to the :guilabel:`Accounting Dashboard`, and in the :guilabel:`Bank` journal,
|
||||
click on :guilabel:`Import Transactions`.
|
||||
|
||||
.. image:: transactions/import-transactions.png
|
||||
:align: center
|
||||
:alt: Import bank transactions from bank journal
|
||||
|
||||
Next, select the file and upload it.
|
||||
|
||||
After setting the necessary formatting options and mapping the needed columns, you can run a
|
||||
:guilabel:`Test` and :guilabel:`Import` your bank transactions.
|
||||
|
||||
.. _register-transactions:
|
||||
|
||||
Register bank transactions manually
|
||||
===================================
|
||||
|
||||
You can also record your bank transactions manually. To do so, go to :guilabel:`Accounting
|
||||
Dashboard`, click on the :guilabel:`Bank` journal, and then on :guilabel:`New`. Make sure to fill
|
||||
out the :guilabel:`Partner` and :guilabel:`Label` fields to ease the reconciliation process.
|
||||
|
Before Width: | Height: | Size: 6.2 KiB |
10
content/applications/finance/accounting/bank/misc.rst
Normal file
@@ -0,0 +1,10 @@
|
||||
:nosearch:
|
||||
|
||||
=============
|
||||
Miscellaneous
|
||||
=============
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
misc/interbank
|
||||
@@ -15,8 +15,8 @@ Settings` and then under the :guilabel:`Default Accounts` section.
|
||||
|
||||
.. note::
|
||||
At least two bank accounts are needed to make internal transfers. Refer to
|
||||
:doc:`Bank and cash accounts section <setup/bank_accounts>` to see how to add an additional bank
|
||||
account to your database.
|
||||
:doc:`Bank and cash accounts section <../setup/bank_accounts>` to see how to add an additional
|
||||
bank account to your database.
|
||||
|
||||
Register an internal transfer from one bank to another
|
||||
======================================================
|
||||
@@ -91,8 +91,8 @@ Manage and reconcile bank statements
|
||||
------------------------------------
|
||||
|
||||
The next step is to book the bank statements to finalize the transaction by creating,
|
||||
:doc:`importing <feeds/transactions>`, or :doc:`synchronizing <feeds/bank_synchronization>` your
|
||||
:guilabel:`Transactions lines`. Fill in the :guilabel:`Ending balance` and click on the
|
||||
:doc:`importing <../feeds/bank_statements>`, or :doc:`synchronizing <../feeds/bank_synchronization>`
|
||||
your :guilabel:`Transactions lines`. Fill in the :guilabel:`Ending balance` and click on the
|
||||
:guilabel:`Reconcile` button.
|
||||
|
||||
.. image:: interbank/transactions-line.png
|
||||
@@ -100,7 +100,7 @@ The next step is to book the bank statements to finalize the transaction by crea
|
||||
:alt: Transaction lines to be filled in prior to reconciliation
|
||||
|
||||
.. seealso::
|
||||
:doc:`reconciliation/use_cases`
|
||||
- :doc:`../reconciliation/use_cases`
|
||||
|
||||
In the next window, choose counterparts for the payment - in this example, the outstanding payment
|
||||
account - then click :guilabel:`Validate`.
|
||||
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
@@ -83,7 +83,7 @@ You can edit the accounting information and bank account number according to you
|
||||
|
||||
.. seealso::
|
||||
- :doc:`../../others/multi_currency`
|
||||
- :doc:`../../bank/feeds/transactions`
|
||||
- :doc:`../../bank/feeds/bank_statements`
|
||||
- :doc:`../../bank/setup/outstanding_accounts`
|
||||
|
||||
Suspense account
|
||||
@@ -133,4 +133,4 @@ Bank feeds
|
||||
|
||||
.. seealso::
|
||||
- :doc:`../../bank/feeds/bank_synchronization`
|
||||
- :doc:`../../bank/feeds/transactions`
|
||||
- :doc:`../../bank/feeds/bank_statements`
|
||||
|
||||
@@ -8,6 +8,6 @@ Others
|
||||
:titlesonly:
|
||||
|
||||
others/multi_currency
|
||||
others/analytic_accounting
|
||||
others/analytic
|
||||
others/adviser
|
||||
others/inventory
|
||||
|
||||
12
content/applications/finance/accounting/others/analytic.rst
Normal file
@@ -0,0 +1,12 @@
|
||||
:nosearch:
|
||||
|
||||
========
|
||||
Analytic
|
||||
========
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
analytic/usage
|
||||
analytic/timesheets
|
||||
analytic/purchases_expenses
|
||||
@@ -0,0 +1,147 @@
|
||||
==================================================
|
||||
Track costs of purchases, expenses, subcontracting
|
||||
==================================================
|
||||
|
||||
Overview
|
||||
========
|
||||
|
||||
Thanks to analytical accounting we can track costs of purchases,
|
||||
expenses and subcontracting in the accounting module.
|
||||
|
||||
We'll take the following example. We sold a consulting package for a
|
||||
customer. The package is all inclusive meaning no extra cost can be
|
||||
added. We would however like to follow which cost were attached to this
|
||||
transaction as we need to pay for purchases, expenses, and
|
||||
subcontracting costs related to the project.
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
The following modules needs to be installed to track cost. Enter the app
|
||||
module and install the following apps:
|
||||
|
||||
.. list-table::
|
||||
|
||||
- - .. image:: purchases_expenses/purchase01.png
|
||||
- .. image:: purchases_expenses/purchase02.png
|
||||
- .. image:: purchases_expenses/purchase03.png
|
||||
|
||||
Please note that the applications provided by these apps only allows us
|
||||
to **track** the costs. We won't be able to automatically re invoice
|
||||
those costs to our customers. To track and **re invoice costs** you
|
||||
should install the Sales management app as well.
|
||||
|
||||
.. image:: purchases_expenses/purchase04.png
|
||||
:align: center
|
||||
|
||||
Enable Analytical accounting
|
||||
----------------------------
|
||||
|
||||
Next step is to activate the analytical accounting. In the accounting
|
||||
app, select :menuselection:`Configuration --> Settings` and thick the Analytic
|
||||
accounting box.
|
||||
|
||||
.. image:: purchases_expenses/purchase05.png
|
||||
:align: center
|
||||
|
||||
Moreover, scroll down and tick the **Analytic accounting for purchases**
|
||||
box.
|
||||
|
||||
.. image:: purchases_expenses/purchase06.png
|
||||
:align: center
|
||||
|
||||
Don't forget to save your changes.
|
||||
|
||||
Create an Analytical account.
|
||||
=============================
|
||||
|
||||
First of all you should create an Analytical account on which you can
|
||||
point all your expenses. Enter the accounting app, select
|
||||
:menuselection:`Configuration --> Analytic Accounts`. Create a new one. In this
|
||||
case we will call it "consulting pack" for our customer Smith&Co.
|
||||
|
||||
.. image:: purchases_expenses/purchase07.png
|
||||
:align: center
|
||||
|
||||
We will point all our costs to this account to keep track of them.
|
||||
|
||||
Record an expense
|
||||
=================
|
||||
|
||||
We start by booking an expense. Our
|
||||
IT technician had to take a train to go see our customer. He paid for
|
||||
his ticket himself.
|
||||
|
||||
Create an expense product
|
||||
-------------------------
|
||||
|
||||
We first need to create an expense product. Enter the **Expense** module,
|
||||
Click on :menuselection:`Configuration --> Expense Products`. Create a new product
|
||||
called Train ticket and set the cost price to 15.50 euros. Make sure the **Can be
|
||||
expensed** box is ticked.
|
||||
|
||||
.. image:: purchases_expenses/purchase08.png
|
||||
:align: center
|
||||
|
||||
Book the expense
|
||||
----------------
|
||||
|
||||
Enter the Expense module, click on :menuselection:`My expenses --> Create`. Select the
|
||||
Train ticket product and link it to the analytical account discussed
|
||||
above.
|
||||
|
||||
.. image:: purchases_expenses/purchase09.png
|
||||
:align: center
|
||||
|
||||
Submit to manager and wait for the manager to approve and post the
|
||||
journal entries.
|
||||
|
||||
Create a Purchase Order linked to the analytical account
|
||||
========================================================
|
||||
|
||||
Purchase Product
|
||||
----------------
|
||||
|
||||
We also need to buy a software for our customers. In the purchase app
|
||||
create a purchase order for the software product.
|
||||
Within the line we can link the product's cost with the analytical
|
||||
account. Specify the order line and select the correct analytical
|
||||
account. Confirm the sale.
|
||||
|
||||
.. image:: purchases_expenses/purchase10.png
|
||||
:align: center
|
||||
|
||||
Accept the delivery and enter the invoice. Once the invoice is entered the cost
|
||||
price (**Vendor Price** field) will be booked in the analytical account.
|
||||
|
||||
Subcontracting
|
||||
--------------
|
||||
|
||||
The purchase module can be used in the same way as seen previously to
|
||||
handle subcontracting. if we purchase a service from another company we
|
||||
can re invoice this cost by linking the purchase order line to the
|
||||
correct analytical account. We simply need to create the correct vendors
|
||||
product.
|
||||
|
||||
.. note::
|
||||
You can also track cost with timesheets, see: :doc:`timesheets`
|
||||
|
||||
Track costs in accounting
|
||||
=========================
|
||||
|
||||
Now that everything is booked and points to the analytical account.
|
||||
Simply open it to check the costs related to that account.
|
||||
|
||||
Enter the accounting module, click on :menuselection:`Advisers --> Analytic Accounts
|
||||
--> Open Charts`.
|
||||
|
||||
Select "consulting pack - Smith" and click on the cost and revenue
|
||||
button to have an overview of all cost linked to the account.
|
||||
|
||||
.. image:: purchases_expenses/purchase11.png
|
||||
:align: center
|
||||
|
||||
.. note::
|
||||
If you would like to have the revenue as well you should
|
||||
invoice the Consulting Pack in the Invoice menu and link the invoice
|
||||
line to this same analytical account.
|
||||
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 7.4 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 9.4 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 5.8 KiB |
@@ -0,0 +1,169 @@
|
||||
==============================================
|
||||
Track costs of human resources with timesheets
|
||||
==============================================
|
||||
|
||||
Human resource of course has a cost. It is interesting to see how much a
|
||||
particular contract costs the company in term of human power in relation
|
||||
to the invoiced amounts.
|
||||
|
||||
We will take the following example: Our two employees **Harry Potter** and
|
||||
**Cedric Digory** both work on a **Consultancy pack** for our customer
|
||||
**Smith&Co**. Harry is paid 18€ p.h. and Cedric's salary is 12€ p.h. We
|
||||
would like to track their timesheet costs within the accounting app, and
|
||||
compare them with the revenue of the consultancy service.
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
First, install the three applications necessary to use this
|
||||
functionality, namely **Accounting**, **Sales** and **Timesheet**. Enter the apps
|
||||
module name and install them.
|
||||
|
||||
.. image:: timesheets/timesheets14.png
|
||||
:align: center
|
||||
|
||||
.. image:: timesheets/timesheets05.png
|
||||
:align: center
|
||||
|
||||
.. image:: timesheets/timesheets11.png
|
||||
:align: center
|
||||
|
||||
Next you will need to enable analytical accounting. To do so enter the
|
||||
**Accounting app**. Select :menuselection:`Configuration --> Settings` and tick the
|
||||
**Analytic accounting** option (see picture below)
|
||||
|
||||
.. image:: timesheets/timesheets06.png
|
||||
:align: center
|
||||
|
||||
Apply your changes.
|
||||
|
||||
Create an employee
|
||||
------------------
|
||||
|
||||
In order to check the revenue of an employee you need to have one. To
|
||||
create an employee enter the **Employee** app. Select **Employees** and
|
||||
create a new employee, fill in the name and the basic information.
|
||||
|
||||
On the employee sheet enter the **HR settings** tab. Here you are able to
|
||||
specify the **Timesheet Cost** of your employee. In this case Harry has a
|
||||
cost of 18 euros / hours. We will thus fill in 18 in this field.
|
||||
|
||||
.. image:: timesheets/timesheets07.png
|
||||
:align: center
|
||||
|
||||
.. note::
|
||||
If you want the employee to be able to enter timesheets he
|
||||
needs to be related to a User.
|
||||
|
||||
Repeat the operation to create the Cedric Digory employee. Don't forget
|
||||
to specify its related user and **Timesheet Costs**.
|
||||
|
||||
Issue a Sales Order
|
||||
-------------------
|
||||
|
||||
We created two employees called Harry Potter and Cedric Diggory in the
|
||||
**Employee** app. Both of them will work on a consultancy contract for our
|
||||
customer Smith&Co where they will point their hours on a timesheet.
|
||||
|
||||
We thus need to create a **sales order** with a **service** product invoiced
|
||||
**based on time and material** and tracked by timesheets with **hours** as unit
|
||||
of measures.
|
||||
|
||||
.. image:: timesheets/timesheets03.png
|
||||
:align: center
|
||||
|
||||
For more information on how to create a sales order based on time and
|
||||
material please see :doc:`/applications/sales/sales/invoicing/time_materials`.
|
||||
|
||||
We save a Sales Order with the service product **External Consulting**. An
|
||||
analytical account will automatically be generated once the **Sales Order**
|
||||
is confirmed. Our employees will have to point to that account (in this
|
||||
case **SO002-Smith&Co**) in order to be able to invoice their hours (see
|
||||
picture below).
|
||||
|
||||
.. image:: timesheets/timesheets10.png
|
||||
:align: center
|
||||
|
||||
Fill in timesheet
|
||||
-----------------
|
||||
|
||||
As an employee linked to a user, Harry can enter the **Timesheet** app and
|
||||
specify his timesheets for the contract. Logged on Harry's account we enter the
|
||||
**Timesheet** app and enter a detailed line pointing to the **Analytical
|
||||
Account** discussed above.
|
||||
|
||||
Harry worked three hours on a SWOT analysis for Smith&Co.
|
||||
|
||||
.. image:: timesheets/timesheets01.png
|
||||
:align: center
|
||||
|
||||
In the meantime, Cedric discussed businesses needs with the customer for
|
||||
1 hour and specified it as well in his personal timesheet, pointing as
|
||||
well on the **Analytic Account**.
|
||||
|
||||
In the **Sales Order** we notice that the delivered amounts of hours is
|
||||
automatically computed (see picture below).
|
||||
|
||||
.. image:: timesheets/timesheets02.png
|
||||
:align: center
|
||||
|
||||
Analytic accounting
|
||||
-------------------
|
||||
|
||||
Thanks to analytic accounts we are able to have an overview of HR cost
|
||||
and revenues. All the revenues and cost of this transactions have been
|
||||
registered in the **SO002-Smith&Co** account.
|
||||
|
||||
We can use two methods to analyze this situation.
|
||||
|
||||
Without filters
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
If we pointed all our costs and revenues of the project on the correct
|
||||
analytical account we can easily retrieve the cost and revenues related
|
||||
to this analytical account. Enter the *Accounting* app, select
|
||||
:menuselection:`Adviser --> Analytic Accounts --> Open Charts`.
|
||||
|
||||
Note : you can specify a period for **Analysis**. If you want to open the
|
||||
current situation you should keep the fields empty. We can already note
|
||||
the credit and debit balance of the account.
|
||||
|
||||
.. image:: timesheets/timesheets12.png
|
||||
:align: center
|
||||
|
||||
If we click on the account a special button is provided to have the
|
||||
details of cost and revenues (see picture below).
|
||||
|
||||
.. image:: timesheets/timesheets13.png
|
||||
:align: center
|
||||
|
||||
Click the button **Cost/Revenue** to have an overview of cost and revenues with the
|
||||
corresponding description.
|
||||
|
||||
With filters
|
||||
~~~~~~~~~~~~
|
||||
|
||||
We can thus filter this information from the **Analytic Entries**.
|
||||
|
||||
Enter the **Accounting** app, and click on :menuselection:`Adviser --> Analytic Entries`.
|
||||
In this menu we have several options to analyse the human resource cost.
|
||||
|
||||
#. We filter on the **Analytic account** so we can see the cost and revenues
|
||||
of the project. Add a custom **Filter** where the **Analytic Account**
|
||||
contains the **Sales Order** number.
|
||||
|
||||
.. image:: timesheets/timesheets04.png
|
||||
:align: center
|
||||
|
||||
In the results we see timesheets activities and invoiced lines with
|
||||
the corresponding costs and revenues.
|
||||
|
||||
.. image:: timesheets/timesheets09.png
|
||||
:align: center
|
||||
|
||||
#. We can group the different analytical accounts together and check
|
||||
their respective revenues. Simply group by **Analytic account** and
|
||||
select the **Graph view** to have a clear overview.
|
||||
|
||||
.. image:: timesheets/timesheets08.png
|
||||
:align: center
|
||||
|
After Width: | Height: | Size: 9.3 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 4.1 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 8.8 KiB |
|
After Width: | Height: | Size: 5.3 KiB |
|
After Width: | Height: | Size: 3.7 KiB |
@@ -0,0 +1,224 @@
|
||||
==========================
|
||||
Analytic account use cases
|
||||
==========================
|
||||
|
||||
The analytic accounting can be used for several purposes:
|
||||
|
||||
- analyse costs of a company
|
||||
|
||||
- reinvoice time to a customer
|
||||
|
||||
- analyse performance of a service or a project
|
||||
|
||||
To manage analytic accounting, you have to activate it in
|
||||
:menuselection:`Configuration --> Settings`:
|
||||
|
||||
.. image:: usage/usage01.png
|
||||
:align: center
|
||||
|
||||
To illustrate analytic accounts clearly, you will follow three use
|
||||
cases, each in one of three different types of company:
|
||||
|
||||
1. Industrial company: Costs Analyse
|
||||
|
||||
2. Law Firm: reinvoice spent hours
|
||||
|
||||
3. IT/Services Company: performance analysis
|
||||
|
||||
Case 1: Industrial company: Costs Analyse
|
||||
-----------------------------------------
|
||||
|
||||
In industry, you will often find analytic charts of accounts structured
|
||||
into departments and products the company itself is built on.
|
||||
|
||||
The objective is to examine the costs, sales and margins by
|
||||
department/resources and by product. The first level of the structure
|
||||
comprises the different departments, and the lower levels represent the
|
||||
product ranges the company makes and sells.
|
||||
|
||||
**Analytic Chart of Accounts for an Industrial Manufacturing Company**:
|
||||
|
||||
1. Marketing Department
|
||||
|
||||
2. Commercial Department
|
||||
|
||||
3. Administration Department
|
||||
|
||||
4. Production Range 1
|
||||
|
||||
5. Production Range 2
|
||||
|
||||
In daily use, it is useful to mark the analytic account on each purchase
|
||||
invoice. When the invoice is approved, it will
|
||||
automatically generate the entries for both the general and the
|
||||
corresponding analytic accounts. For each entry on the general
|
||||
accounts, there is at least one analytic entry that allocates costs to
|
||||
the department which incurred them.
|
||||
|
||||
Here is a possible breakdown of some general accounting entries for the
|
||||
example above, allocated to various analytic accounts:
|
||||
|
||||
+---------------------------------------+-----------+---------+----------+----+-------------------------+----------+
|
||||
| **General accounts** | | | | | **Analytic accounts** | |
|
||||
+=======================================+===========+=========+==========+====+=========================+==========+
|
||||
| **Title** |**Account**|**Debit**|**Credit**| | **Account** |**Value** |
|
||||
+---------------------------------------+-----------+---------+----------+----+-------------------------+----------+
|
||||
| Purchase of Raw Material | 2122 | 1500 | | | Production Range 1 | -1 500 |
|
||||
+---------------------------------------+-----------+---------+----------+----+-------------------------+----------+
|
||||
| Subcontractors | 2122 | 450 | | | Production Range 2 | -450 |
|
||||
+---------------------------------------+-----------+---------+----------+----+-------------------------+----------+
|
||||
| Credit Note for defective materials | 2122 | | 200 | | Production Range 1 | 200 |
|
||||
+---------------------------------------+-----------+---------+----------+----+-------------------------+----------+
|
||||
| Transport charges | 2122 | 450 | | | Production Range 1 | -450 |
|
||||
+---------------------------------------+-----------+---------+----------+----+-------------------------+----------+
|
||||
| Staff costs | 2121 | 10000 | | | Marketing | -2 000 |
|
||||
+---------------------------------------+-----------+---------+----------+----+-------------------------+----------+
|
||||
| | | | | | Commercial | -3 000 |
|
||||
+---------------------------------------+-----------+---------+----------+----+-------------------------+----------+
|
||||
| | | | | | Administrative | -1 000 |
|
||||
+---------------------------------------+-----------+---------+----------+----+-------------------------+----------+
|
||||
| | | | | | Production Range 1 | -2 000 |
|
||||
+---------------------------------------+-----------+---------+----------+----+-------------------------+----------+
|
||||
| | | | | | Production Range 2 | -2 000 |
|
||||
+---------------------------------------+-----------+---------+----------+----+-------------------------+----------+
|
||||
| PR | 2122 | 450 | | | Marketing | -400 |
|
||||
+---------------------------------------+-----------+---------+----------+----+-------------------------+----------+
|
||||
|
||||
The analytic representation by department enables you to investigate the
|
||||
costs allocated to each department in the company. The analytic chart of
|
||||
accounts shows the distribution of the company's costs using the example above:
|
||||
|
||||
.. image:: usage/usage02.png
|
||||
:align: center
|
||||
|
||||
In this example of a hierarchical structure in Odoo, you can analyse not
|
||||
only the costs of each product range, but also the costs of the whole
|
||||
production. A report that relates both general accounts and analytic
|
||||
accounts enables you to get a breakdown of costs within a given
|
||||
department.
|
||||
|
||||
.. image:: usage/usage03.png
|
||||
:align: center
|
||||
|
||||
The examples above are based on a breakdown of the costs of the company.
|
||||
Analytic allocations can be just as effective for sales. That gives you
|
||||
the profitability (sales - costs) of different departments.
|
||||
|
||||
This analytic representation by department is generally used by trading
|
||||
companies and industries.
|
||||
|
||||
A variantion of this, is not to break it down by sales and marketing
|
||||
departments, but to assign each cost to its corresponding product range.
|
||||
This will give you an analysis of the profitability of each product
|
||||
range.
|
||||
|
||||
Choosing one over the other depends on how you look at your marketing
|
||||
effort. Is it a global cost allocated in some general way, or is each
|
||||
product range responsible for its own marketing costs?
|
||||
|
||||
Case 2: Law Firm: costs of human resources?
|
||||
-------------------------------------------
|
||||
|
||||
Law firms generally adopt management by case, where each case represents
|
||||
a current client file. All of the expenses and products are then
|
||||
attached to a given file/analytic account.
|
||||
|
||||
A principal preoccupation of law firms is the invoicing of hours worked,
|
||||
and the profitability by case and by employee.
|
||||
|
||||
Mechanisms used for encoding the hours worked will be covered in detail
|
||||
in timesheet documentation. Like most system processes, hours worked are
|
||||
integrated into the analytic accounting. In the employee form, specify
|
||||
the cost of the employee. The hourly charge is a function of the
|
||||
employee's cost.
|
||||
|
||||
So a law firm will opt for an analytic representation which reflects the
|
||||
management of the time that employees work on the different customer
|
||||
cases.
|
||||
|
||||
Billing for the different cases is a bit unusual. The cases do not match
|
||||
any entry in the general account nor do they come from purchase or sales
|
||||
invoices. They are represented by the various analytic operations and do
|
||||
not have exact counterparts in the general accounts. They are calculated
|
||||
on the basis of the hourly cost per employee.
|
||||
|
||||
At the end of the month when you pay salaries and benefits, you
|
||||
integrate them into the general accounts but not in the analytic
|
||||
accounts, because they have already been accounted for in billing each
|
||||
account. A report that relates data from the analytic and general
|
||||
accounts then lets you compare the totals, so you can readjust your
|
||||
estimates of hourly cost per employee depending on the time actually
|
||||
worked.
|
||||
|
||||
The following table shows an example of different analytic entries that
|
||||
you can find for your analytic account:
|
||||
|
||||
+--------------------------------+------------------+--------------+----+----------------------------+-------------+--------------+
|
||||
| **Title** | **Account** | **Amount** | | **General Account** | **Debit** | **Credit** |
|
||||
+================================+==================+==============+====+============================+=============+==============+
|
||||
| Study the file (1 h) | Case 1.1 | -15 | | | | |
|
||||
+--------------------------------+------------------+--------------+----+----------------------------+-------------+--------------+
|
||||
| Search for information (3 h) | Case 1.1 | -45 | | | | |
|
||||
+--------------------------------+------------------+--------------+----+----------------------------+-------------+--------------+
|
||||
| Consultation (4 h) | Case 2.1 | -60 | | | | |
|
||||
+--------------------------------+------------------+--------------+----+----------------------------+-------------+--------------+
|
||||
| Service charges | Case 1.1 | 280 | | 705 – Billing services | | 280 |
|
||||
+--------------------------------+------------------+--------------+----+----------------------------+-------------+--------------+
|
||||
| Stationery purchase | Administrative | -42 | | 601 – Furniture purchase | 42 | |
|
||||
+--------------------------------+------------------+--------------+----+----------------------------+-------------+--------------+
|
||||
| Fuel Cost -Client trip | Case 1.1 | -35 | | 613 – Transports | 35 | |
|
||||
+--------------------------------+------------------+--------------+----+----------------------------+-------------+--------------+
|
||||
| Staff salaries | | | | 6201 – Salaries | | 3 000 |
|
||||
+--------------------------------+------------------+--------------+----+----------------------------+-------------+--------------+
|
||||
|
||||
Such a structure allows you to make a detailed study of the
|
||||
profitability of various transactions.
|
||||
|
||||
For more details about profitablity, please read the following document:
|
||||
:doc:`timesheets`
|
||||
|
||||
But analytical accounting is not limited to a simple analysis of the
|
||||
profitability of different customer. The same data can be used for
|
||||
automatic recharging of the services to the customer at the end of the
|
||||
month. To invoice customers, just link the analytic account to a sale
|
||||
order and sell products that manage timesheet or expenses .
|
||||
|
||||
Case 3: IT Services Company: performance analysis
|
||||
-------------------------------------------------
|
||||
|
||||
Most IT service companies face the following problems:
|
||||
|
||||
- project planning,
|
||||
|
||||
- invoicing, profitability and financial follow-up of projects,
|
||||
|
||||
- managing support contracts.
|
||||
|
||||
To deal with these problems, you would use an analytic chart of accounts
|
||||
structured by project and by sale order.
|
||||
|
||||
The management of services, expenditures and sales is similar to that
|
||||
presented above for lawyers. Invoicing and the study of profitability
|
||||
are also similar.
|
||||
|
||||
But now look at support contracts. These contracts are usually limited
|
||||
to a prepaid number of hours. Each service posted in the analytic
|
||||
accounts shows the remaining hours of support. To manage support
|
||||
contracts, you would create a product configured to invoice on order and
|
||||
link the sale order to an analytic account
|
||||
|
||||
In Odoo, each analytic line lists the number of units sold or used, as
|
||||
well as what you would usually find there – the amount in currency units
|
||||
(USD or GBP, or whatever other choice you make). So you can sum the
|
||||
quantities sold and used on each sale order to determine whether any
|
||||
hours of the support contract remain.
|
||||
|
||||
Conclusion
|
||||
----------
|
||||
|
||||
Analytic accounting helps you to analyse costs and revenues whatever the
|
||||
use case. You can sell or purchase services, track time or analyse the
|
||||
production performance.
|
||||
|
||||
Analytic accounting is flexible and easy to use through all Odoo
|
||||
applications (sales, purchase, timesheet, production, invoice, …).
|
||||
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 4.8 KiB |
|
After Width: | Height: | Size: 7.9 KiB |
@@ -1,131 +0,0 @@
|
||||
===================
|
||||
Analytic accounting
|
||||
===================
|
||||
|
||||
Analytic accounting helps you track costs and revenues, as well as analyze the profitability of a
|
||||
project or service. When creating your journal entries, the analytic widget allows the distribution
|
||||
of costs in one or more analytic accounts.
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
Enable the :guilabel:`Analytic Accounting` feature by going to :menuselection:`Accounting -->
|
||||
Configuration --> Settings --> Analytics`.
|
||||
|
||||
Analytic accounts
|
||||
=================
|
||||
|
||||
The analytic accounts give an overview of your costs and revenue.
|
||||
|
||||
Access your existing analytic accounts by going to :menuselection:`Accounting --> Configuration -->
|
||||
Analytic Accounting: Analytic Accounts`. To create a new analytic account, click :guilabel:`New`,
|
||||
and fill in the required information:
|
||||
|
||||
- :guilabel:`Analytic Account`: add the name of your analytic account;
|
||||
- :guilabel:`Customer`: select the customer related to your project;
|
||||
- :guilabel:`Reference`: add a reference to make it easier to find the account when you are on your
|
||||
bill;
|
||||
- :guilabel:`Plan`: add an :ref:`analytic plan <analytic_accounting/analytic_plans>`;
|
||||
- :guilabel:`Company`: if you are managing multiple companies, select the company for which the
|
||||
analytic account will be used;
|
||||
- :guilabel:`Currency`: select the currency of the analytic account;
|
||||
|
||||
Then, fill in your :doc:`budget <adviser/budget>` information.
|
||||
|
||||
.. _analytic_accounting/analytic_plans:
|
||||
|
||||
Analytic plans
|
||||
==============
|
||||
|
||||
The analytic plans allow you to analyze your accounting. For example, to track costs and revenues by
|
||||
project or department.
|
||||
|
||||
You can access the analytic plans by going to :menuselection:`Accounting --> Configuration -->
|
||||
Analytic Accounting: Analytic Plans`. Click :guilabel:`New` to create a new plan.
|
||||
|
||||
.. image:: analytic_accounting/analytic_plans.png
|
||||
:align: center
|
||||
:alt: create an analytic plan
|
||||
|
||||
The following information must be completed:
|
||||
|
||||
- :guilabel:`Parent`: link your plan to another :guilabel:`Analytic Plan` to build a hierarchy
|
||||
between your plans;
|
||||
- :guilabel:`Default Applicability`: decide how your plan behaves in the widget when creating a new
|
||||
journal entry:
|
||||
|
||||
- :guilabel:`Optional`: if selected, it is not mandatory to add the analytic plan in the widget;
|
||||
- :guilabel:`Mandatory`: if selected, an orange bullet is visible in the widget next to the plan
|
||||
until the analytic distribution is done (the bullet then turns to green); it is not possible to
|
||||
confirm the entry if no analytic account is selected;
|
||||
- :guilabel:`Unavailable`: if selected, the plan is not available in the widget.
|
||||
|
||||
- :guilabel:`Color`: select the color of the tag related to this specific plan;
|
||||
- :guilabel:`Company`: add the company to which the plan applies;
|
||||
|
||||
You can also fine-tune your plans' applicability by filling in the :guilabel:`Applicability` tab:
|
||||
|
||||
- :guilabel:`Domain`: choose to which accounting document your plan applies;
|
||||
- :guilabel:`Financial Accounts Prefix`: select the prefix of the account(s) to which this plan
|
||||
should be applied;
|
||||
- :guilabel:`Product Category`: decide to which product category the plan applies;
|
||||
- :guilabel:`Applicability`: decide how your plan behaves in the widget when creating a new journal
|
||||
entry. The applicability you set here always overrides the default applicability.
|
||||
|
||||
Two smart buttons are available in the top-right corner:
|
||||
|
||||
- :guilabel:`Subplans`: can be created to have a more complex analytic structure. Click the
|
||||
:guilabel:`Subplans` smart button, and then :guilabel:`New` to add a subplan;
|
||||
- :guilabel:`Analytic Accounts`: to reach the analytic accounts related to the plan.
|
||||
|
||||
.. note::
|
||||
- The analytic widget is prefilled based on the applicability, and the
|
||||
:ref:`Analytic Distribution Models <analytic_distribution_models>`;
|
||||
- Each analytic plan must have at least one analytic account.
|
||||
|
||||
Analytic distribution
|
||||
=====================
|
||||
|
||||
Add a plan in the :guilabel:`Analytic` column when creating an invoice or bill. This field is
|
||||
mandatory only if you previously linked your analytic plan to at least one analytic account. After
|
||||
adding the plan, a **widget** opens where you can fill in the different information. You can add
|
||||
**tags** to reflect the related analytic accounts and decide how to split the costs between the
|
||||
accounts by modifying the percentage.
|
||||
|
||||
.. image:: analytic_accounting/analytic_distribution.png
|
||||
:align: center
|
||||
:alt: create a distribution template
|
||||
|
||||
.. _analytic_distribution_models:
|
||||
|
||||
Analytic distribution models
|
||||
----------------------------
|
||||
|
||||
The analytic distribution models automatically apply a specific distribution based on defined
|
||||
criteria.
|
||||
|
||||
To create a new analytic distribution model, go to :menuselection:`Accounting --> Configuration -->
|
||||
Analytic Distribution Models`, click :guilabel:`New` and set the conditions your model has to meet
|
||||
to automatically apply:
|
||||
|
||||
- :guilabel:`Accounts Prefix`: this analytic distribution will apply to all financial accounts
|
||||
sharing the prefix specified;
|
||||
- :guilabel:`Partner`: select a partner for which the analytic distribution will be used;
|
||||
- :guilabel:`Partner Category`: this field is not visible by default: add it by clicking on the
|
||||
columns selection button, and tick the :guilabel:`Partner Category` box. Add the partner category
|
||||
for which the analytic distribution will be used;
|
||||
- :guilabel:`Product`: select a product for which the analytic distribution will be used;
|
||||
- :guilabel:`Product Category`: this field is not visible by default: add it by clicking on the
|
||||
columns selection button, and tick the :guilabel:`Product Category` box. Select a product category
|
||||
for which the analytic distribution will be used;
|
||||
- :guilabel:`Analytic`: add the analytic accounts and their distribution;
|
||||
- :guilabel:`Company`: select a company for which the analytic distribution will be used;
|
||||
- :guilabel:`Analytic Distribution`: if the above conditions are met, the :guilabel:`Analytic plan`
|
||||
defined in this field as well as the distribution to be applied between the different analytic
|
||||
accounts is selected automatically on the entry.
|
||||
|
||||
.. tip::
|
||||
To **mass edit** several entries simultaneously, go to :menuselection:`Accounting --> Accounting
|
||||
--> Journal items`, and select the ones that need to be updated. Add the required distribution in
|
||||
the :guilabel:`Analytic Distribution` column, and click on the :guilabel:`floppy disk` icon to
|
||||
save. The analytic distribution template pops up, and you can save it for later use.
|
||||
|
Before Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 13 KiB |
@@ -13,7 +13,7 @@ your company, or your company has an outstanding debit with a vendor. You can us
|
||||
amounts to reduce unpaid invoices/bills.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`Internal transfers <../../bank/interbank>`
|
||||
- :doc:`Internal transfers <../../bank/misc/interbank>`
|
||||
- :doc:`../../bank/reconciliation/use_cases`
|
||||
- `Odoo Tutorials: Bank Configuration
|
||||
<https://www.odoo.com/slides/slide/bank-configuration-1880>`_
|
||||
|
||||
@@ -2,229 +2,27 @@
|
||||
Intrastat
|
||||
=========
|
||||
|
||||
Intrastat is the data collection and statistics production system for goods traded among EU member
|
||||
states. It collects data on:
|
||||
**Intrastat** is the system for data collection and statistic production of goods traded among the
|
||||
EU Member States. Organizations whose annual trade surpasses a certain threshold must provide data
|
||||
about the goods traded with other EU countries.
|
||||
|
||||
- Commercial transactions of goods for use, consumption, investment, or resale with ownership
|
||||
transfer;
|
||||
- Goods movements without transfer of ownership (e.g., stock relocations or moves of goods
|
||||
before or after outsourced production or processing, and after maintenance or repair);
|
||||
- Returns of goods.
|
||||
.. seealso::
|
||||
- `Eurostat Statistics Explained - Glossary: Intrastat
|
||||
<https://ec.europa.eu/eurostat/statistics-explained/index.php?title=Glossary:Intrastat>`_
|
||||
|
||||
.. note::
|
||||
Although the Intrastat system continues to be used, the term Intrastat is not used in the `latest
|
||||
legislation <http://data.europa.eu/eli/reg/2019/2152/2022-01-01>`_, referring instead to
|
||||
*intra-Union trade in goods statistics*.
|
||||
As of January 1, 2022, the reporting requirements have changed. One main modification concerns
|
||||
the transaction codes which are now switching to a 2-digits format. All transactions recorded
|
||||
after this date have to follow the new system’s rules.
|
||||
|
||||
.. seealso::
|
||||
`Eurostat Statistics Explained - Glossary: Intrastat
|
||||
<https://ec.europa.eu/eurostat/statistics-explained/index.php?title=Glossary:Intrastat>`_
|
||||
Configuration
|
||||
=============
|
||||
|
||||
.. _intrastat/general-configuration:
|
||||
|
||||
General configuration
|
||||
=====================
|
||||
|
||||
Enable the Intrastat report by going to :menuselection:`Accounting --> Configuration --> Settings`.
|
||||
Under the :guilabel:`Customer Invoices` section, tick :guilabel:`Intrastat` and then
|
||||
:guilabel:`Save`.
|
||||
Go to :menuselection:`Accounting --> Settings --> Customer Invoices`, then enable **Intrastat** and
|
||||
*Save*. Once the Intrastat has been activated you are able to choose the **Default incoterm**.
|
||||
|
||||
.. important::
|
||||
If your Odoo database was created before **January 13, 2022**, first :ref:`upgrade
|
||||
<general/upgrade>` the `account_intrastat` module to add the new transaction codes and
|
||||
:ref:`install <general/install>` the `account_intrastat_expiry` module to archive the old codes.
|
||||
|
||||
.. _intrastat/default-transaction-codes:
|
||||
|
||||
Default transaction codes: invoice and refund
|
||||
---------------------------------------------
|
||||
|
||||
You can set a default :ref:`transaction code <intrastat/transaction-code>` for all newly created
|
||||
invoice and refund transactions. Under :menuselection:`Accounting --> Configuration --> Settings`,
|
||||
select a :guilabel:`Default invoice transaction code` and/or a :guilabel:`Default refund transaction
|
||||
code` and then :guilabel:`Save`. The code will be set automatically on all respective invoice lines.
|
||||
|
||||
.. _intrastat/default-incoterm:
|
||||
|
||||
Default Incoterm rule
|
||||
---------------------
|
||||
|
||||
You can set a default :ref:`Incoterm rule <intrastat/incoterm>` to automatically populate the
|
||||
Incoterm field on all newly created invoices and bills. Under :menuselection:`Accounting -->
|
||||
Configuration --> Settings`, select the company's :guilabel:`Default Incoterm` and then
|
||||
:guilabel:`Save`.
|
||||
|
||||
.. _intrastat/region-code:
|
||||
|
||||
Region code
|
||||
-----------
|
||||
|
||||
The region code is **only used by Belgian companies**. Under :menuselection:`Accounting -->
|
||||
Configuration --> Settings`, select the :guilabel:`Company Intrastat Region` where the company is
|
||||
located and then :guilabel:`Save`.
|
||||
|
||||
.. tip::
|
||||
If your warehouses are located in more than one region, you can define the region code at the
|
||||
level of each warehouse instead. To do so, go to :menuselection:`Inventory --> Configuration -->
|
||||
Warehouses`, select a warehouse, set its :guilabel:`Intrastat region`, and then :guilabel:`Save`.
|
||||
|
||||
.. image:: intrastat/warehouse-region.png
|
||||
:align: center
|
||||
:alt: Adding the Intrastat region to a warehouse
|
||||
|
||||
.. _intrastat/product-configuration:
|
||||
|
||||
Product configuration
|
||||
=====================
|
||||
|
||||
All products must be properly configured to be included in the Intrastat report.
|
||||
|
||||
.. _intrastat/commodity-code:
|
||||
|
||||
Commodity code
|
||||
--------------
|
||||
|
||||
Commodity codes are internationally recognized reference numbers used to classify goods depending on
|
||||
their **nature**. Intrastat uses the `Combined Nomenclature <https://taxation-customs.ec.europa.eu/customs-4/calculation-customs-duties/customs-tariff/combined-nomenclature_en>`_.
|
||||
|
||||
To add a commodity code, go to :menuselection:`Accounting --> Customers --> Products` and select a
|
||||
product. Under the :guilabel:`Accounting` tab, set the product's :guilabel:`Commodity Code`.
|
||||
|
||||
.. seealso::
|
||||
`National Bank of Belgium - Intrastat commodity codes
|
||||
<https://www.nbb.be/en/statistics/foreign-trade/nomenclature-and-codes>`_
|
||||
|
||||
.. _intrastat/quantity:
|
||||
|
||||
Quantity: weight and supplementary unit
|
||||
---------------------------------------
|
||||
|
||||
Depending on the nature of the goods, it is necessary to specify either the product's weight in
|
||||
kilos (without packaging) or the product's supplementary unit, such as square meter (`m2`), number
|
||||
of items (`p/st`), liter (`l`), or gram (`g`).
|
||||
|
||||
To add a product's weight or supplementary unit, go to :menuselection:`Accounting --> Customers -->
|
||||
Products` and select a product. Under the :guilabel:`Accounting` tab, depending on the commodity
|
||||
code set, either fill in the product :guilabel:`Weight` or its :guilabel:`Supplementary Units`.
|
||||
|
||||
.. _intrastat/origin-country:
|
||||
|
||||
Country of origin
|
||||
-----------------
|
||||
|
||||
To add the product's country of origin, go to :menuselection:`Accounting --> Customers --> Products`
|
||||
and select a product. Under the :guilabel:`Accounting` tab, set the :guilabel:`Country of Origin`.
|
||||
|
||||
.. _intrastat/invoice-bill-configuration:
|
||||
|
||||
Invoices and bills configuration
|
||||
================================
|
||||
|
||||
Once products are properly configured, several settings must be configured on the invoices and bills
|
||||
you create.
|
||||
|
||||
.. _intrastat/transaction-code:
|
||||
|
||||
Transaction code
|
||||
----------------
|
||||
|
||||
Transaction codes are used to identify a transaction's nature. :ref:`Default transaction codes
|
||||
<intrastat/default-transaction-codes>` can be set for invoice and refund transactions.
|
||||
|
||||
To set a transaction code on an invoice line, create an invoice or a bill, click the columns
|
||||
selection button, tick :guilabel:`Intrastat`, and use the newly-added :guilabel:`Intrastat` column
|
||||
to select a transaction code.
|
||||
|
||||
.. image:: intrastat/intrastat-column.png
|
||||
:align: center
|
||||
:alt: Adding the Intrastat column to an invoice or bill
|
||||
|
||||
.. seealso::
|
||||
`National Bank of Belgium - Intrastat: Nature of transactions from January 2022
|
||||
<https://www.nbb.be/doc/dd/onegate/data/new_natures_of_transaction_2022_en.pdf>`_
|
||||
|
||||
.. _intrastat/incoterm:
|
||||
|
||||
Incoterm rule
|
||||
-------------
|
||||
|
||||
Incoterms are 11 internationally recognized rules defining the responsibilities of sellers and
|
||||
buyers, specifying who is responsible for paying and managing the shipment, insurance,
|
||||
documentation, customs clearance, and other logistical activities. A :ref:`default Incoterm
|
||||
<intrastat/default-incoterm>` can be set for all invoices and bills.
|
||||
|
||||
To set the Incoterm manually, create an invoice or a bill, click the :guilabel:`Other Info` tab, and
|
||||
select the :guilabel:`Incoterm`.
|
||||
|
||||
.. seealso::
|
||||
`Wikipedia: Incoterms <https://en.wikipedia.org/wiki/Incoterms>`_
|
||||
|
||||
.. _intrastat/partner-country:
|
||||
|
||||
Partner country
|
||||
---------------
|
||||
|
||||
The partner country represents the vendor's country for bills and the customer's country for
|
||||
invoices. It is automatically filled in using the country set in the contact's :guilabel:`Country`
|
||||
field.
|
||||
|
||||
To edit the partner country manually, create an invoice or a bill, click the :guilabel:`Other Info`
|
||||
tab, and select the :guilabel:`Intrastat Country`.
|
||||
|
||||
.. _intrastat/transport-code:
|
||||
|
||||
Transport code
|
||||
--------------
|
||||
|
||||
The transport code identifies the presumed **mode of transport** used to send the goods (arrival or
|
||||
dispatch).
|
||||
|
||||
To add the transport code, create an invoice or a bill, go to the :guilabel:`Other info` tab,
|
||||
and select the :guilabel:`Intrastat Transport Mode`.
|
||||
|
||||
.. _intrastat/value:
|
||||
|
||||
Value of the goods
|
||||
------------------
|
||||
|
||||
The value of a good is the untaxed :guilabel:`Subtotal` (:guilabel:`Price` multiplied by
|
||||
:guilabel:`Quantity`) of an invoice line.
|
||||
|
||||
.. _intrastat/partner:
|
||||
|
||||
Partner configuration
|
||||
=====================
|
||||
|
||||
Two fields from the partner's contact form are used with Intrastat: :guilabel:`VAT` and
|
||||
:guilabel:`Country`. The country can be :ref:`manually set <intrastat/partner-country>` on the
|
||||
invoice or bill.
|
||||
|
||||
Generate the Intrastat report
|
||||
=============================
|
||||
|
||||
Generate the report by going to :menuselection:`Accounting --> Reporting --> Audit Reports:
|
||||
Intrastat Report`. It is automatically computed based on the :ref:`default configuration
|
||||
<intrastat/general-configuration>` and the information found on the :ref:`products
|
||||
<intrastat/product-configuration>`, :ref:`invoices and bills
|
||||
<intrastat/invoice-bill-configuration>`, and :ref:`partners <intrastat/partner>`.
|
||||
|
||||
Export the report as a PDF, XLSX, or XML file to post it to your legal administration.
|
||||
|
||||
Each report line refers to a single invoice line and contains the following information:
|
||||
|
||||
- Invoice or bill reference number;
|
||||
- System, which is a code automatically generated depending on whether the document is an invoice
|
||||
(dispatch) or a bill (arrival);
|
||||
- :ref:`Country <intrastat/partner-country>`, which is the vendor's country for arrivals and the
|
||||
customer's country for dispatches;
|
||||
- :ref:`Transaction Code <intrastat/transaction-code>`;
|
||||
- (If your company is located in Belgium) :ref:`Region Code <intrastat/region-code>`;
|
||||
- :ref:`Commodity Code <intrastat/commodity-code>`;
|
||||
- :ref:`Origin Country <intrastat/origin-country>`;
|
||||
- :ref:`Partner VAT <intrastat/partner>`;
|
||||
- :ref:`Transport Code <intrastat/transport-code>`;
|
||||
- :ref:`Incoterm Code <intrastat/incoterm>`;
|
||||
- :ref:`Weight <intrastat/quantity>`;
|
||||
- :ref:`Supplementary Units <intrastat/quantity>`; and
|
||||
- :ref:`Value <intrastat/value>`, which is always expressed in euros even if the original invoice or
|
||||
bill used another currency.
|
||||
If you created your Odoo database prior to **January 13, 2022**, please :ref:`upgrade
|
||||
<general/upgrade>` the ``account_intrastat`` module to add the new transaction codes and
|
||||
:ref:`install <general/install>` the ``account_intrastat_expiry`` module to archive the old
|
||||
codes.
|
||||
|
||||
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 7.6 KiB After Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
@@ -61,6 +61,7 @@ POS.
|
||||
|
||||
- On a certified POS, you cannot:
|
||||
|
||||
- Make a refund.
|
||||
- Set up and use the **global discounts** feature (the `pos_discount` module is blacklisted and
|
||||
cannot be activated).
|
||||
- Set up and use the **loyalty programs** feature (the `pos_loyalty` module is blacklisted and
|
||||
@@ -75,9 +76,9 @@ POS.
|
||||
and set to a :guilabel:`Rounding Precision` of `0,05` and a :guilabel:`Rounding Method` set as
|
||||
:guilabel:`Half-Up`.
|
||||
- Taxes must be set as included in the price. To set it up, go to :menuselection:`Point of Sale -->
|
||||
Configuration --> Settings`, and from the :guilabel:`Accounting` section, open the
|
||||
:guilabel:`Default Sales Tax` form by clicking the arrow next to the default sales tax field.
|
||||
There, click :guilabel:`Advanced Options` and enable :guilabel:`Included in Price`.
|
||||
Configuration --> Settings`, and from the :guilabel:`Taxes` section, open the :guilabel:`Default
|
||||
Sales Tax` form by clicking the arrow next to the default sales tax field. There, click
|
||||
:guilabel:`Advanced Options` and enable :guilabel:`Included in Price`.
|
||||
- At the start of a POS session, users must click :guilabel:`Work in` to clock in. Doing so allows
|
||||
the registration of POS orders. If users are not clocked in, they cannot make POS orders.
|
||||
Likewise, they must click :guilabel:`Work Out` to clock out at the end of the session.
|
||||
@@ -128,7 +129,7 @@ Once the module is activated, add your VAT number to your company information. T
|
||||
:menuselection:`Settings --> Companies --> Update Info`, and fill in the :guilabel:`VAT` field.
|
||||
Then, enter a national registration number for every staff member who operates the POS system. To do
|
||||
so, go to the :guilabel:`Employees` app and open an employee form. There, go to :menuselection:`HR
|
||||
settings tab --> Attendance/Point of Sale`, and fill in the :guilabel:`INSZ or BIS number` field.
|
||||
settings tab --> Attendance`, and fill in the :guilabel:`INSZ or BIS number` field.
|
||||
|
||||
.. image:: belgium/bis-number.png
|
||||
:align: center
|
||||
|
||||
@@ -1,36 +1,37 @@
|
||||
============================================
|
||||
Configure DNS records to send emails in Odoo
|
||||
============================================
|
||||
=======================
|
||||
Send an email with Odoo
|
||||
=======================
|
||||
|
||||
SPAM labels overview
|
||||
====================
|
||||
Use an email domain in Odoo
|
||||
===========================
|
||||
|
||||
Sometimes, emails from Odoo are misclassified by the different email providers and end up in spam
|
||||
folders. At the moment, some settings are out of Odoo's control, notably the way the different email
|
||||
providers classify Odoo's emails according to their own restriction policy and/or limitations.
|
||||
Documents in Odoo (such as a CRM opportunity, a sales order, an invoice, etc.) have a discussion
|
||||
thread, called *chatter*.
|
||||
|
||||
It is standard in Odoo that emails are received from ``"name of the author"
|
||||
<notifications@mycompany.odoo.com>``. In other words this can be translated to: ``"name of the
|
||||
author" <{ICP.mail.from.filter}@{mail.catchall.domain}>``. In this case ICP stands for
|
||||
`ir.config.parameters`, which are the System Parameters. Deliverability is greatly improved with the
|
||||
:ref:`notifications configuration <email_servers/notifications>`.
|
||||
When a database user posts a message in the chatter, this message is sent by email to the followers
|
||||
of the document. If a follower replies to the message, the reply updates the chatter, and Odoo
|
||||
relays the reply to the followers as a notification.
|
||||
|
||||
In order for servers to accept emails from Odoo on a more regular basis, one of the solutions is
|
||||
for customers to create rules within their own mailbox. A filter can be added to the email inbox so
|
||||
that when email is received from Odoo (`notifications@mycompany.odoo.com`) it is moved to the
|
||||
inbox. It is also possible to add the Odoo database domain onto a safe senders list or whitelist
|
||||
on the receiving domain.
|
||||
Messages sent in the chatter from internal database users to external users (such as partners,
|
||||
customers, or vendors) are relayed on behalf of the database users. Messages sent back to the
|
||||
chatter from external users will appear in the chatter from their respective email addresses, or as
|
||||
they are listed in their Contacts record.
|
||||
|
||||
If an Odoo email server appears on a blacklist, notify Odoo via a `new help ticket
|
||||
<https://www.odoo.com/help>`_ and the support team will work to get the servers removed from the
|
||||
blacklist.
|
||||
If the Odoo database is hosted on the cloud (Odoo Online or Odoo.sh), it is not necessary to add an
|
||||
outgoing email server to send emails from a custom domain.
|
||||
|
||||
Should the Odoo database be using a custom domain for sending emails from Odoo there are three
|
||||
records that should be implemented on the custom domain's DNS to ensure deliverability of email.
|
||||
This includes setting records for :abbr:`SPF (Sender Policy Framework)`,
|
||||
:abbr:`DKIM (DomainKeys Identified Mail)` and
|
||||
:abbr:`DMARC (Domain-based Message Authentication, Reporting, & Conformance)`. Ultimately though,
|
||||
it is up to the discretion of the final receiving mailbox.
|
||||
.. important::
|
||||
The Odoo server is subject to a daily email limit to prevent abuse. The default limit is 200
|
||||
emails sent per day for databases with an **Enterprise** subscription. This limit can be
|
||||
increased under certain conditions. See the :doc:`FAQ <faq>` or contact support for more
|
||||
information.
|
||||
|
||||
To ensure that emails sent to and from the chatter reach their intended contacts, instead of being
|
||||
considered spam, Odoo recommends configuring the domain name.
|
||||
|
||||
For the same reason, Odoo also recommends giving each database user an email address from the
|
||||
configured domain, rather than a generic email address domain (such as gmail.com, outlook.com,
|
||||
etc.).
|
||||
|
||||
.. _email_communication/spf_compliant:
|
||||
|
||||
@@ -39,23 +40,27 @@ Be SPF compliant
|
||||
|
||||
The Sender Policy Framework (SPF) protocol allows the owner of a domain name to specify which
|
||||
servers are allowed to send emails from that domain. When a server receives an incoming email,
|
||||
it checks whether the IP address of the sending server is on the list of allowed IPs according to
|
||||
the sender's :abbr:`SPF (Sender Policy Framework)` record.
|
||||
it checks if the IP address of the sending server is on the list of allowed IPs according to the
|
||||
sender's :abbr:`SPF (Sender Policy Framework)` record.
|
||||
|
||||
.. note::
|
||||
The :abbr:`SPF (Sender Policy Framework)` verification is performed on the domain mentioned in
|
||||
the `Return-Path` field of the email. In the case of an email sent by Odoo, this domain
|
||||
corresponds to the value of the `mail.catchall.domain` key in the database system parameters.
|
||||
|
||||
See the :ref:`documentation on incoming emails <email_communication/inbound_messages>`.
|
||||
|
||||
The :abbr:`SPF (Sender Policy Framework)` policy of a domain is set using a TXT record. The way to
|
||||
create or modify a TXT record depends on the provider hosting the :abbr:`DNS (Domain Name System)`
|
||||
zone of the domain name. In order for the verification to work properly, each domain can only have
|
||||
one :abbr:`SPF (Sender Policy Framework)` record.
|
||||
|
||||
If the domain name does not yet have a :abbr:`SPF (Sender Policy Framework)` record, create one
|
||||
using the following input: `v=spf1 include:_spf.odoo.com ~all`
|
||||
If the domain name does not yet have an :abbr:`SPF (Sender Policy Framework)` record, the content
|
||||
of the record to create it is as follows:
|
||||
|
||||
If the domain name already has a :abbr:`SPF (Sender Policy Framework)` record, the record must be
|
||||
`v=spf1 include:_spf.odoo.com ~all`
|
||||
|
||||
If the domain name already has an :abbr:`SPF (Sender Policy Framework)` record, the record must be
|
||||
updated (and do not create a new one).
|
||||
|
||||
.. example::
|
||||
@@ -106,11 +111,6 @@ Conformance)` record of a domain name tell the destination server what to do wit
|
||||
that fails the :abbr:`SPF (Sender Policy Framework)` and/or :abbr:`DKIM (DomainKeys Identified
|
||||
Mail)` check.
|
||||
|
||||
.. example::
|
||||
DMARC: TXT record
|
||||
|
||||
`v=DMARC1; p=none;`
|
||||
|
||||
There are three :abbr:`DMARC (Domain-based Message Authentication, Reporting, & Conformance)`
|
||||
policies:
|
||||
|
||||
@@ -118,15 +118,15 @@ policies:
|
||||
- `p=quarantine`
|
||||
- `p=reject`
|
||||
|
||||
`p=quarantine` and `p=reject` instruct the server that receives an email to quarantine that email or
|
||||
ignore it if the :abbr:`SPF (Sender Policy Framework)` and/or :abbr:`DKIM (DomainKeys Identified
|
||||
`p=quarantine` and `p=reject` instruct the server that receives an email to quarantine that email
|
||||
or ignore it if the :abbr:`SPF (Sender Policy Framework)` and/or :abbr:`DKIM (DomainKeys Identified
|
||||
Mail)` check fails.
|
||||
|
||||
If the domain name uses :abbr:`DMARC (Domain-based Message Authentication, Reporting, &
|
||||
Conformance)` and has defined one of these policies, the domain must be :abbr:`SPF (Sender Policy
|
||||
Framework)` compliant or enable :abbr:`DKIM (DomainKeys Identified Mail)`.
|
||||
|
||||
.. warning::
|
||||
.. danger::
|
||||
Yahoo or AOL are examples of email providers with a :abbr:`DMARC (Domain-based Message
|
||||
Authentication, Reporting, & Conformance)` policy set to `p=reject`. Odoo strongly advises
|
||||
against using an *@yahoo.com* or *@aol.com* address for the database users. These emails will
|
||||
@@ -136,55 +136,16 @@ Framework)` compliant or enable :abbr:`DKIM (DomainKeys Identified Mail)`.
|
||||
should not impact the deliverability if the :abbr:`DMARC (Domain-based Message Authentication,
|
||||
Reporting, & Conformance)` check fails.
|
||||
|
||||
:abbr:`DMARC (Domain-based Message Authentication, Reporting, & Conformance)` records are comprised
|
||||
of tags in the form of :abbr:`DNS (Domain Name System)` records. These tags/parameters allow for
|
||||
reporting, such as :abbr:`RUA (Reporting URI of aggregate reports)` and :abbr:`RUF (Reporting URI
|
||||
for forensic reports)`, along with more precise specification like :abbr:`PCT (Percentage of
|
||||
messages subjected to filtering)`, :abbr:`P (Policy for organizational domain)`, :abbr:`SP (Policy
|
||||
for subdomains of the OD)` :abbr:`ADKIM (Alignment mode for DKIM)` & :abbr:`ASPF (Alignment mode for
|
||||
SPF)`. For best practice, the the :abbr:`DMARC (Domain-based Message Authentication, Reporting, &
|
||||
Conformance)` policy should not start out being too restrictive.
|
||||
|
||||
The following chart displays available tags:
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: 15 50 35
|
||||
|
||||
* - Tag Name
|
||||
- Purpose
|
||||
- Example
|
||||
* - v
|
||||
- Protocol version
|
||||
- `v=DMARC1`
|
||||
* - pct
|
||||
- Percentage of messages subjected to filtering
|
||||
- `pct=20`
|
||||
* - ruf
|
||||
- Reporting URI for forensic reports
|
||||
- `ruf=mailto:authfail@example.com`
|
||||
* - rua
|
||||
- Reporting URI of aggregate reports
|
||||
- `rua=mailto:aggrep@example.com`
|
||||
* - p
|
||||
- Policy for organizational domain
|
||||
- `p=quarantine`
|
||||
* - sp
|
||||
- Policy for subdomains of the OD
|
||||
- `sp=reject`
|
||||
* - adkim
|
||||
- Alignment mode for DKIM
|
||||
- `adkim=s`
|
||||
* - aspf
|
||||
- Alignment mode for SPF
|
||||
- `aspf=r`
|
||||
|
||||
Check the :abbr:`DMARC (Domain-based Message Authentication, Reporting, & Conformance)` record of a
|
||||
domain name with a tool like `MXToolbox DMARC <https://mxtoolbox.com/DMARC.aspx>`_.
|
||||
|
||||
.. seealso::
|
||||
`DMARC.org is another great resource to learn about DMARC records.
|
||||
<https://dmarc.org/overview/>`_
|
||||
If a partner, customer, or vendor, uses :abbr:`DMARC (Domain-based Message Authentication,
|
||||
Reporting, & Conformance)` and has defined one of these policies, the Odoo server cannot relay
|
||||
emails from this partner to the database users.
|
||||
|
||||
To solve this issue, :ref:`handle user notifications in Odoo
|
||||
<discuss_app/notification_preferences>`, or replace the email address of the partner with a default
|
||||
email address.
|
||||
|
||||
.. _email_communication/SPFDKIM_common_providers:
|
||||
|
||||
@@ -204,7 +165,30 @@ SPF, DKIM & DMARC documentation of common providers
|
||||
|
||||
To fully test the configuration, use the `Mail-Tester <https://www.mail-tester.com/>`_ tool, which
|
||||
gives a full overview of the content and configuration in one sent email. Mail-Tester can also be
|
||||
used to configure records for other, lesser-known providers.
|
||||
used for other, lesser-known providers.
|
||||
|
||||
.. seealso::
|
||||
`Using Mail-Tester to set SPF Records for specific carriers <https://www.mail-tester.com/spf/>`_
|
||||
.. _email_communication/default:
|
||||
|
||||
Use a default email address
|
||||
===========================
|
||||
|
||||
Access the :guilabel:`System Parameters` by activating :ref:`developer mode <developer-mode>` and
|
||||
going to :menuselection:`Settings --> Technical --> Parameters --> System Parameters` menu.
|
||||
|
||||
To force the email address from which emails are sent, a combination of the following keys needs to
|
||||
be set in the system parameters of the database:
|
||||
|
||||
- `mail.default.from`: accepts the local part or a complete email address as value
|
||||
- `mail.default.from_filter`: accepts a domain name or a full email address as value
|
||||
|
||||
.. note::
|
||||
The `mail.default.from_filter` works only for `odoo-bin` configurations, otherwise this
|
||||
parameter can be set using the `from_filter` field on `ir.mail_server`.
|
||||
|
||||
If the email address of the author does not match `mail.default.from_filter`, the email address is
|
||||
replaced by `mail.default.from` (if it contains a full email address) or a combination of
|
||||
`mail.default.from` and `mail.catchall.domain`.
|
||||
|
||||
If the `from_filter` contains a full email address, and if the `mail.default.from` is the same as
|
||||
this address, then all of the email addresses that are different from `mail.default.from` will be
|
||||
encapsulated in `mail.default.from`.
|
||||
|
||||
@@ -6,81 +6,87 @@ Odoo Online or Odoo.sh users
|
||||
============================
|
||||
|
||||
Since **Odoo sets up its own mail servers for the database**, outgoing and incoming emails already
|
||||
work out-of-the-box. So for **Odoo Online** and **Odoo.sh** customers, nothing needs to be
|
||||
configured!
|
||||
work out-of-the-box. So for **Odoo Online** and **Odoo.sh** customers, nothing needs to be done!
|
||||
|
||||
Unless an external mail server is required to send large batches of mass emails, simply use the
|
||||
standard online Odoo database normally since it has already been pre-configured to send email.
|
||||
|
||||
.. important::
|
||||
The Odoo server is subject to a daily email limit to prevent abuse. The default limit is 200
|
||||
emails sent per day for databases with an **Enterprise** subscription. This limit can be
|
||||
increased under certain conditions. See the :doc:`FAQ <faq>` or contact support for more
|
||||
information.
|
||||
Unless an external mail server is required to send large batches of mass mailing, simply use the
|
||||
standard online Odoo database normally since it has already been preconfigured for email.
|
||||
|
||||
Scope of this documentation
|
||||
===========================
|
||||
|
||||
This document is **mainly dedicated to Odoo on-premise databases** who don't benefit from an
|
||||
This document is **mainly dedicated to Odoo on-premise users** who don't benefit from an
|
||||
out-of-the-box solution to send and receive emails in Odoo, unlike `Odoo Online <https://www.odoo.
|
||||
com/trial>`_ and `Odoo.sh <https://www.odoo.sh>`_. Incoming and outgoing servers must be configured
|
||||
for on-premise databases.
|
||||
com/trial>`_ and `Odoo.sh <https://www.odoo.sh>`_.
|
||||
|
||||
The following sections below contain information on how to integrate an external email server with
|
||||
Odoo.
|
||||
|
||||
.. warning::
|
||||
If no one in the company is employed to manage email servers, Odoo Online and Odoo.sh are
|
||||
strongly recommended. In these Odoo hosting types email sending and receiving works instantly
|
||||
and is monitored by professionals. Nevertheless, a company can use their own email server if
|
||||
they want to manage the email server's reputation themselves. For more information see
|
||||
:doc:`Configure DNS records to send emails in Odoo <email_domain>`
|
||||
If no one in the company is used to managing email servers, Odoo Online and Odoo.sh are strongly
|
||||
recommended. Those Odoo hosting types' email systems work instantly and are monitored by
|
||||
professionals. Nevertheless, a company can use their own email server if they want to manage the
|
||||
email server's reputation themselves.
|
||||
|
||||
.. _email_servers/notifications:
|
||||
|
||||
Default notifications system
|
||||
============================
|
||||
|
||||
Documents in Odoo (such as a CRM opportunity, a sales order, an invoice, etc.) have a discussion
|
||||
thread, called *chatter*.
|
||||
|
||||
When a database user posts a message in the chatter, this message is sent by email to the followers
|
||||
of the document as a notification (except to the sender). If a follower replies to the message,
|
||||
the reply updates the chatter, and Odoo relays another reply to the followers as a notification.
|
||||
Messages sent back to the chatter from users or external users will appear in the chatter from
|
||||
their respective email, or as the name listed in their *Contacts* record.
|
||||
|
||||
These notifications are sent using a default from address. For more information see
|
||||
:ref:`Use a default email address <email_communication/default>`.
|
||||
.. note::
|
||||
Office 365 email servers don't easily allow the sending of external emails from hosts like Odoo.
|
||||
Refer to `Microsoft's documentation <https://support.office.com/en-us/article/How-to-set-up-a-
|
||||
multifunction-device-or-application-to-send-email-using-Office-365-69f58e99-c550-4274-ad18-
|
||||
c805d654b4c4>`_ to make it work.
|
||||
|
||||
Manage outbound messages
|
||||
========================
|
||||
|
||||
As a system admin, go to :menuselection:`Settings --> General Settings --> Discuss` in Odoo, and
|
||||
enable the :guilabel:`Custom Email Servers` option. Then, click :guilabel:`Save`. Next, click
|
||||
:guilabel:`Outgoing Email Servers` and click :guilabel:`Create` to create a new outgoing mail server
|
||||
record in Odoo. Reference the SMTP data of the external email server. Once all the information has
|
||||
been filled out, click :guilabel:`Test Connection`.
|
||||
enable the :guilabel:`External Email Servers` option. Then, click :guilabel:`Save`. Next, click
|
||||
:guilabel:`Outgoing Email Servers` and click :guilabel:`Create` to create a new outgoing mail
|
||||
server record in Odoo. Reference the SMTP data of the external email server. Once all the
|
||||
information has been filled out, click :guilabel:`Test Connection`.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`/administration/maintain/google_oauth`
|
||||
- :doc:`/administration/maintain/azure_oauth`
|
||||
Here is a typical configuration for a G Suite server.
|
||||
|
||||
.. image:: email_servers/outgoing-server.png
|
||||
:align: center
|
||||
:alt: The typical G Suite configuration on Odoo.
|
||||
|
||||
Then, go back to :menuselection:`Settings --> General Settings --> Discuss` and set the email
|
||||
domain name in the :guilabel:`Alias Domain` name. Finally, click :guilabel:`Save` to finish setting
|
||||
up the email server.
|
||||
|
||||
.. note::
|
||||
Ensuring the outgoing domain has :abbr:`SPF (Sender Policy Framework)`, :abbr:`DKIM (DomainKeys
|
||||
Identified Mail)` and :abbr:`DMARC (Domain-based Message Authentication, Reporting, &
|
||||
Conformance)` set up on the :abbr:`DNS (Domain Name System)` will improve deliverability. For
|
||||
more information see :doc:`email_domain`.
|
||||
If an `[AUTHENTICATION FAILED] Invalid credentials (Failure)` warning appears when
|
||||
:guilabel:`Test Connection` is clicked for a Gmail address, activate the :guilabel:`Less secure
|
||||
app access` option. A direct link can be `accessed here <https://myaccount.google.com/
|
||||
lesssecureapps?pli=1>`_.
|
||||
|
||||
In addition to that, enable the :guilabel:`IMAP setting` on the Gmail account.
|
||||
|
||||
Use an Office 365 server
|
||||
------------------------
|
||||
|
||||
An Office 365 server can be used if the database's hosting type is **Odoo on-premise**. Office 365
|
||||
SMTP relays are not compatible with Odoo Online or Odoo.sh unless Odoo is configured to
|
||||
:ref:`force the outgoing "From" address <email_communication/default_from>`.
|
||||
|
||||
Please refer to `Microsoft's documentation <https://support.office.com/en-us/article/How-to-set-up-
|
||||
a-multifunction-device-or-application-to-send-email-using-Office-365-69f58e99-c550-4274-ad18-
|
||||
c805d654b4c4>`_ to configure an SMTP relay for the Odoo database's IP address.
|
||||
|
||||
Use a G Suite server
|
||||
--------------------
|
||||
|
||||
A G Suite server can be used for any Odoo hosting type. To do so, set up the SMTP relay service.
|
||||
The configuration steps are explained in `Google documentation <https://support.google.com
|
||||
/a/answer/2956491?hl=en>`__.
|
||||
|
||||
.. _email_servers/restriction:
|
||||
|
||||
Port restriction
|
||||
----------------
|
||||
Restriction
|
||||
-----------
|
||||
|
||||
Note that port 25 is blocked for security reasons on the Odoo Online and Odoo.sh platforms. Try
|
||||
Please note that port 25 is blocked for security reasons on Odoo Online and Odoo.sh platforms. Try
|
||||
using ports 465, 587, or 2525 instead.
|
||||
|
||||
.. _email_communication/default:
|
||||
.. _email_communication/default_from:
|
||||
|
||||
Use a default "From" email address
|
||||
----------------------------------
|
||||
@@ -88,56 +94,112 @@ Use a default "From" email address
|
||||
Sometimes, an email's "From" (outgoing) address can belong to a different domain, and that can be a
|
||||
problem.
|
||||
|
||||
For example, if a customer with the email address `mary\@customer.example.com` responds to a
|
||||
For example, if a customer with the email address *mary\@customer.example.com* responds to a
|
||||
message, Odoo will try to redistribute that same email to the other subscribers in the thread.
|
||||
However, if the domain `customer.example.com` forbids that kind of usage for security, the email
|
||||
However, if the domain *customer.example.com* forbids that kind of usage for security, the email
|
||||
that Odoo is trying to redistribute would get rejected by some recipients' email servers.
|
||||
|
||||
To avoid that problem, Odoo sends all emails using a "From" address from the same authorized
|
||||
domain.
|
||||
To avoid that problem, make sure all emails use a "From" address from the same authorized domain.
|
||||
|
||||
Access the :guilabel:`System Parameters` by activating :ref:`developer mode <developer-mode>` and
|
||||
going to :menuselection:`Settings --> Technical --> Parameters --> System Parameters` menu.
|
||||
If the MTA supports `SRS (Sender Rewriting Scheme) <https://en.wikipedia.org/wiki/Sender_Rewriting
|
||||
_Scheme>`_, SRS can be enabled to handle these situations. However, that is more complex and
|
||||
requires more technical knowledge that is not meant to be covered by this documentation.
|
||||
|
||||
To force the email address from which emails are sent, a combination of the following keys needs to
|
||||
be set in the system parameters of the database:
|
||||
Instead, Odoo can be configured to do something similar by itself:
|
||||
|
||||
- `mail.default.from`: accepts the local part or a complete email address as value
|
||||
- `mail.default.from_filter`: accepts a domain name or a full email address as value
|
||||
#. Set the :guilabel:`Alias Domain` name in the :menuselection:`Settings --> General Settings
|
||||
--> Discuss`.
|
||||
|
||||
.. image:: email_servers/alias-domain.png
|
||||
:alt: Setting the domain alias configuration on Odoo.
|
||||
|
||||
#. Turn on :doc:`developer mode </applications/general/developer_mode>`.
|
||||
#. Go to :menuselection:`Settings --> Technical --> Parameters --> System Parameters`.
|
||||
#. Add one system parameter from the following list:
|
||||
|
||||
* To use the same "From" address for *all* outgoing messages, use the key `mail.force.smtp.from`
|
||||
and set that address as value (such as `outgoing@mycompany.example.com`).
|
||||
* To keep the original "From" address for emails that use the same domain, but change it for
|
||||
emails that use a different domain, use the key `mail.dynamic.smtp.from` and set the value as
|
||||
the email address that should be used in those cases (such as `outgoing@mycompany.example.com`
|
||||
).
|
||||
|
||||
.. _email_communication/inbound_messages:
|
||||
|
||||
Manage inbound messages
|
||||
=======================
|
||||
|
||||
Odoo relies on generic email aliases to fetch incoming messages.
|
||||
|
||||
* **Reply messages** of messages sent from Odoo are routed to their original discussion thread (and
|
||||
to the inbox of all its followers) by the catchall alias (**catchall@**).
|
||||
* **Bounced messages** are routed to **bounce@** in order to track them in Odoo. This is especially
|
||||
used in `Odoo Email Marketing <https://www.odoo.com/page/email-marketing>`__ to opt-out invalid
|
||||
recipients.
|
||||
* **Original messages**: Several business objects have their own alias to create new records in
|
||||
Odoo from incoming emails:
|
||||
|
||||
* Sales Channel (to create Leads or Opportunities in `Odoo CRM <https://www.odoo.com/page/
|
||||
crm>`__),
|
||||
* Support Channel (to create Tickets in `Odoo Helpdesk <https://www.odoo.com/page/helpdesk>`__),
|
||||
* Projects (to create new Tasks in `Odoo Project <https://www.odoo.com/page
|
||||
/project-management>`__),
|
||||
* Job Positions (to create Applicants in `Odoo Recruitment <https://www.odoo.com/page
|
||||
/recruitment>`__),
|
||||
* etc.
|
||||
|
||||
Depending on the mail server, there might be several methods to fetch emails. The easiest and most
|
||||
recommended method is to manage one email address per Odoo alias in the mail server.
|
||||
|
||||
* Create the corresponding email addresses in the mail server (catchall@, bounce@, sales@, etc.).
|
||||
* Set the :guilabel:`Alias Domain` name in :menuselection:`Settings --> General Settings -->
|
||||
Discuss`.
|
||||
* If the database's hosting type is Odoo on-premise, create an :guilabel:`Incoming Mail Server` in
|
||||
Odoo for each alias. This can be done from the General Settings as well. Fill out the form
|
||||
according to the email provider's settings. Leave the :guilabel:`Actions to Perform on Incoming
|
||||
Mails` field blank. Once all the information has been filled out, click on :guilabel:`TEST &
|
||||
CONFIRM`.
|
||||
|
||||
.. image:: email_servers/incoming-server.png
|
||||
:align: center
|
||||
:alt: Incoming mail server configuration on Odoo.
|
||||
|
||||
* If the database's hosting type is Odoo Online or Odoo.sh, redirecting incoming messages to Odoo's
|
||||
domain name instead of the external email server is recommended. That way, incoming messages can
|
||||
be received without delay. Odoo Online only fetches incoming messages of external servers once
|
||||
every hour. Redirections for all email addresses should be set to Odoo's domain name in the email
|
||||
server (e.g. *catchall\@mydomain.ext* to *catchall\@mycompany.odoo.com*).
|
||||
|
||||
All the aliases are customizable in Odoo. Object aliases can be edited from their respective
|
||||
configuration view.
|
||||
|
||||
.. tip::
|
||||
To edit catchall and bounce aliases, first activate the :ref:`developer mode <developer-mode>`.
|
||||
Then, go to :menuselection:`Settings --> Technical --> Parameters --> System Parameters` to
|
||||
customize the aliases (*mail.catchall.alias* & *mail.bounce.alias*).
|
||||
|
||||
.. image:: email_servers/system-parameters.png
|
||||
:align: center
|
||||
:alt: System parameters with catchall configuration in Odoo.
|
||||
|
||||
By default, inbound messages are fetched every 5 minutes in Odoo on-premise.
|
||||
|
||||
.. note::
|
||||
The `mail.default.from_filter` works only for `odoo-bin` configurations or the default Odoo email
|
||||
server, otherwise this parameter can be set using the `from_filter` field on `ir.mail_server`.
|
||||
This value can be changed in :ref:`developer mode <developer-mode>`. Go to
|
||||
:menuselection:`Settings --> Technical --> Automation --> Scheduled Actions` and look for
|
||||
:guilabel:`Mail: Fetchmail Service`.
|
||||
|
||||
The field can be a domain name or an entire email address, or it can remain empty. If the sender's
|
||||
email address does not match this set filter, then the email will be encapsulated using a
|
||||
combination of the two system parameters: `mail.default.from` and `mail.catchall.domain`.
|
||||
.. _email_servers/outgoing-email-server:
|
||||
|
||||
.. example::
|
||||
In the following example, the from email address is replaced with the combination of the the two
|
||||
system parameters (`mail.default.from` and `mail.catchall.domain`). This is the default\
|
||||
notifications configuration in Odoo: ``“Admin” <admin@example.com>`` => ``“Admin”
|
||||
<notifications@mycompany.com>``.
|
||||
|
||||
In other words if the email address of the author does not match `mail.default.from_filter`, the
|
||||
email address is replaced by `mail.default.from` (if it contains a full email address) or a
|
||||
combination of `mail.default.from` and `mail.catchall.domain`.
|
||||
|
||||
If the `from_filter` contains a full email address, and if the `mail.default.from` is the same as
|
||||
this address, then all of the email addresses that are different from `mail.default.from` will be
|
||||
encapsulated in `mail.default.from`.
|
||||
|
||||
.. _email_communication/from_filter:
|
||||
|
||||
Utilizing the "From" filter on an outgoing email server
|
||||
-------------------------------------------------------
|
||||
Utilizing the From Filter on an outgoing email server
|
||||
=====================================================
|
||||
|
||||
The :guilabel:`FROM Filtering` field allows for the use of a specific outgoing email server
|
||||
depending on the :guilabel:`From` email address or domain that Odoo is sending on behalf of. This
|
||||
setting can be used to improve the deliverability or sending success rate of emails sent from the
|
||||
database. Setting the :guilabel:`FROM Filtering` field can also be used to send from different
|
||||
domains in a multi-company environment. Access this field in Odoo by navigating to
|
||||
:menuselection:`Settings --> Discuss --> Custom Mail Servers --> Outgoing Mail Servers --> New`.
|
||||
:menuselection:`Settings --> Custom Mail Servers --> Outgoing Mail Servers --> New`.
|
||||
|
||||
.. image:: email_servers/from-filter-setting.png
|
||||
:align: center
|
||||
@@ -169,105 +231,24 @@ first outgoing email server (sorted by priority).
|
||||
example, if there are two email servers, one with a priority of `10` and the other with a
|
||||
priority of `20`, then the email server with a priority of `10` is used first.
|
||||
|
||||
.. _email_communication/mass_mails:
|
||||
Set up different dedicated servers for transactional and mass mails
|
||||
===================================================================
|
||||
|
||||
Set up different dedicated servers for transactional and mass emails
|
||||
--------------------------------------------------------------------
|
||||
In Odoo a separate Mail Transfer Agent (MTA) server can be used for transactional emails and mass
|
||||
mailings. Example: Use Postmark or SendinBlue for transactional emails, and Amazon SES, Mailgun or
|
||||
Sendgrid for mass mailings.
|
||||
|
||||
In Odoo a separate email server can be used for transactional emails and mass
|
||||
mailings. Example: Use Postmark or SendinBlue for transactional emails, and Amazon SES, Mailgun,
|
||||
Sendgrid or :doc:`Mailjet </administration/maintain/mailjet_api>` for mass mailings.
|
||||
|
||||
.. important::
|
||||
.. tip::
|
||||
A default outgoing email server is already configured. Do not create an alternative one unless a
|
||||
specific external outgoing email server is needed for technical reasons.
|
||||
|
||||
To do this, first activate the :ref:`developer mode <developer-mode>`, and then go to
|
||||
:menuselection:`Settings --> Technical --> Outgoing` email servers. There, create two outgoing email
|
||||
server settings; one for the transactional emails and one for the mass mailing server. Make sure to
|
||||
give priority to the transactional server over the mass mailing server by providing a lower priority
|
||||
number for the transactional email server.
|
||||
:menuselection:`Settings --> Technical --> Outgoing` email servers. There, create two email MTA
|
||||
server settings; one for the transactional emails and one for the mass mailing server. Make sure
|
||||
to give priority to the transactional server over the mass mailing server by providing a lower
|
||||
priority number for the transactional MTA server.
|
||||
|
||||
Now, go to :menuselection:`Email Marketing --> Settings` and enable :guilabel:`Dedicated Server`.
|
||||
Choose the appropriate email server. With these settings, Odoo uses the server with the lower
|
||||
priority for transactional emails, and the server here selected for mass mails. Note that in this
|
||||
case, the domain's Sender Policy Framework (SPF) records must be set to include both transactional
|
||||
and mass mail servers.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`email_domain`
|
||||
|
||||
.. _email_communication/inbound_messages:
|
||||
|
||||
Manage inbound messages
|
||||
=======================
|
||||
|
||||
Odoo relies on generic email aliases to fetch incoming messages.
|
||||
|
||||
* **Reply messages** of messages sent from Odoo are routed to their original discussion thread (and
|
||||
to the inbox of all its followers) by the alias of the model if there is any or by the catchall
|
||||
alias (**catchall@**). Replies to messages of models that don't have a custom alias will use the
|
||||
catchall alias (`catchall@mycompany.odoo.com`). The catchall address, however, does not have
|
||||
another action attached to it like other aliases might, it is only used to collect replies.
|
||||
* **Bounced messages** are used as a Return-Path. One example this is especially
|
||||
useful for is in `Odoo Email Marketing <https://www.odoo.com/page/email-marketing>`__. In this
|
||||
case bounces are opt-out based on if the email bounced too many times (5) in the last month and
|
||||
the bounces are separated by one week. This is done to avoid blacklisting someone because of a
|
||||
mail server error. If these circumstances are met then the email is considered invalid and is
|
||||
blacklisted. A log note is added on the contact under :guilabel:`Blacklisted Email Addresses` on
|
||||
the :guilabel:`Email Marketing Configuration Menu`.
|
||||
|
||||
Messages that bounce in the chatter (outside of Email Marketing) will populate a red envelope
|
||||
indicating the failed delivery. This can be helpful to know that a Sales Order or an Invoice did
|
||||
not reach its final destination.
|
||||
* **Original messages**: several business objects have their own alias to create new records in Odoo
|
||||
from incoming emails:
|
||||
|
||||
* Sales channel (to create *Leads* or *Opportunities* in `Odoo CRM <https://www.odoo.com/page/
|
||||
crm>`_)
|
||||
* Support channel (to create *Tickets* in `Odoo Helpdesk <https://www.odoo.com/page/helpdesk>`_)
|
||||
* Projects (to create new *Tasks* in `Odoo Project <https://www.odoo.com/page
|
||||
/project-management>`_)
|
||||
* Job positions (to create *Applicants* in `Odoo Recruitment <https://www.odoo.com/page
|
||||
/recruitment>`_)
|
||||
|
||||
Depending on the mail server, there might be several methods to fetch emails. The easiest and most
|
||||
recommended method is to manage one email address per Odoo alias in the mail server.
|
||||
|
||||
* Create the corresponding email addresses in the mail server (**catchall@**, **bounce@**,
|
||||
**sales@**, etc.).
|
||||
* Set the :guilabel:`Alias Domain` name in :menuselection:`Settings --> General Settings -->
|
||||
Discuss`. Changing the :guilabel:`Alias Domain` will change the catchall's domain for the
|
||||
database.
|
||||
* If the database's hosting type is Odoo on-premise, create an :guilabel:`Incoming Mail Server` in
|
||||
Odoo for each alias. To create a new incoming server go to: :menuselection:`Settings --> Discuss
|
||||
--> Custom Mail Servers --> Incoming Mail Servers --> New` Fill out the form according to the
|
||||
email provider's settings. Leave the :guilabel:`Actions to Perform on Incoming Mails` field blank.
|
||||
Once all the information has been filled out, click on :guilabel:`TEST & CONFIRM`.
|
||||
|
||||
.. image:: email_servers/incoming-server.png
|
||||
:align: center
|
||||
:alt: Incoming mail server configuration on Odoo.
|
||||
|
||||
* If the database's hosting type is Odoo Online or Odoo.sh, redirecting or forwarding incoming
|
||||
messages to Odoo's domain name instead of the external email server is recommended. That way,
|
||||
incoming messages can be received without delay. Redirections for all email addresses should be
|
||||
set to Odoo's domain name in the email server (e.g. `catchall\@mydomain.ext` to
|
||||
`catchall\@mycompany.odoo.com`).
|
||||
|
||||
All the aliases are customizable in Odoo. Object aliases can be edited from their respective
|
||||
configuration view by navigating to :menuselection:`Settings --> Technical Menu --> Email -->
|
||||
Aliases`.
|
||||
|
||||
To edit catchall and bounce aliases, first activate the :ref:`developer mode <developer-mode>`.
|
||||
Then, go to :menuselection:`Settings --> Technical --> Parameters --> System Parameters` to
|
||||
customize the aliases (`mail.catchall.alias` & `mail.bounce.alias`). These types of changes should
|
||||
be completed prior to the database going live. If a customer replies after a change is made then the
|
||||
system will not recognize the old alias and the reply won't be received.
|
||||
|
||||
By default, inbound messages are fetched every 5 minutes for on-premise databases.
|
||||
|
||||
.. note::
|
||||
This value can be changed in :ref:`developer mode <developer-mode>`. Go to
|
||||
:menuselection:`Settings --> Technical --> Automation --> Scheduled Actions` and look for
|
||||
:guilabel:`Mail: Fetchmail Service`.
|
||||
With these settings, Odoo uses the server with the lower priority for transactional emails, and the
|
||||
server here selected for mass mails. Note that in this case, the domain's Sender Policy Framework
|
||||
(SPF) records must be set to include both transactional and mass mail servers.
|
||||
|
||||
|
After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 43 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 117 KiB After Width: | Height: | Size: 58 KiB |
@@ -1,8 +1,10 @@
|
||||
:nosearch:
|
||||
:hide-page-toc:
|
||||
:show-toc:
|
||||
|
||||
===================
|
||||
Users and companies
|
||||
===================
|
||||
=================
|
||||
Users & Companies
|
||||
=================
|
||||
|
||||
Odoo defines a *user* as someone who has access to a database to perform daily tasks. You can add as
|
||||
many users as you need and, in order to restrict the type of information each user can access, rules
|
||||
@@ -16,4 +18,3 @@ can be applied. Users and access rights can be added and changed at any point.
|
||||
users/access_rights
|
||||
users/companies
|
||||
users/portal
|
||||
users/delete_account
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
============================
|
||||
Deleting an Odoo.com Account
|
||||
============================
|
||||
|
||||
To delete your Odoo.com account, access the delete option by clicking on the user icon. The delete
|
||||
option can be accessed by going to :menuselection:`My Account --> Edit Security Settings --> Delete
|
||||
Account`. It can also be accessed by going to https://www.odoo.com/my/home.
|
||||
|
||||
.. danger::
|
||||
Deleting an Odoo account is irreversible. Take caution when performing this action as the
|
||||
Odoo.com account will not be retrievable.
|
||||
|
||||
Upon clicking the :guilabel:`Delete Account` button, a pop-up window will appear, asking you to
|
||||
confirm the account deletion.
|
||||
|
||||
.. image:: delete_account/delete-account.png
|
||||
:align: center
|
||||
:alt: Clicking on the Delete Account button will populate a window verifying the change.
|
||||
|
||||
Confirm the deletion by entering the :guilabel:`password` and the :guilabel:`login` for the account
|
||||
being deleted. Click the :guilabel:`Delete Account` button to confirm the deletion.
|
||||
|
Before Width: | Height: | Size: 18 KiB |
@@ -27,9 +27,7 @@ needed.
|
||||
in the Odoo database.
|
||||
|
||||
.. important::
|
||||
Odoo integration of Sendcloud works on free Sendcloud plans *only* if a bank account is linked,
|
||||
since Sendcloud won't ship for free. To use shipping rules or individual custom carrier contacts,
|
||||
a paid plan of Sendcloud is required.
|
||||
Odoo integration of Sendcloud does **not** work on free plans of Sendcloud.
|
||||
|
||||
Warehouse configuration
|
||||
-----------------------
|
||||
@@ -145,7 +143,7 @@ After configuring and saving the form, follow these steps to load the shipping p
|
||||
| :guilabel:`Return Shipping Product`: `DPD Return 0-20kg`
|
||||
| :guilabel:`Return Carrier`: `DPD`
|
||||
| :guilabel:`Return Minimum Weight`: `0.00`
|
||||
| :guilabel:`Return Maximum Weight`: `20.00`
|
||||
| :guilabel:`Return Minimum Weight`: `20.00`
|
||||
| :guilabel:`Return Countries`: `Belgium` `Netherlands`
|
||||
|
||||
.. image:: sendcloud_shipping/sendcloud-example.png
|
||||
|
||||
@@ -12,7 +12,7 @@ that even product variants can have their own tailored :abbr:`BoMs (Bills of Mat
|
||||
Correctly setting up a :abbr:`BoM (Bill of Materials)` helps optimize the manufacturing process and
|
||||
save time.
|
||||
|
||||
Set up a bill of materials (BoM)
|
||||
Set up a bill of baterials (BoM)
|
||||
================================
|
||||
|
||||
The simplest :abbr:`BoM (Bill of Materials)` setup is one without operations or instructions, only
|
||||
|
||||
@@ -1,38 +1,15 @@
|
||||
:show-content:
|
||||
:nosearch:
|
||||
|
||||
===================
|
||||
Restaurant features
|
||||
Restaurant Features
|
||||
===================
|
||||
|
||||
Managing a restaurant or a bar comes with specific needs. The Point of Sale application provides
|
||||
various features that allow performing all the required tasks in such businesses.
|
||||
|
||||
Once the POS is set to be used in a restaurant or a bar, you can:
|
||||
|
||||
- :doc:`organize your floors and tables to reflect your interior <restaurant/floors_tables>`;
|
||||
- :ref:`take orders <floors_tables/orders>`;
|
||||
- :doc:`communicate with the kitchen or the bar through the POS <restaurant/kitchen_printing>`;
|
||||
- :doc:`print bills in advance and split them <restaurant/bill_printing>`;
|
||||
- :doc:`collect tips <restaurant/tips>`; and
|
||||
- :doc:`set different taxes for takeaway food <restaurant/fiscal_position>`.
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
To enable the restaurant and bar-specific features, go to :menuselection:`Point of Sale -->
|
||||
Configuration --> Settings`, select the POS, and activate :guilabel:`Is a Bar/Restaurant`.
|
||||
|
||||
These features are displayed in the :guilabel:`Restaurant & Bar` section.
|
||||
|
||||
.. image:: restaurant/restaurant-bar-section.png
|
||||
:align: center
|
||||
:alt: restaurant and bar-specific features
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
restaurant/restaurant
|
||||
restaurant/split
|
||||
restaurant/bill_printing
|
||||
restaurant/floors_tables
|
||||
restaurant/kitchen_printing
|
||||
restaurant/fiscal_position
|
||||
restaurant/tips
|
||||
|
||||
@@ -1,41 +1,29 @@
|
||||
=====
|
||||
Bills
|
||||
=====
|
||||
|
||||
Typical practices in restaurants or bars are to request the bill before proceeding to payment or
|
||||
splitting it based on the items ordered. Odoo POS provides two features to perform these tasks
|
||||
seamlessly: **Bill Printing** and **Bill Splitting**.
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
To activate the features, go to :menuselection:`Point of Sale --> Configuration --> Settings`,
|
||||
select the POS, and activate :guilabel:`Early Receipt Printing` and :guilabel:`Allow Bill Splitting`
|
||||
in the :guilabel:`Restaurant & Bar` section.
|
||||
|
||||
.. image:: bill_printing/settings.png
|
||||
:align: center
|
||||
:alt: activate the bill printing and bill splitting features in the POS settings
|
||||
|
||||
Bill printing
|
||||
=============
|
||||
|
||||
From an open session, click :menuselection:`Bill --> Print` at any moment to generate and print a
|
||||
bill.
|
||||
|
||||
.. note::
|
||||
The printed bill is **not** final and will be updated to reflect any changes to the order.
|
||||
|
||||
Bill splitting
|
||||
==============
|
||||
Print the Bill
|
||||
==============
|
||||
|
||||
From an open session, click :guilabel:`Split` to select the items to regroup. Once everything is
|
||||
selected, click :guilabel:`Payment` and proceed to checkout for these items. Repeat for each guest.
|
||||
Use the *Bill Printing* feature to print the bill before the payment.
|
||||
This is useful if the bill is still subject to evolve and is thus not
|
||||
the definitive ticket.
|
||||
|
||||
.. note::
|
||||
- Once you return to the table, the selected items are no longer on order, as they have been paid
|
||||
for.
|
||||
- The feature is available as soon as at least two items are ordered.
|
||||
Configure Bill Printing
|
||||
=======================
|
||||
|
||||
.. seealso::
|
||||
- :doc:`floors_tables`
|
||||
To activate *Bill Printing*, go to :menuselection:`Point of Sale -->
|
||||
Configuration --> Point of sale` and select your PoS interface.
|
||||
|
||||
Under the Bills & Receipts category, you will find *Bill Printing*
|
||||
option.
|
||||
|
||||
.. image:: bill_printing/bill_printing01.png
|
||||
:align: center
|
||||
|
||||
Split a Bill
|
||||
============
|
||||
|
||||
On your PoS interface, you now have a *Bill* button.
|
||||
|
||||
.. image:: bill_printing/bill_printing02.png
|
||||
:align: center
|
||||
|
||||
When you use it, you can then print the bill.
|
||||
|
||||
|
After Width: | Height: | Size: 33 KiB |
|
After Width: | Height: | Size: 63 KiB |