Compare commits
157 Commits
saas-16.1-
...
saas-16.2-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c6105bcf24 | ||
|
|
c91ea3d251 | ||
|
|
9878b58a04 | ||
|
|
fdea740edc | ||
|
|
a8deaf9594 | ||
|
|
4914c45d88 | ||
|
|
6757b2691b | ||
|
|
11b2c5250b | ||
|
|
d6acaf70c1 | ||
|
|
ec40c817da | ||
|
|
69248346db | ||
|
|
c69cb37be3 | ||
|
|
19288088f9 | ||
|
|
24f4348a46 | ||
|
|
dc2a988173 | ||
|
|
9fb4c01b19 | ||
|
|
7effc12f02 | ||
|
|
0d6466fbbf | ||
|
|
9651908b73 | ||
|
|
5c89a56634 | ||
|
|
7c4efb6fa9 | ||
|
|
7c8b8269eb | ||
|
|
ccd282023a | ||
|
|
19b4797d37 | ||
|
|
6def5713d3 | ||
|
|
cc997535b2 | ||
|
|
cb06fb7687 | ||
|
|
a18fe9a25b | ||
|
|
3f0a7cd34e | ||
|
|
aeed9418b4 | ||
|
|
f6ce2b9904 | ||
|
|
2c45872c57 | ||
|
|
d5fc577b0b | ||
|
|
716699782a | ||
|
|
d044ac2b59 | ||
|
|
3c338ea041 | ||
|
|
74d5d52874 | ||
|
|
7b9abb3bef | ||
|
|
5f60c80baa | ||
|
|
830ec0c321 | ||
|
|
66024b841e | ||
|
|
d56d5a5af2 | ||
|
|
c0b0457de5 | ||
|
|
40d3785ddf | ||
|
|
75a102323b | ||
|
|
497f7660f3 | ||
|
|
5c89f63fb9 | ||
|
|
24f6c4c55e | ||
|
|
64fa68e188 | ||
|
|
0da8718bf7 | ||
|
|
097c247449 | ||
|
|
8a07f95e43 | ||
|
|
d85715a176 | ||
|
|
a6fb221a75 | ||
|
|
de72e6cdfa | ||
|
|
22c5ae8905 | ||
|
|
eb72280e1d | ||
|
|
18b6872d88 | ||
|
|
9ce0d967b2 | ||
|
|
4efaa8ccff | ||
|
|
707bc15352 | ||
|
|
f5326fa593 | ||
|
|
3327711e25 | ||
|
|
009ae8ffde | ||
|
|
0fb94a128e | ||
|
|
987aef16ec | ||
|
|
8260880d6f | ||
|
|
657e6a0cce | ||
|
|
2b40e9103e | ||
|
|
f0814df058 | ||
|
|
ed4b8c1320 | ||
|
|
6d50ac96de | ||
|
|
518db8b02a | ||
|
|
cc3ca497f3 | ||
|
|
b75a798ae6 | ||
|
|
ba7a47e03e | ||
|
|
d783dd375a | ||
|
|
c2d7f03b8b | ||
|
|
1292abc9e7 | ||
|
|
899960a66d | ||
|
|
c3a66c28a0 | ||
|
|
018d708b44 | ||
|
|
286ae4a7b7 | ||
|
|
5cd64c158f | ||
|
|
1b8da9b0a9 | ||
|
|
26b45abb9e | ||
|
|
ffa10a9b0a | ||
|
|
cb122ad068 | ||
|
|
edaa9773f9 | ||
|
|
82a778ef23 | ||
|
|
a49d1b7c9c | ||
|
|
655f923d11 | ||
|
|
cd81a97399 | ||
|
|
e297b6254e | ||
|
|
8c6175f77d | ||
|
|
ea6b25aba8 | ||
|
|
f90bc13ade | ||
|
|
60095ca6e4 | ||
|
|
65d71dd7be | ||
|
|
f4c8a0f929 | ||
|
|
aafa593c6a | ||
|
|
7b7e87c33e | ||
|
|
528a9c26a1 | ||
|
|
a844c0aa12 | ||
|
|
ae33eaad60 | ||
|
|
5f45c6aff8 | ||
|
|
a39f2d4421 | ||
|
|
aaac56f2f4 | ||
|
|
080835be2b | ||
|
|
fd25400847 | ||
|
|
772a56a693 | ||
|
|
5d0b31a508 | ||
|
|
2e92bea4da | ||
|
|
a1b17b9f31 | ||
|
|
f7d9f58b25 | ||
|
|
478fdc07b1 | ||
|
|
128bc1786c | ||
|
|
67dff9aa43 | ||
|
|
4aba55b1fe | ||
|
|
aec7a8aaed | ||
|
|
4eab939d67 | ||
|
|
4ccae58e6f | ||
|
|
a51a8ad9fc | ||
|
|
5fb8de203d | ||
|
|
c61c65da47 | ||
|
|
a74be8db2f | ||
|
|
55ccf597ef | ||
|
|
7cec0db05f | ||
|
|
847f47bcc3 | ||
|
|
2d1d9d773a | ||
|
|
f2b39b8e64 | ||
|
|
c450c8f5c4 | ||
|
|
e08338a4f4 | ||
|
|
2cd2b864a7 | ||
|
|
92851b1bb4 | ||
|
|
1141780b6c | ||
|
|
afcf02cb30 | ||
|
|
b5efab7201 | ||
|
|
aef4f46c59 | ||
|
|
1d6c78a006 | ||
|
|
2ceaa3ef1d | ||
|
|
ff7c86c91c | ||
|
|
73be78f25e | ||
|
|
ecf2e4f94a | ||
|
|
b8ffda3c07 | ||
|
|
e9f6ddb7c3 | ||
|
|
b37ca22bb0 | ||
|
|
86dd91f009 | ||
|
|
f842fc850f | ||
|
|
ab1cb5d515 | ||
|
|
d5f642d3c6 | ||
|
|
0f1be083b5 | ||
|
|
3690bba092 | ||
|
|
37146744a0 | ||
|
|
5457a07a4e | ||
|
|
f02080d755 | ||
|
|
10c7b5cbae |
2
Makefile
@@ -26,7 +26,7 @@ SOURCE_DIR = content
|
||||
|
||||
HTML_BUILD_DIR = $(BUILD_DIR)/html
|
||||
ifdef VERSIONS
|
||||
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/saas-16.1
|
||||
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/saas-16.2
|
||||
endif
|
||||
ifneq ($(CURRENT_LANG),en)
|
||||
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/$(CURRENT_LANG)
|
||||
|
||||
13
conf.py
@@ -22,7 +22,7 @@ copyright = 'Odoo S.A.'
|
||||
# `version` is the version info for the project being documented, acts as replacement for |version|,
|
||||
# also used in various other places throughout the built documents.
|
||||
# `release` is the full version, including alpha/beta/rc tags. Acts as replacement for |release|.
|
||||
version = release = 'saas-16.1'
|
||||
version = release = 'saas-16.2'
|
||||
|
||||
# `current_branch` is the technical name of the current branch.
|
||||
# E.g., saas-15.4 -> saas-15.4; 12.0 -> 12.0, master -> master (*).
|
||||
@@ -213,6 +213,7 @@ sphinx.transforms.i18n.docname_to_domain = (
|
||||
# is populated. If a version is passed to `versions` but is not listed here, it will not be shown.
|
||||
versions_names = {
|
||||
'master': "Master",
|
||||
'saas-16.2': "Odoo Online",
|
||||
'saas-16.1': "Odoo Online",
|
||||
'16.0': "Odoo 16",
|
||||
'saas-15.2': "Odoo Online",
|
||||
@@ -318,6 +319,12 @@ 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'
|
||||
|
||||
@@ -446,6 +453,10 @@ 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,80 +1,109 @@
|
||||
===========================================
|
||||
Setting up a Content Delivery Network (CDN)
|
||||
===========================================
|
||||
=======================================
|
||||
Set up a content delivery network (CDN)
|
||||
=======================================
|
||||
|
||||
.. _reference/cdn/keycdn:
|
||||
|
||||
Deploying with KeyCDN_
|
||||
======================
|
||||
Deploying with KeyCDN
|
||||
=====================
|
||||
|
||||
.. sectionauthor:: Fabien Meghazi
|
||||
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.
|
||||
|
||||
This document will guide you through the setup of a KeyCDN_ account with your
|
||||
Odoo powered website.
|
||||
This document will guide you through the setup of a KeyCDN_ account with an Odoo powered website.
|
||||
|
||||
Step 1: Create a pull zone in the KeyCDN dashboard
|
||||
--------------------------------------------------
|
||||
Create a pull zone in the KeyCDN dashboard
|
||||
------------------------------------------
|
||||
|
||||
.. image:: cdn/keycdn_create_a_pull_zone.png
|
||||
:class: img-fluid
|
||||
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)`.
|
||||
|
||||
When creating the zone, enable the CORS option in the
|
||||
:guilabel:`advanced features` submenu. (more on that later)
|
||||
.. 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.
|
||||
|
||||
.. image:: cdn/keycdn_enable_CORS.png
|
||||
:class: img-fluid
|
||||
.. image:: cdn/keycdn-zone.png
|
||||
:align: center
|
||||
:alt: KeyCDN's Zone configuration page.
|
||||
|
||||
Once done, you'll have to wait a bit while KeyCDN_ is crawling your website.
|
||||
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`.
|
||||
|
||||
.. image:: cdn/keycdn_progressbar.png
|
||||
:class: img-fluid
|
||||
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.
|
||||
|
||||
.. note:: a new URL has been generated for your Zone, in this case it is
|
||||
``http://pulltest-b49.kxcdn.com``
|
||||
.. image:: cdn/zone-url.png
|
||||
:align: center
|
||||
:alt: KeyCDN deploying the new Zone.
|
||||
|
||||
Step 2: Configure the odoo instance with your zone
|
||||
--------------------------------------------------
|
||||
.. 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.
|
||||
|
||||
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.
|
||||
Copy this :guilabel:`Zone URL` to a text editor for later, as it will be used in the next steps.
|
||||
|
||||
.. image:: cdn/odoo_cdn_base_url.png
|
||||
:class: img-fluid
|
||||
Configure the Odoo instance with the new zone
|
||||
---------------------------------------------
|
||||
|
||||
Now your website is using the CDN for the resources matching the
|
||||
:guilabel:`CDN filters` regular expressions.
|
||||
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.
|
||||
|
||||
You can have a look to the HTML of your website in order to check if the CDN
|
||||
integration is properly working.
|
||||
.. note::
|
||||
Ensure that there are two *forward slashes* (`//`) before the :guilabel:`CDN Base URL` and one
|
||||
forward slash (`/`) after the :guilabel:`CDN Base URL`.
|
||||
|
||||
.. image:: cdn/odoo_check_your_html.png
|
||||
:class: img-fluid
|
||||
:guilabel:`Save` the settings when complete.
|
||||
|
||||
.. image:: cdn/cdn-base-url.png
|
||||
:align: center
|
||||
:alt: Activate the CDN setting in Odoo.
|
||||
|
||||
Why should I activate CORS?
|
||||
---------------------------
|
||||
Now the website is using the CDN for the resources matching the :guilabel:`CDN filters` regular
|
||||
expressions.
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
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.
|
||||
.. image:: cdn/test-pull.png
|
||||
:align: center
|
||||
:alt: The CDN Base URL can be seen using the inspect function on the Odoo website.
|
||||
|
||||
Here's what you would see on your homepage in such a case:
|
||||
Prevent security issues by activating cross-origin resource sharing (CORS)
|
||||
--------------------------------------------------------------------------
|
||||
|
||||
.. image:: cdn/odoo_font_file_not_loaded.png
|
||||
:class: img-fluid
|
||||
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.
|
||||
|
||||
A security error message will also appear in the browser's console:
|
||||
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.
|
||||
|
||||
.. image:: cdn/odoo_security_message.png
|
||||
:class: img-fluid
|
||||
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:
|
||||
|
||||
Enabling the CORS option in the CDN fixes this issue.
|
||||
``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.
|
||||
|
||||
.. _KeyCDN: https://www.keycdn.com
|
||||
|
||||
BIN
content/administration/install/cdn/cdn-base-url.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
content/administration/install/cdn/keycdn-zone.png
Normal file
|
After Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 28 KiB |
BIN
content/administration/install/cdn/odoo-security-message.png
Normal file
|
After Width: | Height: | Size: 7.8 KiB |
|
Before Width: | Height: | Size: 9.8 KiB |
|
Before Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 7.2 KiB |
BIN
content/administration/install/cdn/test-pull.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
content/administration/install/cdn/zone-url.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
@@ -11,6 +11,10 @@ personal email address or an address created by a custom domain.
|
||||
`Microsoft Learn: Register an application with the Microsoft identity platform
|
||||
<https://learn.microsoft.com/azure/active-directory/develop/quickstart-register-app>`_
|
||||
|
||||
.. seealso::
|
||||
- :doc:`/applications/general/auth/azure`
|
||||
- :doc:`/applications/general/calendars/outlook/outlook_calendar`
|
||||
|
||||
Setup in Microsoft Azure Portal
|
||||
===============================
|
||||
|
||||
@@ -161,9 +165,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_from>`.
|
||||
<email_communication/default>`.
|
||||
|
||||
Then, cick on :guilabel:`Connect your Outlook account`.
|
||||
Then, click 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.
|
||||
|
||||
@@ -11,6 +11,10 @@ email address or an address created by a custom domain.
|
||||
For more information, visit `Google's documentation
|
||||
<https://support.google.com/cloud/answer/6158849>`_ on setting up OAuth.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`/applications/general/auth/google`
|
||||
- :doc:`/applications/general/calendars/google/google_calendar_credentials`
|
||||
|
||||
Setup in Google
|
||||
===============
|
||||
|
||||
|
||||
@@ -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_servers/outgoing-email-server>`.
|
||||
<email_communication/from_filter>`.
|
||||
#. 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,20 +3,22 @@ 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 *My Databases*.
|
||||
<https://www.odoo.com/my/databases>`_ by clicking on the user icon, then on
|
||||
:guilabel:`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 you are connected as the administrator of the database you want to manage.
|
||||
Make sure to connect as the administrator of the database that changes will be made on.
|
||||
|
||||
.. image:: odoo_online/dropdown-menu.png
|
||||
:align: right
|
||||
:alt: Clicking on the gear icon opens the drop-down menu.
|
||||
|
||||
Open the drop-down menu next to the database you want to manage by clicking on the gear icon.
|
||||
Open the drop-down menu next to the database that changes will be made on by clicking on the gear
|
||||
icon.
|
||||
|
||||
Several actions are available:
|
||||
|
||||
@@ -35,22 +37,22 @@ Several actions are available:
|
||||
Upgrade
|
||||
=======
|
||||
|
||||
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).
|
||||
If the database is *not* on the latest **Online version**, the administrator should receive an
|
||||
invitation to :doc:`upgrade <../upgrade>` the database. A :guilabel:`Rolling Release`` button on the
|
||||
database's main screen proposes an upgrade to the latest version (e.g., 14.0 to 16.1).
|
||||
|
||||
.. important::
|
||||
- | **If 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
|
||||
- | **If the Odoo database's version is lower than the latest major release:**
|
||||
| The database must be upgraded within two months. After these two months, an automatic
|
||||
upgrade is initiated.
|
||||
- | **If 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
|
||||
- | **If the Odoo database's version is equal to or higher than the latest major release:**
|
||||
| Disregard the invitation to upgrade as the database probably wouldn't benefit from new
|
||||
features every two months.
|
||||
|
||||
.. note::
|
||||
Versions that are not supported anymore become deprecated and need to be updated to avoid
|
||||
security issues. 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.
|
||||
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.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`../upgrade`
|
||||
@@ -61,12 +63,12 @@ upgrade to the latest version (e.g., 13.0 to 15.1).
|
||||
Duplicate
|
||||
=========
|
||||
|
||||
Make an exact copy of the database to be able to perform testing without compromising the daily
|
||||
operations.
|
||||
This allows to make an exact copy of the database to be able to perform testing without compromising
|
||||
the daily operations.
|
||||
|
||||
.. important::
|
||||
- By checking *For testing purposes*, all external communication (emails, payments, delivery
|
||||
orders, etc.) are disabled by default on the duplicated database.
|
||||
- By checking :guilabel:`For testing purposes`, all external communication (emails, payments,
|
||||
delivery orders, etc.) are disabled by default on the duplicated database.
|
||||
- Duplicate databases expire automatically after 15 days.
|
||||
|
||||
.. _odoo_online/rename:
|
||||
@@ -81,7 +83,7 @@ Rename the database and its URL.
|
||||
Download
|
||||
========
|
||||
|
||||
Download instantly a ZIP file with a backup of the database.
|
||||
Instantly download a ZIP file with a backup of the database.
|
||||
|
||||
.. note::
|
||||
Databases are backed up daily according to the `Odoo Cloud SLA
|
||||
@@ -115,8 +117,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.
|
||||
|
||||
Read carefully the warning message that pops up and proceed only if you fully understand the
|
||||
implications of deleting a database:
|
||||
Carefully read the warning message that pops up and proceed only if the implications of deleting a
|
||||
database are fully understood:
|
||||
|
||||
.. image:: odoo_online/delete.png
|
||||
:align: center
|
||||
@@ -127,7 +129,6 @@ implications of deleting a database:
|
||||
- The database name is immediately available for a new database.
|
||||
- It is not possible to delete a database if it is expired or linked to a subscription. If
|
||||
needed, please get in touch with `Odoo Support <https://www.odoo.com/help>`_.
|
||||
- To delete your account, please get in touch with `Odoo Support <https://www.odoo.com/help>`_.
|
||||
|
||||
.. _odoo_online/contact-support:
|
||||
|
||||
@@ -142,14 +143,15 @@ pre-filled.
|
||||
Invite / Remove 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*.
|
||||
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`.
|
||||
|
||||
.. 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 *Remove*.
|
||||
To remove users, select the users to remove and click on :guilabel:`Remove`.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`/applications/general/users/manage_users`
|
||||
- :doc:`/applications/general/users/delete_account`
|
||||
|
||||
@@ -26,9 +26,13 @@ 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 | |green| | N/A | N/A | March 2022 | January 2023 |
|
||||
| Odoo saas~15.2 | |red| | N/A | N/A | March 2022 | January 2023 |
|
||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
||||
| Odoo saas~15.1 | |red| | N/A | N/A | February 2022 | July 2022 |
|
||||
+-----------------+-------------+----------+-------------+----------------+------------------------+
|
||||
|
||||
@@ -18,6 +18,7 @@ Discover our user guides and configuration tutorials per application.
|
||||
applications/sales
|
||||
applications/websites
|
||||
applications/inventory_and_mrp
|
||||
applications/hr
|
||||
applications/marketing
|
||||
applications/services
|
||||
applications/productivity
|
||||
|
||||
@@ -8,6 +8,7 @@ Bank and cash
|
||||
:titlesonly:
|
||||
|
||||
bank/setup
|
||||
bank/feeds
|
||||
bank/misc
|
||||
bank/bank_synchronization
|
||||
bank/transactions
|
||||
bank/reconciliation
|
||||
bank/interbank
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
======================================
|
||||
Bank synchronization: automatic import
|
||||
======================================
|
||||
:show-content:
|
||||
|
||||
====================
|
||||
Bank synchronization
|
||||
====================
|
||||
|
||||
Odoo can synchronize directly with your bank institution to get all bank statements imported
|
||||
automatically into your database.
|
||||
@@ -15,9 +17,12 @@ To connect to the banks, Odoo uses multiple web-services:
|
||||
|
||||
- **Plaid**: United States of America and Canada
|
||||
- **Yodlee**: Worldwide
|
||||
- **Salt Edge**: Europe (:doc:`more information <saltedge>`)
|
||||
- **Ponto**: Europe (:doc:`more information <ponto>`)
|
||||
- **EnableBanking**: Scandinavian countries
|
||||
- :doc:`Salt Edge <bank_synchronization/saltedge>`: Europe
|
||||
- :doc:`Ponto <bank_synchronization/ponto>`: Europe
|
||||
- :doc:`Enable Banking <bank_synchronization/enablebanking>`: Scandinavian countries
|
||||
|
||||
.. seealso::
|
||||
:doc:`transactions`
|
||||
|
||||
Configuration
|
||||
=============
|
||||
@@ -196,7 +201,9 @@ You can update your credentials by going to :menuselection:`Accounting Dashboard
|
||||
Configuration --> Accounting: Online Synchronization`,open the connection you want to update your
|
||||
credentials and click on the :guilabel:`Update Credentials` button.
|
||||
|
||||
.. seealso::
|
||||
* :doc:`bank_statements`
|
||||
* :doc:`ponto`
|
||||
* :doc:`saltedge`
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
bank_synchronization/saltedge
|
||||
bank_synchronization/ponto
|
||||
bank_synchronization/enablebanking
|
||||
@@ -0,0 +1,36 @@
|
||||
==============
|
||||
Enable Banking
|
||||
==============
|
||||
|
||||
**Enable Banking** is a third-party provider aggregating banking information from bank accounts all
|
||||
in one place. It offers non-intrusive connectivity to ASPSPs' official APIs across Europe without
|
||||
storing data.
|
||||
|
||||
.. image:: enablebanking/enablebanking.png
|
||||
:align: center
|
||||
:alt: Enable Banking logo
|
||||
|
||||
**Odoo** synchronizes directly with banks to get access to all bank transactions and automatically
|
||||
import them into your database.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`../bank_synchronization`
|
||||
- `Enable Banking website <https://enablebanking.com/>`_
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
Link bank accounts with Odoo
|
||||
----------------------------
|
||||
|
||||
#. Start synchronization by clicking on :menuselection:`Accounting --> Configuration -->
|
||||
Add a Bank Account`;
|
||||
#. Select your bank;
|
||||
#. Make sure you give your consent to share your account information with Odoo by clicking
|
||||
:guilabel:`Continue authentication`;
|
||||
|
||||
.. image:: enablebanking/enablebankingauth.png
|
||||
:align: center
|
||||
:alt: Enable Banking authentication page
|
||||
|
||||
#. Finally, you are redirected to your bank's login page.
|
||||
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 15 KiB |
@@ -1,6 +1,6 @@
|
||||
======================================
|
||||
Ponto as bank synchronization provider
|
||||
======================================
|
||||
=====
|
||||
Ponto
|
||||
=====
|
||||
|
||||
**Ponto** is a service that allows companies and professionals to aggregate their accounts in one
|
||||
place and directly see all their transactions within one app. It is a third-party solution that is
|
||||
@@ -16,9 +16,9 @@ into your database.
|
||||
Ponto is a paid third-party provider that can handle the synchronization between your bank accounts
|
||||
and Odoo. `Its pricing is 4€/month per account/integration <https://myponto.com/en#pricing>`_.
|
||||
|
||||
.. note::
|
||||
You can find more information about bank synchronization :doc:`on this page
|
||||
<bank_synchronization>`.
|
||||
.. seealso::
|
||||
- :doc:`../bank_synchronization`
|
||||
- :doc:`../transactions`
|
||||
|
||||
Configuration
|
||||
=============
|
||||
@@ -115,10 +115,3 @@ and we advise you to contact Ponto directly.
|
||||
.. important::
|
||||
Using an institution in beta is beneficial for Ponto, it allows them to have real
|
||||
feedback on the connection with the institution.
|
||||
|
||||
|
||||
.. seealso::
|
||||
|
||||
* :doc:`bank_synchronization`
|
||||
* :doc:`saltedge`
|
||||
* :doc:`bank_statements`
|
||||
|
Before Width: | Height: | Size: 9.3 KiB After Width: | Height: | Size: 9.3 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
@@ -1,6 +1,6 @@
|
||||
==========================================
|
||||
Salt Edge as bank synchronization provider
|
||||
==========================================
|
||||
=========
|
||||
Salt Edge
|
||||
=========
|
||||
|
||||
**Salt Edge** is a third-party provider that aggregates banking information
|
||||
from your bank accounts. It supports ~5000 institutions in more than 50
|
||||
@@ -8,12 +8,15 @@ countries.
|
||||
|
||||
.. image:: saltedge/saltedge-logo.png
|
||||
:align: center
|
||||
:width: 50%
|
||||
:alt: Salt Edge Logo
|
||||
|
||||
Odoo can synchronize directly with your bank to get all bank statements imported
|
||||
automatically into your database.
|
||||
|
||||
Salt Edge is a free third-party provider.
|
||||
.. seealso::
|
||||
- :doc:`../bank_synchronization`
|
||||
- :doc:`../transactions`
|
||||
|
||||
Configuration
|
||||
=============
|
||||
@@ -103,9 +106,3 @@ In case you already have a connection with the same credentials present on your
|
||||
and this synchronization was created with Odoo, you will normally be able to find it by going to
|
||||
:menuselection:`Accounting --> Configuration --> Online Synchronization`. Please make sure to do an
|
||||
*Update Credentials* to reactivate the connection.
|
||||
|
||||
.. seealso::
|
||||
|
||||
* :doc:`bank_synchronization`
|
||||
* :doc:`ponto`
|
||||
* :doc:`bank_statements`
|
||||
|
Before Width: | Height: | Size: 7.9 KiB After Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
@@ -1,13 +0,0 @@
|
||||
:nosearch:
|
||||
|
||||
==========
|
||||
Bank feeds
|
||||
==========
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
feeds/bank_statements
|
||||
feeds/bank_synchronization
|
||||
feeds/ponto
|
||||
feeds/saltedge
|
||||
@@ -1,62 +0,0 @@
|
||||
===============
|
||||
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.
|
||||
|
Before Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 18 KiB |
@@ -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/bank_statements>`, or :doc:`synchronizing <../feeds/bank_synchronization>`
|
||||
your :guilabel:`Transactions lines`. Fill in the :guilabel:`Ending balance` and click on the
|
||||
:doc:`importing <transactions>`, or :doc:`synchronizing <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 @@ your :guilabel:`Transactions lines`. Fill in the :guilabel:`Ending balance` and
|
||||
: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 |
@@ -1,10 +0,0 @@
|
||||
:nosearch:
|
||||
|
||||
=============
|
||||
Miscellaneous
|
||||
=============
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
misc/interbank
|
||||
@@ -125,5 +125,5 @@ line*.
|
||||
.. seealso::
|
||||
|
||||
- :doc:`use_cases`
|
||||
- :doc:`../feeds/bank_synchronization`
|
||||
- :doc:`../bank_synchronization`
|
||||
- :doc:`../../receivables/customer_invoices/cash_discounts`
|
||||
|
||||
@@ -102,4 +102,4 @@ right and validate all related payments :
|
||||
:align: center
|
||||
|
||||
.. seealso::
|
||||
* :doc:`../feeds/bank_synchronization`
|
||||
:doc:`../bank_synchronization`
|
||||
|
||||
@@ -4,7 +4,7 @@ Bank and cash accounts
|
||||
|
||||
You can manage as many bank or cash accounts as needed on your database. Configuring them well
|
||||
allows you to have all your banking data up-to-date and ready for :doc:`reconciliation
|
||||
<../../bank/reconciliation/use_cases>` with your journal entries.
|
||||
<../reconciliation/use_cases>` with your journal entries.
|
||||
|
||||
In Odoo Accounting, each bank account has a dedicated journal set to post all entries in a dedicated
|
||||
account. Both the journal and the account are automatically created and configured whenever you add
|
||||
@@ -33,7 +33,7 @@ To connect your bank account to your database, go to :menuselection:`Accounting
|
||||
follow the instructions.
|
||||
|
||||
.. seealso::
|
||||
:doc:`../../bank/feeds/bank_synchronization`
|
||||
:doc:`../bank_synchronization`
|
||||
|
||||
Create a bank account
|
||||
---------------------
|
||||
@@ -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/bank_statements`
|
||||
- :doc:`../transactions`
|
||||
- :doc:`../../bank/setup/outstanding_accounts`
|
||||
|
||||
Suspense account
|
||||
@@ -132,5 +132,5 @@ Bank feeds
|
||||
with your database.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`../../bank/feeds/bank_synchronization`
|
||||
- :doc:`../../bank/feeds/bank_statements`
|
||||
- :doc:`../bank_synchronization`
|
||||
- :doc:`../transactions`
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
============
|
||||
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.
|
||||
|
After Width: | Height: | Size: 6.2 KiB |
@@ -55,7 +55,7 @@ Connect your bank account to your database and have your bank statements synced
|
||||
so, find your bank in the list, click on *Connect*, and follow the instructions on-screen.
|
||||
|
||||
.. note::
|
||||
:doc:`Click here <../../bank/feeds/bank_synchronization>` for more information about this feature.
|
||||
:doc:`Click here <../../bank/bank_synchronization>` for more information about this feature.
|
||||
|
||||
If your Bank Institution can’t be synchronized automatically, or if you prefer not to sync it with
|
||||
your database, you may also configure your bank account manually by clicking on *Create it*, and
|
||||
@@ -188,6 +188,6 @@ Send yourself a sample invoice by email to make sure everything is correctly con
|
||||
.. seealso::
|
||||
* :doc:`../../bank/setup/bank_accounts`
|
||||
* :doc:`chart_of_accounts`
|
||||
* :doc:`../../bank/feeds/bank_synchronization`
|
||||
* :doc:`../../bank/bank_synchronization`
|
||||
* :doc:`../../../fiscal_localizations`
|
||||
* `Odoo Tutorials: Accounting Basics <https://www.odoo.com/r/lsZ>`_
|
||||
|
||||
@@ -10,3 +10,4 @@ Vendor payments
|
||||
pay/sepa
|
||||
pay/check
|
||||
pay/multiple
|
||||
pay/trusted_accounts
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
=============================
|
||||
Trusted accounts (send money)
|
||||
=============================
|
||||
|
||||
To protect users from sending money to scammers, vendor bank account numbers must be marked as
|
||||
trusted before you can use them to make an outgoing payment.
|
||||
|
||||
To do so, open the vendor bank account and click on the :guilabel:`Send Money` toggle switch button.
|
||||
|
||||
.. image:: trusted_accounts/send-money-toggle.png
|
||||
:align: center
|
||||
:alt: Example of a vendor bank account with the "Send Money" toggle button switched to "trusted."
|
||||
|
||||
.. note::
|
||||
All accounts are initially marked as untrusted.
|
||||
|
||||
Phishing attacks
|
||||
================
|
||||
|
||||
A **phishing attack** is an online scam designed to trick individuals or companies into giving away
|
||||
sensitive information or money by sending out fraudulent communication. Fraudsters pretend to be
|
||||
legitimate companies and may use partial information to give credibility to their requests.
|
||||
|
||||
There are several types of phishing attacks, including **invoice fraud**. In this case, the
|
||||
fraudster pretends to be a genuine supplier following up on unpaid bills or sending a new invoice,
|
||||
but with different payment information than usual and with fake contact details.
|
||||
|
||||
To protect yourself from these types of phishing attacks, remain vigilant when you receive
|
||||
unexpected invoices or payment requests.
|
||||
|
||||
.. important::
|
||||
In case of doubt, **we recommend contacting the vendor by phone**. Make sure to call an official
|
||||
phone number by searching yourself, as the URLs, email addresses, and phone numbers written in
|
||||
the communication you received may be fake.
|
||||
|
||||
Elements to check
|
||||
-----------------
|
||||
|
||||
There are several elements you can check by yourself when you receive an outgoing payment request to
|
||||
a new account:
|
||||
|
||||
Communication style
|
||||
Fraudulent emails and invoices often use a different communication style, such as **different
|
||||
wording**, and may include **spelling and grammatical mistakes**. Examine and **compare** them
|
||||
with previous ones that you know to be authentic (e.g., payment instructions, language, company
|
||||
logo, etc.).*
|
||||
|
||||
Urgency
|
||||
Invoice frauds often use **urgent or threatening language** and change the **payment deadline**.
|
||||
Check if you really received a late payment reminder previously.
|
||||
|
||||
Type of account
|
||||
A company is unlikely to replace a bank account with a **money transfer service**.
|
||||
|
||||
Email and links domain names
|
||||
Double-check the **email address domain** (`example@domain.com`). However, be wary that fraudsters
|
||||
can make their email addresses look genuine or even hack email addresses from your vendor's
|
||||
employees or even someone within your own organization.
|
||||
|
||||
Hover over the links in your email and check that the URLs they redirect to are genuine. Your
|
||||
internet browser usually displays the link's target at the bottom left of the window.
|
||||
|
After Width: | Height: | Size: 4.8 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/misc/interbank>`
|
||||
- :doc:`Internal transfers <../../bank/interbank>`
|
||||
- :doc:`../../bank/reconciliation/use_cases`
|
||||
- `Odoo Tutorials: Bank Configuration
|
||||
<https://www.odoo.com/slides/slide/bank-configuration-1880>`_
|
||||
|
||||
@@ -26,6 +26,8 @@ They can be applied in various ways:
|
||||
Configuration
|
||||
=============
|
||||
|
||||
.. _fiscal_positions/mapping:
|
||||
|
||||
Tax and Account Mapping
|
||||
-----------------------
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@ Online payment providers
|
||||
* - :doc:`Adyen <payment_providers/adyen>`
|
||||
- Odoo
|
||||
- |V|
|
||||
- Full only
|
||||
- Full and partial
|
||||
- Full and partial
|
||||
-
|
||||
-
|
||||
@@ -236,6 +236,10 @@ To capture the payment after it was authorized, go to the related sales order or
|
||||
on the :guilabel:`CAPTURE TRANSACTION` button. To release the funds, click on the :guilabel:`VOID
|
||||
TRANSACTION` button.
|
||||
|
||||
If your provider supports partial capture, you can select to capture only a **partial amount** of
|
||||
the full amount. The **remaining (uncaptured) amount** can either be voided or partially captured
|
||||
again later.
|
||||
|
||||
.. note::
|
||||
- Some payment providers support capturing only part of the authorized amount. The remaining
|
||||
amount can then be either captured or voided. These providers have the value **Full and
|
||||
@@ -344,7 +348,7 @@ Configuration tab
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
You can change the payment provider's front-end appearance by modifying its name under the
|
||||
**Displayed as** field and which credit card icons to display under the **Supported Payment Icons**
|
||||
**Displayed as** field, and the supported credit card icons displayed under the **Supported Payment Methods**
|
||||
field.
|
||||
|
||||
.. _payment_providers/currencies:
|
||||
|
||||
@@ -5,12 +5,22 @@ Adyen
|
||||
`Adyen <https://www.adyen.com/>`_ is a Dutch company that offers several online payment
|
||||
possibilities.
|
||||
|
||||
.. seealso::
|
||||
- :ref:`payment_providers/add_new`
|
||||
- :doc:`../payment_providers`
|
||||
|
||||
.. note::
|
||||
Adyen works only with customers processing **more** than **10 million annually** or invoicing a
|
||||
**minimum** of **1.000** transactions **per month**.
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
.. seealso::
|
||||
:ref:`payment_providers/add_new`
|
||||
|
||||
First, reach Adyen support to enable :guilabel:`multiple partial capture` for you.
|
||||
|
||||
Credentials tab
|
||||
---------------
|
||||
|
||||
@@ -127,12 +137,10 @@ Then, open your Adyen Merchant Account, go to :menuselection:`Account --> Settin
|
||||
- If you configure Odoo to capture amounts manually, make sure to set the **Capture Delay** to
|
||||
**manual** on Adyen. Otherwise, the transaction will be blocked in the authorized state in
|
||||
Odoo.
|
||||
- Odoo doesn't support the partial capture yet. Be aware that if you make a partial capture from
|
||||
Adyen's interface, Odoo will manage it as if it was a full capture.
|
||||
|
||||
.. note::
|
||||
After **7 days**, if the transaction hasn't been captured yet, the customer has the right to
|
||||
**revoke** it.
|
||||
- After **7 days**, if the transaction has not been captured yet, the customer has the right to
|
||||
**revoke** it.
|
||||
|
||||
.. seealso::
|
||||
:doc:`../payment_providers`
|
||||
|
||||
@@ -10,9 +10,16 @@ covering several Asian countries and payment methods.
|
||||
Configuration on AsiaPay Dashboard
|
||||
==================================
|
||||
|
||||
#. Log into `AsiaPay Dashboard <https://www.paydollar.com/b2c2/eng/merchant/index.jsp>`_ and go to
|
||||
:menuselection:`Profile --> Account Information`. Copy the values of the :guilabel:`Currency` and
|
||||
:guilabel:`Secure Hash` fields and save them for later.
|
||||
#. Log into AsiaPay Dashboard according to the account provided by AsiaPay.
|
||||
|
||||
- `PayDollar <https://www.paydollar.com/b2c2/eng/merchant/index.jsp>`_: For markets in HK,
|
||||
CN, MO, TW, SG, MY, IN, VN, NZ and AU
|
||||
- `PesoPay <https://www.pesopay.com/b2c2/eng/merchant/index.jsp>`_: For market in PH
|
||||
- `SiamPay <https://www.siampay.com/b2c2/eng/merchant/index.jsp>`_: For market in TH
|
||||
- `BimoPay <https://www.bimopay.com/b2c2/eng/merchant/index.jsp>`_: For market in ID
|
||||
|
||||
#. Go to :menuselection:`Profile --> Account Information`. Copy the values of the
|
||||
:guilabel:`Currency` and :guilabel:`Secure Hash` fields and save them for later.
|
||||
#. | Go to :menuselection:`Profile --> Payment Account Settings` and enable the option
|
||||
:guilabel:`Return Value Link (Datefeed)`;
|
||||
| Enter your Odoo database URL followed by `/payment/asiapay/webhook` in the
|
||||
@@ -28,9 +35,10 @@ Configuration on Odoo
|
||||
|
||||
#. :ref:`Navigate to the payment provider AsiaPay <payment_providers/add_new>` and change its state
|
||||
to :guilabel:`Enabled`.
|
||||
#. | In the :guilabel:`Credentials` tab, fill in the :guilabel:`Merchant ID` and
|
||||
:guilabel:`Secure Hash Secret`, and the :guilabel:`Currency` in the :guilabel:`Configuration`
|
||||
tab with the values you saved at the step :ref:`payment_providers/asiapay/configure_dashboard`;
|
||||
#. | In the :guilabel:`Credentials` tab, choose the :guilabel:`Brand` of your Asiapay account. Then
|
||||
fill in the :guilabel:`Merchant ID` and :guilabel:`Secure Hash Secret`, and the
|
||||
:guilabel:`Currency` in the :guilabel:`Configuration` tab with the values you saved at the
|
||||
step :ref:`payment_providers/asiapay/configure_dashboard`;
|
||||
| By default, the payment provider AsiaPay is configured to verify the secret hash with the hash
|
||||
function `SHA1`. If a different function is :ref:`set on your account
|
||||
<payment_providers/asiapay/configure_dashboard>`, activate the :ref:`developer mode
|
||||
|
||||
@@ -19,19 +19,13 @@ Credentials tab
|
||||
Odoo needs your **API Credentials** to connect with your PayPal account, which comprise:
|
||||
|
||||
- **Email**: your login email address in Paypal.
|
||||
- **Merchant Account ID**: the code of the merchant account used to identify your Paypal account.
|
||||
- **PDT Identity Token**: the key used to verify the authenticity of transactions.
|
||||
- **Use IPN**: whether you want to use Instant Payment Notification. Already checked, you don't have
|
||||
to change it.
|
||||
|
||||
You can copy your credentials from your Paypal account and paste them into the related fields under
|
||||
the **Credentials** tab.
|
||||
|
||||
To retrieve the **Merchant Account ID**, log into your Paypal account and go to
|
||||
:menuselection:`Account menu --> Account Settings --> Business information`.
|
||||
|
||||
To set the **PDT Identity Token**, switch to :ref:`developer mode <developer-mode>` and retrieve the
|
||||
token by following the configuration step :ref:`paypal/enable-pdt`.
|
||||
To set the **PDT Identity Token**, retrieve the token by following the configuration
|
||||
step :ref:`paypal/enable-pdt`.
|
||||
|
||||
.. important::
|
||||
If you are trying Paypal as a test, using a :ref:`Paypal Sandbox account <paypal/testing>`,
|
||||
|
||||
@@ -156,9 +156,9 @@ Odoo supports the following local payment methods:
|
||||
- iDEAL
|
||||
- Przelewy24 (P24)
|
||||
|
||||
To enable some of these local payment methods with Stripe, list them as supported payment icons. To
|
||||
do so, go to :menuselection:`Payment Providers --> Stripe --> Configuration` and add the desired
|
||||
payment methods in the **Supported Payment Icons** field. If the desired payment method is already
|
||||
To enable some of these local payment methods with Stripe, go to
|
||||
:menuselection:`Payment Providers --> Stripe --> Configuration` and add the desired
|
||||
payment methods in the **Supported Payment Methods** field. If the desired payment method is already
|
||||
listed, you don't have anything to do.
|
||||
|
||||
.. image:: stripe/stripe_enable_local_payment_method.png
|
||||
@@ -166,7 +166,7 @@ listed, you don't have anything to do.
|
||||
:alt: Select and add icons of the payment methods you want to enable
|
||||
|
||||
.. note::
|
||||
- If a payment icon record does not exist in the database and its related local payment method is
|
||||
- If a payment method record does not exist in the database and its related local payment method is
|
||||
listed above, it is considered enabled with Stripe.
|
||||
- If a local payment method is not listed above, it is not supported and cannot be enabled.
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 14 KiB |
@@ -1,6 +1,10 @@
|
||||
=====
|
||||
OAuth
|
||||
=====
|
||||
======================================
|
||||
Microsoft Azure sign-in authentication
|
||||
======================================
|
||||
|
||||
Due to specific requirements in Azure's OAuth implementation,
|
||||
Microsoft Azure OAuth identification is NOT compatible with Odoo at the moment.
|
||||
Due to specific requirements in Azure's OAuth implementation, Microsoft Azure OAuth identification
|
||||
is NOT compatible with Odoo at the moment.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`/applications/general/calendars/outlook/outlook_calendar`
|
||||
- :doc:`/administration/maintain/azure_oauth`
|
||||
|
||||
@@ -8,6 +8,10 @@ with their Google account.
|
||||
This is particularly helpful if your organization uses Google Workforce and you want the employees
|
||||
within your organization to connect to Odoo with their Google Accounts.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`/applications/general/calendars/google/google_calendar_credentials`
|
||||
- :doc:`/administration/maintain/google_oauth`
|
||||
|
||||
.. _google-sign-in/configuration:
|
||||
|
||||
Configuration
|
||||
@@ -42,7 +46,7 @@ OAuth consent screen
|
||||
:align: center
|
||||
:alt: Google oauth consent selection menu
|
||||
|
||||
#. Choose one of the options **(Internal / External)** as instructed, and click on *Create*.
|
||||
#. Choose the option for :guilabel:`internal`, and click on :guilabel:`Create`.
|
||||
|
||||
.. image:: google/consent.png
|
||||
:align: center
|
||||
|
||||
@@ -5,6 +5,10 @@ Synchronize Google Calendar with Odoo
|
||||
Synchronize Google Calendar with Odoo to see and manage meetings from both platforms (updates go
|
||||
in both directions). This integration helps organize your schedule so you never miss a meeting.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`/applications/general/auth/google`
|
||||
- :doc:`/administration/maintain/google_oauth`
|
||||
|
||||
Setup in Google
|
||||
===============
|
||||
|
||||
|
||||
@@ -5,6 +5,10 @@ Synchronize Outlook Calendar with Odoo
|
||||
Synchronizing a user's Outlook Calendar with Odoo is useful for keeping track of their tasks and
|
||||
appointments across all related applications.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`/applications/general/auth/azure`
|
||||
- :doc:`/administration/maintain/azure_oauth`
|
||||
|
||||
Register the application with Microsoft Azure
|
||||
=============================================
|
||||
|
||||
|
||||
@@ -1,37 +1,36 @@
|
||||
=======================
|
||||
Send an email with Odoo
|
||||
=======================
|
||||
============================================
|
||||
Configure DNS records to send emails in Odoo
|
||||
============================================
|
||||
|
||||
Use an email domain in Odoo
|
||||
===========================
|
||||
SPAM labels overview
|
||||
====================
|
||||
|
||||
Documents in Odoo (such as a CRM opportunity, a sales order, an invoice, etc.) have a discussion
|
||||
thread, called *chatter*.
|
||||
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.
|
||||
|
||||
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.
|
||||
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>`.
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
.. 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.).
|
||||
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.
|
||||
|
||||
.. _email_communication/spf_compliant:
|
||||
|
||||
@@ -40,27 +39,23 @@ 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 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.
|
||||
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.
|
||||
|
||||
.. 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 an :abbr:`SPF (Sender Policy Framework)` record, the content
|
||||
of the record to create it is as follows:
|
||||
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`
|
||||
|
||||
`v=spf1 include:_spf.odoo.com ~all`
|
||||
|
||||
If the domain name already has an :abbr:`SPF (Sender Policy Framework)` record, the record must be
|
||||
If the domain name already has a :abbr:`SPF (Sender Policy Framework)` record, the record must be
|
||||
updated (and do not create a new one).
|
||||
|
||||
.. example::
|
||||
@@ -111,6 +106,11 @@ 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)`.
|
||||
|
||||
.. danger::
|
||||
.. warning::
|
||||
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,16 +136,55 @@ 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>`_.
|
||||
|
||||
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.
|
||||
.. seealso::
|
||||
`DMARC.org is another great resource to learn about DMARC records.
|
||||
<https://dmarc.org/overview/>`_
|
||||
|
||||
.. _email_communication/SPFDKIM_common_providers:
|
||||
|
||||
@@ -165,30 +204,7 @@ 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 for other, lesser-known providers.
|
||||
used to configure records for other, lesser-known providers.
|
||||
|
||||
.. _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`.
|
||||
.. seealso::
|
||||
`Using Mail-Tester to set SPF Records for specific carriers <https://www.mail-tester.com/spf/>`_
|
||||
|
||||
@@ -6,87 +6,81 @@ 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 done!
|
||||
work out-of-the-box. So for **Odoo Online** and **Odoo.sh** customers, nothing needs to be
|
||||
configured!
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
Scope of this documentation
|
||||
===========================
|
||||
|
||||
This document is **mainly dedicated to Odoo on-premise users** who don't benefit from an
|
||||
This document is **mainly dedicated to Odoo on-premise databases** 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>`_.
|
||||
com/trial>`_ and `Odoo.sh <https://www.odoo.sh>`_. Incoming and outgoing servers must be configured
|
||||
for on-premise databases.
|
||||
|
||||
The following sections below contain information on how to integrate an external email server with
|
||||
Odoo.
|
||||
|
||||
.. warning::
|
||||
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.
|
||||
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>`
|
||||
|
||||
.. 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.
|
||||
.. _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>`.
|
||||
|
||||
Manage outbound messages
|
||||
========================
|
||||
|
||||
As a system admin, go to :menuselection:`Settings --> General Settings --> Discuss` in Odoo, and
|
||||
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`.
|
||||
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`.
|
||||
|
||||
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.
|
||||
.. seealso::
|
||||
- :doc:`/administration/maintain/google_oauth`
|
||||
- :doc:`/administration/maintain/azure_oauth`
|
||||
|
||||
.. note::
|
||||
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>`__.
|
||||
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`.
|
||||
|
||||
.. _email_servers/restriction:
|
||||
|
||||
Restriction
|
||||
-----------
|
||||
Port restriction
|
||||
----------------
|
||||
|
||||
Please note that port 25 is blocked for security reasons on Odoo Online and Odoo.sh platforms. Try
|
||||
Note that port 25 is blocked for security reasons on the Odoo Online and Odoo.sh platforms. Try
|
||||
using ports 465, 587, or 2525 instead.
|
||||
|
||||
.. _email_communication/default_from:
|
||||
.. _email_communication/default:
|
||||
|
||||
Use a default "From" email address
|
||||
----------------------------------
|
||||
@@ -94,112 +88,56 @@ 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, make sure all emails use a "From" address from the same authorized domain.
|
||||
To avoid that problem, Odoo sends all emails using a "From" address from the same authorized
|
||||
domain.
|
||||
|
||||
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.
|
||||
Access the :guilabel:`System Parameters` by activating :ref:`developer mode <developer-mode>` and
|
||||
going to :menuselection:`Settings --> Technical --> Parameters --> System Parameters` menu.
|
||||
|
||||
Instead, Odoo can be configured to do something similar by itself:
|
||||
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:
|
||||
|
||||
#. 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.
|
||||
- `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::
|
||||
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 `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`.
|
||||
|
||||
.. _email_servers/outgoing-email-server:
|
||||
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`.
|
||||
|
||||
Utilizing the From Filter on an 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
|
||||
-------------------------------------------------------
|
||||
|
||||
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 --> Custom Mail Servers --> Outgoing Mail Servers --> New`.
|
||||
:menuselection:`Settings --> Discuss --> Custom Mail Servers --> Outgoing Mail Servers --> New`.
|
||||
|
||||
.. image:: email_servers/from-filter-setting.png
|
||||
:align: center
|
||||
@@ -231,24 +169,105 @@ 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.
|
||||
|
||||
Set up different dedicated servers for transactional and mass mails
|
||||
===================================================================
|
||||
.. _email_communication/mass_mails:
|
||||
|
||||
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.
|
||||
Set up different dedicated servers for transactional and mass emails
|
||||
--------------------------------------------------------------------
|
||||
|
||||
.. tip::
|
||||
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::
|
||||
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 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.
|
||||
: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.
|
||||
|
||||
Now, go to :menuselection:`Email Marketing --> Settings` and enable :guilabel:`Dedicated 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.
|
||||
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`.
|
||||
|
||||
|
Before Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 117 KiB |
@@ -1,10 +1,8 @@
|
||||
:nosearch:
|
||||
:hide-page-toc:
|
||||
:show-toc:
|
||||
|
||||
=================
|
||||
Users & Companies
|
||||
=================
|
||||
===================
|
||||
Users and 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
|
||||
@@ -18,3 +16,4 @@ 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
|
||||
|
||||
21
content/applications/general/users/delete_account.rst
Normal file
@@ -0,0 +1,21 @@
|
||||
============================
|
||||
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.
|
||||
|
After Width: | Height: | Size: 18 KiB |
9
content/applications/hr.rst
Normal file
@@ -0,0 +1,9 @@
|
||||
:nosearch:
|
||||
|
||||
===============
|
||||
Human resources
|
||||
===============
|
||||
|
||||
.. toctree::
|
||||
|
||||
hr/attendances
|
||||
19
content/applications/hr/attendances.rst
Normal file
@@ -0,0 +1,19 @@
|
||||
:nosearch:
|
||||
:show-content:
|
||||
:hide-page-toc:
|
||||
:show-toc:
|
||||
|
||||
===========
|
||||
Attendances
|
||||
===========
|
||||
|
||||
**Odoo Attendances** functions as a time clock. Employees check in and check out of work, while
|
||||
managers can see who is available at any given time.
|
||||
|
||||
.. seealso::
|
||||
`Odoo Tutorials: Attendances <https://www.odoo.com/slides/slide/attendances-684>`_
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
attendances/hardware
|
||||
57
content/applications/hr/attendances/hardware.rst
Normal file
@@ -0,0 +1,57 @@
|
||||
========
|
||||
Hardware
|
||||
========
|
||||
|
||||
Kiosk management
|
||||
================
|
||||
|
||||
A kiosk is a self-service station that allows employees to check in and check out for work shifts.
|
||||
|
||||
There are two ways to set up a kiosk:
|
||||
|
||||
- **Laptop and desktop PC**
|
||||
|
||||
Running a kiosk in a web browser is the cheapest and most flexible option. You can print employee
|
||||
badges with any thermal or inkjet printer compatible with your web browser.
|
||||
|
||||
- **Tablet and mobile phone (Android or iOS)**
|
||||
|
||||
Tablets and mobile phones take up much less space, and their touchscreens are easy to use.
|
||||
Consider putting them in a secure stand at the front desk or mounting them securely on a wall.
|
||||
|
||||
.. tip::
|
||||
We recommend using an iPad together with the `Heckler Design WindFall Stand
|
||||
<https://hecklerdesign.com/products/windfall-stand-for-ipad>`_
|
||||
|
||||
RFID key fob readers
|
||||
====================
|
||||
|
||||
Employees can scan personal RFID key fobs with an RFID reader to manage check-ins and check-outs
|
||||
quickly and easily.
|
||||
|
||||
.. image:: hardware/rfid-reader.jpg
|
||||
:align: center
|
||||
:width: 40%
|
||||
:alt: An RFID key fob is placed on an RFID reader
|
||||
|
||||
.. tip::
|
||||
We recommend using the `Neuftech USB RFID Reader <https://neuftech.net/Neuftech-USB-RFID-Reader-ID-Kartenleseger%C3%A4t-Kartenleser-Kontaktlos-Card-Reader-f%C3%BCr-EM4100>`_.
|
||||
|
||||
.. note::
|
||||
An IoT box is **not** required.
|
||||
|
||||
Barcode scanners
|
||||
================
|
||||
|
||||
Employees can scan the barcode on their employee badges to manage check-ins and check-outs quickly
|
||||
and easily. The kiosk mode works with most USB barcode scanners connected directly to a computer.
|
||||
Bluetooth barcode scanners are also supported natively.
|
||||
|
||||
.. tip::
|
||||
We recommend using the `Honeywell product line
|
||||
<https://sps.honeywell.com/us/en/products/productivity/barcode-scanners>`_. If the barcode
|
||||
scanner is connected directly to a computer, it must be configured to use the computer's keyboard
|
||||
layout.
|
||||
|
||||
.. note::
|
||||
An IoT box is **not** required.
|
||||
BIN
content/applications/hr/attendances/hardware/rfid-reader.jpg
Normal file
|
After Width: | Height: | Size: 34 KiB |
@@ -11,4 +11,3 @@ Valuation Methods
|
||||
reporting/inventory_valuation_config
|
||||
reporting/using_inventory_valuation
|
||||
reporting/integrating_landed_costs
|
||||
/applications/finance/accounting/others/inventory/avg_price_valuation
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
=================================
|
||||
Inventory Valuation Configuration
|
||||
Inventory valuation configuration
|
||||
=================================
|
||||
|
||||
.. _inventory/inventory_valuation_config:
|
||||
|
||||
All of a company's stock on-hand contributes to the valuation of its inventory. That value should
|
||||
be reflected in the company's accounting records to accurately show the value of the company and
|
||||
all of its assets.
|
||||
@@ -27,32 +29,32 @@ between locations in a company's inventory.
|
||||
need to be periodically checked to ensure accuracy, and adjustments may be needed on an ongoing
|
||||
basis depending on the needs and priorities of the business.
|
||||
|
||||
Types of Accounting
|
||||
Types of accounting
|
||||
-------------------
|
||||
|
||||
Accounting entries will depend on the accounting mode: Continental or Anglo-Saxon.
|
||||
Accounting entries will depend on the accounting mode: *Continental* or *Anglo-Saxon*.
|
||||
|
||||
.. tip::
|
||||
Verify the accounting mode by activating the :ref:`developer-mode`
|
||||
and navigating to :menuselection:`Accounting --> Configuration --> Settings`.
|
||||
Verify the accounting mode by activating the :ref:`developer-mode` and navigating to
|
||||
:menuselection:`Accounting --> Configuration --> Settings`.
|
||||
|
||||
In Anglo-Saxon accounting, the costs of goods sold (COGS) are reported when products are sold or
|
||||
In *Anglo-Saxon* accounting, the costs of goods sold (COGS) are reported when products are sold or
|
||||
delivered. This means that the cost of a good is only recorded as an expense when a customer is
|
||||
invoiced for a product. Interim Stock Accounts are used for the input and output accounts, and are
|
||||
both Asset Accounts in the Balance Sheet.
|
||||
invoiced for a product. *Interim Stock Accounts* are used for the input and output accounts, and are
|
||||
both *Asset Accounts* in the balance sheet.
|
||||
|
||||
In Continental accounting, the cost of a good is reported as soon as a product is received into
|
||||
stock. Additionally, a *single* Expense account is used for both input and output accounts in
|
||||
the Balance Sheet.
|
||||
In *Continental* accounting, the cost of a good is reported as soon as a product is received into
|
||||
stock. Additionally, a single *Expense* account is used for both input and output accounts in
|
||||
the balance sheet.
|
||||
|
||||
Costing Methods
|
||||
Costing methods
|
||||
---------------
|
||||
|
||||
Below are the three costing methods that can be used in Odoo for inventory valuation.
|
||||
|
||||
- **Standard Price**: is the default costing method in Odoo. The cost of the product is manually
|
||||
defined on the product form, and this cost is used to compute the valuation. Even if the purchase
|
||||
price on a Purchase Order differs, the valuation will still use the cost defined on the product
|
||||
price on a purchase order differs, the valuation will still use the cost defined on the product
|
||||
form.
|
||||
- **Average Cost (AVCO)**: calculates the valuation of a product based on the average cost of that
|
||||
product, divided by the total number of available stock on-hand. With this costing method,
|
||||
@@ -81,10 +83,11 @@ valuation method should apply.
|
||||
Under the :guilabel:`Inventory Valuation` heading are two labels: :guilabel:`Costing Method` and
|
||||
:guilabel:`Inventory Valuation`. Pick the desired :guilabel:`Costing Method` using the drop-down
|
||||
menu (e.g. :guilabel:`Standard`, :guilabel:`Average Cost (AVCO)`, or :guilabel:`First In First Out
|
||||
(FIFO)` and switch the :guilabel:`Inventory Valuation` to :guilabel:`Automated`.
|
||||
(FIFO)`) and switch the :guilabel:`Inventory Valuation` to :guilabel:`Automated`.
|
||||
|
||||
.. seealso::
|
||||
:doc:`Using the inventory valuation <using_inventory_valuation>`
|
||||
:doc:`Using the inventory valuation
|
||||
</applications/inventory_and_mrp/inventory/management/reporting/using_inventory_valuation>`
|
||||
|
||||
.. note::
|
||||
When choosing :guilabel:`Average Cost (AVCO)` as the :guilabel:`Costing Method`, the numerical
|
||||
|
||||
@@ -1,77 +1,130 @@
|
||||
=============================
|
||||
Using the inventory valuation
|
||||
=============================
|
||||
=========================
|
||||
Using inventory valuation
|
||||
=========================
|
||||
|
||||
Inventory valuation refers to how you value your stock. It’s a very
|
||||
important aspect of a business as the inventory can be the biggest asset
|
||||
of a company.
|
||||
*Inventory valuation* is a quintessential accounting procedure that calculates the value of on-hand
|
||||
stock. Once determined, the inventory valuation amount is then incorporated into a company's overall
|
||||
value.
|
||||
|
||||
In this documentation, we will explain how the inventory valuation works
|
||||
in Odoo.
|
||||
In Odoo, this process can be conducted manually— by warehouse employees physically counting the
|
||||
products— or automatically through the database.
|
||||
|
||||
Inventory valuation: the basics
|
||||
===============================
|
||||
.. seealso::
|
||||
:ref:`Inventory valuation configuration <inventory/inventory_valuation_config>`
|
||||
|
||||
Understand the basics of inventory valuation
|
||||
============================================
|
||||
|
||||
In order to understand how moving products in and out of stock affects the company's overall value,
|
||||
consider the following product and stock moves scenario below.
|
||||
|
||||
Receive a product
|
||||
-----------------
|
||||
|
||||
Each time a product enters or leaves your stock, the value of your
|
||||
inventory is impacted. The way it is impacted depends on the
|
||||
configuration of your product (more info here).
|
||||
For example, consider an physical product, a simple *table*, which is categorized as `Office
|
||||
Furniture` in the product form's :guilabel:`Product Category` field.
|
||||
|
||||
Let’s take an example with a product - a table - configured with a
|
||||
*FIFO costing method* and an automated inventory valuation.
|
||||
|
||||
I purchase 10 tables at a cost of $10.
|
||||
|
||||
.. image:: using_inventory_valuation/use_inventory_valuation_01.png
|
||||
:align: center
|
||||
|
||||
When I’ll confirm the receipt of the products, the value of my inventory
|
||||
will be impacted. If I want to know what this impact is, I can click on
|
||||
the valuation stat button.
|
||||
Navigate to the the product category itself by going to :menuselection:`Inventory app -->
|
||||
Configuration --> Product Categories`, and on the form, set the :guilabel:`Costing Method` as `First
|
||||
In First Out (FIFO)` and the :guilabel:`Inventory Valuation` field as `Automated`.
|
||||
|
||||
.. tip::
|
||||
The consignment feature allows you to set owners on your stock (discover
|
||||
more about the consignment feature). When you receive products that are
|
||||
owned by another company, they are not taken into account in your
|
||||
inventory valuation.
|
||||
Alternatively access the :guilabel:`Product Categories` dashboard by clicking on the
|
||||
:guilabel:`internal link` arrow on the individual product's form, by hovering over the
|
||||
:guilabel:`Product Category` field.
|
||||
|
||||
.. image:: using_inventory_valuation/use_inventory_valuation_02.png
|
||||
:align: center
|
||||
Next, assume 10 tables are purchased at a price of $10.00, each. The :abbr:`PO (Purchase Order)` for
|
||||
those tables will show the subtotal of the purchase as $100, plus any additional costs or taxes.
|
||||
|
||||
.. note::
|
||||
You need access rights on the accounting module to see that button.
|
||||
.. image:: using_inventory_valuation/purchase-order.png
|
||||
:align: center
|
||||
:alt: Purchase order with 10 tables products valued at $10 each.
|
||||
|
||||
In this case, I can see that the 10 tables entered the stock for a total
|
||||
value of $100.
|
||||
After selecting :guilabel:`Validate` on the :abbr:`PO (Purchase Order)`, use the
|
||||
:guilabel:`Valuation` smart button to view how the value of inventory was impacted.
|
||||
|
||||
.. image:: using_inventory_valuation/use_inventory_valuation_03.png
|
||||
:align: center
|
||||
.. image:: using_inventory_valuation/valuation-smart-button.png
|
||||
:align: center
|
||||
:alt: Valuation smart button on a receipt.
|
||||
|
||||
I can also easily access the accounting entry that has been generated
|
||||
(in case of automated inventory valuation).
|
||||
.. important::
|
||||
:ref:`Developer mode <developer-mode>` must be turned on to see the *Valuation* smart button.
|
||||
|
||||
.. image:: using_inventory_valuation/use_inventory_valuation_04.png
|
||||
:align: center
|
||||
.. tip::
|
||||
The :doc:`consignment </applications/inventory_and_mrp/inventory/management/misc/owned_stock>`
|
||||
feature allows ownership to items in stock. Thus, products owned by other companies are not
|
||||
accounted for in the host company's inventory valuation.
|
||||
|
||||
The :guilabel:`Stock Valuation` dashboard then displays valuation of all products in the shipment,
|
||||
along with their quantities and valuation. In the example of 10 tables being purchased, the
|
||||
:guilabel:`Total Value` column of the dashboard would display a calculated valuation of $100.
|
||||
|
||||
.. image:: using_inventory_valuation/stock-valuation-product.png
|
||||
:align: center
|
||||
:alt: Stock valuation page depicting the products within a shipment.
|
||||
|
||||
In Odoo, automatic inventory valuation records are also recorded in the *Accounting* app. To access
|
||||
these accounting entries, navigate to :menuselection:`Accounting --> Journal Entries`, and look for
|
||||
inventory valuation entries with the `STJ` prefix in the :guilabel:`Journal` and :guilabel:`Number`
|
||||
columns, respectively.
|
||||
|
||||
.. image:: using_inventory_valuation/inventory-valuation-entry.png
|
||||
:align: center
|
||||
:alt: Accounting entry for the inventory valuation of 10 tables.
|
||||
|
||||
Deliver a product
|
||||
-----------------
|
||||
|
||||
In the same logic, when a table will be delivered, the stock valuation
|
||||
will be impacted and you will have access to a similar information.
|
||||
In the same logic, when a table is shipped to a customer and leaves the warehouse, the stock
|
||||
valuation decreases. The :guilabel:`Valuation` smart button on the :abbr:`DO (Delivery Order)`,
|
||||
likewise, displays the stock valuation record as it does on a :abbr:`PO (Purchase Order)`
|
||||
|
||||
.. image:: using_inventory_valuation/use_inventory_valuation_05.png
|
||||
:align: center
|
||||
.. image:: using_inventory_valuation/decreased-stock-valuation.png
|
||||
:align: center
|
||||
:alt: Decreased stock valuation after a product is shipped.
|
||||
|
||||
The inventory valuation report
|
||||
------------------------------
|
||||
|
||||
The summary of this is accessible via the inventory valuation report
|
||||
(accessible from :menuselection:`Inventory --> Reporting --> Inventory Valuation`). It gives
|
||||
you, product per product, the value of your stock. By clicking on the
|
||||
button *Inventory At Date*, you can have the same information for a
|
||||
past date.
|
||||
To view the current value of all products in the warehouse, go to :menuselection:`Inventory app -->
|
||||
Reporting --> Inventory Valuation`. The records in the table are organized by product, and selecting
|
||||
a product's drop-down menu displays detailed records with the :guilabel:`Date`,
|
||||
:guilabel:`Quantity`, and :guilabel:`Total Value` of the inventory.
|
||||
|
||||
.. image:: using_inventory_valuation/use_inventory_valuation_06.png
|
||||
:align: center
|
||||
.. image:: using_inventory_valuation/inventory-valuation-products.png
|
||||
:align: center
|
||||
:alt: Inventory valuation report showing multiple products.
|
||||
|
||||
.. note::
|
||||
The :guilabel:`Inventory At Date` button, located in the top-left corner of the :guilabel:`Stock
|
||||
Valuation` dashboard, shows the inventory valuation of products available during a prior
|
||||
specified date.
|
||||
|
||||
Update product unit price
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
For any company: lead times, supply chain failures, and other risk factors can contribute to
|
||||
invisible costs. Although Odoo attempts to accurately represent the stock value, *manual valuation*
|
||||
serves as an additional tool to update the unit price of products.
|
||||
|
||||
.. important::
|
||||
Manual valuation is intended for products that can be purchased and received for a cost greater
|
||||
than 0, or have product categories set with :guilabel:`Costing Method` set as either `Average
|
||||
Cost (AVCO)` or `First In First Out (FIFO)`.
|
||||
|
||||
.. image:: using_inventory_valuation/add-manual-valuation.png
|
||||
:align: center
|
||||
:alt: Add manual valuation of stock value to a product.
|
||||
|
||||
Create manual valuation entries on the :guilabel:`Stock Valuation` dashboard by first navigating to
|
||||
:menuselection:`Inventory app --> Reporting --> Inventory Valuation`, and then click the little gray
|
||||
drop-down icon to the left of a product's name, to then reveal stock valuation line items below as
|
||||
well as a teal :guilabel:`+ (plus)` button on the right.
|
||||
|
||||
Click the teal :guilabel:`+ (plus)` button to open up the :guilabel:`Product Revaluation` form,
|
||||
where updates to the calculation of inventory valuation can be made, by increasing or decreasing the
|
||||
unit price of each product.
|
||||
|
||||
.. image:: using_inventory_valuation/product-revaluation.png
|
||||
:align: center
|
||||
:alt: Product revaluation form adding a value of $1.00 with the reason being inflation.
|
||||
|
||||
|
After Width: | Height: | Size: 9.8 KiB |
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 8.4 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 50 KiB |
@@ -89,6 +89,8 @@ Area*. Then, once the quality check is done, move them to their *Storage Locatio
|
||||
orders and their products are grouped in one transfer, whereas the packing operation respects the
|
||||
grouping per customer order.
|
||||
|
||||
.. _use-routes/routes-rules:
|
||||
|
||||
Use routes and rules
|
||||
====================
|
||||
|
||||
|
||||
@@ -27,7 +27,9 @@ needed.
|
||||
in the Odoo database.
|
||||
|
||||
.. important::
|
||||
Odoo integration of Sendcloud does **not** work on free plans of Sendcloud.
|
||||
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.
|
||||
|
||||
Warehouse configuration
|
||||
-----------------------
|
||||
@@ -143,7 +145,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 Minimum Weight`: `20.00`
|
||||
| :guilabel:`Return Maximum 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 baterials (BoM)
|
||||
Set up a bill of materials (BoM)
|
||||
================================
|
||||
|
||||
The simplest :abbr:`BoM (Bill of Materials)` setup is one without operations or instructions, only
|
||||
|
||||