Compare commits
103 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b0c083b106 | |||
| 109c82776a | |||
| b4704c4424 | |||
| d8b44a0e4b | |||
| e9a0606f32 | |||
| 6305211a1e | |||
| 777eae22c5 | |||
| c2691c5ef3 | |||
| ba996c0266 | |||
| abf62125ea | |||
| d71c19b7be | |||
| 079ca0cc0c | |||
| 214fed5fdf | |||
| 4f3c0b0e16 | |||
| b0927964c6 | |||
| 1cedbcce58 | |||
| b5a80eed7b | |||
| 62386aae3e | |||
| a39903ca12 | |||
| e16a66706a | |||
| ee2b0e4a66 | |||
| 3c530a6473 | |||
| f5fa1cdc89 | |||
| b798b37111 | |||
| c6754134c5 | |||
| 44c8ee26d1 | |||
| a261ffd256 | |||
| 5a78b0fd73 | |||
| fcd9b40293 | |||
| 77d824bd67 | |||
| 868bf74d3d | |||
| 8bec283166 | |||
| 9865c8ee4e | |||
| 53747b1818 | |||
| bc0119ffdf | |||
| 8984c27df9 | |||
| 8aff258cfe | |||
| b7c065c2ba | |||
| 93c42b6e17 | |||
| 5bed8eb25b | |||
| 446a134a0d | |||
| 77cee2f00c | |||
| b360ff1042 | |||
| ecc993ee35 | |||
| 791e784f2f | |||
| 9e312a0bdc | |||
| eeda8eb4df | |||
| 9d22bf9e14 | |||
| 04a4e53272 | |||
| 453c9eda65 | |||
| 65cf53b52c | |||
| faf723225e | |||
| 4d7926f159 | |||
| 388253665e | |||
| ca1d8adf7e | |||
| 133d363669 | |||
| 91a48bfe88 | |||
| 3352d33997 | |||
| 6acf37c0a4 | |||
| 3f218b3b07 | |||
| 09f5c15e90 | |||
| f7bc929e00 | |||
| d7ecfaa1c5 | |||
| 59108aedda | |||
| 15a12a7b10 | |||
| 3464bb553f | |||
| 490f337fb4 | |||
| c8ad3af954 | |||
| 2036073955 | |||
| 50a8171f02 | |||
| d6e9edf7b8 | |||
| 4cf0551c04 | |||
| a1dc78b1ac | |||
| 34f2fb7561 | |||
| a7695142bb | |||
| e2341f4511 | |||
| 88e9b69855 | |||
| 2f7e5a6815 | |||
| 7f22528e73 | |||
| 307e264241 | |||
| a451ad2dab | |||
| a67c1c7f19 | |||
| d56d85da69 | |||
| 9e56f571b4 | |||
| 74c0af7429 | |||
| 3a98d49f83 | |||
| e30c87800d | |||
| c779852011 | |||
| 2733aac1fc | |||
| d34c588849 | |||
| 6ebc4d7b19 | |||
| 8a0d3598a6 | |||
| 48a4e94d56 | |||
| ff54eee8de | |||
| 962a1cce66 | |||
| 0ec8579b92 | |||
| 91f0f5d194 | |||
| 2fad56f841 | |||
| 1c5714ed66 | |||
| 39910d1e7b | |||
| 556ee18406 | |||
| 0ddecbc6fc | |||
| 88fa5d6e0a |
@@ -11,6 +11,11 @@ file_filter = locale/<lang>/LC_MESSAGES/applications.po
|
||||
source_file = locale/sources/applications.pot
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-16-doc:r:essentials]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/essentials.po
|
||||
source_file = locale/sources/essentials.pot
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-16-doc:r:finance]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/finance.po
|
||||
source_file = locale/sources/finance.pot
|
||||
@@ -63,6 +68,11 @@ file_filter = locale/<lang>/LC_MESSAGES/settings.po
|
||||
source_file = locale/sources/settings.pot
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-16-doc:r:studio]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/studio.po
|
||||
source_file = locale/sources/studio.pot
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-16-doc:r:websites]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/websites.po
|
||||
source_file = locale/sources/websites.pot
|
||||
|
||||
@@ -18,6 +18,7 @@ CONFIG_DIR = .
|
||||
SPHINXOPTS = -D project_root=$(ROOT) -D canonical_version=$(CANONICAL_VERSION) \
|
||||
-D versions=$(VERSIONS) -D languages=$(LANGUAGES) -D language=$(CURRENT_LANG) \
|
||||
-D is_remote_build=$(IS_REMOTE_BUILD) \
|
||||
-T \
|
||||
-A google_analytics_key=$(GOOGLE_ANALYTICS_KEY) \
|
||||
-A plausible_script=$(PLAUSIBLE_SCRIPT) \
|
||||
-A plausible_domain=$(PLAUSIBLE_DOMAIN) \
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
- Python dependencies listed in the file `requirements.txt`.
|
||||
- Make
|
||||
- A local copy of the [odoo/odoo repository](https://github.com/odoo/odoo) (optional)
|
||||
- A local copy of the [odoo/upgrade-util repository](https://github.com/odoo/upgrade-util) (optional)
|
||||
|
||||
### Instructions
|
||||
|
||||
@@ -18,8 +19,9 @@
|
||||
3. See [this guide](https://www.odoo.com/documentation/latest/contributing/documentation.html)
|
||||
for more detailed instructions.
|
||||
|
||||
Optional: place your local copy of the `odoo/odoo` repository in the parent directory or in the root
|
||||
directory of the documentation to build the latter with the documented Python docstrings.
|
||||
Optional: place your local copy of the `odoo/odoo` and `odoo/upgrade-util` repositories in
|
||||
the parent directory or in the root directory of the documentation to build the latter
|
||||
with the documented Python docstrings.
|
||||
|
||||
## Contribute to the documentation
|
||||
|
||||
|
||||
@@ -133,6 +133,24 @@ else:
|
||||
)
|
||||
odoo_dir_in_path = True
|
||||
|
||||
if odoo_dir_in_path:
|
||||
upgrade_util_dir = next(filter(Path.exists, [Path('upgrade-util'), Path('../upgrade-util')]), None)
|
||||
if not upgrade_util_dir:
|
||||
_logger.warning(
|
||||
"Could not find Upgrade Utils sources directory in `upgrade_util`.\n"
|
||||
"The developer documentation will be built but autodoc directives will be skipped.\n"
|
||||
"In order to fully build the 'Developer' documentation, clone the repository with "
|
||||
"`git clone https://github.com/odoo/upgrade-util` or create a symbolic link."
|
||||
)
|
||||
odoo_dir_in_path = False
|
||||
else:
|
||||
_logger.info(
|
||||
"Found Upgrade Util sources in %(directory)s",
|
||||
{'directory': upgrade_util_dir.resolve()},
|
||||
)
|
||||
from odoo import upgrade
|
||||
upgrade.__path__.append(str((upgrade_util_dir / 'src').resolve()))
|
||||
|
||||
# Mapping between odoo models related to master data and the declaration of the
|
||||
# data. This is used to point users to available xml_ids when giving values for
|
||||
# a field with the autodoc_field extension.
|
||||
@@ -213,6 +231,7 @@ sphinx.transforms.i18n.docname_to_domain = (
|
||||
# is populated. If a version is passed to `versions` but is not listed here, it will not be shown.
|
||||
versions_names = {
|
||||
'master': "Master",
|
||||
'saas-17.2': "Odoo Online",
|
||||
'saas-17.1': "Odoo Online",
|
||||
'17.0': "Odoo 17",
|
||||
'saas-16.4': "Odoo Online",
|
||||
@@ -233,6 +252,7 @@ languages_names = {
|
||||
'es': 'ES',
|
||||
'fr': 'FR',
|
||||
'it': 'IT',
|
||||
'ko': 'KO',
|
||||
'nl': 'NL',
|
||||
'pt_BR': 'PT',
|
||||
'ro': 'RO',
|
||||
@@ -248,6 +268,9 @@ redirects_dir = 'redirects/'
|
||||
sphinx_tabs_disable_tab_closing = True
|
||||
sphinx_tabs_disable_css_loading = True
|
||||
|
||||
# Autodoc ordering
|
||||
autodoc_member_order = 'bysource'
|
||||
|
||||
#=== Options for HTML output ===#
|
||||
|
||||
html_theme = 'odoo_theme'
|
||||
|
||||
@@ -61,4 +61,5 @@ functionalities, including functional support, upgrades, and hosting. `Pricing
|
||||
administration/upgrade
|
||||
administration/neutralized_database
|
||||
administration/supported_versions
|
||||
administration/mobile
|
||||
administration/odoo_accounts
|
||||
|
||||
@@ -46,10 +46,10 @@ Transferring an Odoo Online database
|
||||
====================================
|
||||
|
||||
.. important::
|
||||
Odoo Online's :ref:`intermediary versions <supported_versions>` cannot be hosted on-premise as
|
||||
that type of hosting does not support those versions. Therefore, if the database to transfer
|
||||
is running an intermediary version, it must be upgraded first to the next :ref:`major version
|
||||
<supported_versions>`, waiting for its release if necessary.
|
||||
Odoo Online's :ref:`intermediary versions <supported_versions>` are not supported by Odoo.sh or
|
||||
on-premise. Therefore, if the database to transfer is running an intermediary version, it must be
|
||||
upgraded first to the next :ref:`major version <supported_versions>`, waiting for its release if
|
||||
necessary.
|
||||
|
||||
.. example::
|
||||
Transferring an online database running on Odoo 16.3 would require first upgrading it to Odoo
|
||||
@@ -59,6 +59,11 @@ Transferring an Odoo Online database
|
||||
Click the gear icon (:guilabel:`⚙`) next to the database name on the `Odoo Online database
|
||||
manager <https://www.odoo.com/my/databases/>`_ to display its version number.
|
||||
|
||||
.. warning::
|
||||
If there is an active Odoo subscription linked to the database being migrated, reach out to
|
||||
the Customer Service Manager or `submit a support ticket <https://www.odoo.com/help>`_ to
|
||||
complete the subscription transfer.
|
||||
|
||||
To on-premise
|
||||
-------------
|
||||
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
================
|
||||
Odoo mobile apps
|
||||
================
|
||||
|
||||
Two kind of Odoo mobile app exist: the progressive web app (PWA) and store apps. Using the PWA is
|
||||
recommended.
|
||||
|
||||
Progressive web app (PWA)
|
||||
=========================
|
||||
|
||||
PWAs are web-based applications designed to function across different devices and platforms,
|
||||
leveraging web browsers to deliver user experiences similar to native apps.
|
||||
|
||||
The Odoo PWA features include:
|
||||
|
||||
- Quick access by adding the PWA to a device's home screen
|
||||
- Seamless and borderless navigation experience
|
||||
- Push notifications
|
||||
- SSO authentication
|
||||
|
||||
To install the Odoo PWA, launch a browser supporting PWAs, and sign in to an Odoo database. The
|
||||
instructions to install a PWA depend on the platform and browser used.
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. tab:: Android
|
||||
|
||||
**Chrome**: open Chrome's menu (:guilabel:`⋮`), select :guilabel:`Install app`, and tap
|
||||
:guilabel:`Install`.
|
||||
|
||||
**Firefox**: open Firefox's menu (:guilabel:`⋮`), select :guilabel:`Install`, and either touch
|
||||
and hold the Odoo icon or tap :guilabel:`Add automatically`.
|
||||
|
||||
The PWA can also be installed with **Samsung Internet**, **Edge**, and **Opera**.
|
||||
|
||||
.. tab:: iOS
|
||||
|
||||
**Safari**: open the **Share** menu by tapping the square with an arrow pointing upwards icon,
|
||||
select :guilabel:`Add to Home Screen`, edit the PWA details if desired, and tap
|
||||
:guilabel:`Add`.
|
||||
|
||||
On iOS 16.4 and above, the PWA can also be installed with **Chrome**, **Firefox**, and
|
||||
**Edge**.
|
||||
|
||||
.. tab:: Desktop
|
||||
|
||||
**Chrome** and **Edge**: click the installation icon at the right of the address bar and click
|
||||
:guilabel:`Install`.
|
||||
|
||||
.. seealso::
|
||||
- `Google Chrome Help: Use progressive web apps
|
||||
<https://support.google.com/chrome/answer/9658361>`_
|
||||
- `MDN Web Docs: Installing and uninstalling web apps
|
||||
<https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Guides/Installing>`_
|
||||
- `Microsoft Support: Install, manage, or uninstall apps in Microsoft Edge <https://support.microsoft.com/en-us/topic/install-manage-or-uninstall-apps-in-microsoft-edge-0c156575-a94a-45e4-a54f-3a84846f6113>`_
|
||||
|
||||
Store apps
|
||||
==========
|
||||
|
||||
The Odoo mobile apps are available for download on the `Google Play Store
|
||||
<https://play.google.com/store/apps/details?id=com.odoo.mobile>`_ and `Apple App Store
|
||||
<https://apps.apple.com/app/odoo/id1272543640>`_.
|
||||
|
||||
.. important::
|
||||
The iOS app cannot be updated and will be deprecated at some point in the future.
|
||||
|
||||
While the store apps support multi-accounts, they are not compatible with SS0 authentication.
|
||||
@@ -30,6 +30,8 @@ confirmation for the account deletion.
|
||||
To confirm the deletion, enter the :guilabel:`Password` and the :guilabel:`Login` for the account
|
||||
being deleted. Then, click the :guilabel:`Delete Account` button to confirm the deletion.
|
||||
|
||||
.. _odoocom/change_password:
|
||||
|
||||
Odoo.com account password change
|
||||
================================
|
||||
|
||||
|
||||
@@ -60,6 +60,8 @@ daily operations.
|
||||
- By checking :guilabel:`For testing purposes`, all external actions (emails, payments, delivery
|
||||
orders, etc.) are disabled by default on the duplicated database.
|
||||
- Duplicated databases expire automatically after 15 days.
|
||||
- A maximum of five duplicates can be made per database. Under extraordinary circumstances,
|
||||
contact `support <https://www.odoo.com/help>`_ to raise the limit.
|
||||
|
||||
.. _odoo_online/rename:
|
||||
|
||||
|
||||
@@ -740,7 +740,143 @@ It should be stored securely, and should be generated randomly e.g.
|
||||
|
||||
$ python3 -c 'import base64, os; print(base64.b64encode(os.urandom(24)))'
|
||||
|
||||
which will generate a 32 characters pseudorandom printable string.
|
||||
which generates a 32-character pseudorandom printable string.
|
||||
|
||||
Reset the master password
|
||||
-------------------------
|
||||
|
||||
There may be instances where the master password is misplaced, or compromised, and needs to be
|
||||
reset. The following process is for system administrators of an Odoo on-premise database detailing
|
||||
how to manually reset and re-encrypt the master password.
|
||||
|
||||
.. seealso::
|
||||
For more information about changing an Odoo.com account password, see this documentation:
|
||||
:ref:`odoocom/change_password`.
|
||||
|
||||
When creating a new on-premise database, a random master password is generated. Odoo recommends
|
||||
using this password to secure the database. This password is implemented by default, so there is a
|
||||
secure master password for any Odoo on-premise deployment.
|
||||
|
||||
.. warning::
|
||||
When creating an Odoo on-premise database the installation is accessible to anyone on the
|
||||
internet, until this password is set to secure the database.
|
||||
|
||||
The master password is specified in the Odoo configuration file (`odoo.conf` or `odoorc` (hidden
|
||||
file)). The Odoo master password is needed to modify, create, or delete a database through the
|
||||
graphical user interface (GUI).
|
||||
|
||||
Locate configuration file
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
First, open the Odoo configuration file (`odoo.conf` or `odoorc` (hidden file)).
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. tab:: Windows
|
||||
|
||||
The configuration file is located at: `c:\\ProgramFiles\\Odoo{VERSION}\\server\\odoo.conf`
|
||||
|
||||
.. tab:: Linux
|
||||
|
||||
Depending on how Odoo is installed on the Linux machine, the configuration file is located in
|
||||
one of two different places:
|
||||
|
||||
- Package installation: `/etc/odoo.conf`
|
||||
- Source installation: `~/.odoorc`
|
||||
|
||||
Change old password
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Once the appropriate file has been opened, proceed to modify the old password in the configuration
|
||||
file to a temporary password.
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Graphical user interface
|
||||
|
||||
After locating the configuration file, open it using a (:abbr:`GUI (graphical user
|
||||
interface)`). This can be achieved by simply double clicking on the file. Then, the device
|
||||
should have a default :abbr:`GUI (graphical user interface)` to open the file with.
|
||||
|
||||
Next, modify the master password line `admin_passwd = $pbkdf2-sha…` to `admin_passwd =
|
||||
newpassword1234`, for example. This password can be anything, as long as it is saved
|
||||
temporarily. Make sure to modify all characters after the `=`.
|
||||
|
||||
.. example::
|
||||
The line appears like this:
|
||||
`admin_passwd =
|
||||
$pbkdf2-sh39dji295.59mptrfW.9z6HkA$w9j9AMVmKAP17OosCqDxDv2hjsvzlLpF8Rra8I7p/b573hji540mk/.3ek0lg%kvkol6k983mkf/40fjki79m`
|
||||
|
||||
The modified line appears like this: `admin_passwd = newpassword1234`
|
||||
|
||||
.. group-tab:: Command-line interface
|
||||
|
||||
Modify the master password line using the following Unix command detailed below.
|
||||
|
||||
Connect to the Odoo server's terminal via Secure Shell (SSH) protocol, and edit the
|
||||
configuration file. To modify the configuration file, enter the following command:
|
||||
:command:`sudo nano /etc/odoo.conf`
|
||||
|
||||
After opening the configuration file, modify the master password line `admin_passwd =
|
||||
$pbkdf2-sha…` to `admin_passwd = newpassword1234`. This password can be anything, as long as
|
||||
it is saved temporarily. Make sure to modify all characters after the `=`.
|
||||
|
||||
.. example::
|
||||
The line appears like this:
|
||||
`admin_passwd =
|
||||
$pbkdf2-sh39dji295.59mptrfW.9z6HkA$w9j9AMVmKAP17OosCqDxDv2hjsvzlLpF8Rra8I7p/b573hji540mk/.3ek0lg%kvkol6k983mkf/40fjki79m`
|
||||
|
||||
The modified line appears like this: `admin_passwd = newpassword1234`
|
||||
|
||||
.. important::
|
||||
It is essential that the password is changed to something else, rather than triggering a new
|
||||
password reset by adding a semicolon `;` at the beginning of the line. This ensures the database
|
||||
is secure throughout the entire password reset process.
|
||||
|
||||
Restart Odoo server
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
After setting the temporary password, a restart of the Odoo server is **required**.
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Graphical user interface
|
||||
|
||||
To restart the Odoo server, first, type `services` into the Windows :guilabel:`Search` bar.
|
||||
Then, select the :guilabel:`Services` application, and scroll down to the :guilabel:`Odoo`
|
||||
service.
|
||||
|
||||
Next, right click on :guilabel:`Odoo`, and select :guilabel:`Start` or :guilabel:`Restart`.
|
||||
This action manually restarts the Odoo server.
|
||||
|
||||
.. group-tab:: Command-line interface
|
||||
|
||||
Restart the Odoo server by typing the command: :command:`sudo service odoo15 restart`
|
||||
|
||||
.. note::
|
||||
Change the number after `odoo` to fit the specific version the server is running on.
|
||||
|
||||
Use web interface to re-encrypt password
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
First, navigate to `/web/database/manager` or `http://server_ip:port/web/database/manager` in a
|
||||
browser.
|
||||
|
||||
.. note::
|
||||
Replace `server_ip` with the IP address of the database. Replace `port` with the numbered port
|
||||
the database is accessible from.
|
||||
|
||||
Next, click :guilabel:`Set Master Password`, and type in the previously-selected temporary password
|
||||
into the :guilabel:`Master Password` field. Following this step, type in a :guilabel:`New Master
|
||||
Password`. The :guilabel:`New Master Password` is hashed (or encrypted), once the
|
||||
:guilabel:`Continue` button is clicked.
|
||||
|
||||
At this point, the password has been successfully reset, and a hashed version of the new password
|
||||
now appears in the configuration file.
|
||||
|
||||
.. seealso::
|
||||
For more information on Odoo database security, see this documentation:
|
||||
:ref:`db_manager_security`.
|
||||
|
||||
Supported Browsers
|
||||
==================
|
||||
|
||||
@@ -273,18 +273,23 @@ Dependencies
|
||||
|
||||
.. tab:: Debian/Ubuntu
|
||||
|
||||
For Debian-based systems, the packages are listed in the `debian/control
|
||||
<{GITHUB_PATH}/debian/control>`_ file of the Odoo sources.
|
||||
|
||||
On Debian/Ubuntu, the following commands should install the required packages:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ cd /CommunityPath
|
||||
$ sed -n -e '/^Depends:/,/^Pre/ s/ python3-\(.*\),/python3-\1/p' debian/control | sudo xargs apt-get install -y
|
||||
$ cd odoo #CommunityPath
|
||||
$ sudo ./setup/debinstall.sh
|
||||
|
||||
The `setup/debinstall.sh` script will parse the `debian/control` and install found
|
||||
packages.
|
||||
|
||||
.. tab:: Install with pip
|
||||
|
||||
.. warning::
|
||||
|
||||
Using pip may lead to security issue and broken dependencies, only do this if you
|
||||
know what you are doing.
|
||||
|
||||
As some of the Python packages need a compilation step, they require system libraries to
|
||||
be installed.
|
||||
|
||||
|
||||
@@ -31,6 +31,12 @@ This matrix shows the support status of every version.
|
||||
- On-Premise
|
||||
- Release date
|
||||
- End of support
|
||||
* - Odoo saas~17.2
|
||||
- |green|
|
||||
- N/A
|
||||
- N/A
|
||||
- April 2024
|
||||
-
|
||||
* - Odoo saas~17.1
|
||||
- |green|
|
||||
- N/A
|
||||
|
||||
@@ -2,8 +2,6 @@
|
||||
Upgrade
|
||||
=======
|
||||
|
||||
.. _administration/upgrade:
|
||||
|
||||
An upgrade is the process of moving your database from an older version to a newer :doc:`supported
|
||||
version <supported_versions>` (e.g., Odoo 14.0 to Odoo 16.0). Frequently upgrading is essential as
|
||||
each version comes with new and improved features, bug fixes, and security patches.
|
||||
@@ -45,30 +43,23 @@ An upgrade does not cover:
|
||||
<upgrade/request-test-database>` while also :doc:`upgrading the source code of your custom
|
||||
modules </developer/howtos/upgrade_custom_db>`.
|
||||
|
||||
|
||||
Upgrading in a nutshell
|
||||
-----------------------
|
||||
|
||||
#. Request an upgraded test database (see :ref:`obtaining an upgraded test database
|
||||
<upgrade/request-test-database>`).
|
||||
|
||||
#. If applicable, upgrade the source code of your custom module to be compatible with the new
|
||||
version of Odoo (see :doc:`/developer/howtos/upgrade_custom_db`).
|
||||
|
||||
#. Thoroughly test the upgraded database (see :ref:`testing the new version of the database
|
||||
<upgrade/test_your_db>`).
|
||||
|
||||
#. Report any issue encountered during the testing to Odoo via the `support page
|
||||
<https://odoo.com/help?stage=migration>`__.
|
||||
|
||||
#. Report any issue encountered during the testing to Odoo by `submitting a ticket for an issue
|
||||
related to my future upgrade (I am testing an upgrade) <https://odoo.com/help?stage=migration>`_.
|
||||
#. Once all issues are resolved and you are confident that the upgraded database can be used as
|
||||
your main database without any issues, plan the upgrade of your production database.
|
||||
|
||||
#. Request the upgrade for the production database, rendering it unavailable for the time it takes
|
||||
to complete the process (see :ref:`upgrading the production database <upgrade/upgrade-prod>`).
|
||||
|
||||
#. Report any issue encountered during the upgrade to Odoo via the `support page
|
||||
<https://odoo.com/help?stage=post_upgrade>`__.
|
||||
#. Report any issue encountered during the upgrade to Odoo by `submitting a ticket for an issue
|
||||
related to my upgrade (production) <https://odoo.com/help?stage=post_upgrade>`_.
|
||||
|
||||
.. _upgrade/request-test-database:
|
||||
|
||||
@@ -254,9 +245,9 @@ working correctly and to get more familiar with the new version.
|
||||
This list is **not** exhaustive. Extend the example to your other apps based on your use of Odoo.
|
||||
|
||||
If you face an issue while testing your upgraded test database, you can request the assistance of
|
||||
Odoo via the `support page <https://odoo.com/help?stage=migration>`__ by selecting the option
|
||||
related to testing the upgrade. In any case, it is essential to report any
|
||||
problem encountered during the testing to fix it before upgrading your production database.
|
||||
Odoo by `submitting a ticket for an issue related to my future upgrade (I am testing an upgrade)
|
||||
<https://odoo.com/help?stage=migration>`_. In any case, it is essential to report any problem
|
||||
encountered during the testing to fix it before upgrading your production database.
|
||||
|
||||
You might encounter significant differences with standard views, features, fields, and models during
|
||||
testing. Those changes cannot be reverted on a case-by-case basis. However, if a change introduced
|
||||
@@ -280,24 +271,25 @@ Upgrading the production database
|
||||
---------------------------------
|
||||
|
||||
Once the :ref:`tests <upgrade/test_your_db>` are completed and you are confident that the upgraded
|
||||
database can be used as your main database without any issues, it is time to plan the go-live day. It
|
||||
can be planned in coordination with Odoo's upgrade support analysts, reachable via the `support page
|
||||
<https://odoo.com/help>`__.
|
||||
database can be used as your main database without any issues, it is time to plan the go-live day.
|
||||
It can be planned in coordination with Odoo's upgrade support analysts by `submitting a ticket for
|
||||
an issue related to my future upgrade (I am testing an upgrade)
|
||||
<https://odoo.com/help?stage=migration>`_.
|
||||
|
||||
Your production database will be unavailable during its upgrade. Therefore, we recommend planning
|
||||
the upgrade at a time when the use of the database is minimal.
|
||||
|
||||
As the standard upgrade scripts and your database are constantly evolving, it is also recommended
|
||||
to frequently request another upgraded test database to ensure that the upgrade process is
|
||||
still successful, especially if it takes a long time to finish. **Fully rehearsing the upgrade
|
||||
process the day before upgrading the production database is also recommended.**
|
||||
to frequently request another upgraded test database to ensure that the upgrade process is still
|
||||
successful, especially if it takes a long time to finish. **Fully rehearsing the upgrade process the
|
||||
day before upgrading the production database is also recommended.**
|
||||
|
||||
.. important::
|
||||
- Going into production without first testing may lead to:
|
||||
Going into production without first testing may lead to:
|
||||
|
||||
- Users failing to adjust to the changes and new features
|
||||
- Business interruptions (e.g., no longer having the possibility to validate an action)
|
||||
- Poor customer experience (e.g., an eCommerce website that does not work correctly)
|
||||
- Users failing to adjust to the changes and new features
|
||||
- Business interruptions (e.g., no longer having the possibility to validate an action)
|
||||
- Poor customer experience (e.g., an eCommerce website that does not work correctly)
|
||||
|
||||
The process of upgrading a production database is similar to upgrading a test database with a few
|
||||
exceptions.
|
||||
@@ -358,10 +350,9 @@ exceptions.
|
||||
a filestore. Therefore, the upgraded database filestore must be merged with the production
|
||||
filestore before deploying the new version.
|
||||
|
||||
In case of an issue with your production database, you can request the assistance of Odoo via the
|
||||
`support page <https://odoo.com/help?stage=post_upgrade>`__ by selecting the option related to
|
||||
the upgrade in production.
|
||||
|
||||
In case of an issue with your production database, you can request the assistance of Odoo by
|
||||
`submitting a ticket for an issue related to my upgrade (production)
|
||||
<https://odoo.com/help?stage=post_upgrade>`_.
|
||||
|
||||
.. _upgrade/sla:
|
||||
|
||||
|
||||
@@ -2,166 +2,245 @@
|
||||
Export and import data
|
||||
======================
|
||||
|
||||
In Odoo, it is sometimes necessary to export or import data for running reports, or for data
|
||||
modification. This document covers the export and import of data into and out of Odoo.
|
||||
|
||||
.. important::
|
||||
Sometimes, users run into a 'time out' error, or a record does not process, due to its size. This
|
||||
can occur with large exports, or in cases where the import file is too large. To circumvent this
|
||||
limitation surrounding the size of the records, process exports or imports in smaller batches.
|
||||
|
||||
.. _export-data:
|
||||
|
||||
Export data from Odoo
|
||||
=====================
|
||||
|
||||
When working with a database, it sometimes is necessary to export your data in a distinct file.
|
||||
Doing so can help to do reporting over your activities (even if Odoo offers a precise and easy
|
||||
reporting tool with each available application).
|
||||
When working with a database, it is sometimes necessary to export data in a distinct file. Doing so
|
||||
can aid in reporting on activities, although, Odoo provides a precise and easy reporting tool with
|
||||
each available application.
|
||||
|
||||
With Odoo, you can export the values from any field in any record. To do so,
|
||||
activate the list view on the items that need to be exported, click on *Action*, and, then,
|
||||
on *Export*.
|
||||
With Odoo, the values can be exported from any field in any record. To do so, activate the list view
|
||||
(:guilabel:`☰ (three horizontal lines)` icon), on the items that need to be exported, and then
|
||||
select the records that should be exported. To select a record, tick the checkbox next to the
|
||||
corresponding record. Finally, click on :guilabel:`⚙️ Action`, and then :guilabel:`Export`.
|
||||
|
||||
.. image:: export_import_data/list-view-export.png
|
||||
:align: center
|
||||
:alt: view of the different things to enable/click to export data
|
||||
:alt: View of the different things to enable/click to export data.
|
||||
|
||||
Pretty simple, this action still comes with some specificities. In fact,
|
||||
when clicking on *Export*, a pop-up window appears with several
|
||||
options for the data to export:
|
||||
When clicking on :guilabel:`Export`, an :guilabel:`Export Data` pop-over window appears, with
|
||||
several options for the data to export:
|
||||
|
||||
.. image:: export_import_data/export-data-overview.png
|
||||
:align: center
|
||||
:alt: overview of all the options to take into account when exporting data in Odoo
|
||||
:alt: Overview of options to consider when exporting data in Odoo..
|
||||
|
||||
#. With the *I want to update data* option ticked, the system only
|
||||
shows the fields which can be imported. This is very helpful in
|
||||
case you want to update existing records. Basically, this works
|
||||
like a filter. Leaving the box unticked gives way more field
|
||||
options because it shows all the fields, not just the ones which
|
||||
can be imported.
|
||||
#. When exporting, you can choose between two formats: .csv and .xls.
|
||||
With .csv, items are separated with a comma, while .xls holds information about all the
|
||||
worksheets in a file, including both content and formatting.
|
||||
#. Those are the items you may want to export. Use the arrows to display
|
||||
more sub-field options. Of course, you can use the search bar to
|
||||
find specific fields more easily. To use the search option more
|
||||
efficiently, display all the fields by clicking on all the
|
||||
arrows!
|
||||
#. The + button is there to add fields to the "to export" list.
|
||||
#. The "handles" next to the selected fields allow you to move the fields up and down to
|
||||
change the order in which they must be displayed in the exported
|
||||
file.
|
||||
#. The trashcan is there if you need to remove fields.
|
||||
#. For recurring reports, it might be interesting to save export presets.
|
||||
Select all the needed ones and click on the template bar.
|
||||
There, click on *New template* and give a name to yours. The
|
||||
next time you need to export the same list, simply select the
|
||||
related template.
|
||||
#. With the :guilabel:`I want to update data (import-compatable export)` option ticked, the system
|
||||
only shows the fields that can be imported. This is helpful in the case where the existing
|
||||
records need to be updated. This works like a filter. Leaving the box unticked, gives many more
|
||||
field options because it shows all the fields, not just the ones that can be imported.
|
||||
#. When exporting, there is the option to export in two formats: `.csv` and `.xls`. With `.csv`,
|
||||
items are separated by a comma, while `.xls` holds information about all the worksheets in a
|
||||
file, including both content and formatting.
|
||||
#. These are the items that can be exported. Use the :guilabel:`> (right arrow)` icon to display
|
||||
more sub-field options. Use the :guilabel:`Search` bar to find specific fields. To use the
|
||||
:guilabel:`Search` option more efficiently, click on all the :guilabel:`> (right arrows)` to
|
||||
display all fields.
|
||||
#. The :guilabel:`+ (plus sign)` icon button is present to add fields to the :guilabel:`Fields to
|
||||
export` list.
|
||||
#. The :guilabel:`↕️ (up-down arrow)` to the left of the selected fields can be used to move the
|
||||
fields up and down, to change the order in which they are displayed in the exported file.
|
||||
Drag-and-drop using the :guilabel:`↕️ (up-down arrow)` icon.
|
||||
#. The :guilabel:`🗑️ (trash can)` icon is used to remove fields. Click on the :guilabel:`🗑️ (trash
|
||||
can)` icon to remove the field.
|
||||
#. For recurring reports, it is helpful to save export presets. Select all the needed fields, and
|
||||
click on the template drop-down menu. Once there, click on :guilabel:`New template`, and give a
|
||||
unique name to the export just created. The next time the same list needs to be exported, select
|
||||
the related template that was previously saved from the drop-down menu.
|
||||
|
||||
.. tip::
|
||||
It’s good to keep the field’s external identifier in mind. For example,
|
||||
*Related Company* is equal to *parent_id*. Doing so helps export
|
||||
only what you would like to import next.
|
||||
It is helpful to know the field's external identifier. For example, :guilabel:`Related Company`
|
||||
in the export user interface is equal to *parent_id* (external identifier). This is helpful
|
||||
because then, the only data exported is what should be modified and re-imported.
|
||||
|
||||
.. _import-data:
|
||||
|
||||
Import data into Odoo
|
||||
=====================
|
||||
|
||||
How to start
|
||||
------------
|
||||
Importing data into Odoo is extremely helpful during implementation, or in times where data needs to
|
||||
be updated in bulk. The following documentation covers how to import data into an Odoo database.
|
||||
|
||||
You can import data on any Odoo's business object using either Excel
|
||||
(.xlsx) or CSV (.csv) formats:
|
||||
contacts, products, bank statements, journal entries and even orders!
|
||||
.. warning::
|
||||
Imports are permanent and **cannot** be undone. However, it is possible to use filters (`created
|
||||
on` or `last modified`) to identify records changed or created by the import.
|
||||
|
||||
Open the view of the object you want to populate and click on :menuselection:`Favorites --> Import
|
||||
records`.
|
||||
.. tip::
|
||||
Activating :ref:`developer mode <developer-mode>` changes the visible import settings in the left
|
||||
menu. Doing so reveals an :menuselection:`Advanced` menu. Included in this advanced menu are two
|
||||
options: :guilabel:`Track history during import` and :guilabel:`Allow matching with subfields`.
|
||||
|
||||
.. image:: export_import_data/import_button.png
|
||||
.. image:: export_import_data/advanced-import.png
|
||||
:align: center
|
||||
:alt: Advanced import options when developer mode is activated.
|
||||
|
||||
If the model uses openchatter, the :guilabel:`Track history during import` option sets up
|
||||
subscriptions and sends notifications during the import, but leads to a slower import.
|
||||
|
||||
Should the :guilabel:`Allow matching with subfields` option be selected, then all subfields
|
||||
within a field are used to match under the :guilabel:`Odoo Field` while importing.
|
||||
|
||||
Get started
|
||||
-----------
|
||||
|
||||
Data can be imported on any Odoo business object using either Excel (`.xlsx`) or :abbr:`CSV
|
||||
(Comma-separated Values)` (`.csv`) formats. This includes: contacts, products, bank statements,
|
||||
journal entries, and orders.
|
||||
|
||||
Open the view of the object to which the data should be imported/populated, and click on
|
||||
:menuselection:`⭐ Favorites --> Import records`.
|
||||
|
||||
.. image:: export_import_data/import-button.png
|
||||
:align: center
|
||||
:alt: Favorites menu revealed with the import records option highlighted.
|
||||
|
||||
There you are provided with templates you can easily populate
|
||||
with your own data. Such templates can be imported in one click;
|
||||
The data mapping is already done.
|
||||
After clicking :guilabel:`Import records`, Odoo reveals a separate page with templates that can be
|
||||
downloaded and populated with the company's own data. Such templates can be imported in one click,
|
||||
since the data mapping is already done. To download a template click :guilabel:`Import Template for
|
||||
Customers` at the center of the page.
|
||||
|
||||
How to adapt the template
|
||||
-------------------------
|
||||
.. important::
|
||||
When importing a :abbr:`CSV (Comma-separated Values)` file, Odoo provides :guilabel:`Formatting`
|
||||
options. These options do **not** appear when importing the proprietary Excel file type (`.xls`,
|
||||
`.xlsx`).
|
||||
|
||||
* Add, remove and sort columns to fit at best your data structure.
|
||||
* We advise to not remove the **ID** one (see why in the next section).
|
||||
* Set a unique ID to every single record by dragging down the ID sequencing.
|
||||
.. image:: export_import_data/formatting.png
|
||||
:align: center
|
||||
:alt: Formatting options presented when a CVS file is imported in Odoo.
|
||||
|
||||
Make necessary adjustments to the *Formatting* options, and ensure all columns in the
|
||||
:guilabel:`Odoo field` and :guilabel:`File Column` are free of errors. Finally, click
|
||||
:guilabel:`Import` to import the data.
|
||||
|
||||
Adapt a template
|
||||
----------------
|
||||
|
||||
Import templates are provided in the import tool of the most common data to import (contacts,
|
||||
products, bank statements, etc.). Open them with any spreadsheet software (*Microsoft Office*,
|
||||
*OpenOffice*, *Google Drive*, etc.).
|
||||
|
||||
Once the template is downloaded, proceed to follow these steps:
|
||||
|
||||
- Add, remove, and sort columns to best fit the data structure.
|
||||
- It is strongly advised to **not** remove the :guilabel:`External ID` (ID) column (see why in the
|
||||
next section).
|
||||
- Set a unique ID to every record by dragging down the ID sequencing in the :guilabel:`External ID`
|
||||
(ID) column.
|
||||
|
||||
.. image:: export_import_data/dragdown.gif
|
||||
:align: center
|
||||
:alt: An animation of the mouse dragging down the ID column, so each record has a unique ID.
|
||||
|
||||
* When you add a new column, Odoo might not be able to map it automatically if its
|
||||
label doesn't fit any field in Odoo. Don't worry! You can map
|
||||
new columns manually when you test the import. Search the list for the
|
||||
corresponding field.
|
||||
.. note::
|
||||
When a new column is added, Odoo may not be able to map it automatically, if its label does not
|
||||
fit any field within Odoo. However, new columns can be mapped manually when the import is tested.
|
||||
Search the drop-down menu for the corresponding field.
|
||||
|
||||
.. image:: export_import_data/field_list.png
|
||||
:align: center
|
||||
.. image:: export_import_data/field_list.png
|
||||
:align: center
|
||||
:alt: Drop-down menu expanded in the initial import screen on Odoo.
|
||||
|
||||
Then, use this field's label in your file in order to make it work
|
||||
straight on the very next time.
|
||||
Then, use this field's label in the import file to ensure future imports are successful.
|
||||
|
||||
How to import from another application
|
||||
--------------------------------------
|
||||
.. tip::
|
||||
Another useful way to find out the proper column names to import is to export a sample file
|
||||
using the fields that should be imported. This way, if there is not a sample import template,
|
||||
the names are accurate.
|
||||
|
||||
In order to re-create relationships between different records,
|
||||
you should use the unique identifier from the original application
|
||||
and map it to the **ID** (External ID) column in Odoo.
|
||||
When you import another record that links to the first one,
|
||||
use **XXX/ID** (XXX/External ID) to the original unique identifier.
|
||||
You can also find this record using its name but you will be stuck
|
||||
if at least 2 records have the same name.
|
||||
Import from another application
|
||||
-------------------------------
|
||||
|
||||
The **ID** will also be used to update the original import
|
||||
if you need to re-import modified data later,
|
||||
it's thus good practice to specify it whenever possible.
|
||||
The :guilabel:`External ID` (ID) is a unique identifier for the line item. Feel free to use one
|
||||
from previous software to facilitate the transition to Odoo.
|
||||
|
||||
Setting an ID is not mandatory when importing, but it helps in many cases:
|
||||
|
||||
I cannot find the field I want to map my column to
|
||||
--------------------------------------------------
|
||||
- Update imports: import the same file several times without creating duplicates.
|
||||
- :ref:`Import relation fields <export_import_data/relation-fields>`.
|
||||
|
||||
Odoo tries to find with some heuristic, based on the first ten lines of
|
||||
the files, the type of field for each column inside your file.
|
||||
For example if you have a column only containing numbers,
|
||||
only the fields that are of type *Integer* will be displayed for you
|
||||
to choose from.
|
||||
While this behavior might be good and easy for most cases,
|
||||
it is also possible that it goes wrong or that you want to
|
||||
map your column to a field that is not proposed by default.
|
||||
To recreate relationships between different records, the unique identifier from the original
|
||||
application should be used to map it to the :guilabel:`External ID` (ID) column in Odoo.
|
||||
|
||||
If that happens, you just have to check the
|
||||
** Show fields of relation fields (advanced)** option,
|
||||
you will then be able to choose from the complete list of fields for each column.
|
||||
When another record is imported that links to the first one, use **XXX/ID** (XXX/External ID) for
|
||||
the original unique identifier. This record can also be found using its name.
|
||||
|
||||
.. warning::
|
||||
It should be noted that there will be a conflict if two or more records have the same name.
|
||||
|
||||
The :guilabel:`External ID` (ID) can also be used to update the original import, if modified data
|
||||
needs to be re-imported later, therefore, it is a good practice to specify it whenever possible.
|
||||
|
||||
Field missing to map column
|
||||
---------------------------
|
||||
|
||||
Odoo heuristically tries to find the type of field for each column inside the imported file, based
|
||||
on the first ten lines of the files.
|
||||
|
||||
For example, if there is a column only containing numbers, only the fields with the *integer* type
|
||||
are presented as options.
|
||||
|
||||
While this behavior might be beneficial in most cases, it is also possible that it could fail, or
|
||||
the column may be mapped to a field that is not proposed by default.
|
||||
|
||||
If this happens, check the :guilabel:`Show fields of relation fields (advanced) option`, then a
|
||||
complete list of fields becomes available for each column.
|
||||
|
||||
.. image:: export_import_data/field_list.png
|
||||
:align: center
|
||||
:alt: Searching for the field to match the tax column.
|
||||
|
||||
Where can I change the date import format?
|
||||
------------------------------------------
|
||||
|
||||
Odoo can automatically detect if a column is a date, and it will try to guess the date format from a
|
||||
set of most commonly used date formats. While this process can work for many date formats, some date
|
||||
formats will not be recognized. This can cause confusion due to day-month inversions; it is
|
||||
difficult to guess which part of a date format is the day and which part is the month in a date such
|
||||
as '01-03-2016'.
|
||||
|
||||
To view which date format Odoo has found from your file you can check the **Date Format** that is
|
||||
shown when clicking on **Options** under the file selector. If this format is incorrect you can
|
||||
change it to your liking using the *ISO 8601* to define the format.
|
||||
Change data import format
|
||||
-------------------------
|
||||
|
||||
.. note::
|
||||
If you are importing an excel (.xls, .xlsx) file, you can use date cells to store dates as the
|
||||
display of dates in excel is different from the way it is stored. That way you will be sure that
|
||||
the date format is correct in Odoo whatever your locale date format is.
|
||||
Odoo can automatically detect if a column is a date, and tries to guess the date format from a
|
||||
set of most commonly used date formats. While this process can work for many date formats, some
|
||||
date formats are not recognizable. This can cause confusion, due to day-month inversions; it is
|
||||
difficult to guess which part of a date format is the day, and which part is the month, in a
|
||||
date, such as `01-03-2016`.
|
||||
|
||||
Can I import numbers with currency sign (e.g.: $32.00)?
|
||||
-------------------------------------------------------
|
||||
When importing a :abbr:`CSV (Comma-separated Values)` file, Odoo provides :guilabel:`Formatting`
|
||||
options.
|
||||
|
||||
Yes, we fully support numbers with parenthesis to represent negative sign as well as numbers with
|
||||
currency sign attached to them. Odoo also automatically detect which thousand/decimal separator you
|
||||
use (you can change those under **options**). If you use a currency symbol that is not known to
|
||||
Odoo, it might not be recognized as a number though and it will crash.
|
||||
To view which date format Odoo has found from the file, check the :guilabel:`Date Format` that is
|
||||
shown when clicking on options under the file selector. If this format is incorrect, change it to
|
||||
the preferred format using *ISO 8601* to define the format.
|
||||
|
||||
Examples of supported numbers (using thirty-two thousands as an example):
|
||||
.. important::
|
||||
*ISO 8601* is an international standard, covering the worldwide exchange, along with the
|
||||
communication of date and time-related data. For example, the date format should be `YYYY-MM-DD`.
|
||||
So, in the case of July 24th 1981, it should be written as `1981-07-24`.
|
||||
|
||||
.. tip::
|
||||
When importing Excel files (`.xls`, `.xlsx`), consider using *date cells* to store dates. This
|
||||
maintains locale date formats for display, regardless of how the date is formatted in Odoo. When
|
||||
importing a :abbr:`CSV (Comma-separated Values)` file, use Odoo's :guilabel:`Formatting` section
|
||||
to select the date format columns to import.
|
||||
|
||||
Import numbers with currency signs
|
||||
----------------------------------
|
||||
|
||||
Odoo fully supports numbers with parenthesis to represent negative signs, as well as numbers with
|
||||
currency signs attached to them. Odoo also automatically detects which thousand/decimal separator is
|
||||
used. If a currency symbol unknown to Odoo is used, it might not be recognized as a number, and the
|
||||
import crashes.
|
||||
|
||||
.. note::
|
||||
When importing a :abbr:`CSV (Comma-separated Values)` file, the :guilabel:`Formatting` menu
|
||||
appears on the left-hand column. Under these options, the :guilabel:`Thousands Separator` can be
|
||||
changed.
|
||||
|
||||
Examples of supported numbers (using 'thirty-two thousand' as the figure):
|
||||
|
||||
- 32.000,00
|
||||
- 32000,00
|
||||
@@ -176,156 +255,191 @@ Example that will not work:
|
||||
- ABC 32.000,00
|
||||
- $ (32.000,00)
|
||||
|
||||
What can I do when the Import preview table isn't displayed correctly?
|
||||
----------------------------------------------------------------------
|
||||
.. important::
|
||||
A :guilabel:`() (parenthesis)` around the number indicates that the number is a negative value.
|
||||
The currency symbol **must** be placed within the parenthesis for Odoo to recognize it as a
|
||||
negative currency value.
|
||||
|
||||
By default the Import preview is set on commas as field separators and quotation marks as text
|
||||
delimiters. If your csv file does not have these settings, you can modify the File Format Options
|
||||
(displayed under the Browse CSV file bar after you select your file).
|
||||
Import preview table not displayed correctly
|
||||
--------------------------------------------
|
||||
|
||||
Note that if your CSV file has a tabulation as separator, Odoo will not detect the separations. You
|
||||
will need to change the file format options in your spreadsheet application. See the following
|
||||
question.
|
||||
By default, the import preview is set on commas as field separators, and quotation marks as text
|
||||
delimiters. If the :abbr:`CSV (Comma-separated Values)` file does not have these settings, modify
|
||||
the :guilabel:`Formatting` options (displayed under the :guilabel:`Import` :abbr:`CSV
|
||||
(Comma-separated Values)` file bar after selecting the :abbr:`CSV (Comma-separated Values)` file).
|
||||
|
||||
How can I change the CSV file format options when saving in my spreadsheet application?
|
||||
---------------------------------------------------------------------------------------
|
||||
.. important::
|
||||
If the :abbr:`CSV (Comma-separated Values)` file has a tabulation as a separator, Odoo does
|
||||
**not** detect the separations. The file format options need to be modified in the spreadsheet
|
||||
application. See the following :ref:`Change CSV file format <export_import_data/change-csv>`
|
||||
section.
|
||||
|
||||
If you edit and save CSV files in spreadsheet applications, your computer's regional settings will
|
||||
be applied for the separator and delimiter. We suggest you use OpenOffice or LibreOffice Calc as
|
||||
they will allow you to modify all three options (in :menuselection:`'Save As' dialog box --> Check the
|
||||
box 'Edit filter settings' --> Save`).
|
||||
.. _export_import_data/change-csv:
|
||||
|
||||
Microsoft Excel will allow you to modify only the encoding when saving (in :menuselection:`'Save As'
|
||||
dialog box --> click 'Tools' dropdown list --> Encoding tab`).
|
||||
Change CSV file format in spreadsheet application
|
||||
-------------------------------------------------
|
||||
|
||||
What's the difference between Database ID and External ID?
|
||||
----------------------------------------------------------
|
||||
When editing and saving :abbr:`CSV (Comma-separated Values)` files in spreadsheet applications, the
|
||||
computer's regional settings are applied for the separator and delimiter. Odoo suggests using
|
||||
*OpenOffice* or *LibreOffice*, as both applications allow modifications of all three options (from
|
||||
*LibreOffice* application, go to :menuselection:`'Save As' dialog box --> Check the box 'Edit filter
|
||||
settings' --> Save`).
|
||||
|
||||
Microsoft Excel can modify the encoding when saving (:menuselection:`'Save As' dialog box -->
|
||||
'Tools' drop-down menu --> Encoding tab`).
|
||||
|
||||
Difference between Database ID and External ID
|
||||
----------------------------------------------
|
||||
|
||||
Some fields define a relationship with another object. For example, the country of a contact is a
|
||||
link to a record of the 'Country' object. When you want to import such fields, Odoo will have to
|
||||
recreate links between the different records. To help you import such fields, Odoo provides three
|
||||
mechanisms. You must use one and only one mechanism per field you want to import.
|
||||
link to a record of the 'Country' object. When such fields are imported, Odoo has to recreate links
|
||||
between the different records. To help import such fields, Odoo provides three mechanisms.
|
||||
|
||||
For example, to reference the country of a contact, Odoo proposes you 3 different fields to import:
|
||||
.. important::
|
||||
**Only one** mechanism should be used per field that is imported.
|
||||
|
||||
- Country: the name or code of the country
|
||||
- Country/Database ID: the unique Odoo ID for a record, defined by the ID postgresql column
|
||||
- Country/External ID: the ID of this record referenced in another application (or the .XML file
|
||||
that imported it)
|
||||
For example, to reference the country of a contact, Odoo proposes three different fields to import:
|
||||
|
||||
For the country Belgium, you can use one of these 3 ways to import:
|
||||
- :guilabel:`Country`: the name or code of the country
|
||||
- :guilabel:`Country/Database ID`: the unique Odoo ID for a record, defined by the ID PostgreSQL
|
||||
column
|
||||
- :guilabel:`Country/External ID`: the ID of this record referenced in another application (or the
|
||||
`.XML` file that imported it)
|
||||
|
||||
- Country: Belgium
|
||||
- Country/Database ID: 21
|
||||
- Country/External ID: base.be
|
||||
For the country of Belgium, for example, use one of these three ways to import:
|
||||
|
||||
According to your need, you should use one of these 3 ways to reference records in relations. Here
|
||||
is when you should use one or the other, according to your need:
|
||||
- :guilabel:`Country`: `Belgium`
|
||||
- :guilabel:`Country/Database ID`: `21`
|
||||
- :guilabel:`Country/External ID`: `base.be`
|
||||
|
||||
- Use Country: This is the easiest way when your data come from CSV files that have been created
|
||||
manually.
|
||||
- Use Country/Database ID: You should rarely use this notation. It's mostly used by developers as
|
||||
it's main advantage is to never have conflicts (you may have several records with the same name,
|
||||
According to the company's need, use one of these three ways to reference records in relations. Here
|
||||
is an example when one or the other should be used, according to the need:
|
||||
|
||||
- Use :guilabel:`Country`: this is the easiest way when data comes from :abbr:`CSV (Comma-separated
|
||||
Values)` files that have been created manually.
|
||||
- Use :guilabel:`Country/Database ID`: this should rarely be used. It is mostly used by developers
|
||||
as the main advantage is to never have conflicts (there may be several records with the same name,
|
||||
but they always have a unique Database ID)
|
||||
- Use Country/External ID: Use External ID when you import data from a third party application.
|
||||
- Use :guilabel:`Country/External ID`: use *External ID* when importing data from a third-party
|
||||
application.
|
||||
|
||||
When you use External IDs, you can import CSV files with the "External ID" column to define the
|
||||
External ID of each record you import. Then, you will be able to make a reference to that record
|
||||
with columns like "Field/External ID". The following two CSV files give you an example for Products
|
||||
and their Categories.
|
||||
When *External IDs* are used, import :abbr:`CSV (Comma-separated Values)` files with the
|
||||
:guilabel:`External ID` (ID) column defining the *External ID* of each record that is imported.
|
||||
Then, a reference can be made to that record with columns, like `Field/External ID`. The following
|
||||
two :abbr:`CSV (Comma-separated Values)` files provide an example for products and their categories.
|
||||
|
||||
:download:`CSV file for categories
|
||||
<export_import_data/External_id_3rd_party_application_product_categories.csv>`.
|
||||
- :download:`CSV file for categories
|
||||
<export_import_data/External_id_3rd_party_application_product_categories.csv>`
|
||||
- :download:`CSV file for Products
|
||||
<export_import_data/External_id_3rd_party_application_products.csv>`
|
||||
|
||||
:download:`CSV file for Products
|
||||
<export_import_data/External_id_3rd_party_application_products.csv>`.
|
||||
.. _export_import_data/relation-fields:
|
||||
|
||||
What can I do if I have multiple matches for a field?
|
||||
-----------------------------------------------------
|
||||
Import relation fields
|
||||
----------------------
|
||||
|
||||
If for example you have two product categories with the child name "Sellable" (ie. "Misc.
|
||||
Products/Sellable" & "Other Products/Sellable"), your validation is halted but you may still import
|
||||
your data. However, we recommend you do not import the data because they will all be linked to the
|
||||
first 'Sellable' category found in the Product Category list ("Misc. Products/Sellable"). We
|
||||
recommend you modify one of the duplicates' values or your product category hierarchy.
|
||||
An Odoo object is always related to many other objects (e.g. a product is linked to product
|
||||
categories, attributes, vendors, etc.). To import those relations, the records of the related object
|
||||
need to be imported first, from their own list menu.
|
||||
|
||||
However if you do not wish to change your configuration of product categories, we recommend you use
|
||||
make use of the external ID for this field 'Category'.
|
||||
This can be achieved by using either the name of the related record, or its ID, depending on the
|
||||
circumstances. The ID is expected when two records have the same name. In such a case add `/ ID`
|
||||
at the end of the column title (e.g. for product attributes: `Product Attributes / Attribute / ID`).
|
||||
|
||||
How can I import a many2many relationship field (e.g. a customer that has multiple tags)?
|
||||
-----------------------------------------------------------------------------------------
|
||||
Options for multiple matches on fields
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The tags should be separated by a comma without any spacing. For example, if you want your customer
|
||||
to be linked to both tags 'Manufacturer' and 'Retailer' then you will encode "Manufacturer,Retailer"
|
||||
in the same column of your CSV file.
|
||||
If, for example, there are two product categories with the child name `Sellable` (e.g. `Misc.
|
||||
Products/Sellable` & `Other Products/Sellable`), the validation is halted, but the data may still be
|
||||
imported. However, Odoo recommends that the data is not imported because it will all be linked to
|
||||
the first `Sellable` category found in the *Product Category* list (`Misc. Products/Sellable`).
|
||||
Odoo, instead, recommends modifying one of the duplicate's values, or the product category
|
||||
hierarchy.
|
||||
|
||||
:download:`CSV file for Manufacturer, Retailer <export_import_data/m2m_customers_tags.csv>`
|
||||
However, if the company does not wish to change the configuration of product categories, Odoo
|
||||
recommends making use of the *External ID* for this field, 'Category'.
|
||||
|
||||
Import many2many relationship fields
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
How can I import a one2many relationship (e.g. several Order Lines of a Sales Order)?
|
||||
-------------------------------------------------------------------------------------
|
||||
The tags should be separated by a comma, without any spacing. For example, if a customer needs to be
|
||||
linked to both tags: `Manufacturer` and `Retailer` then 'Manufacturer,Retailer' needs to be encoded
|
||||
in the same column of the :abbr:`CSV (Comma-separated Values)` file.
|
||||
|
||||
If you want to import sales order having several order lines; for each order line, you need to
|
||||
reserve a specific row in the CSV file. The first order line will be imported on the same row as the
|
||||
information relative to order. Any additional lines will need an additional row that does not have
|
||||
any information in the fields relative to the order. As an example, here is
|
||||
``purchase.order_functional_error_line_cant_adpat.CSV`` file of some quotations you can import,
|
||||
based on demo data.
|
||||
- :download:`CSV file for Manufacturer, Retailer <export_import_data/m2m_customers_tags.csv>`
|
||||
|
||||
:download:`File for some Quotations <export_import_data/purchase.order_functional_error_line_cant_adpat.csv>`.
|
||||
Import one2many relationships
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The following CSV file shows how to import purchase orders with their respective purchase order
|
||||
lines:
|
||||
If a company wants to import a sales order with several order lines, a specific row **must** be
|
||||
reserved in the :abbr:`CSV (Comma-separated Values)` file for each order line. The first order line
|
||||
is imported on the same row as the information relative to order. Any additional lines need an
|
||||
additional row that does not have any information in the fields relative to the order.
|
||||
|
||||
:download:`Purchase orders with their respective purchase order lines <export_import_data/o2m_purchase_order_lines.csv>`.
|
||||
As an example, here is a :abbr:`CSV (Comma-separated Values)` file of some quotations that can be
|
||||
imported, based on demo data:
|
||||
|
||||
The following CSV file shows how to import customers and their respective contacts:
|
||||
- :download:`File for some Quotations
|
||||
<export_import_data/purchase.order_functional_error_line_cant_adpat.csv>`
|
||||
|
||||
:download:`Customers and their respective contacts <export_import_data/o2m_customers_contacts.csv>`.
|
||||
The following :abbr:`CSV (Comma-separated Values)` file shows how to import purchase orders with
|
||||
their respective purchase order lines:
|
||||
|
||||
Can I import several times the same record?
|
||||
-------------------------------------------
|
||||
- :download:`Purchase orders with their respective purchase order lines
|
||||
<export_import_data/o2m_purchase_order_lines.csv>`
|
||||
|
||||
If you import a file that contains one of the column "External ID" or "Database ID", records that
|
||||
have already been imported will be modified instead of being created. This is very useful as it
|
||||
allows you to import several times the same CSV file while having made some changes in between two
|
||||
imports. Odoo will take care of creating or modifying each record depending if it's new or not.
|
||||
The following :abbr:`CSV (Comma-separated Values)` file shows how to import customers and their
|
||||
respective contacts:
|
||||
|
||||
This feature allows you to use the Import/Export tool of Odoo to modify a batch of records in your
|
||||
favorite spreadsheet application.
|
||||
- :download:`Customers and their respective contacts
|
||||
<export_import_data/o2m_customers_contacts.csv>`
|
||||
|
||||
What happens if I do not provide a value for a specific field?
|
||||
Import records several times
|
||||
----------------------------
|
||||
|
||||
If an imported file contains one of the columns: :guilabel:`External ID` or :guilabel:`Database ID`,
|
||||
records that have already been imported are modified, instead of being created. This is extremely
|
||||
useful as it allows users to import the same :abbr:`CSV (Comma-separated Values)` file several
|
||||
times, while having made some changes in between two imports.
|
||||
|
||||
Odoo takes care of creating or modifying each record, depending if it is new or not.
|
||||
|
||||
This feature allows a company to use the *Import/Export tool* in Odoo to modify a batch of records
|
||||
in a spreadsheet application.
|
||||
|
||||
Value not provided for a specific field
|
||||
---------------------------------------
|
||||
|
||||
If all fields are not set in the CSV file, Odoo assigns the default value for every non-defined
|
||||
field. But, if fields are set with empty values in the :abbr:`CSV (Comma-separated Values)` file,
|
||||
Odoo sets the empty value in the field, instead of assigning the default value.
|
||||
|
||||
Export/import different tables from an SQL application to Odoo
|
||||
--------------------------------------------------------------
|
||||
|
||||
If you do not set all fields in your CSV file, Odoo will assign the default value for every non
|
||||
defined fields. But if you set fields with empty values in your CSV file, Odoo will set the EMPTY
|
||||
value in the field, instead of assigning the default value.
|
||||
If data needs to be imported from different tables, relations need to be recreated between records
|
||||
belonging to different tables. For instance, if companies and people are imported, the link between
|
||||
each person and the company they work for needs to be recreated.
|
||||
|
||||
How to export/import different tables from an SQL application to Odoo?
|
||||
----------------------------------------------------------------------
|
||||
To manage relations between tables, use the `External ID` facilities of Odoo. The `External ID` of a
|
||||
record is the unique identifier of this record in another application. The `External ID` must be
|
||||
unique across all records of all objects. It is a good practice to prefix this `External ID` with
|
||||
the name of the application or table. (like, 'company_1', 'person_1' - instead of '1')
|
||||
|
||||
If you need to import data from different tables, you will have to recreate relations between
|
||||
records belonging to different tables. (e.g. if you import companies and persons, you will have to
|
||||
recreate the link between each person and the company they work for).
|
||||
As an example, suppose there is an SQL database with two tables that are to be imported: companies
|
||||
and people. Each person belongs to one company, so the link between a person and the company they
|
||||
work for must be recreated.
|
||||
|
||||
To manage relations between tables, you can use the "External ID" facilities of Odoo. The "External
|
||||
ID" of a record is the unique identifier of this record in another application. This "External ID"
|
||||
must be unique across all the records of all objects, so it's a good practice to prefix this
|
||||
"External ID" with the name of the application or table. (like 'company_1', 'person_1' instead of
|
||||
'1')
|
||||
Test this example, with a :download:`sample of a PostgreSQL database
|
||||
<export_import_data/database_import_test.sql>`.
|
||||
|
||||
As an example, suppose you have a SQL database with two tables you want to import: companies and
|
||||
persons. Each person belong to one company, so you will have to recreate the link between a person
|
||||
and the company he work for. (If you want to test this example, here is a :download:`dump of such a
|
||||
PostgreSQL database <export_import_data/database_import_test.sql>`)
|
||||
|
||||
We will first export all companies and their "External ID". In PSQL, write the following command:
|
||||
First, export all companies and their *External ID*. In PSQL, write the following command:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
> copy (select 'company_'||id as "External ID",company_name as "Name",'True' as "Is a Company" from companies) TO '/tmp/company.csv' with CSV HEADER;
|
||||
|
||||
This SQL command will create the following CSV file:
|
||||
This SQL command creates the following :abbr:`CSV (Comma-separated Values)` file:
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
@@ -334,13 +448,14 @@ This SQL command will create the following CSV file:
|
||||
company_2,Organi,True
|
||||
company_3,Boum,True
|
||||
|
||||
To create the CSV file for persons, linked to companies, we will use the following SQL command in PSQL:
|
||||
To create the :abbr:`CSV (Comma-separated Values)` file for people linked to companies, use the
|
||||
following SQL command in PSQL:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
> copy (select 'person_'||id as "External ID",person_name as "Name",'False' as "Is a Company",'company_'||company_id as "Related Company/External ID" from persons) TO '/tmp/person.csv' with CSV
|
||||
|
||||
It will produce the following CSV file:
|
||||
It produces the following :abbr:`CSV (Comma-separated Values)` file:
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
@@ -350,62 +465,13 @@ It will produce the following CSV file:
|
||||
person_3,Eric,False,company_2
|
||||
person_4,Ramsy,False,company_3
|
||||
|
||||
As you can see in this file, Fabien and Laurence are working for the Bigees company (company_1) and
|
||||
Eric is working for the Organi company. The relation between persons and companies is done using the
|
||||
External ID of the companies. We had to prefix the "External ID" by the name of the table to avoid a
|
||||
conflict of ID between persons and companies (person_1 and company_1 who shared the same ID 1 in the
|
||||
original database).
|
||||
In this file, Fabien and Laurence are working for the Bigees company (`company_1`), and Eric is
|
||||
working for the Organi company. The relation between people and companies is done using the
|
||||
*External ID* of the companies. The *External ID* is prefixed by the name of the table to avoid a
|
||||
conflict of ID between people and companies (`person_1` and `company_1`, who shared the same ID 1 in
|
||||
the original database).
|
||||
|
||||
The two files produced are ready to be imported in Odoo without any modifications. After having
|
||||
imported these two CSV files, you will have 4 contacts and 3 companies. (the firsts two contacts are
|
||||
linked to the first company). You must first import the companies and then the persons.
|
||||
|
||||
How to adapt an import template
|
||||
===============================
|
||||
|
||||
Import templates are provided in the import tool of the most common data to
|
||||
import (contacts, products, bank statements, etc.).
|
||||
You can open them with any spreadsheets software (Microsoft Office,
|
||||
OpenOffice, Google Drive, etc.).
|
||||
|
||||
How to customize the file
|
||||
=========================
|
||||
|
||||
* Remove columns you don't need. We advise to not remove the *ID* one (see
|
||||
why here below).
|
||||
* Set a unique ID to every single record by dragging down the ID sequencing.
|
||||
|
||||
.. image:: export_import_data/dragdown.gif
|
||||
:align: center
|
||||
|
||||
* When you add a new column, Odoo might not be able to map it automatically if its
|
||||
label doesn't fit any field of the system.
|
||||
If so, find the corresponding field using the search.
|
||||
|
||||
.. image:: export_import_data/field_list.png
|
||||
:align: center
|
||||
|
||||
Then, use the label you found in your import template in order to make it work
|
||||
straight away the very next time you try to import.
|
||||
|
||||
Why an “ID” column
|
||||
==================
|
||||
|
||||
The **ID** (External ID) is an unique identifier for the line item.
|
||||
Feel free to use the one of your previous software to ease the transition to Odoo.
|
||||
|
||||
Setting an ID is not mandatory when importing but it helps in many cases:
|
||||
|
||||
* Update imports: you can import the same file several times without creating duplicates;
|
||||
* Import relation fields (see here below).
|
||||
|
||||
How to import relation fields
|
||||
=============================
|
||||
|
||||
An Odoo object is always related to many other objects (e.g. a product is linked
|
||||
to product categories, attributes, vendors, etc.). To import those relations you need to
|
||||
import the records of the related object first from their own list menu.
|
||||
|
||||
You can do it using either the name of the related record or its ID. The ID is expected when
|
||||
two records have the same name. In such a case add " / ID" at the end of the column title
|
||||
(e.g. for product attributes: Product Attributes / Attribute / ID).
|
||||
imported these two :abbr:`CSV (Comma-separated Values)` files, there are four contacts and three
|
||||
companies (the first two contacts are linked to the first company). Keep in mind to first import
|
||||
the companies, and then the people.
|
||||
|
||||
|
After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 8.2 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 36 KiB |
@@ -1,59 +1,191 @@
|
||||
=====================
|
||||
In-App Purchase (IAP)
|
||||
=====================
|
||||
======================
|
||||
In-app purchases (IAP)
|
||||
======================
|
||||
|
||||
In-App Purchases (IAP) gives access to additional services through Odoo. For instance, it allows you
|
||||
to send SMS Text Messages or to send Invoices by post directly from your database.
|
||||
.. |IAP| replace:: :abbr:`IAP (In-app purchases)`
|
||||
|
||||
In-app purchases (IAP) are optional services that enhance Odoo databases. Each service provides its
|
||||
own specific features and functionality. A full list of services is available on the `Odoo IAP
|
||||
Catalog <https://iap.odoo.com/iap/all-in-app-services>`_.
|
||||
|
||||
.. image:: in_app_purchase/iap.png
|
||||
:align: center
|
||||
:alt: The IAP catalog with various services available on IAP.Odoo.com.
|
||||
|
||||
.. example::
|
||||
The :guilabel:`SMS` service sends text messages to contacts directly from the database, and the
|
||||
:guilabel:`Documents Digitization` service digitizes scanned or PDF vendor bills, expenses, and
|
||||
resumes with optical character recognition (OCR) and artificial intelligence (AI).
|
||||
|
||||
|IAP| services do **not** need to be configured or set up before use. Odoo users can simply click on
|
||||
the service in the app to activate it. However, each service requires its own prepaid credits, and
|
||||
when they run out, users **must** :ref:`buy more <iap/buying_credits>` in order to keep using it.
|
||||
|
||||
.. note::
|
||||
Enterprise Odoo users with a valid subscription get free credits to test IAP features before
|
||||
deciding to purchase more credits for the database. This includes demo/training databases,
|
||||
educational databases, and one-app-free databases.
|
||||
|
||||
.. _in_app_purchase/portal:
|
||||
|
||||
IAP services
|
||||
============
|
||||
|
||||
|IAP| services are provided by Odoo, as well as third-parties, and have a wide range of uses.
|
||||
|
||||
The following |IAP| services are offered by Odoo:
|
||||
|
||||
- :guilabel:`Documents Digitization`: digitizes scanned or PDF vendor bills, expenses, and resumes
|
||||
with OCR and AI.
|
||||
- :guilabel:`Partner Autocomplete`: automatically populates contact records with corporate data.
|
||||
- :guilabel:`SMS`: sends SMS text messages to contacts directly from the database.
|
||||
- :guilabel:`Lead Generation`: generates leads based on a set of criteria, and converts web visitors
|
||||
into quality leads and opportunities.
|
||||
- :guilabel:`Snailmail`: sends customer invoices and follow-up reports by post, worldwide.
|
||||
- :guilabel:`Signer identification with itsme®️`: ask document signatories in Odoo *Sign* to provide
|
||||
their identity using the *itsme®* identity platform, which is available in Belgium and the
|
||||
Netherlands.
|
||||
|
||||
For more information on every service currently available (offered from developers other than Odoo),
|
||||
visit the `Odoo IAP Catalog <https://iap.odoo.com/iap/all-in-app-services>`_.
|
||||
|
||||
Use IAP services
|
||||
----------------
|
||||
|
||||
|IAP| services are automatically integrated with Odoo, and do **not** require users to configure any
|
||||
settings. To use a service, simply interact with it wherever it appears in the database.
|
||||
|
||||
.. example::
|
||||
The following flow focuses on the *SMS* |IAP| service being used from a contact's record.
|
||||
|
||||
This can be done by clicking the :guilabel:`📱 SMS` icon within the database.
|
||||
|
||||
.. image:: in_app_purchase/sms-icon.png
|
||||
:align: center
|
||||
:alt: The SMS icon on a typical contact information form located within an Odoo database.
|
||||
|
||||
One way to utilize the *SMS* |IAP| service with Odoo is showcased in the following steps:
|
||||
|
||||
First, navigate to the :menuselection:`Contacts application`, and click on a contact with a
|
||||
mobile phone number entered in either the :guilabel:`Phone` or :guilabel:`Mobile` field of the
|
||||
contact form.
|
||||
|
||||
Next, find the :guilabel:`📱 SMS` icon that appears to the right of the :guilabel:`Phone` or
|
||||
:guilabel:`Mobile` fields. Click the :guilabel:`📱 SMS` icon, and a :guilabel:`Send SMS Text
|
||||
Message` pop-up window appears.
|
||||
|
||||
Type a message in the :guilabel:`Message` field of the pop-up window. Then, click the
|
||||
:guilabel:`Send SMS` button. Odoo then sends the message, via SMS, to the contact, and logs what
|
||||
was sent in the *chatter* of the contact's form.
|
||||
|
||||
Upon sending the SMS message, the prepaid credits for the *SMS* |IAP| service are automatically
|
||||
deducted from the existing credits. If there are not enough credits to send the message, Odoo
|
||||
prompts the user to purchase more.
|
||||
|
||||
.. seealso::
|
||||
For more information on how to use various |IAP| services, and for more in-depth instructions
|
||||
related to SMS functionality in Odoo, review the documentation below:
|
||||
|
||||
- :doc:`Lead mining <../sales/crm/acquire_leads/lead_mining>`
|
||||
- :doc:`Enrich your contacts base with Partner Autocomplete
|
||||
<../sales/crm/optimize/partner_autocomplete>`
|
||||
- :doc:`SMS essentials <../marketing/sms_marketing/essentials/sms_essentials>`
|
||||
|
||||
.. _in_app_purchase/credits:
|
||||
|
||||
IAP credits
|
||||
===========
|
||||
|
||||
Every time an |IAP| service is used, the prepaid credits for that service are spent. Odoo prompts
|
||||
the purchase of more credits when there are not enough credits left to continue using a service.
|
||||
Email alerts can also be set up for when :ref:`credits are low <in_app_purchase/low-credits>`.
|
||||
|
||||
Credits are purchased in *Packs* from the `Odoo IAP Catalog
|
||||
<https://iap.odoo.com/iap/all-in-app-services>`_, and pricing is specific to each service.
|
||||
|
||||
.. example::
|
||||
The `SMS service <https://iap.odoo.com/iap/in-app-services/1>`_ has four packs available, in
|
||||
denominations of:
|
||||
|
||||
- :guilabel:`Starter Pack`: 10 credits
|
||||
- :guilabel:`Standard Pack`: 100 credits
|
||||
- :guilabel:`Advanced Pack`: 500 credits
|
||||
- :guilabel:`Expert Pack`: 1,000 credits
|
||||
|
||||
.. image:: in_app_purchase/packs.png
|
||||
:align: center
|
||||
:alt: Four different packs of credits for the SMS IAP service.
|
||||
|
||||
The number of credits consumed depends on the length of the SMS and the country of destination.
|
||||
|
||||
For more information, refer to the :doc:`SMS Pricing and FAQ
|
||||
<../marketing/sms_marketing/pricing/pricing_and_faq>` documentation.
|
||||
|
||||
.. _iap/buying_credits:
|
||||
|
||||
Buying Credits
|
||||
==============
|
||||
Buy credits
|
||||
-----------
|
||||
|
||||
Each IAP Service relies on prepaid credits to work and has its own pricing. To consult your current
|
||||
balance or to recharge your account, go to :menuselection:`Settings --> Odoo IAP --> View my
|
||||
If there are not enough credits to perform a task, the database automatically prompts the purchase
|
||||
of more credits.
|
||||
|
||||
Users can check the current balance of credits for each service, and manually purchase more credits,
|
||||
by navigating to the :menuselection:`Settings app --> Contacts section`, and beneath the
|
||||
:guilabel:`Odoo IAP` setting, click :guilabel:`View My Services`.
|
||||
|
||||
Doing so reveals a :guilabel:`My Services` page, listing the various |IAP| services in the database.
|
||||
From here, click an |IAP| service to open its :guilabel:`Account Information` page, where additional
|
||||
credits can be purchased.
|
||||
|
||||
Manually buy credits
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
To manually buy credits in Odoo, follow these steps:
|
||||
|
||||
First, go to the :menuselection:`Settings application` and type `IAP` in the :guilabel:`Search...`
|
||||
bar. Alternatively users can scroll down to the :guilabel:`Contacts` section. Under the
|
||||
:guilabel:`Contacts` section, where it says :guilabel:`Odoo IAP`, click :guilabel:`View My
|
||||
Services`.
|
||||
|
||||
.. image:: in_app_purchase/image1.png
|
||||
.. image:: in_app_purchase/view-services.png
|
||||
:align: center
|
||||
:alt: The Settings app showing the Odoo IAP heading and View My Services button.
|
||||
|
||||
.. tip::
|
||||
If you are on Odoo Online and have the Enterprise version, you benefit from free credits to test our
|
||||
IAP features.
|
||||
Doing so reveals an :guilabel:`IAP Account` page, listing the various |IAP| services in the
|
||||
database. From here, click an |IAP| service to open details about it; additional credits can be
|
||||
purchased from here.
|
||||
|
||||
IAP accounts
|
||||
============
|
||||
On the following page, click the :guilabel:`Buy Credit` button. Doing so loads a :guilabel:`Buy
|
||||
Credits for (IAP Account)` page in a new tab. From here, click :guilabel:`Buy` on the desired pack
|
||||
of credits. Then, follow the prompts to enter payment details, and confirm the order.
|
||||
|
||||
Credits to use IAP services are stored on IAP accounts, which are specific to each service.
|
||||
By default, IAP accounts are common to all companies, but can be restricted to specific
|
||||
ones. Activate the :ref:`developer mode <developer-mode>`, then go to :menuselection:`Technical
|
||||
Settings --> IAP Account`.
|
||||
|
||||
.. image:: in_app_purchase/image2.png
|
||||
.. image:: in_app_purchase/buy-pack.png
|
||||
:align: center
|
||||
:alt: The SMS service page on IAP.Odoo.com with four packs of credits available for purchase.
|
||||
|
||||
.. tip::
|
||||
An IAP account can be disabled by appending `+disabled` to its token.
|
||||
Reverting this change will re-enable the account.
|
||||
Once the transaction is complete, the credits are available for use in the database.
|
||||
|
||||
IAP Portal
|
||||
==========
|
||||
.. _in_app_purchase/low-credits:
|
||||
|
||||
The IAP Portal is a platform regrouping your IAP Services. It is accessible from
|
||||
:menuselection:`Settings app --> Odoo IAP --> View my Services`. From there, you can view your current
|
||||
balance, recharge your credits and set a reminder when your balance falls below a threshold.
|
||||
Low-credit notification
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. image:: in_app_purchase/image3.png
|
||||
:align: center
|
||||
It is possible to be notified when credits are low, in order to avoid running out of credits, while
|
||||
using an |IAP| service. To do that, follow this process:
|
||||
|
||||
Get notified when credits are low
|
||||
=================================
|
||||
Go to the :menuselection:`Settings application`, and type `IAP` in the :guilabel:`Search...` bar.
|
||||
Under the :guilabel:`Contacts` section, where it says :guilabel:`Odoo IAP`, click :guilabel:`View My
|
||||
Services`.
|
||||
|
||||
To be notified when it’s time to recharge your credits, you can go to your IAP Portal through
|
||||
:menuselection:`Settings app --> Odoo IAP --> View my Services`, unfold a service and check the
|
||||
Receive threshold warning option. Then, you can provide a minimum amount of credits and email
|
||||
addresses. Now, every time that the limit is reached, an automatic reminder will be sent by
|
||||
email!
|
||||
The available |IAP| accounts appear in a list view on the :guilabel:`IAP Account` page. From here,
|
||||
click on the desired |IAP| account to view that service's details.
|
||||
|
||||
.. image:: in_app_purchase/image4.png
|
||||
:align: center
|
||||
On the details page, tick the :guilabel:`Receive threshold warning` checkbox. Doing so reveals two
|
||||
fields on the form: :guilabel:`Warning Threshold` and :guilabel:`Contact Email`.
|
||||
|
||||
In the :guilabel:`Warning Threshold` field, enter an amount of credits Odoo should use as the
|
||||
minimum threshold for this service. In the :guilabel:`Contact Email` field, enter the email address
|
||||
that receives the notification.
|
||||
|
||||
Odoo sends a low-credit alert to the :guilabel:`Contact Email` when the balance of credits falls
|
||||
below the amount listed as the :guilabel:`Warning Threshold`.
|
||||
|
||||
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 73 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 9.1 KiB |
|
After Width: | Height: | Size: 6.9 KiB |
@@ -36,8 +36,8 @@ your customer’s address is set correctly, including the country, before sendin
|
||||
<developer-mode>`, go to :menuselection:`General Settings --> Technical --> Reporting
|
||||
section: Paper Format`.
|
||||
- A square of **15mm by 15mm** on the bottom left corner has to stay clear.
|
||||
- The postage area has to stay clear (click :download:`here <snailmail/snailmail-template.pdf>`
|
||||
to get more info about the area).
|
||||
- The postage area has to stay clear (:download:`download the snailmail PDF template
|
||||
<snailmail/snailmail-template.pdf>` for more details).
|
||||
- Pingen (Odoo Snailmail service provider) scans the area to process the address, so if something
|
||||
gets written outside the area, it is not counted as part of the address.
|
||||
|
||||
@@ -51,7 +51,5 @@ To buy stamps, go to :menuselection:`Accounting --> Configuration --> Settings -
|
||||
invoices: Snailmail`, click on :guilabel:`Buy credits`, or go to :menuselection:`Settings --> In-App
|
||||
Purchases: Odoo IAP`, and click on :guilabel:`View my Services`.
|
||||
|
||||
.. tip::
|
||||
- If you are on Odoo Online and have the Enterprise version, you benefit from free trial credits
|
||||
to test the feature.
|
||||
- Click `here <https://iap.odoo.com/privacy#header_4>`_ to know about our *Privacy Policy*.
|
||||
.. seealso::
|
||||
`Odoo's IAP Privacy Policy <https://iap.odoo.com/privacy#header_4>`_
|
||||
|
||||
@@ -24,12 +24,14 @@ to reflect the change in inventory valuation. However, Odoo does **not** automat
|
||||
valuation <inventory/avg_price/leaving_inventory>`.
|
||||
|
||||
.. note::
|
||||
This document addresses a specific use case for theoretical purposes. Navigate :ref:`here
|
||||
<inventory/management/inventory_valuation_config>` for instructions on how to set up and use
|
||||
|AVCO| in Odoo.
|
||||
This document addresses a specific use case for theoretical purposes. For instructions on how to
|
||||
set up and use |AVCO|, refer to the :doc:`inventory valuation configuration
|
||||
<../../../inventory_and_mrp/inventory/warehouses_storage/inventory_valuation/inventory_valuation_config>`
|
||||
doc.
|
||||
|
||||
.. seealso::
|
||||
- :ref:`Using inventory valuation <inventory/reporting/using_inventory_val>`
|
||||
- :doc:`Using inventory valuation
|
||||
<../../../inventory_and_mrp/inventory/warehouses_storage/inventory_valuation/using_inventory_valuation>`
|
||||
- :ref:`Other inventory valuation methods <inventory/inventory_valuation_config/costing_methods>`
|
||||
|
||||
Configuration
|
||||
@@ -41,7 +43,8 @@ product category page, set :guilabel:`Costing Method` to `Average Cost (AVCO)` a
|
||||
:guilabel:`Inventory Valuation` to `Automated`.
|
||||
|
||||
.. seealso::
|
||||
:ref:`Inventory valuation configuration <inventory/management/inventory_valuation_config>`
|
||||
:doc:`Inventory valuation configuration
|
||||
<../../../inventory_and_mrp/inventory/warehouses_storage/inventory_valuation/inventory_valuation_config>`
|
||||
|
||||
Using average cost valuation
|
||||
============================
|
||||
|
||||
@@ -101,8 +101,9 @@ correctly reporting a balance of zero. If that is the case, set an :guilabel:`Al
|
||||
to the last day of the fiscal year by going to :menuselection:`Accounting --> Accounting --> Lock
|
||||
Dates`.
|
||||
|
||||
.. warning::
|
||||
Setting an :guilabel:`All Users Lock Date` is **irreversible** and cannot be removed.
|
||||
.. tip::
|
||||
Install the :guilabel:`Irreversible Lock Date` (`account_lock`) module to make the :guilabel:`All
|
||||
Users Lock Date` *irreversible* once set.
|
||||
|
||||
.. note::
|
||||
A specific year-end closing entry is **optional** in order to close out the **profit and loss
|
||||
|
||||
@@ -1,74 +1,408 @@
|
||||
:show-content:
|
||||
|
||||
==================
|
||||
Avatax integration
|
||||
AvaTax integration
|
||||
==================
|
||||
|
||||
Avatax is a tax calculation provider that can be integrated in Odoo.
|
||||
Avalara's *AvaTax* is a cloud-based tax software. Integrating *AvaTax* with Odoo provides real-time
|
||||
and region-specific tax calculations when users sell, purchase, and invoice items in Odoo. *AvaTax*
|
||||
tax calculation is supported with every United Nations charted country, including inter-border
|
||||
transactions.
|
||||
|
||||
.. important::
|
||||
*AvaTax* is only available for integration with databases/companies that have locations in the
|
||||
United States and Canada. This means the fiscal position/country of a database can only be set to
|
||||
the United States or Canada. For more information, reference this documentation:
|
||||
:ref:`avatax/fiscal_country`.
|
||||
|
||||
*AvaTax* accounts for location-based tax rates for each state, county, and city. It improves
|
||||
remittance accuracy by paying close attention to laws, rules, jurisdiction boundaries, and special
|
||||
circumstances (like, tax holidays, and product exemptions). Companies who integrate with *AvaTax*
|
||||
can maintain control of tax-calculations in-house with this simple :abbr:`API (application
|
||||
programming interface)` integration.
|
||||
|
||||
.. important::
|
||||
Some limitations exist in Odoo while using *AvaTax* for tax calculation:
|
||||
|
||||
- *AvaTax* is **not** supported in Odoo's *Point of Sale* app, because a dynamic tax calculation
|
||||
model is excessive for transactions within a single delivery address, such as stores or
|
||||
restaurants.
|
||||
- *AvaTax* and Odoo use the company address and **not** the warehouse address.
|
||||
- Exercise tax is **not** supported. This includes tobacco/vape taxes, fuel taxes, and other
|
||||
specific industries.
|
||||
|
||||
.. seealso::
|
||||
Avalara's support documents: `About AvaTax
|
||||
<https://community.avalara.com/support/s/document-item?language=en_US&bundleId=dqa1657870670369_dqa1657870670369&topicId=About_AvaTax.html&_LANG=enus>`_
|
||||
|
||||
Set up on AvaTax
|
||||
================
|
||||
|
||||
To use *AvaTax*, an account with Avalara is required for the setup. If one has not been set up yet,
|
||||
connect with Avalara to purchase a license: `Avalara: Let's Talk
|
||||
<https://www.avalara.com/us/en/get-started.html>`_.
|
||||
|
||||
.. tip::
|
||||
Upon account setup, take note of the *AvaTax* :guilabel:`Account ID`. This will be needed in the
|
||||
:ref:`Odoo setup <avatax/credentials>`. In Odoo, this number is the :guilabel:`API ID`.
|
||||
|
||||
Then, `create a basic company profile
|
||||
<https://community.avalara.com/support/s/document-item?bundleId=dqa1657870670369_dqa1657870670369&topicId=Create_a_Basic_company_profile.html&_LANG=enus>`_.
|
||||
|
||||
Create basic company profile
|
||||
----------------------------
|
||||
|
||||
Collect essential business details for the next step: locations where tax is collected,
|
||||
products/services sold (and their sales locations), and customer tax exemptions, if applicable.
|
||||
Follow the Avalara documentation for creating a basic company profile:
|
||||
|
||||
#. `Add company information
|
||||
<https://community.avalara.com/support/s/document-item?bundleId=dqa1657870670369_dqa1657870670369&topicId=Add_your_company_information.html&_LANG=enus>`_.
|
||||
#. `Tell us where the company collects and pays tax
|
||||
<https://community.avalara.com/support/s/document-item?bundleId=dqa1657870670369_dqa1657870670369&topicId=Tell_us_where_you_collect_and_pay_tax.html&_LANG=enus>`_.
|
||||
#. `Verify jurisdictions and activate the company
|
||||
<https://community.avalara.com/support/s/document-item?bundleId=dqa1657870670369_dqa1657870670369&topicId=Verify_your_jurisdictions_and_activate_your_company.html&_LANG=enus>`_.
|
||||
#. `Add other company locations for location-based filing
|
||||
<https://community.avalara.com/support/s/document-item?bundleId=dqa1657870670369_dqa1657870670369&topicId=Add_other_company_locations_for_location-based_filing.html&_LANG=enus>`_.
|
||||
#. `Add a marketplace to the company profile
|
||||
<https://community.avalara.com/support/s/document-item?bundleId=dqa1657870670369_dqa1657870670369&topicId=Add_marketplace_transactions_to_your_company_profile.html&_LANG=enus>`_.
|
||||
|
||||
.. _avatax/create_avalara_credentials:
|
||||
|
||||
Connect to AvaTax
|
||||
-----------------
|
||||
|
||||
After creating the basic company profile in Avalara, connect to *AvaTax*. This step links Odoo and
|
||||
*AvaTax* bidirectionally.
|
||||
|
||||
Navigate to either Avalara's `sandbox <https://sandbox.admin.avalara.com/>`_ or `production
|
||||
<https://admin.avalara.com/>`_ environment. This will depend on which type of Avalara account the
|
||||
company would like to integrate.
|
||||
|
||||
.. seealso::
|
||||
`Sandbox vs production environments in Avalara
|
||||
<https://knowledge.avalara.com/bundle/fzc1692293626742/page/sandbox-vs-production.html>`_.
|
||||
|
||||
Log in to create the :guilabel:`License Key`. Go to :menuselection:`Settings --> License and API
|
||||
Keys`. Click :guilabel:`Generate License Key`.
|
||||
|
||||
.. note::
|
||||
A warning appears stating: `If your business app is connected to Avalara solutions, the
|
||||
connection will be broken until you update the app with the new license key. This action cannot
|
||||
be undone.`
|
||||
|
||||
Generating a new license key breaks the connection with existing business apps using the *AvaTax*
|
||||
integration. Make sure to update these apps with the new license key.
|
||||
|
||||
If this will be the first :abbr:`API (application programming interface)` integration being made
|
||||
with *AvaTax* and Odoo, then click :guilabel:`Generate license key`.
|
||||
|
||||
If this is an additional license key, ensure the previous connection can be broken. There is
|
||||
**only** one license key associated with each of the Avalara sandbox and production accounts.
|
||||
|
||||
.. important::
|
||||
Copy this key to a safe place. It is **strongly encouraged** to backup the license key for future
|
||||
reference. This key cannot be retrieved after leaving this screen.
|
||||
|
||||
Odoo configuration
|
||||
==================
|
||||
|
||||
Before using *AvaTax*, there are some additional configurations in Odoo to ensure tax calculations
|
||||
are made accurately.
|
||||
|
||||
Verify that the Odoo database contains necessary data. The country initially set up in the database
|
||||
determines the fiscal position, and aids *AvaTax* in calculating accurate tax rates.
|
||||
|
||||
.. _avatax/fiscal_country:
|
||||
|
||||
Fiscal country
|
||||
--------------
|
||||
|
||||
To set the :guilabel:`Fiscal Country`, navigate to :menuselection:`Accounting app --> Configuration
|
||||
--> Settings`.
|
||||
|
||||
.. seealso::
|
||||
:doc:`../../fiscal_localizations`
|
||||
|
||||
Under the :guilabel:`Taxes` section, set the :guilabel:`Fiscal Country` feature to :guilabel:`United
|
||||
States` or :guilabel:`Canada`. Then, click :guilabel:`Save`.
|
||||
|
||||
Company settings
|
||||
----------------
|
||||
|
||||
All companies operating under the Odoo database should have a full and complete address listed in
|
||||
the settings. Navigate to the :menuselection:`Settings app`, and under the :guilabel:`Companies`
|
||||
section, ensure there is only one company operating the Odoo database. Click :guilabel:`Update Info`
|
||||
to open a separate page to update company details.
|
||||
|
||||
If there are multiple companies operating in the database, click :guilabel:`Manage Companies` to
|
||||
load a list of companies to select from. Update company information by clicking into the specific
|
||||
company.
|
||||
|
||||
Database administrators should ensure that the :guilabel:`Street...`, :guilabel:`Street2...`,
|
||||
:guilabel:`City`, :guilabel:`State`, :guilabel:`ZIP`, and :guilabel:`Country` are all updated for
|
||||
the companies.
|
||||
|
||||
This ensures accurate tax calculations and smooth end-of-year accounting operations.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`../../../general/companies`
|
||||
- :doc:`../get_started`
|
||||
|
||||
Module installation
|
||||
-------------------
|
||||
|
||||
Next, ensure that the Odoo *AvaTax* module is installed. To do so, navigate to the
|
||||
:menuselection:`Apps application`. In the :guilabel:`Search...` bar, type in `avatax`, and press
|
||||
:kbd:`Enter`. The following results populate:
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: 25 25 50
|
||||
|
||||
* - Name
|
||||
- Technical name
|
||||
- Description
|
||||
* - :guilabel:`Avatax`
|
||||
- `account_avatax`
|
||||
- Default *AvaTax* module. This module adds the base *AvaTax* features for tax calculation.
|
||||
* - :guilabel:`Avatax for SO`
|
||||
- `account_avatax_sale`
|
||||
- Includes the information needed for tax calculation on sales orders in Odoo.
|
||||
* - :guilabel:`Avatax for Subscriptions`
|
||||
- `account_avatax_sale_subscription`
|
||||
- This module includes the features required for tax calculation on subscriptions in Odoo.
|
||||
* - :guilabel:`Account Avatax - Ecommerce`
|
||||
- `website_sale_account_avatax`
|
||||
- Includes tax calculation features for the checkout process on Odoo eCommerce.
|
||||
* - :guilabel:`Account AvaTax - Ecommerce - Delivery`
|
||||
- `website_sale_delivery_avatax`
|
||||
- Includes tax calculation features for the delivery process on Odoo eCommerce.
|
||||
|
||||
Click the :guilabel:`Install` button on the module labeled :guilabel:`Avatax`: `account_avatax`.
|
||||
Doing so installs the following modules:
|
||||
|
||||
- :guilabel:`Avatax`: `account_avatax`
|
||||
- :guilabel:`Avatax for SO`: `account_avatax_sale`
|
||||
- :guilabel:`Account Avatax - Ecommerce`: `website_sale_account_avatax`
|
||||
|
||||
Should *AvaTax* be needed for Odoo *Subscriptions*, or for delivery tax in Odoo *eCommerce*, then
|
||||
install those modules individually by clicking on :guilabel:`Install`.
|
||||
|
||||
.. _avatax/credentials:
|
||||
|
||||
Credential configuration
|
||||
========================
|
||||
Odoo AvaTax settings
|
||||
--------------------
|
||||
|
||||
To integrate Avatax with Odoo, go to :menuselection:`Accounting --> Configuration --> Settings -->
|
||||
Taxes` and add your Avatax credentials in the :guilabel:`Avatax` section.
|
||||
|
||||
.. tip::
|
||||
If you do not yet have credentials, click on :guilabel:`How to Get Credentials`.
|
||||
To integrate the *AvaTax* :abbr:`API (application programming interface)` with Odoo, go to
|
||||
:menuselection:`Accounting app --> Configuration --> Settings` section. The :guilabel:`AvaTax`
|
||||
fields in the :guilabel:`Taxes` section is where the *AvaTax* configurations are made and the
|
||||
credentials are entered in.
|
||||
|
||||
.. image:: avatax/avatax-configuration-settings.png
|
||||
:align: center
|
||||
:alt: Configure Avatax settings
|
||||
:alt: Configure AvaTax settings
|
||||
|
||||
.. _avatax/tax-mapping:
|
||||
Prerequisites
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
First, select the :guilabel:`Environment` in which the company wishes to use *AvaTax* in. It can
|
||||
either be :guilabel:`Sandbox` or :guilabel:`Production`.
|
||||
|
||||
.. seealso::
|
||||
For help determining which *AvaTax* environment to use (either :guilabel:`Production` or
|
||||
:guilabel:`Sandbox`), visit: `Sandbox vs Production environments
|
||||
<https://knowledge.avalara.com/bundle/fzc1692293626742/page/sandbox-vs-production.html>`_.
|
||||
|
||||
Credentials
|
||||
~~~~~~~~~~~
|
||||
|
||||
Now, the credentials can be entered in. The *AvaTax* :guilabel:`Account ID` should be entered in the
|
||||
:guilabel:`API ID` field, and the :guilabel:`License Key` should be entered in the :guilabel:`API
|
||||
Key` field.
|
||||
|
||||
.. important::
|
||||
The :guilabel:`Account ID` can be found by logging into the *AvaTax* portal (`sandbox
|
||||
<https://sandbox.admin.avalara.com/>`_ or `production <https://admin.avalara.com/>`_). In the
|
||||
upper-right corner, click on the initials of the user and :guilabel:`Account`. The
|
||||
:guilabel:`Account ID` is listed first.
|
||||
|
||||
To access the :guilabel:`License Key` see this documentation:
|
||||
:ref:`avatax/create_avalara_credentials`.
|
||||
|
||||
For the :guilabel:`Company Code` field, enter the Avalara company code for the company being
|
||||
configured. Avalara interprets this as `DEFAULT`, if it is not set. The :guilabel:`Company Code` can
|
||||
be accessed in the Avalara management portal.
|
||||
|
||||
First, log into the *AvaTax* portal (`sandbox <https://sandbox.admin.avalara.com/>`_ or `production
|
||||
<https://admin.avalara.com/>`_). Then, navigate to :menuselection:`Settings --> Manage Companies`.
|
||||
The :guilabel:`Company Code` value is located in the row of the :guilabel:`Company` in the
|
||||
:guilabel:`Company Code` column.
|
||||
|
||||
.. image:: avatax/company-code.png
|
||||
:align: center
|
||||
:alt: AvaTax company code highlighted on the company details page.
|
||||
|
||||
Transaction options
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
There are two transactional settings in the Odoo *AvaTax* settings that can be configured:
|
||||
:guilabel:`Use UPC` and :guilabel:`Commit Transactions`.
|
||||
|
||||
If the checkbox next to :guilabel:`Use UPC` is ticked, the transactions will use Universal Product
|
||||
Codes (UPC), instead of custom defined codes in Avalara. Consult a certified public accountant (CPA)
|
||||
for specific guidance.
|
||||
|
||||
Should the :guilabel:`Commit Transactions` checkbox be ticked, then, the transactions in the Odoo
|
||||
database will be committed for reporting in *AvaTax*.
|
||||
|
||||
Address validation
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The *Address Validation* feature ensures that the most up-to-date address by postal standards is set
|
||||
on a contact in Odoo. This is important to provide accurate tax calculations for customers.
|
||||
|
||||
.. important::
|
||||
The :guilabel:`Address Validation` feature only works with partners/customers in North America.
|
||||
|
||||
Additionally, tick the checkbox next to the :guilabel:`Address validation` field.
|
||||
|
||||
.. important::
|
||||
For accurate tax calculations, it is best practice to enter a complete address for the contacts
|
||||
saved in the database. However, *AvaTax* can still function by implementing a best effort attempt
|
||||
using only the :guilabel:`Country`, :guilabel:`State`, and :guilabel:`Zip code`. These are the
|
||||
three minimum required fields.
|
||||
|
||||
:guilabel:`Save` the settings to implement the configuration.
|
||||
|
||||
.. tip::
|
||||
Manually :guilabel:`Validate` the address by navigating to the :menuselection:`Contacts app`, and
|
||||
selecting a contact. Now that the *AvaTax* module has been configured on the database, a
|
||||
:guilabel:`Validate` button appears directly below the :guilabel:`Address`.
|
||||
|
||||
Click :guilabel:`Validate`, and a pop-up window appears with a :guilabel:`Validated Address` and
|
||||
:guilabel:`Original Address` listed. If the :guilabel:`Validated Address` is the correct mailing
|
||||
address for tax purposes, click :guilabel:`Save Validated`.
|
||||
|
||||
.. image:: avatax/validate-address.png
|
||||
:align: center
|
||||
:alt: Validate address pop-up window in Odoo with "Save Validated" button and "Validated
|
||||
Address" highlighted.
|
||||
|
||||
.. warning::
|
||||
All previously-entered addresses for contacts in the Odoo database will need to be validated
|
||||
using the manually validate process outlined above. Addresses are not automatically validated if
|
||||
they were entered previously. This only occurs upon tax calculation.
|
||||
|
||||
Test connection
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
After entering all the above information into the *AvaTax* setup on Odoo, click :guilabel:`Test
|
||||
connection`. This ensures the :guilabel:`API ID` and :guilabel:`API KEY` are correct, and a
|
||||
connection is made between Odoo and the *AvaTax* application programming interface (API).
|
||||
|
||||
Sync parameters
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
Upon finishing the configuration and settings of the *AvaTax* section, click the :guilabel:`Sync
|
||||
Parameters` button. This action synchronizes the exemption codes from *AvaTax*.
|
||||
|
||||
.. _avatax/fiscal_positions:
|
||||
|
||||
Fiscal position
|
||||
---------------
|
||||
|
||||
Next, navigate to :menuselection:`Accounting app --> Configuration --> Accounting: Fiscal
|
||||
Positions`. A :guilabel:`Fiscal Position` is listed named, :guilabel:`Automatic Tax Mapping
|
||||
(AvaTax)`. Click it to open *AvaTax's* fiscal position configuration page.
|
||||
|
||||
Here, ensure that the :guilabel:`Use AvaTax API` checkbox is ticked.
|
||||
|
||||
Optionally, tick the checkbox next to the field labeled: :guilabel:`Detect Automatically`. Should
|
||||
this option be ticked, then, Odoo will automatically apply this :guilabel:`Fiscal Position` for
|
||||
transactions in Odoo.
|
||||
|
||||
Enabling :guilabel:`Detect Automatically` also makes specific parameters, such as :guilabel:`VAT
|
||||
required`, :guilabel:`Foreign Tax ID`, :guilabel:`Country Group`, :guilabel:`Country`,
|
||||
:guilabel:`Federal States`, or :guilabel:`Zip Range` appear. Filling these parameters filters the
|
||||
:guilabel:`Fiscal Position` usage. Leaving them blank ensures all calculations are made using this
|
||||
:guilabel:`Fiscal Position`.
|
||||
|
||||
.. warning::
|
||||
Should the :guilabel:`Detect Automatically` checkbox not be ticked, each customer will need to
|
||||
have the :guilabel:`Fiscal Position` set on their :guilabel:`Sales and Purchase` tab of the
|
||||
contact record. To do so, navigate to :menuselection:`Sales app --> Order --> Customers`, or
|
||||
:menuselection:`Contacts app --> Contacts`. Then, select a customer or contact to set the fiscal
|
||||
position on.
|
||||
|
||||
Navigate to the :guilabel:`Sales and Purchase` tab, and down to the section labeled,
|
||||
:guilabel:`Fiscal Position`. Set the :guilabel:`Fiscal Position` field to the fiscal position
|
||||
for the customer.
|
||||
|
||||
.. seealso::
|
||||
:doc:`fiscal_positions`
|
||||
|
||||
AvaTax accounts
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
Upon selecting the checkbox option for :guilabel:`Use AvaTax API` a new :guilabel:`AvaTax` tab
|
||||
appears. Click into this tab to reveal two different settings.
|
||||
|
||||
The first setting is the :guilabel:`AvaTax Invoice Account`, while the second is, :guilabel:`AvaTax
|
||||
Refund Account`. Ensure both accounts are set for smooth end-of-year record keeping. Consult a
|
||||
certified public accountant (CPA) for specific guidance on setting both accounts.
|
||||
|
||||
Click :guilabel:`Save` to implement the changes.
|
||||
|
||||
Tax mapping
|
||||
===========
|
||||
-----------
|
||||
|
||||
The Avatax integration is available on Sale Orders and Invoices with the included Avatax fiscal
|
||||
The *AvaTax* integration is available on sale orders and invoices with the included *AvaTax* fiscal
|
||||
position.
|
||||
|
||||
Product category mapping
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Before using the integration, specify an :guilabel:`Avatax Category` on the product categories.
|
||||
Navigate to :menuselection:`Inventory app --> Configuration --> Product Categories`. Select the
|
||||
product category to add the :guilabel:`AvaTax Category` to. In the :guilabel:`AvaTax Category`
|
||||
field, select a category from the drop-down menu, or :guilabel:`Search More...` to open the complete
|
||||
list of options.
|
||||
|
||||
.. image:: avatax/avatax-category.png
|
||||
:align: center
|
||||
:alt: Specify Avatax Category on products
|
||||
:alt: Specify AvaTax Category on products.
|
||||
|
||||
Avatax Categories may be overridden or set on individual products as well.
|
||||
Product mapping
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
*AvaTax* Categories may be set on individual products, as well. To set the :guilabel:`Avatax
|
||||
Category` navigate to :menuselection:`Inventory app --> Products --> Products`. Select the product
|
||||
to add the :guilabel:`Avatax Category` to. Under the :guilabel:`General Information` tab, on the
|
||||
far-right, is a selector field labeled: :guilabel:`Avatax Category`. Finally, click the drop-down
|
||||
menu, and select a category, or :guilabel:`Search More...` to find one that is not listed.
|
||||
|
||||
.. note::
|
||||
If both the product, and its category, have an :guilabel:`AvaTax Category` set, the product's
|
||||
:guilabel:`AvaTax Category` takes precedence.
|
||||
|
||||
.. image:: avatax/override-avatax-product-category.png
|
||||
:align: center
|
||||
:alt: Override product categories as needed
|
||||
:alt: Override product categories as needed.
|
||||
|
||||
.. _avatax/address-mapping:
|
||||
|
||||
Address validation
|
||||
==================
|
||||
|
||||
Manually validate customer addresses by clicking the :guilabel:`Validate address` link in the
|
||||
customer form view.
|
||||
|
||||
.. image:: avatax/validate-customer-address.png
|
||||
:align: center
|
||||
:alt: Validate customer addresses
|
||||
|
||||
If preferred, choose to keep the newly validated address or the original address in the wizard that
|
||||
pops up.
|
||||
|
||||
.. image:: avatax/choose-customer-address.png
|
||||
:align: center
|
||||
:alt: Address validation wizard
|
||||
|
||||
.. _avatax/tax-calculation:
|
||||
|
||||
Tax calculation
|
||||
===============
|
||||
|
||||
Automatically calculate taxes on Odoo quotations and invoices with Avatax by confirming the
|
||||
documents. Alternatively, calculate the taxes manually by clicking the :guilabel:`Compute taxes
|
||||
using Avatax` button while these documents are in draft mode.
|
||||
|
||||
Use the :guilabel:`Avalara Code` field that's available on customers, quotations, and invoices to
|
||||
cross-reference data in Odoo and Avatax.
|
||||
.. important::
|
||||
Mapping an :guilabel:`AvaTax Category` on either the *Product* or *Product Category* should be
|
||||
completed for every *Product* or *Product Category*, depending the route that is chosen.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`fiscal_positions`
|
||||
- :doc:`avatax/avatax_use`
|
||||
- :doc:`avatax/avalara_portal`
|
||||
- `US Tax Compliance: Avatax elearning video
|
||||
<https://www.odoo.com/slides/slide/us-tax-compliance-avatax-2858?fullscreen=1>`_
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
avatax/avatax_use
|
||||
avatax/avalara_portal
|
||||
|
||||
@@ -0,0 +1,259 @@
|
||||
|
||||
.. _avatax/portal:
|
||||
|
||||
=======================
|
||||
Avalara (Avatax) portal
|
||||
=======================
|
||||
|
||||
Avalara's (*AvaTax*) management console offers account management options including: viewing/editing
|
||||
the transactions sent from Odoo to *AvaTax*, details on how the taxes are calculated, tax reporting,
|
||||
tax exemption management, and tax return resources.
|
||||
|
||||
.. tip::
|
||||
Avalara is the software developer of the tax software, *AvaTax*.
|
||||
|
||||
To access the console, first, navigate to either Avalara's `sandbox
|
||||
<https://sandbox.admin.avalara.com/>`_ or `production <https://admin.avalara.com/>`_ environment.
|
||||
This will depend on which type of account was set in the :doc:`integration <../avatax>`. Log in to
|
||||
the management console.
|
||||
|
||||
.. image:: avalara_portal/avalara-portal.png
|
||||
:align: center
|
||||
:alt: Avalara dashboard after logging into management portal.
|
||||
|
||||
.. seealso::
|
||||
For more information see Avalara's documentation: `Activate your Communications Customer Portal
|
||||
account
|
||||
<https://community.avalara.com/support/s/document-item?language=en_US&bundleId=qvv1656594440497&topicId=Activate_your_Communications_Customer_Portal_account.html&_LANG=enus>`_.
|
||||
|
||||
.. _avalara/portal-transactions:
|
||||
|
||||
Transactions
|
||||
============
|
||||
|
||||
To access transactions, click in the :guilabel:`Transactions` link on the main dashboard upon
|
||||
logging into the :ref:`avatax/portal`. To manually access the *Transactions* page, while logged into
|
||||
the Avalara console, navigate to :menuselection:`Transactions --> Transactions`.
|
||||
|
||||
.. image:: avalara_portal/avalara-transactions.png
|
||||
:align: center
|
||||
:alt: Avalara portal with the transactions shortcut highlighted.
|
||||
|
||||
Edit transaction
|
||||
----------------
|
||||
|
||||
Click into a transaction to reveal more details about the transaction. These details include
|
||||
sections on :guilabel:`Invoice detail`, :guilabel:`Additional info`, and :guilabel:`Customer info`.
|
||||
Click :icon:`fa-pencil` :guilabel:`Edit document details` to make changes to the transaction.
|
||||
|
||||
A :guilabel:`Discount` can be added to adjust the invoice. This is especially useful in cases where
|
||||
the transaction has already synced with Avalara / *AvaTax*, and changes need to be made afterward.
|
||||
|
||||
.. _avalara/portal-filter:
|
||||
|
||||
Filter
|
||||
------
|
||||
|
||||
Filter transactions on the :guilabel:`Transactions` page, by setting the :guilabel:`From` and
|
||||
:guilabel:`To` fields, and configuring other fields to filter by, including:
|
||||
|
||||
- :guilabel:`Document Status`: any of the following options, :guilabel:`All`, :guilabel:`Voided`,
|
||||
:guilabel:`Committed`, :guilabel:`Uncommitted`, or :guilabel:`Locked`.
|
||||
- :guilabel:`Document Code`: any of the following options, :guilabel:`Exactly match`,
|
||||
:guilabel:`Starts with`, or :guilabel:`Contains`.
|
||||
- :guilabel:`Customer/Vendor Code`: the customer/vendor code in Odoo (e.g. `Contact18`).
|
||||
- :guilabel:`Country`: the country this tax was calculated in; this is a text field.
|
||||
- :guilabel:`Region`: the region of the country, which varies based on the :guilabel:`Country`
|
||||
selection.
|
||||
|
||||
Click :icon:`fa-plus` :guilabel:`Filters` to access the following filter conditions:
|
||||
|
||||
- :guilabel:`Document Type`: any of the following selections, :guilabel:`All`, :guilabel:`Sales
|
||||
Invoice`, :guilabel:`Purchase Invoice`, :guilabel:`Return Invoice`, :guilabel:`Inventory Transfer
|
||||
Inbound Invoice`, :guilabel:`Inventory Transfer Outbound Invoice`, or :guilabel:`Customs
|
||||
Invoice`.
|
||||
- :guilabel:`Import ID`: represents the import ID of the document.
|
||||
|
||||
Sort by
|
||||
-------
|
||||
|
||||
On the :guilabel:`Transactions` page, transactions will be listed below, according to the set
|
||||
:ref:`avalara/portal-filter`, located in the top half of the page. The following columns are
|
||||
available by default, to sort by ascending or descending order:
|
||||
|
||||
- :guilabel:`Doc Code`: either of the following options, :guilabel:`Exactly match`,
|
||||
:guilabel:`Starts with`, or :guilabel:`Contains`.
|
||||
- :guilabel:`Doc Status`: either of the following options, :guilabel:`All`, :guilabel:`Voided`,
|
||||
:guilabel:`Committed`, :guilabel:`Uncommitted`, or :guilabel:`Locked`.
|
||||
- :guilabel:`Cust/Vendor Code` : this is the customer/vendor code in Odoo (e.g. Contact18).
|
||||
- :guilabel:`Region`: this is the region of the country, this will vary based on the
|
||||
:guilabel:`Country` selection.
|
||||
- :guilabel:`Amount`: the numeric amount of the total amount on the Odoo document.
|
||||
- :guilabel:`Tax`: the numeric amount of the tax applied to the total.
|
||||
|
||||
.. image:: avalara_portal/transactions.png
|
||||
:align: center
|
||||
:alt: Transactions page on the Avalara portal with the filter and sort-by options highlighted.
|
||||
|
||||
Customize columns
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
Additional columns can be added by clicking the :icon:`fa-cog` :guilabel:`Customize columns`. On the
|
||||
resulting popover window, click the drop-down menu for the :guilabel:`column` that should be
|
||||
changed.
|
||||
|
||||
The following columns can be added for additional transactional information:
|
||||
|
||||
- :guilabel:`AvaTax calculated`: the amount of tax calculated by *AvaTax*.
|
||||
- :guilabel:`Country`: the country this tax was calculated in; this is a text field.
|
||||
- :guilabel:`Cust/vendor code`: the customer/vendor code in Odoo (e.g. `Contact18`).
|
||||
- :guilabel:`Currency`: the standardized abbreviation for the currency the amount total is in.
|
||||
- :guilabel:`Doc date`: the document's date of creation.
|
||||
- :guilabel:`Doc status`: any of the following options, :guilabel:`All`, :guilabel:`Voided`,
|
||||
:guilabel:`Committed`, :guilabel:`Uncommitted`, or :guilabel:`Locked`.
|
||||
- :guilabel:`Doc type`: any of the following selections, :guilabel:`All`, :guilabel:`Sales
|
||||
Invoice`, :guilabel:`Purchase Invoice`, :guilabel:`Return Invoice`, :guilabel:`Inventory Transfer
|
||||
Inbound Invoice`, :guilabel:`Inventory Transfer Outbound Invoice`, or :guilabel:`Customs
|
||||
Invoice`.
|
||||
- :guilabel:`Import ID`: represents the import ID of the document.
|
||||
- :guilabel:`Last modified`: timestamp of the last time the document was modified.
|
||||
- :guilabel:`Location code`: the location code used to calculate the tax, based on the delivery
|
||||
address.
|
||||
- :guilabel:`PO number`: the purchase order number.
|
||||
- :guilabel:`Reference code`: the Odoo reference code (e.g. NV/2024/00003)
|
||||
- :guilabel:`Region`: the region of the country,which varies based on the :guilabel:`Country`
|
||||
selection.
|
||||
- :guilabel:`Salesperson code`: the numeric ID of the user assigned to the sales order in Odoo.
|
||||
- :guilabel:`Tax date`: the month/day/year of the tax calculation.
|
||||
- :guilabel:`Tax override type`: where an exemption would appear, should there be none, the field
|
||||
populates with :guilabel:`None`.
|
||||
|
||||
To add a new column click the :icon:`fa-plus` :guilabel:`Column`.
|
||||
|
||||
.. seealso::
|
||||
For more information on *AvaTax* transactions, refer to this Avalara documentation: `Transactions
|
||||
<https://community.avalara.com/support/s/document-item?language=en_US&bundleId=qvv1656594440497&topicId=transactions.html&_LANG=enus>`_.
|
||||
|
||||
Import-export
|
||||
-------------
|
||||
|
||||
While on the :ref:`avalara/portal-transactions`, click :icon:`fa-download` :guilabel:`Import
|
||||
transactions` or :icon:`fa-upload` :guilabel:`Export transactions` to import or export transactions.
|
||||
|
||||
Reports
|
||||
-------
|
||||
|
||||
To access reporting, navigate to the :menuselection:`Reports` link in the top menu of the Avalara
|
||||
management console. Next, select from one of the available reporting tabs: :guilabel:`Transactions
|
||||
reports`, :guilabel:`Liability & tax return reports`, or :guilabel:`Exemption reports`.
|
||||
|
||||
.. tip::
|
||||
Additionally, there is a :guilabel:`Favorites` tab and :guilabel:`Downloads` tab. The
|
||||
:guilabel:`Favorites` tab contains any favorited report configurations for the Avalara user. The
|
||||
:guilabel:`Downloads` tab contains a list view where the user can download the high-volume
|
||||
transaction reports created in the last 30 days.
|
||||
|
||||
Make a selection for the :guilabel:`Report Category`, and the :guilabel:`Report Name`, under the
|
||||
:guilabel:`Select a report` section.
|
||||
|
||||
Next, fill out the :guilabel:`Select report details` section. These options will vary based on the
|
||||
tab selected above.
|
||||
|
||||
Depending on the report size, the following two options are available in the section labeled,
|
||||
:guilabel:`Select the approximate number of transactions for your report`: :guilabel:`Create and
|
||||
download the report instantly` (for small reports) and :guilabel:`Create and download the report in
|
||||
the background` (for larger reports). Select one or the other depending on the volume of
|
||||
transactions in this report.
|
||||
|
||||
Finally, under the section labeled, :guilabel:`Report preview and export` make a selection of the
|
||||
file type to download. Either a :guilabel:`.PDF` or :guilabel:`.XLS` can be chosen. Alternatively,
|
||||
the file can be previewed by selecting the :guilabel:`Preview` option.
|
||||
|
||||
After making all the configurations, click :guilabel:`Create report` to download the report. Click
|
||||
:icon:`fa-star-o` :guilabel:`Make this report a favorite` to save the report configuration to the
|
||||
user's favorites.
|
||||
|
||||
After the report is created, click :icon:`fa-download` :guilabel:`Download` to download the file to
|
||||
the device.
|
||||
|
||||
.. tip::
|
||||
Select a pre-configured report from the :guilabel:`Frequently used reports` section of the
|
||||
reporting dashboard.
|
||||
|
||||
Access this list by clicking on the :guilabel:`Reports` option in the top menu of the Avalara
|
||||
management console, and scroll to the bottom of the page.
|
||||
|
||||
.. seealso::
|
||||
`See Avalara's documentation: Reports in AvaTax
|
||||
<https://community.avalara.com/support/s/document-item?language=en_US&bundleId=rjq1671176624730&topicId=Reports_in_AvaTax.html&_LANG=enus>`_.
|
||||
|
||||
Add more jurisdictions
|
||||
======================
|
||||
|
||||
Additional jurisdictions (tax locations) can be added in the Avalara management console. Navigate to
|
||||
either Avalara's `sandbox <https://sandbox.admin.avalara.com/>`_ or `production
|
||||
<https://admin.avalara.com/>`_ environment. This will depend on which type of account was set in the
|
||||
:doc:`integration <../avatax>`.
|
||||
|
||||
Next, navigate to :menuselection:`Settings --> Where you collect tax`. Choose between the three
|
||||
different tabs, depending on the business need. The first tab is :guilabel:`Sales and use tax`,
|
||||
where tax can be collected for the United States. Click the :icon:`fa-plus` :guilabel:`Add to where
|
||||
you collect sales and use tax` to add another location where the company collects sales and use tax.
|
||||
|
||||
The second option, is the :guilabel:`VAT/GST` tab where the :icon:`fa-plus` :guilabel:`Add a country
|
||||
or territory where you collect VAT/GST` can be selected to add another country or territory where
|
||||
the company collects VAT/GST.
|
||||
|
||||
Finally, on the far-right, is the :guilabel:`Customs duty` tab, where a country can be added where
|
||||
the company collects customs duty. Simply click on the :icon:`fa-plus` :guilabel:`Add a country
|
||||
where you calculate customs duty` icon below the tab.
|
||||
|
||||
.. image:: avalara_portal/where-you-collect-tax.png
|
||||
:align: center
|
||||
:alt: AvaTax management console, on the Where you collect tax page, with the add button and
|
||||
sales and use tax tab highlighted.
|
||||
|
||||
.. seealso::
|
||||
`See Avalara's documentation: Add local jurisdiction taxes
|
||||
<https://community.avalara.com/support/s/document-item?language=en_US&bundleId=bla1700809896571_bla1700809896571&topicId=nbw1698727575499.html&_LANG=enus>`_.
|
||||
|
||||
Tax exemption certificate
|
||||
=========================
|
||||
|
||||
Tax exemption certificates for customers can be added into the Avalara management console, so that
|
||||
*AvaTax* is aware of which customers may be exempt from paying certain taxes. To add an *exception
|
||||
certificate* navigate to :menuselection:`Exemptions --> Customer certificates`. From there, click on
|
||||
the :icon:`fa-plus` :guilabel:`Add a certificate` to configure an exemption.
|
||||
|
||||
.. warning::
|
||||
An Avalara subscription to Exemption Certificate Management (ECM) is required in order to attach
|
||||
certificate images, and to be ready for an audit. For more on subscribing to this add-on, visit
|
||||
`Avalara
|
||||
<https://community.avalara.com/support/s/document-item?language=en_US&bundleId=hff1682048150115_hff1682048150115&topicId=fol1682356576230.html&_LANG=enus>`_.
|
||||
|
||||
End-of-year operations
|
||||
======================
|
||||
|
||||
Avalara's services include tax return services, for when it is time to file taxes at the end of the
|
||||
year. To access Avalara's tax services log, into the `management portal
|
||||
<https://admin.avalara.com/>`_. Then, from the main dashboard, click :guilabel:`Returns`. Avalara
|
||||
will prompt the Avalara user to log in for security purposes, and redirect the user to the *Returns*
|
||||
portal.
|
||||
|
||||
.. image:: avalara_portal/avalara-returns.png
|
||||
:align: center
|
||||
:alt: Avalara portal with the returns shortcut highlighted.
|
||||
|
||||
Click :guilabel:`Get started` to begin the tax return process. For more information, refer to this
|
||||
Avalara documentation: `About Managed Returns
|
||||
<https://community.avalara.com/support/s/document-item?language=en_US&bundleId=hps1656397152776_hps1656397152776&topicId=Learn_about_Managed_Returns.html&_LANG=enus>`_.
|
||||
|
||||
.. tip::
|
||||
Alternatively, click on the :menuselection:`Returns` button in the top menu of the Avalara
|
||||
management console.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`../avatax`
|
||||
- :doc:`avatax_use`
|
||||
- `US Tax Compliance: Avatax elearning video
|
||||
<https://www.odoo.com/slides/slide/us-tax-compliance-avatax-2858?fullscreen=1>`_
|
||||
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 33 KiB |
@@ -0,0 +1,164 @@
|
||||
==========
|
||||
AvaTax use
|
||||
==========
|
||||
|
||||
AvaTax is a tax calculation software that can be integrated with Odoo in the United States and
|
||||
Canada. Once the :doc:`integration setup <../avatax>` is complete, the calculated tax is simple and
|
||||
automatic.
|
||||
|
||||
Tax calculation
|
||||
===============
|
||||
|
||||
Automatically calculate taxes on Odoo quotations and invoices with AvaTax by confirming the
|
||||
documents during the sales flow. Alternatively, calculate the taxes manually by clicking the
|
||||
:guilabel:`Compute taxes using Avatax` button while these documents are in draft mode.
|
||||
|
||||
.. tip::
|
||||
Clicking the :guilabel:`Compute taxes using Avatax` button recalculates taxes if any product
|
||||
lines are edited on the invoice.
|
||||
|
||||
.. image:: avatax_use/calculate-avatax.png
|
||||
:align: center
|
||||
:alt: Sales quotation with the confirm and compute taxes using AvaTax buttons highlighted.
|
||||
|
||||
The tax calculation is triggered during the following :ref:`automatic trigger
|
||||
<avatax/automatic-triggers>` and :ref:`manual trigger <avatax/manual-triggers>` circumstances.
|
||||
|
||||
.. _avatax/automatic-triggers:
|
||||
|
||||
Automatic triggers
|
||||
------------------
|
||||
|
||||
- When the sales rep sends the quote by email with :guilabel:`Send by email` button (pop-up).
|
||||
- When the customer views the online quote on the portal.
|
||||
- When a quote is confirmed and becomes a sales order.
|
||||
- When the customer views the invoice on the portal.
|
||||
- When a draft invoice is validated.
|
||||
- When the customer views the subscription in the portal.
|
||||
- When a subscription generates an invoice.
|
||||
- When the customer gets to the last screen of the eCommerce checkout.
|
||||
|
||||
.. _avatax/manual-triggers:
|
||||
|
||||
Manual triggers
|
||||
---------------
|
||||
|
||||
- :guilabel:`Compute taxes using Avatax` button at the bottom of the quote.
|
||||
- :guilabel:`Compute taxes using Avatax` button at the top of the invoice.
|
||||
|
||||
.. tip::
|
||||
Use the :guilabel:`Avalara Partner Code` field that is available on customer records, quotations,
|
||||
and invoices to cross-reference data in Odoo and AvaTax. This field is located under the
|
||||
:menuselection:`Other info` tab of the sales order or quotation in the :guilabel:`Sales` section.
|
||||
|
||||
On the customer record, navigate to *Contacts app* and select a contact. Then open the
|
||||
:guilabel:`Sales & Purchase` tab and the :guilabel:`Avalara Partner Code` under the
|
||||
:guilabel:`Sales` section.
|
||||
|
||||
.. important::
|
||||
The :guilabel:`Automatic Tax Mapping (AvaTax)` fiscal position is also applied on those Odoo
|
||||
documents, like subscriptions.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`../fiscal_positions`
|
||||
|
||||
AvaTax synchronization
|
||||
======================
|
||||
|
||||
Synchronization occurs with AvaTax, when the *invoice* is created in Odoo. This means the sales tax
|
||||
is recorded with Avalara (AvaTax software developer).
|
||||
|
||||
To do so, navigate to :menuselection:`Sales app --> Orders --> Quotations`. Select a quotation from
|
||||
the list.
|
||||
|
||||
After confirming a quotation and validating the delivery, click :guilabel:`Create Invoice`. Indicate
|
||||
whether it is a :guilabel:`Regular invoice`, :guilabel:`Down payment (percentage)`, or
|
||||
:guilabel:`Down payment (fixed amount)`.
|
||||
|
||||
Then click :guilabel:`Create and view invoice`. The recorded taxes can be seen in the
|
||||
:guilabel:`Journal Items` tab of the invoice. There will be different taxes depending on the
|
||||
location of the :guilabel:`Delivery Address`.
|
||||
|
||||
.. image:: avatax_use/journal-items.png
|
||||
:align: center
|
||||
:alt: Journal items highlighted on a invoice in Odoo.
|
||||
|
||||
Finally, press the :guilabel:`Confirm` button to complete the invoice and synchronize with the
|
||||
AvaTax portal.
|
||||
|
||||
.. warning::
|
||||
An invoice cannot be :guilabel:`Reset to draft` because this causes de-synchronization with the
|
||||
AvaTax Portal. Instead, click :guilabel:`Add credit note` and state: `Sync with AvaTax Portal`.
|
||||
See this documentation: :doc:`../../../accounting/customer_invoices/credit_notes`.
|
||||
|
||||
Fixed price discounts
|
||||
=====================
|
||||
|
||||
Add a fixed price discount to a valuable customer by click :guilabel:`Add a line` on the customer's
|
||||
invoice. Add the product discount and set the :guilabel:`Price` to either a positive or negative
|
||||
value. To recalculate the taxes, click :guilabel:`Compute taxes using Avatax`.
|
||||
|
||||
.. tip::
|
||||
Tax calculation can even be done on negative subtotals and credit notes.
|
||||
|
||||
Logging
|
||||
=======
|
||||
|
||||
It is possible to log Avalara/*AvaTax* actions in Odoo for further analysis, or verification of
|
||||
functionality. Logging is accessible through the *AvaTax* settings.
|
||||
|
||||
To start logging *AvaTax* actions, first, navigate to the :menuselection:`Accounting app -->
|
||||
Configuration --> Settings`.
|
||||
|
||||
Then, in the :guilabel:`Taxes` section, under the :guilabel:`AvaTax` settings, click
|
||||
:guilabel:`Start logging for 30 minutes`.
|
||||
|
||||
Upon starting the log process, Odoo will log all Avalara/*AvaTax* actions performed in the database.
|
||||
|
||||
To view the logs, click on :guilabel:`Show logs` to the right of the :guilabel:`Start logging for 30
|
||||
minutes`. This reveals a detailed list of Avalara/*AvaTax* actions. This list is sortable by the
|
||||
following columns:
|
||||
|
||||
- :guilabel:`Created on`: timestamp of the *AvaTax* calculation.
|
||||
- :guilabel:`Created by`: numeric value of the user in the database.
|
||||
- :guilabel:`Database name`: name of the database.
|
||||
- :guilabel:`Type`: two values can be chosen for this field, :guilabel:`Server` or
|
||||
:guilabel:`Client`.
|
||||
- :guilabel:`Name`: Avalara service name. In this case, it will be *AvaTax*.
|
||||
- :guilabel:`Level`: by default, this will be `INFO`.
|
||||
- :guilabel:`Path`: indicates the path taken to make the calculation.
|
||||
- :guilabel:`Line`: indicates the line the calculation is made on.
|
||||
- :guilabel:`Function`: indicates the calculation taken on the line.
|
||||
|
||||
.. image:: avatax_use/logging.png
|
||||
:align: center
|
||||
:alt: Avalara logging page with top row of list highlighted.
|
||||
|
||||
Click into the log line to reveal another field, called :guilabel:`Message`.
|
||||
|
||||
This field populates a raw transcription of the transaction, which involves the creation (or
|
||||
adjustment) of a sales invoice using the Avalara *AvaTax* API.
|
||||
|
||||
The transaction includes details, such as addresses for shipping from and to, line items describing
|
||||
the products or services, tax codes, tax amounts, and other relevant information.
|
||||
|
||||
The :guilabel:`Message` contains the calculated taxes for different jurisdictions and confirms the
|
||||
creation (or adjustment) of the transaction.
|
||||
|
||||
.. tip::
|
||||
Custom fields can be made using Odoo *Studio*. Click the :icon:`fa-ellipsis-v`
|
||||
:guilabel:`(ellipsis)` menu to the far-right of the header row. Then click :icon:`fa-plus`
|
||||
:guilabel:`Add custom field`. This action opens Odoo *Studio*.
|
||||
|
||||
.. important::
|
||||
Odoo *Studio* requires a *custom* pricing plan. Consult the database's customer success manager
|
||||
for more information on switching plans. Or to see if Odoo *Studio* is included in the database's
|
||||
current pricing plan. See this documentation: :doc:`../../../../studio`.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`../avatax`
|
||||
- :doc:`avalara_portal`
|
||||
- `US Tax Compliance: Avatax elearning video
|
||||
<https://www.odoo.com/slides/slide/us-tax-compliance-avatax-2858?fullscreen=1>`_
|
||||
- :doc:`../fiscal_positions`
|
||||
|
||||
|
After Width: | Height: | Size: 41 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 8.6 KiB |
|
Before Width: | Height: | Size: 13 KiB |
@@ -406,7 +406,7 @@ is generated for each POS order and added to its receipt. This allows the govern
|
||||
all revenue is declared.
|
||||
|
||||
.. warning::
|
||||
Only the FDM from **Boîtenoire.be** with the `FDM certificate number BMC01
|
||||
Only the FDM from **Boîtenoire.be** with the `FDM certificate number BMC04
|
||||
<https://www.systemedecaisseenregistreuse.be/fr/systemes-certifies#FDM%20certifiés>`_ is
|
||||
supported by Odoo. `Contact the manufacturer (GCV BMC) <https://www.boîtenoire.be/contact>`_ to
|
||||
order one.
|
||||
@@ -416,7 +416,7 @@ Configuration
|
||||
|
||||
Before setting up your database to work with an FDM, ensure you have the following hardware:
|
||||
|
||||
- a **Boîtenoire.be** (certificate number BMC01) FDM;
|
||||
- a **Boîtenoire.be** (certificate number BMC04) FDM;
|
||||
- an RS-232 serial null modem cable per FDM;
|
||||
- an RS-232 serial-to-USB adapter per FDM;
|
||||
- an :ref:`IoT Box <belgium/iotbox>` (one IoT box per FDM); and
|
||||
|
||||
@@ -743,6 +743,55 @@ If you claim a vendor bill, the status changes from :guilabel:`Draft` to :guilab
|
||||
automatically. Considering this as best practice, all the claimed documents should be canceled as
|
||||
they won't be valid for your accounting records.
|
||||
|
||||
Electronic purchase invoice
|
||||
---------------------------
|
||||
|
||||
The *electronic purchase invoice* is a feature included in the `l10n_cl_edi` module.
|
||||
|
||||
Once all configurations have been made for :ref:`electronic invoices <chile/electronic-invoice>`
|
||||
(e.g., uploading a valid company certificate, setting up master data, etc.), the electronic
|
||||
purchase invoices need their own :abbr:`CAFs (Folio Authorization Code)`. Please refer to the
|
||||
:ref:`CAF documentation <chile/caf-documentation>` to check the details on how to acquire the
|
||||
:abbr:`CAFs (Folio Authorization Code)` for electronic purchase invoices.
|
||||
|
||||
Electronic purchase invoices are useful when vendors are not obligated to expedite an electronic
|
||||
vendor bill for your purchase. Still, your obligations require a document to be sent to the
|
||||
:abbr:`SII (Servicio de Impuestos Internos)` as proof of purchase.
|
||||
|
||||
Configuration
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
To generate an electronic purchase invoice from a vendor bill, the bill must be created in a
|
||||
purchase journal with the *Use Documents* feature enabled. It is possible to modify an existing
|
||||
purchase journal or create a new one in the following process.
|
||||
|
||||
To modify the existing purchase journal, or create a new purchase journal, navigate to
|
||||
:menuselection:`Accounting --> Configuration --> Journals`. Then, click the :guilabel:`New` button,
|
||||
and fill in the following required information:
|
||||
|
||||
- :guilabel:`Type`: select :guilabel:`Purchase` from the drop-down menu for vendor bill journals.
|
||||
- :guilabel:`Use Documents`: check this field so the journal can generate electronic documents (in
|
||||
this case the electronic purchase invoice).
|
||||
|
||||
Generate an electronic purchase invoice
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
To generate this type of document, it is necessary to create a vendor bill in Odoo. To do so,
|
||||
navigate to :menuselection:`Accounting --> Vendors --> Bills`, and click the :guilabel:`New` button.
|
||||
|
||||
When all of the electronic purchase invoice information is filled, select the option :guilabel:`(46)
|
||||
Electronic Purchase Invoice` in the :guilabel:`Document Type` field:
|
||||
|
||||
After the vendor bill is posted:
|
||||
|
||||
- The :abbr:`DTE (Documentos Tributarios Electrónicos)` file (Electronic Tax Document) is
|
||||
automatically created and added to the chatter.
|
||||
- The :guilabel:`DTE SII Status` is set as :guilabel:`Pending to be sent`.
|
||||
|
||||
Odoo automatically updates the *DTE Status* every night using a scheduled action. To get a response
|
||||
from the :abbr:`SII (Servicio de Impuestos Internos)` immediately, click the :guilabel:`Send now to
|
||||
SII` button.
|
||||
|
||||
Delivery guide
|
||||
--------------
|
||||
|
||||
|
||||
@@ -66,6 +66,8 @@ localization:
|
||||
When you install a database from scratch selecting `Ecuador` as the country, Odoo automatically
|
||||
installs the base module :guilabel:`Ecuadorian - Accounting`.
|
||||
|
||||
.. _l10n_ec/configure-your-company:
|
||||
|
||||
Configure your company
|
||||
----------------------
|
||||
|
||||
@@ -586,3 +588,59 @@ includes the tax code within the parenthesis in order to report it to the SRI.
|
||||
.. image:: ecuador/104-form.png
|
||||
:align: center
|
||||
:alt: Report 104 form for Ecuador.
|
||||
|
||||
ATS report
|
||||
----------
|
||||
|
||||
:ref:`Install <general/install>` the *ATS Report* (`l10n_ec_reports_ats`) module to enable
|
||||
downloading the ATS report in XML format.
|
||||
|
||||
.. note::
|
||||
The Ecuadorian *ATS Report* module is dependent on the previous installation of the *Accounting*
|
||||
app and the *Ecuadorian EDI module*.
|
||||
|
||||
Configuration
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
To issue electronic documents, ensure your company is configured as explained in the
|
||||
:ref:`electronic invoice <l10n_ec/configure-your-company>` section.
|
||||
|
||||
In the :abbr:`ATS (Anexo Transaccional Simplificado)`, every document generated in Odoo (invoices,
|
||||
vendor bills, sales and purchases withholdings, credit notes, and debit notes) will be included.
|
||||
|
||||
Vendor bills
|
||||
************
|
||||
|
||||
When generating a vendor bill, it is necessary to register the authorization number from the
|
||||
invoice that the vendor generated for the purchase. To do so, go to :menuselection:`Accounting
|
||||
--> Vendors --> Bills` and select the bill. Then, enter the number from the vendor's invoice in the
|
||||
:guilabel:`Authorization Number` field.
|
||||
|
||||
Credit and debit notes
|
||||
**********************
|
||||
|
||||
When generating a credit note or debit note manually or through importation, it is necessary to link
|
||||
this note to the sales invoice that is being modified by it.
|
||||
|
||||
.. note::
|
||||
Remember to add all required information to the documents before downloading the :abbr:`ATS
|
||||
(Anexo Transaccional Simplificado)` file. For example, add the *Authorization Number* and the
|
||||
*SRI Payment Method* on documents, when needed.
|
||||
|
||||
XML generation
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
To generate the :abbr:`ATS (Anexo Transaccional Simplificado)` report, go to
|
||||
:menuselection:`Accounting --> Reports --> Tax Report` and choose a time period for the desired
|
||||
:abbr:`ATS (Anexo Transaccional Simplificado)` report, then click :guilabel:`ATS`.
|
||||
|
||||
The downloaded XML file is ready to be uploaded to *DIMM Formularios*.
|
||||
|
||||
.. image:: ecuador/ats-report.png
|
||||
:align: center
|
||||
:alt: ATS report download for Ecuador in Odoo Accounting.
|
||||
|
||||
.. note::
|
||||
When downloading the :abbr:`ATS (Anexo Transaccional Simplificado)` report, Odoo generates a
|
||||
warning pop-up alerting the user if a document(s) has missing or incorrect data. Nevertheless,
|
||||
the user can still download the XML file.
|
||||
|
||||
|
After Width: | Height: | Size: 15 KiB |
@@ -11,9 +11,9 @@ localization, such as a chart of accounts, taxes, and the BIR 2307 report. These
|
||||
template to get started with using Philippine accounting.
|
||||
|
||||
.. note::
|
||||
- When creating a new database and `Philippines` is selected as a country, the fiscal
|
||||
- When creating a new database and selecting the `Philippines` as a country, the fiscal
|
||||
localization module **Philippines - Accounting** is automatically installed.
|
||||
- If installing the module in an existing company, the **chart of accounts** and **taxes** will
|
||||
- If the module is installed in an existing company, the **chart of accounts** and **taxes** will
|
||||
*not* be replaced if there are already posted journal entries.
|
||||
- The BIR 2307 report is installed, but the withholding taxes may need to be manually created.
|
||||
|
||||
@@ -21,20 +21,21 @@ Chart of accounts and taxes
|
||||
---------------------------
|
||||
|
||||
A minimum configuration default chart of accounts is installed, and the following types of taxes are
|
||||
installed and also linked to the relevant account:
|
||||
installed and linked to the relevant account:
|
||||
|
||||
- VAT 12%
|
||||
- VAT Exempt
|
||||
- Withholding taxes
|
||||
|
||||
For the withholding taxes, there is an additional :guilabel:`Philippines ATC` field under the
|
||||
:guilabel:`Philippines` tab.
|
||||
For the withholding taxes (:menuselection:`Configuration --> Taxes`), there is an additional
|
||||
:guilabel:`Philippines ATC` field under the :guilabel:`Philippines` tab.
|
||||
|
||||
.. image:: philippines/philippines-atc-code.png
|
||||
:alt: Philippines ATC code field set on taxes.
|
||||
|
||||
Taxes' ATC codes are used for the BIR 2307 report. If a tax is created manually, its ATC code must
|
||||
be added.
|
||||
.. note::
|
||||
Taxes' ATC codes are used for the BIR 2307 report. If a tax is created manually, its ATC code
|
||||
must be added.
|
||||
|
||||
Contacts
|
||||
--------
|
||||
@@ -59,8 +60,9 @@ For individuals not belonging to a company, identify them by using the following
|
||||
BIR 2307 report
|
||||
===============
|
||||
|
||||
**BIR 2307** report data, also known as *Certificate of Creditable Tax Withheld at Source*,
|
||||
can be generated for purchase orders and vendor payments with the applicable withholding taxes.
|
||||
**BIR 2307** report data, also known as `Certificate of Creditable Tax Withheld at Source
|
||||
<https://www.bir.gov.ph/index.php/bir-forms/certificates.html>`_, can be generated for purchase
|
||||
orders and vendor payments with the applicable withholding taxes.
|
||||
|
||||
To generate a BIR 2307 report, select one or multiple vendor bills from the list view, and click
|
||||
:menuselection:`Action --> Download BIR 2307 XLS`.
|
||||
@@ -68,7 +70,8 @@ To generate a BIR 2307 report, select one or multiple vendor bills from the list
|
||||
.. image:: philippines/philippines-multi-bill.png
|
||||
:alt: Multiple vendor bills selected with action to "Download BIR 2307 XLS".
|
||||
|
||||
The same action can be performed on a vendor bill from the form view.
|
||||
.. tip::
|
||||
The same action can be performed on a vendor bill from the form view.
|
||||
|
||||
A pop-up appears to review the selection, then click on :guilabel:`Generate`.
|
||||
|
||||
@@ -78,18 +81,18 @@ A pop-up appears to review the selection, then click on :guilabel:`Generate`.
|
||||
This generates the `Form_2307.xls` file that lists all the vendor bill lines with the applicable
|
||||
withholding tax.
|
||||
|
||||
The same process above can also be done for a *single* vendor :doc:`payment
|
||||
<../accounting/payments>` if they were linked to one or more :doc:`vendor bills
|
||||
<../accounting/payments>` with applied withholding taxes.
|
||||
The process above can also be used for a *single* vendor :doc:`payment <../accounting/payments>` if
|
||||
it is linked to one or more :doc:`vendor bills <../accounting/payments>` with applied withholding
|
||||
taxes.
|
||||
|
||||
.. note::
|
||||
- If there is no withholding tax applied, then the XLS file will not generate records for those
|
||||
vendor bill lines.
|
||||
- If no withholding tax is applied, then the XLS file will not generate records for those vendor
|
||||
bill lines.
|
||||
- When grouping payments for multiple bills, Odoo splits the payments based on the contact. From
|
||||
a payment, clicking :menuselection:`Action --> Download BIR 2307 XLS`, generates a report that
|
||||
a payment, clicking :menuselection:`Action --> Download BIR 2307 XLS` generates a report that
|
||||
only includes vendor bills related to that contact.
|
||||
|
||||
.. important::
|
||||
Odoo cannot generate the BIR 2307 PDF report or DAT files directly.
|
||||
The generated `Form_2307.xls` file can be exported to an *external* tool to convert it to BIR DAT
|
||||
or PDF format.
|
||||
Odoo cannot generate the BIR 2307 PDF report or DAT files directly. The generated
|
||||
:file:`Form_2307.xls` file can be exported to an *external* tool to convert it to BIR DAT or PDF
|
||||
format.
|
||||
|
||||
@@ -96,6 +96,13 @@ Periodic submission to HMRC
|
||||
Import your obligations HMRC, filter on the period you want to submit, and send your tax report by
|
||||
clicking :guilabel:`Send to HMRC`.
|
||||
|
||||
.. tip::
|
||||
You can use dummy credentials to demo the HMRC flow. To do so, activate the
|
||||
:ref:`developer mode <developer-mode>` and go to :menuselection:`General Settings -->
|
||||
Technical --> System Parameters`. From here, search for `l10n_uk_reports.hmrc_mode` and change
|
||||
the value line to `demo`. You can get such credentials from the `HMRC Developer Hub
|
||||
<https://developer.service.hmrc.gov.uk/api-test-user>`_.
|
||||
|
||||
Periodic submission to HMRC for multi-company
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
||||
@@ -5,6 +5,10 @@ Stripe
|
||||
`Stripe <https://stripe.com/>`_ is a United States-based online payment solution provider allowing
|
||||
businesses to accept **credit cards** and other payment methods.
|
||||
|
||||
.. seealso::
|
||||
- `List of countries supported by Stripe <https://stripe.com/global>`_
|
||||
- `List of payment methods supported by Stripe <https://stripe.com/payments/payment-methods>`_
|
||||
|
||||
Create your Stripe account with Odoo
|
||||
====================================
|
||||
|
||||
|
||||
@@ -1,83 +1,232 @@
|
||||
=============
|
||||
Digest Emails
|
||||
Digest emails
|
||||
=============
|
||||
|
||||
**Digest Emails** are periodic snapshots sent to your organization via email that include high-level
|
||||
information about how your business is performing.
|
||||
*Digest Emails* are periodic snapshots sent via email to users in an organization that include
|
||||
high-level information about how the business is performing.
|
||||
|
||||
Navigate to Digest Emails by going to :menuselection:`Settings --> General Settings --> Statistics`,
|
||||
then activate the **Digest Emails** feature and click on save.
|
||||
To start sending digest emails, begin by navigating to :menuselection:`Settings app --> Statistics
|
||||
section`, activate the :guilabel:`Digest Emails` feature, and click :guilabel:`Save`.
|
||||
|
||||
.. image:: digest_emails/digest-email-settings.png
|
||||
:align: center
|
||||
:alt: Digest Emails section inside General Settings.
|
||||
|
||||
You can control a variety of settings for your Digest Emails, such as:
|
||||
A variety of settings can be configured for digest emails, such as:
|
||||
|
||||
- which KPIs are shared in the Digest
|
||||
- how often Digest Emails are sent
|
||||
- who in your organization receives Digest Emails
|
||||
- creating custom Digest Email templates
|
||||
- adding additional KPIs (Studio required)
|
||||
- Deciding which :abbr:`KPIs (key performance indicators)` are shared in the digest emails
|
||||
- Determining how often digest emails are sent
|
||||
- Choosing who in the organization receives digest emails
|
||||
- Creating custom digest email templates
|
||||
- Adding additional :abbr:`KPIs (key performance indicators)` (*Studio* app required)
|
||||
|
||||
.. note::
|
||||
By default, Digest Email is *enabled*, and *Your Odoo Periodic Digest* serves as the primary
|
||||
template, which includes all KPI measurements across your Odoo database and is sent daily to
|
||||
administrators.
|
||||
By default, the :guilabel:`Digest Email` feature is enabled. :guilabel:`Your Odoo Periodic
|
||||
Digest` serves as the primary template, which includes all :abbr:`KPI (key performance
|
||||
indicator)` measurements across the Odoo database, and is sent daily to administrators.
|
||||
|
||||
.. warning::
|
||||
When creating duplicates of databases that have sending capabilities (not testing-mode), the
|
||||
digest emails continue to send from the duplicate database, unless deactivated.
|
||||
|
||||
To deactivate the digest email, navigate to :menuselection:`Settings --> Statistics section`.
|
||||
Then, deactivate the :guilabel:`Digest Emails` feature, by un-ticking the checkbox, and clicking
|
||||
:guilabel:`Save`. See the section on :ref:`digest-emails/deactivate`.
|
||||
|
||||
.. _digest-emails/customize-digest:
|
||||
|
||||
Customize *Your Odoo Periodic Digest*
|
||||
=====================================
|
||||
Customize default digest email
|
||||
==============================
|
||||
|
||||
To customize the default Digest Email (*Your Odoo Periodic Digest*), go to :menuselection:`Settings
|
||||
--> General Settings --> Statistics --> Digest Email`, select *Your Odoo Periodic Digest* and click
|
||||
on the *external link* next to the dropdown selection.
|
||||
To customize the default digest email (*Your Odoo Periodic Digest*), go to :menuselection:`Settings
|
||||
app --> Statistics section --> Digest Email field`. Then, select :guilabel:`Your Odoo Periodic
|
||||
Digest`, and click on the :guilabel:`↗️ (External link)` icon, next to the drop-down menu selection.
|
||||
|
||||
A popup window appears and presents a variety of editable settings, which include:
|
||||
A pop-up window appears, and presents a variety of editable settings, which include:
|
||||
|
||||
- **Digest Title** - what you want your Digest Email to be called
|
||||
- **Periodicity** - control the regimen in how often Digest Emails are sent
|
||||
- **KPIs** - check/uncheck each calculated KPI that appears in Digest Emails
|
||||
- **Recipients** - add/remove users who receive your Digest Emails
|
||||
- **Custom** - add your own KPIs (Studio required)
|
||||
- :guilabel:`Digest Name`: the name of the digest email.
|
||||
- :guilabel:`Periodicity`: control how often digest emails are sent (:guilabel:`Daily`,
|
||||
:guilabel:`Weekly`, :guilabel:`Monthly`, or :guilabel:`Quarterly`).
|
||||
- :guilabel:`Next Send Date`: the date on which the digest email will be sent again.
|
||||
- :guilabel:`KPIs` tab: check/uncheck each calculated :abbr:`KPI (key performance indicator)` that
|
||||
appears in digest emails. A ticked box indicates an active :abbr:`KPI (key performance indicator)`
|
||||
in the digest email. See the section on :ref:`digest-emails/kpis`.
|
||||
- :guilabel:`Recipients` tab: add/remove users who receive the digest emails. See the section on
|
||||
:ref:`digest-emails/recipients`.
|
||||
|
||||
.. note::
|
||||
The :abbr:`KPIs (key performance indicators)` can be customized using Odoo *Studio*. Additional
|
||||
costs to the database subscription are incurred should *Studio* need to be installed. See this
|
||||
section on :ref:`digest-emails/custom-kpi`.
|
||||
|
||||
.. image:: digest_emails/periodic-digest.png
|
||||
:align: center
|
||||
:alt: Customize default Digest Email settings and custom KPIs.
|
||||
|
||||
.. _digest-emails/deactivate:
|
||||
|
||||
Deactivate digest email
|
||||
=======================
|
||||
|
||||
To manually deactivate an individual digest email, first navigate to :menuselection:`Settings app
|
||||
--> Statistics section`, and click :guilabel:`Configure Digest Emails`. Then, select the desired
|
||||
digest email from the list that should be deactivated.
|
||||
|
||||
Next, click :guilabel:`DEACTIVATE FOR EVERYONE` to deactivate the digest email for everyone, or
|
||||
:guilabel:`UNSUBSCRIBE ME` to remove the logged in user from the mailing list. These buttons are
|
||||
located in the top menu, just above the :guilabel:`Digest Name`.
|
||||
|
||||
Manually send digest email
|
||||
==========================
|
||||
|
||||
To manually send a digest email, first navigate to :menuselection:`Settings app --> Statistics
|
||||
section`, and click :guilabel:`Configure Digest Emails`. Then, select the desired digest email, and
|
||||
click :guilabel:`SEND NOW`. This button is located in the top menu, just above the :guilabel:`Digest
|
||||
Name`.
|
||||
|
||||
.. _digest-emails/kpis:
|
||||
|
||||
KPIs
|
||||
====
|
||||
|
||||
Pre-configured :abbr:`KPIs (key performance indicators)` can be added to the digest email from the
|
||||
:guilabel:`KPIs` tab of the digest email template form.
|
||||
|
||||
First, navigate to :menuselection:`Settings app --> Statistics section`, and click
|
||||
:guilabel:`Configure Digest Emails`.
|
||||
|
||||
Then, select the desired digest email, and open the :guilabel:`KPIs` tab.
|
||||
|
||||
To add a :abbr:`KPI (key performance indicator)` to the digest email, tick the checkbox next to the
|
||||
desired :abbr:`KPI (key performance indicator)`. After all :abbr:`KPIs (key performance indicators)`
|
||||
are added (or deselected), click :guilabel:`Save`.
|
||||
|
||||
The following :abbr:`KPIs (key performance indicators)` are available in the :guilabel:`KPIs` tab on
|
||||
a digest email template form out-of-box in Odoo:
|
||||
|
||||
.. image:: digest_emails/oob-kpis.png
|
||||
:align: right
|
||||
:alt: KPIs listed in the out-of-box digest email.
|
||||
|
||||
:guilabel:`General`
|
||||
- :guilabel:`Connected Users`
|
||||
- :guilabel:`Messages`
|
||||
|
||||
:guilabel:`Project`
|
||||
- :guilabel:`Open Tasks`
|
||||
|
||||
:guilabel:`Recruitment`
|
||||
- :guilabel:`Employees`
|
||||
|
||||
:guilabel:`CRM`
|
||||
- :guilabel:`New Leads/Opportunities`
|
||||
- :guilabel:`Opportunities Won`
|
||||
|
||||
:guilabel:`Sales`
|
||||
- :guilabel:`All Sales`
|
||||
- :guilabel:`eCommerce Sales`
|
||||
|
||||
:guilabel:`Point of Sale`
|
||||
- :guilabel:`POS Sales`
|
||||
|
||||
:guilabel:`Live Chat`
|
||||
- :guilabel:`% of Happiness`
|
||||
- :guilabel:`Conversations handled`
|
||||
- :guilabel:`Time to answer (sec)`
|
||||
|
||||
:guilabel:`Helpdesk`
|
||||
- :guilabel:`Tickets Closed`
|
||||
|
||||
:guilabel:`Invoicing`
|
||||
- :guilabel:`Revenue`
|
||||
- :guilabel:`Banks and Cash Moves`
|
||||
|
||||
.. _digest-emails/recipients:
|
||||
|
||||
Recipients
|
||||
==========
|
||||
|
||||
Digest email recipients are added from the :guilabel:`Recipients` tab of the digest email template
|
||||
form.
|
||||
|
||||
To add a recipient, navigate to :menuselection:`Settings app --> Statistics section`, and click
|
||||
:guilabel:`Configure Digest Emails`. Then, select the desired digest email, and open the
|
||||
:guilabel:`Recipients` tab.
|
||||
|
||||
To add a recipient, click :guilabel:`Add a line`, and an :guilabel:`Add Recipients` pop-up window
|
||||
appears, with all available users to add as recipients.
|
||||
|
||||
From the pop-up window, tick the checkbox next to the :guilabel:`Name` of the user(s), and click the
|
||||
:guilabel:`Select` button.
|
||||
|
||||
To remove a user as a recipient, click the :guilabel:`❌ (remove)` icon to the far-right of the user
|
||||
listed in the :guilabel:`Recipients` tab.
|
||||
|
||||
Click :guilabel:`Save` to implement the changes.
|
||||
|
||||
.. _digest-emails/custom-emails:
|
||||
|
||||
Custom digest emails
|
||||
Create digest emails
|
||||
====================
|
||||
|
||||
To do so, click on **Configure Digest Emails** and then **Create**.
|
||||
To create a new digest email, navigate to :menuselection:`Settings app --> Statistics section`, and
|
||||
click :guilabel:`Configure Digest Emails`. Then, click :guilabel:`Create` to create a new digest
|
||||
email.
|
||||
|
||||
From there, give your Digest Email a title, specify periodicity, and choose your desired KPIs and
|
||||
recipients fields as needed.
|
||||
A separate page, with a blank digest email template appears, and presents a variety of editable
|
||||
settings, including:
|
||||
|
||||
After you click **Save**, your new custom Digest Email is available as a selection in the **General
|
||||
Settings** dropdown menu.
|
||||
- :guilabel:`Digest Name`: the name of the digest email.
|
||||
- :guilabel:`Periodicity`: control how often digest emails are sent (:guilabel:`Daily`,
|
||||
:guilabel:`Weekly`, :guilabel:`Monthly`, or :guilabel:`Quarterly`).
|
||||
- :guilabel:`Next Send Date`: the date on which the digest email will be sent again.
|
||||
- :guilabel:`KPIs` tab: check/uncheck each calculated :abbr:`KPI (key performance indicator)` that
|
||||
appears in digest emails. A ticked box indicates an active :abbr:`KPI (key performance indicator)`
|
||||
in the digest email. See the section on :ref:`digest-emails/kpis`.
|
||||
- :guilabel:`Recipients` tab: add/remove users who receive the digest emails. See the section on
|
||||
:ref:`digest-emails/recipients`.
|
||||
|
||||
From there, give the digest email a :guilabel:`Digest Name`, specify :guilabel:`Periodicity`,
|
||||
choose the desired :abbr:`KPIs (key performance indicators)`, and add :guilabel:`Recipients`, as
|
||||
needed.
|
||||
|
||||
After clicking :guilabel:`Save`, the new custom digest email is available as a selection in the
|
||||
:guilabel:`Digest Email` field, located in the :menuselection:`Settings app --> Statistics section`.
|
||||
|
||||
.. _digest-emails/custom-kpi:
|
||||
|
||||
Custom KPIs with Studio
|
||||
-----------------------
|
||||
Custom KPIs with Odoo Studio
|
||||
============================
|
||||
|
||||
For either *Your Odoo Periodic Digest* or your own custom Digest Email, you can add your own KPIs
|
||||
by using Odoo Studio.
|
||||
The :abbr:`KPIs (key performance indicators)` on a digest email template form, in the
|
||||
:guilabel:`KPIs` tab, can be customized using Odoo *Studio*.
|
||||
|
||||
To begin, click the **Toggle Studio** icon or click the **Recipients** tab and then the ellipses
|
||||
:menuselection:`… icon --> Add Custom Field` to edit the template or add additional fields.
|
||||
.. warning::
|
||||
Additional costs to the database subscription are incurred, should Odoo *Studio* need to be
|
||||
installed.
|
||||
|
||||
In order to create additional fields, you must create two fields on the digest object:
|
||||
To begin, click the :guilabel:`🛠️ (tools)` icon in the top-right of the screen. This is the link to
|
||||
the Odoo *Studio* application.
|
||||
|
||||
#. create a boolean field called `kpi_myfield` and display it in the KPIs tab
|
||||
#. create a computed field called `kpi_myfield_value` that computes your customized KPI
|
||||
#. select your KPI(s) in the KPIs tab.
|
||||
In order to create additional fields, create two fields on the digest object:
|
||||
|
||||
#. Create a boolean field called `kpi_myfield`, and display it in the :guilabel:`KPIs` tab.
|
||||
#. Create a computed field called `kpi_myfield_value` that computes the customized :abbr:`KPI (key
|
||||
performance indicator)`.
|
||||
#. Select the :abbr:`KPIs (key performance indicators)` in the :guilabel:`KPIs` tab.
|
||||
|
||||
.. tip::
|
||||
Here is the `source code
|
||||
<https://github.com/odoo/odoo/blob/15.0/addons/digest/models/digest.py>`_ for the `digest.py`
|
||||
file, which guides the programmer in the coding of the computed field.
|
||||
|
||||
.. seealso::
|
||||
Users can also click the :guilabel:`Recipients` tab, and then the vertical three-dot
|
||||
:guilabel:`(kebab)` menu to edit this view. Either click :guilabel:`EDIT LIST VIEW` or
|
||||
:guilabel:`EDIT FORM VIEW` to modify this tab.
|
||||
|
||||
Computed values reference table
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
-------------------------------
|
||||
|
||||
+-----------------------+-------------------------------------------+
|
||||
| LABEL | VALUE |
|
||||
|
||||
|
After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 34 KiB |
@@ -1,102 +1,68 @@
|
||||
.. _developer-mode:
|
||||
|
||||
===========================
|
||||
Developer Mode (debug mode)
|
||||
Developer mode (debug mode)
|
||||
===========================
|
||||
|
||||
The developer mode (or debug mode) unlocks access to extra and advanced tools in Odoo. There are
|
||||
several ways to activate the developer mode: through the
|
||||
:ref:`settings <general/developer_mode/settings>`, the
|
||||
:ref:`browser extension <general/developer_mode/browser-extension>`, through
|
||||
the :ref:`command palette <general/developer_mode/command-palette>` or the
|
||||
:ref:`URL <general/developer_mode/url>`.
|
||||
The developer mode, also known as debug mode, unlocks access to advanced :ref:`tools and settings
|
||||
<developer-mode/tools>` in Odoo.
|
||||
|
||||
.. _general/developer_mode/settings:
|
||||
|
||||
Activate through the Settings
|
||||
=============================
|
||||
|
||||
The debug mode can be activated in the Odoo database settings. Go to :menuselection:`Settings -->
|
||||
General Settings --> Developer Tools` and click on :guilabel:`Activate the developer mode`. At
|
||||
least one application needs to be installed for the :guilabel:`Developer Tools` section to appear
|
||||
in the :guilabel:`Settings` module.
|
||||
|
||||
.. image:: developer_mode/settings.png
|
||||
:align: center
|
||||
:alt: Overview of the debug options under settings in Odoo.
|
||||
.. warning::
|
||||
Proceed with caution, as some developer tools and technical settings are considered advanced and
|
||||
may have associated risks. Only use them if you understand the implications and are confident in
|
||||
your actions.
|
||||
|
||||
.. note::
|
||||
:guilabel:`Activate the developer mode (with assets)` is used by developers; :guilabel:`Activate
|
||||
the developer mode (with tests assets)` is used by developers and testers.
|
||||
The developer mode is also available with :ref:`assets <frontend/framework/assets_debug_mode>`,
|
||||
which are used to debug JavaScript code, and with :ref:`tests assets
|
||||
<frontend/framework/tests_debug_mode>`, which are used to run test tours.
|
||||
|
||||
.. _developer-mode/activation:
|
||||
|
||||
Activation
|
||||
==========
|
||||
|
||||
To activate it, open the :guilabel:`Settings` app, scroll down to the :guilabel:`Developer Tools`
|
||||
section, and click :guilabel:`Activate the developer mode`.
|
||||
|
||||
Once activated, the :guilabel:`Deactivate the developer mode` option becomes available.
|
||||
|
||||
.. _general/developer_mode/browser-extension:
|
||||
.. image:: developer_mode/settings.png
|
||||
:alt: Activating the developer mode in the Settings app
|
||||
|
||||
Activate through the browser extension
|
||||
======================================
|
||||
To activate the developer mode **from anywhere in the database**, add `?debug=1` to the URL after
|
||||
`/web` (e.g., `https://example.odoo.com/web?debug=1#action=menu&cids=1`). To deactivate it, use
|
||||
`?debug=0` instead.
|
||||
|
||||
Within a web browser, navigate to the browser settings and extensions and search for the `Odoo
|
||||
Debug` extension. Once the extension is installed, a new icon will be shown on the browser's
|
||||
toolbar.
|
||||
|
||||
For the *Odoo Debug* extension, a single click enables a normal version of the mode, while a
|
||||
double click enables it with assets. To deactivate it, use a single click.
|
||||
|
||||
.. image:: developer_mode/developer-mode-monkey.png
|
||||
:align: center
|
||||
:alt: View of Odoo's debug icon in a Google Chrome toolbar.
|
||||
|
||||
.. _general/developer_mode/command-palette:
|
||||
|
||||
Activate through the command palette
|
||||
====================================
|
||||
|
||||
In Odoo, the command palette tool has a command to activate the debug mode. First, open the command
|
||||
palette tool with the keyboard shortcut `ctrl+k` and then type `debug`. A command will show up to
|
||||
activate the debug mode.
|
||||
|
||||
.. image:: developer_mode/command-palette.png
|
||||
:align: center
|
||||
:alt: Command palette with debug command.
|
||||
|
||||
.. _general/developer_mode/url:
|
||||
|
||||
.. _developer-mode/url:
|
||||
|
||||
Activate through the URL
|
||||
========================
|
||||
|
||||
The debug mode can also be activated by adding an extra query string to the database's URL. In the
|
||||
URL, add `?debug=1` or `?debug=true` after `/web`. To deactivate the debug mode, change the
|
||||
value to `?debug=0` instead.
|
||||
|
||||
.. image:: developer_mode/url.png
|
||||
:align: center
|
||||
:alt: Overview of a URL with the debug mode command added.
|
||||
Use `?debug=assets` to activate the developer mode with assets and `?debug=tests` to activate it
|
||||
with tests assets.
|
||||
|
||||
.. tip::
|
||||
Additional modes are available for developers: `?debug=assets` enables the
|
||||
:ref:`assets mode <frontend/framework/assets_debug_mode>`, and `?debug=tests` enables
|
||||
the :ref:`tests mode <frontend/framework/tests_debug_mode>`.
|
||||
Open the **command palette** by pressing `Ctrl + K` or `Cmd ⌘ + K`, then type `debug` to
|
||||
activate the developer mode with assets or deactivate it.
|
||||
|
||||
.. _developer-mode/mode-tools:
|
||||
.. admonition:: Browser extension
|
||||
|
||||
Locate the developer mode tools
|
||||
===============================
|
||||
The `Odoo Debug <https://github.com/Droggol/OdooDebug>`_ browser extension adds an icon to toggle
|
||||
developer mode on or off from the browser's toolbar. It is available on the `Chrome Web Store
|
||||
<https://chromewebstore.google.com/detail/odoo-debug/hmdmhilocobgohohpdpolmibjklfgkbi>`_ and
|
||||
`Firefox Add-ons <https://addons.mozilla.org/firefox/addon/odoo-debug/>`_.
|
||||
|
||||
Once developer mode is activated, the developer mode tools can be accessed from the :guilabel:`Open
|
||||
Developer Tools` button, the bug icon located in the header of the Odoo database.
|
||||
.. _developer-mode/tools:
|
||||
|
||||
.. image:: developer_mode/button-location.png
|
||||
:align: center
|
||||
:alt: Overview of a console page and the debug icon being shown in Odoo.
|
||||
Developer tools and technical menu
|
||||
==================================
|
||||
|
||||
This menu contains additional tools that are useful to understand or edit technical data, such as
|
||||
the views or actions of a page. On a page that has filters, actions, and view options, the
|
||||
developer mode tools contain some useful menu items such as:
|
||||
Once the developer mode is activated, the developer tools can be accessed by clicking the
|
||||
:icon:`fa-bug` :guilabel:`(bug)` icon. The menu contains tools useful for understanding or editing
|
||||
technical data, such as a view's field, filters, or actions. The options available depend on where
|
||||
the menu is accessed from.
|
||||
|
||||
- :guilabel:`Edit Action`
|
||||
- :guilabel:`Manage Filters`
|
||||
- Edit the current view (e.g. Kanban, List, Graph, etc.)
|
||||
- See the :guilabel:`Fields View Get`
|
||||
.. image:: developer_mode/tools.png
|
||||
:alt: Accessing the developer tools
|
||||
|
||||
Database administrators can access the technical menu from the :guilabel:`Settings` app. It contains
|
||||
advanced database settings, such as ones related to the database structure, security, actions, etc.
|
||||
|
||||
.. image:: developer_mode/technical.png
|
||||
:alt: Accessing the technical menu
|
||||
|
||||
|
Before Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 6.1 KiB |
|
After Width: | Height: | Size: 9.4 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 24 KiB |
@@ -284,8 +284,8 @@ in the *System Parameters*. To override the following defaults they need to be a
|
||||
|
||||
The two system parameters are as follows:
|
||||
|
||||
- `mail.incoming.limit.period` (60 minutes by default)
|
||||
- `mail.incoming.limit.alias` (5 by default)
|
||||
- `mail.gateway.loop.minutes` (120 minutes by default)
|
||||
- `mail.gateway.loop.threshold` (20 by default)
|
||||
|
||||
Add these fields in Odoo by first enabling :ref:`developer mode <developer-mode>`, and then
|
||||
navigating to :menuselection:`Settings --> Technical Menu --> Parameters --> System Parameters`.
|
||||
@@ -293,13 +293,13 @@ Change the value of these parameters, as needed.
|
||||
|
||||
When an email is received in the Odoo database on the catchall email address or on any alias, Odoo
|
||||
looks at the mail received for the given period of time defined in the system parameter
|
||||
`mail.incoming.limit.period`. If the received email was sent to an alias then Odoo will reference
|
||||
the `mail.incoming.limit.alias` system parameter and determine the value as the number of records
|
||||
this alias is allowed to create in the given period of time (value of `mail.incoming.limit.period`).
|
||||
`mail.gateway.loop.minutes`. If the received email was sent to an alias then Odoo will reference the
|
||||
`mail.gateway.loop.threshold` system parameter and determine the value as the number of records this
|
||||
alias is allowed to create in the given period of time (value of `mail.gateway.loop.minutes`).
|
||||
|
||||
In addition, when email is received to the catchall email address, Odoo will reference the emails
|
||||
received to the database during the set period of time (as stated by the value in the system
|
||||
parameter: `mail.incoming.limit.period`). Odoo will then determine whether any of the emails
|
||||
parameter: `mail.gateway.loop.minutes`). Odoo will then determine whether any of the emails
|
||||
received match that of the email(s) being received during the specified time-frame, and will prevent
|
||||
a feedback loop from occurring if a duplicate email is detected.
|
||||
|
||||
|
||||
@@ -35,6 +35,12 @@ Next, open the Outlook mailbox, and select any email. After completing this, cli
|
||||
:align: center
|
||||
:alt: More actions button in Outlook
|
||||
|
||||
.. tip::
|
||||
For locally installed versions of Microsoft Outlook, access the :guilabel:`Get Add-ins` menu item
|
||||
while in preview mode (**not** with a message open). First, click on the :guilabel:`...
|
||||
(ellipsis)` icon in the upper right of the previewed message, then scroll down, and click on
|
||||
:guilabel:`Get Add-ins`.
|
||||
|
||||
Following this step, select the :guilabel:`My add-ins` tab on the left-side.
|
||||
|
||||
.. image:: outlook/my-add-ins.png
|
||||
|
||||
@@ -11,6 +11,6 @@ Configuration
|
||||
config/connect
|
||||
config/pos
|
||||
config/https_certificate_iot
|
||||
config/flash_sdcard
|
||||
config/updating_iot
|
||||
config/troubleshooting
|
||||
config/windows_iot
|
||||
|
||||
@@ -37,8 +37,8 @@ via :ref:`WiFi <iot_connect/wifi>`.
|
||||
.. important::
|
||||
The disk image that the :abbr:`IoT (Internet of Things)` box SD card is formatted with is unique
|
||||
to the version of the Odoo database that the :abbr:`IoT (Internet of Things)` box is running on.
|
||||
Ensure that the :abbr:`IoT (Internet of Things)` box is :doc:`flashed <flash_sdcard>` with the
|
||||
most up-to-date disk image.
|
||||
Ensure that the :abbr:`IoT (Internet of Things)` box is :ref:`flashed <iot/config/flash>` with
|
||||
the most up-to-date disk image.
|
||||
|
||||
.. _iot_connect/ethernet:
|
||||
|
||||
|
||||
@@ -1,68 +0,0 @@
|
||||
====================
|
||||
Flashing the SD card
|
||||
====================
|
||||
|
||||
In some circumstances, the :abbr:`IoT (Internet of Things)` box's micro SD Card may need to be
|
||||
re-flashed to benefit from Odoo's latest :abbr:`IoT (Internet of Things)` image update. This means
|
||||
that the Odoo :abbr:`IoT (Internet of Things)` box software may need to be updated.
|
||||
|
||||
Upgrade from the IoT box home page
|
||||
==================================
|
||||
|
||||
Go to the :abbr:`IoT (Internet of Things)` box homepage by navigating to :menuselection:`IoT app -->
|
||||
IoT Boxes` and clicking on the :guilabel:`IP address` of the :abbr:`IoT (Internet of Things)` box.
|
||||
Then click on :guilabel:`Update` (next to the version number).
|
||||
|
||||
If a new version of the :abbr:`IoT (Internet of Things)` Box image is available, an
|
||||
:guilabel:`Upgrade to _xx.xx_` button will appear at the bottom of the page. Click this button to
|
||||
upgrade the unit and the :abbr:`IoT (Internet of Things)` box will then flash itself to the new
|
||||
version. All of the previous configurations will be saved.
|
||||
|
||||
.. note::
|
||||
This process can take more than 30 minutes. Do not turn off or unplug the :abbr:`IoT (Internet of
|
||||
Things)` box as it would leave it in an inconsistent state. This means that the :abbr:`IoT
|
||||
(Internet of Things)` box will need to be re-flashed with a new image. See
|
||||
:ref:`flash_sdcard/etcher`.
|
||||
|
||||
.. image:: flash_sdcard/flash-upgrade.png
|
||||
:align: center
|
||||
:alt: IoT box software upgrade in the IoT Box Home Page.
|
||||
|
||||
.. _flash_sdcard/etcher:
|
||||
|
||||
Upgrade with Etcher Software
|
||||
============================
|
||||
|
||||
.. note::
|
||||
A computer with a micro SD card reader/adapter is required in order to re-flash the micro SD
|
||||
card.
|
||||
|
||||
Navigate to Balena's website and download `Etcher <https://www.balena.io/>`_. It's a free and
|
||||
open-source utility used for burning image files onto drives. Click to `download
|
||||
<https://www.balena.io/etcher#download-etcher>`_. Install and launch the program on the computer.
|
||||
|
||||
Then download the version-specific :abbr:`IoT (Internet of Things)` image from `nightly
|
||||
<http://nightly.odoo.com/master/iotbox/>`_.
|
||||
|
||||
The following are image versions on the `nightly <http://nightly.odoo.com/master/iotbox/>`_ website
|
||||
with their corresponding Odoo database version:
|
||||
|
||||
- Odoo V16 --> iotbox-latest.zip
|
||||
- Odoo V15 --> iotboxv21_10.zip
|
||||
- Odoo V14 --> iotboxv21_04.zip
|
||||
- Odoo V13 --> iotboxv20_10.zip
|
||||
|
||||
The images should be downloaded and extracted to a convenient file location.
|
||||
|
||||
After this step is complete, insert the :abbr:`IoT (Internet of Things)` box's micro SD card into
|
||||
the computer or reader. Open *Etcher* and select :guilabel:`Flash from file`, then find and select
|
||||
the image just downloaded and extracted. Next, select the drive the image should be burned to.
|
||||
Lastly, click on :guilabel:`Flash` and wait for the process to finish.
|
||||
|
||||
.. image:: flash_sdcard/etcher-app.png
|
||||
:align: center
|
||||
:alt: Balena's Etcher software dashboard.
|
||||
|
||||
.. note::
|
||||
An alternative software for flashing the micro SD card is *Raspberry Pi Imager*. Download the
|
||||
*Raspberry Pi* software `here <https://www.raspberrypi.com/software/>`_.
|
||||
@@ -19,10 +19,10 @@ The pairing code does not show under the following circumstances:
|
||||
It is automatically removed from connected displays when this time has expired.
|
||||
- The version of the :abbr:`IoT (Internet of Things)` box image is too old. If the :abbr:`IoT
|
||||
(Internet of Things)` box image is from an earlier version, then the SD card of the :abbr:`IoT
|
||||
(Internet of Things)` box will need to be re-flashed to update the image (see :doc:`Flashing the
|
||||
SD Card <flash_sdcard>`).
|
||||
(Internet of Things)` box needs to be re-flashed to update the image (see :ref:`Flashing the SD
|
||||
Card <iot/config/flash>`).
|
||||
|
||||
If none of the cases listed above correct the issue, then make sure that the :abbr:`IoT (Internet of
|
||||
If none of the cases listed above correct the issue, then make sure the :abbr:`IoT (Internet of
|
||||
Things)` box has correctly started, by checking that a fixed green LED is showing next to the power
|
||||
port.
|
||||
|
||||
@@ -343,6 +343,154 @@ Save`.
|
||||
:align: center
|
||||
:alt: Receipt format using naming convention: EpsonTMU220B__IMC_LDV_LDH_SCALE35__.
|
||||
|
||||
DYMO LabelWriter print issue
|
||||
----------------------------
|
||||
|
||||
The DYMO LabelWriter has a known issue in printing with the :abbr:`IoT (Internet of Things)` box.
|
||||
The OpenPrinting CUPS server installs the printer using :guilabel:`Local RAW Printer` drivers. In
|
||||
order to print anything, the correct :guilabel:`Make and Model` needs to be set, so the correct
|
||||
driver is referenced when using the device.
|
||||
|
||||
Additionally, a new printer needs to be added to reduce a print delay that occurs after updating the
|
||||
driver.
|
||||
|
||||
.. important::
|
||||
The DYMO LabelWriter 450 DUO printer is the recommended DYMO printer for use with Odoo and the
|
||||
:abbr:`IoT (Internet of Things)` box. It **must** already be connected to, and recognized on, the
|
||||
:abbr:`IoT (Internet of Things)` box.
|
||||
|
||||
The DYMO LabelWriter 450 DUO printer contains two printers in one: a label printer and a tape
|
||||
printer. Choosing the correct model (either DYMO LabelWriter 450 DUO Label (en) or DYMO
|
||||
LabelWriter 450 DUO Tape (en)) is crucial when configuring the following processes.
|
||||
|
||||
To keep things consistent, both of the following processes detail the configuration for the DYMO
|
||||
LabelWriter 450 DUO Label (en) model. Change the model when needed.
|
||||
|
||||
.. _troubleshooting/dymo/update_drivers:
|
||||
|
||||
DYMO LabelWriter not printing
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
In the case where the DYMO LabelWriter is not printing anything, a new driver needs to be installed.
|
||||
|
||||
First, open the OpenPrinting CUPS console by clicking :menuselection:`Printers server` at the bottom
|
||||
of the :abbr:`IoT (Internet of Things)` box homepage. Next, click on :menuselection:`Printers` in
|
||||
the top menu. Click into the printer in question, and select :guilabel:`Maintenance` in the first
|
||||
drop-down menu. Then, select :guilabel:`Modify Printer` in the second drop-down menu.
|
||||
|
||||
.. image:: troubleshooting/main-modify.png
|
||||
:align: center
|
||||
:alt: Modify the make and model of the DYMO LabelWriter. Maintenance and Modify drop-down menus
|
||||
highlighted.
|
||||
|
||||
Next, select the specific network connection/printer that the modification should be made on. Click
|
||||
:guilabel:`Continue`.
|
||||
|
||||
.. image:: troubleshooting/modify-select-printer.png
|
||||
:align: center
|
||||
:alt: Printer selection screen with Continue highlighted.
|
||||
|
||||
On the next page, click :guilabel:`Continue` to proceed to set the :guilabel:`Make` of the printer.
|
||||
|
||||
.. image:: troubleshooting/modify-printer-dymo.png
|
||||
:align: center
|
||||
:alt: Printer modification screen with Continue highlighted.
|
||||
|
||||
Under :guilabel:`Make` select :guilabel:`DYMO` from the menu. Click on :guilabel:`Continue` to set
|
||||
the :guilabel:`Model`.
|
||||
|
||||
.. image:: troubleshooting/setting-make.png
|
||||
:align: center
|
||||
:alt: Setting the make page, with DYMO and continue highlighted.
|
||||
|
||||
On the following page, set the :guilabel:`Model` to :guilabel:`DYMO LabelWriter 450 DUO Label (en)`
|
||||
(or whichever DYMO printer model is being used). Click on :guilabel:`Modify Printer` to complete
|
||||
setting the new driver, a confirmation page will appear.
|
||||
|
||||
.. image:: troubleshooting/setting-model.png
|
||||
:align: center
|
||||
:alt: Setting the printer model page with DYMO LabelWriter 450 DUO Label (en) highlighted.
|
||||
|
||||
After being redirected to a confirmation page, acknowledging a successful update, click on the
|
||||
:menuselection:`Printers` button in the top menu.
|
||||
|
||||
All the printers installed on the OpenPrinting CUPS server appear, including the newly updated:
|
||||
:guilabel:`DYMO LabelWriter 450 DUO Label` (or whichever DYMO printer model is being used). Click
|
||||
into the printer that was just updated.
|
||||
|
||||
To print a test label, click on the :guilabel:`Maintenance` drop-down menu to the left of the
|
||||
:guilabel:`Administration` drop-down menu, and select :guilabel:`Print Test Page`. The test label
|
||||
will print out with a ten-second delay if the driver update was successful.
|
||||
|
||||
.. image:: troubleshooting/print-test.png
|
||||
:align: center
|
||||
:alt: Printing a test page from the administration drop-down menu in the OpenPrinting CUPs
|
||||
server.
|
||||
|
||||
To reduce this delay a new printer will need to be added, follow the process below.
|
||||
|
||||
DYMO LabelWriter print delay
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
To resolve the delay issue after modifying the driver, the printer **must** be reinstalled. To
|
||||
reinstall the printer, open the OpenPrinting CUPS administration page by clicking
|
||||
:menuselection:`Printers server`, at the bottom of the :abbr:`IoT (Internet of Things)` box
|
||||
homepage. Then, click on :menuselection:`Administration` in the top menu, then click :guilabel:`Add
|
||||
a Printer`.
|
||||
|
||||
.. tip::
|
||||
If the DYMO LabelWriter 450 DUO printer is not printing at all, or is not recognizable (has a RAW
|
||||
driver type), then update the drivers on the device. See
|
||||
:ref:`troubleshooting/dymo/update_drivers`.
|
||||
|
||||
.. image:: troubleshooting/add-printer-dymo.png
|
||||
:align: center
|
||||
:alt: Add a printer button highlighted on the Printer CUPS management page.
|
||||
|
||||
On the next screen, in the :guilabel:`Local Printers` section, select the :guilabel:`DYMO
|
||||
LabelWriter 450 DUO Label (DYMO LabelWriter 450 DUO Label)` (or whichever DYMO printer model is
|
||||
being used) pre-installed printer. Click :guilabel:`Continue`.
|
||||
|
||||
.. image:: troubleshooting/local-printer.png
|
||||
:align: center
|
||||
:alt: Add a printer screen on OpenPrinting CUPS with DYMO LabelWriter 450 DUO Label highlighted.
|
||||
|
||||
On the following screen, modify the :guilabel:`Name` to something recognizable, as the original
|
||||
printer will still be present. Click :guilabel:`Continue` to be taken to the next screen.
|
||||
|
||||
.. image:: troubleshooting/rename-printer.png
|
||||
:align: center
|
||||
:alt: Rename printer page in the 'Add a Printer' flow, with the name field highlighted.
|
||||
|
||||
Next, choose the :guilabel:`Model`. Select :guilabel:`DYMO LabelWriter 450 DUO Label (en)` (or
|
||||
whichever DYMO printer model is being used), and finally, click :guilabel:`Add Printer` to complete
|
||||
the installation.
|
||||
|
||||
.. image:: troubleshooting/choose-printer.png
|
||||
:align: center
|
||||
:alt: Choose model screen on the OpenPrinting CUPS console with model and add a printer
|
||||
highlighted.
|
||||
|
||||
After being redirected to a confirmation page, acknowledging a successful installation, click on the
|
||||
:menuselection:`Printers` button in the top menu.
|
||||
|
||||
All the printers installed on the OpenPrinting CUPS server appear, including the newly installed:
|
||||
:guilabel:`DYMO LabelWriter 450 DUO Label` (or whichever DYMO printer model is being used). Click
|
||||
into the printer that was just installed.
|
||||
|
||||
.. image:: troubleshooting/printer-page.png
|
||||
:align: center
|
||||
:alt: Printer page with newly installed printer highlighted.
|
||||
|
||||
To print a test label, click on the :guilabel:`Maintenance` drop-down menu to the left of the
|
||||
:guilabel:`Administration` drop-down menu, and select :guilabel:`Print Test Page`. The test label
|
||||
should print out immediately (one-to-two seconds delay).
|
||||
|
||||
.. image:: troubleshooting/print-test.png
|
||||
:align: center
|
||||
:alt: Printing a test page from the administration drop-down menu in the OpenPrinting CUPs
|
||||
server.
|
||||
|
||||
The Zebra printer does not print anything
|
||||
-----------------------------------------
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 39 KiB |
|
After Width: | Height: | Size: 53 KiB |
@@ -0,0 +1,230 @@
|
||||
==============
|
||||
Updating (IoT)
|
||||
==============
|
||||
|
||||
Due to the complexity of the :abbr:`IoT (Internet of Things)` box, and virtual Windows :abbr:`IoT
|
||||
(Internet of Things)` box, the term 'updating' can mean several different things.
|
||||
|
||||
The actual drivers can be updated, the core code on the :abbr:`IoT (Internet of Things)` box can be
|
||||
updated, or a new image can be flashed (using a physical :abbr:`IoT (Internet of Things)` box).
|
||||
|
||||
This document explores the various ways to update :abbr:`IoT (Internet of Things)` boxes to ensure
|
||||
smooth operation of :abbr:`IoT (Internet of Things)` box processes and devices.
|
||||
|
||||
.. _iot/config/flash:
|
||||
|
||||
Flashing the SD card on IoT box
|
||||
===============================
|
||||
|
||||
.. important::
|
||||
This update does **not** apply to the Windows :abbr:`IoT (Internet of Things)` box (Odoo 16 and
|
||||
higher).
|
||||
|
||||
To update the Windows :abbr:`IoT (Internet of Things)`, first, uninstall the previous version of
|
||||
the Odoo Windows program, and then reinstall it using the most up-to-date installation package.
|
||||
|
||||
To begin the installation, navigate to the Odoo 16 (or higher) installation package for
|
||||
Enterprise or Community - Windows edition, at `Odoo's download page
|
||||
<https://odoo.com/download>`_.
|
||||
|
||||
In some circumstances, the :abbr:`IoT (Internet of Things)` box's micro SD Card may need to be
|
||||
re-flashed with *Etcher* software to benefit from Odoo's latest :abbr:`IoT (Internet of Things)`
|
||||
image update. This means the Odoo :abbr:`IoT (Internet of Things)` box software may need to be
|
||||
updated in instances of a new :abbr:`IoT (Internet of Things)` box, or when a handler's update, or
|
||||
an update from the :abbr:`IoT (Internet of Things)` box home page, does not resolve issues.
|
||||
|
||||
|
||||
.. note::
|
||||
- It is often necessary to re-flash the :abbr:`IoT (Internet of Things)` box's image after
|
||||
upgrading the Odoo database to a new version.
|
||||
- A computer with a micro SD card reader/adapter is **required** to re-flash the micro SD card.
|
||||
|
||||
First, begin by downloading `Etcher <https://www.balena.io/etcher#download-etcher>`_. It is a free,
|
||||
open-source utility, used for burning image files onto drives. After the download completes, install
|
||||
and launch the program on the computer.
|
||||
|
||||
Then, download the latest :abbr:`IoT (Internet of Things)` image from `nightly
|
||||
<http://nightly.odoo.com/master/iotbox>`_, which will be labeled as `iotbox-latest.zip`. This
|
||||
particular image is compatible with *all* supported versions of Odoo.
|
||||
|
||||
After this step is complete, insert the :abbr:`IoT (Internet of Things)` box's micro SD card into
|
||||
the computer or reader. Open *Etcher*, and select :guilabel:`Flash from file`, then find and select
|
||||
the `iotbox-latest.zip` image and extract it. Next, select the drive the image should be burned to.
|
||||
|
||||
Lastly, click :guilabel:`Flash`, and wait for the process to finish.
|
||||
|
||||
.. image:: updating_iot/etcher-app.png
|
||||
:align: center
|
||||
:alt: Balena's Etcher software dashboard.
|
||||
|
||||
.. tip::
|
||||
Balena's *Etcher* software also allows for the administrator to flash the :abbr:`SD (Secure
|
||||
Digital)` card from a :abbr:`URL (Uniform Resource Locator)`. To flash from a :abbr:`URL (Uniform
|
||||
Resource Locator)`, simply click :guilabel:`Flash from URL`, instead of :guilabel:`Flash from
|
||||
file`.
|
||||
|
||||
Then, enter the following: `http://nightly.odoo.com/master/iotbox/iotbox-latest.zip`.
|
||||
|
||||
.. image:: updating_iot/url-flash.png
|
||||
:align: center
|
||||
:alt: A view of Balena's Etcher software, with the flash from URL option highlighted.
|
||||
|
||||
.. note::
|
||||
An alternative software for flashing the micro SD card is `Raspberry Pi Imager
|
||||
<https://www.raspberrypi.com/software/>`_.
|
||||
|
||||
Windows IoT update
|
||||
==================
|
||||
|
||||
Windows virtual :abbr:`IoT (Internet of Things)` box may occasionally need an update to work
|
||||
properly.
|
||||
|
||||
The following processes cover the :ref:`uninstallation <iot/config/uninstall-windows-iot>` and
|
||||
:ref:`re-installation <iot/config/re-install-windows-iot>` of the Windows virtual :abbr:`IoT
|
||||
(Internet of Things)` box.
|
||||
|
||||
.. _iot/config/uninstall-windows-iot:
|
||||
|
||||
Uninstalling Windows IoT
|
||||
------------------------
|
||||
|
||||
Prior to upgrading the Windows virtual :abbr:`IoT (Internet of Things)` box, the previous version
|
||||
should be uninstalled first.
|
||||
|
||||
.. important::
|
||||
Before uninstalling a previous version of the Windows virtual :abbr:`IoT (Internet of Things)`
|
||||
box, ensure that there is a newer version of Windows virtual :abbr:`IoT (Internet of Things)` box
|
||||
available, compared to the version currently installed. To do so, navigate to the `Odoo Nightly
|
||||
builds <https://nightly.odoo.com/>`_ page.
|
||||
|
||||
On the :guilabel:`Odoo Nightly builds` page, navigate to :menuselection:`Builds (stable version)
|
||||
--> windows/` to view the date next to the :file:`odoo_(version).latest.exe` file; where
|
||||
*(version)* is equal to the version of Odoo (e.g. 16.0, 17.0). The latest version of the Windows
|
||||
virtual :abbr:`IoT (Internet of Things)` box can be downloaded by selecting this file, or it is
|
||||
always available at the `Odoo Download <https://odoo.com/download/>`_ page.
|
||||
|
||||
Uninstalling the Windows virtual :abbr:`IoT (Internet of Things)` box is done through the Windows
|
||||
program manager.
|
||||
|
||||
On any version of Windows, search for `program` to open the :menuselection:`Programs --> Programs
|
||||
and Features` section of the :guilabel:`Control Panel`. Then, select :guilabel:`Uninstall or change
|
||||
a program`. Next, search for `Odoo`, and click the :guilabel:`... (three dot)` menu on the
|
||||
:guilabel:`Odoo.exe` program to uninstall.
|
||||
|
||||
Confirm the uninstallation, and follow the steps to uninstall through the Odoo uninstall wizard.
|
||||
|
||||
.. _iot/config/re-install-windows-iot:
|
||||
|
||||
Download and re-install
|
||||
-----------------------
|
||||
|
||||
The latest version of the Windows virtual :abbr:`IoT (Internet of Things)` box can be downloaded
|
||||
from the `Odoo Nightly builds <https://nightly.odoo.com/>`_ page or it is always available at the
|
||||
`Odoo Download <https://odoo.com/download/>`_ page.
|
||||
|
||||
To download from the :guilabel:`Odoo Nightly builds` page, navigate to :menuselection:`Builds
|
||||
(stable version) --> windows/` to and select the :file:`odoo_(version).latest.exe` file; where
|
||||
*(version)* is equal to the version of Odoo (e.g. 16.0, 17.0).
|
||||
|
||||
To download from the :guilabel:`Odoo Download` page, find the section for the version of Odoo (e.g.
|
||||
16.0, 17.0), and select the :guilabel:`Download` button for :guilabel:`Windows`.
|
||||
|
||||
Next, install and setup the downloaded Odoo :file:`.exe` file. After the instructions screen, click
|
||||
:guilabel:`Next` to start the installation, and agree to the :abbr:`TOS (Terms of Service)`.
|
||||
|
||||
During the next step of the re-installation, select :guilabel:`Odoo IoT` from the :guilabel:`Select
|
||||
the type of install` drop-down menu.
|
||||
|
||||
.. example::
|
||||
For reference, the following should be installed:
|
||||
|
||||
- :guilabel:`Odoo server`
|
||||
- :guilabel:`Odoo IoT`
|
||||
- :guilabel:`Nginx WebServer`
|
||||
- :guilabel:`Ghostscript interpreter`
|
||||
|
||||
Ensure there is enough space on the computer for the installation, then click :guilabel:`Next`.
|
||||
|
||||
Set the destination and complete the installation
|
||||
-------------------------------------------------
|
||||
|
||||
To complete the re-installation, select the :guilabel:`Destination Folder`, and click
|
||||
:guilabel:`Install`.
|
||||
|
||||
.. warning::
|
||||
Choosing `C:\\odoo` as the install location allows for the *Nginx* server to start. Odoo's
|
||||
Windows virtual :abbr:`IoT (Internet of Things)` box software should **not** be installed inside
|
||||
any of the Windows user's directories. Doing so does **not** allow for *Nginx* to initialize.
|
||||
|
||||
The installation may take a few minutes. When complete, click :guilabel:`Next` to continue.
|
||||
|
||||
Then, ensure that the :guilabel:`Start Odoo` box is checked, and click :guilabel:`Finish`. After
|
||||
installation, the Odoo server runs, and automatically opens `http://localhost:8069` on a web
|
||||
browser. The webpage should display the :abbr:`IoT (Internet of Things)` box homepage.
|
||||
|
||||
.. tip::
|
||||
A :ref:`restart <iot/restart_windows_iot>` of the Windows IoT program may be necessary if the web
|
||||
browser does not display anything.
|
||||
|
||||
.. _iot/config/homepage-upgrade:
|
||||
|
||||
Update from the IoT box home page
|
||||
=================================
|
||||
|
||||
In the background, the :abbr:`IoT (Internet of Things)` box uses a version of Odoo code to run and
|
||||
connect to the Odoo database. This code may need to be updated in order for the :abbr:`IoT (Internet
|
||||
of Things)` box to operate effectively. This operation should be completed on a routine basis, to
|
||||
ensure the :abbr:`IoT (Internet of Things)` system, and its processes, stay up-to-date.
|
||||
|
||||
Go to the :abbr:`IoT (Internet of Things)` box home page by navigating to :menuselection:`IoT app
|
||||
--> IoT Boxes`, and clicking on the :guilabel:`IP address` of the :abbr:`IoT (Internet of Things)`
|
||||
box. Then, click on :guilabel:`Update` (next to the version number).
|
||||
|
||||
If a new version of the :abbr:`IoT (Internet of Things)` box image is available, an
|
||||
:guilabel:`Upgrade to _xx.xx_` button appears at the bottom of the page. Click this button to
|
||||
upgrade the unit, at which point the :abbr:`IoT (Internet of Things)` box flashes itself to the
|
||||
newer version. All of the previous configurations are then saved.
|
||||
|
||||
.. important::
|
||||
This process can take more than 30 minutes. Do **not** turn off, or unplug, the :abbr:`IoT
|
||||
(Internet of Things)` box, as it would leave it in an inconsistent state. This means the
|
||||
:abbr:`IoT (Internet of Things)` box needs to be :ref:`re-flashed <iot/config/flash>` with a new
|
||||
image.
|
||||
|
||||
.. image:: updating_iot/flash-upgrade.png
|
||||
:align: center
|
||||
:alt: IoT box software upgrade in the IoT Box Home Page.
|
||||
|
||||
Handler (driver) update
|
||||
=======================
|
||||
|
||||
There may be some instances where drivers or interfaces need to be updated for individual devices
|
||||
(e.g. scales, measurement tools, etc.). The IoT handler's (drivers and interfaces) code can be
|
||||
modified by syncing them with the configured server handler's code.
|
||||
|
||||
This can be helpful in instances where :abbr:`IoT (Internet of Things)` devices (e.g. scales,
|
||||
measurement tools, etc.) are not working properly with the :abbr:`IoT (Internet of Things)` box.
|
||||
|
||||
For both the Windows :abbr:`IoT (Internet of Things)` (Odoo 16 and higher) and physical :abbr:`IoT
|
||||
(Internet of Things)` box, this process can be performed manually from the :abbr:`IoT (Internet of
|
||||
Things)` box home page. Go to the :abbr:`IoT (Internet of Things)` box home page by navigating to
|
||||
:menuselection:`IoT app --> IoT Boxes`, and clicking on the :guilabel:`IP address` of the :abbr:`IoT
|
||||
(Internet of Things)` box.
|
||||
|
||||
Next, click :guilabel:`Handlers list`, and then select :guilabel:`Load Handlers` at the bottom of
|
||||
the page.
|
||||
|
||||
.. image:: updating_iot/load-handlers.png
|
||||
:align: center
|
||||
:alt: Handlers list on an IoT box with the load handlers button highlighted.
|
||||
|
||||
.. important::
|
||||
Handler's code is fetched from the configured server, and it needs to be up-to-date to have the
|
||||
latest fixes and patches.
|
||||
|
||||
.. note::
|
||||
A handler update is also performed automatically each time the :abbr:`IoT (Internet of Things)`
|
||||
box is restarted. The only exception to this process is if the *Automatic drivers update* is
|
||||
unchecked in the form view of the :abbr:`IoT (Internet of Things)` box on the Odoo server. This
|
||||
setting can be reached by going to :menuselection:`IoT App --> Select the IoT box --> Automatic
|
||||
drivers update`.
|
||||
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 115 KiB After Width: | Height: | Size: 115 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
@@ -38,10 +38,10 @@ installing the Windows virtual IoT software for the first time.
|
||||
Download and initial installation
|
||||
---------------------------------
|
||||
|
||||
To begin the installation, navigate to the Odoo 16 or higher installation package for Enterprise or
|
||||
Community - Windows edition at `Odoo's download page <https://odoo.com/download>`_. Next, install
|
||||
and setup the Odoo :file:`.exe` file. After the instructions screen, click :guilabel:`Next` to start
|
||||
the installation and agree to the :abbr:`TOS (Terms of Service)`.
|
||||
To begin the installation, navigate to the Odoo 16 or higher installation package for Community -
|
||||
Windows edition at `Odoo's download page <https://odoo.com/download>`_. Next, install and setup the
|
||||
Odoo :file:`.exe` file. After the instructions screen, click :guilabel:`Next` to start the
|
||||
installation and agree to the :abbr:`TOS (Terms of Service)`.
|
||||
|
||||
During the next step of the installation, select :guilabel:`Odoo IoT` from the :guilabel:`Select the
|
||||
type of install` drop-down menu.
|
||||
@@ -182,7 +182,7 @@ Configure new rule
|
||||
On the :menuselection:`Rule Type` screen, select :guilabel:`Port`. Then click :guilabel:`Next`. From
|
||||
the :menuselection:`Protocol and Ports` page leave the rule application to :guilabel:`TCP`. Then,
|
||||
select :guilabel:`Specific Local Ports` for the :guilabel:`ports` option. In the text box, type in
|
||||
`8069`. Finally click :guilabel:`Next` to continue to the next step.
|
||||
`8069, 443`. Finally, click :guilabel:`Next` to continue to the next step.
|
||||
|
||||
On the :menuselection:`Actions` page, select :guilabel:`Allow the connection` and click
|
||||
:guilabel:`Next`. The following page on the :menuselection:`Rule Configuration` wizard is the
|
||||
@@ -196,12 +196,14 @@ add a brief description in the :guilabel:`Description` field. Click :guilabel:`F
|
||||
the :guilabel:`Rule Configuration` wizard. Now, the new rule is active and devices can connect to
|
||||
the Windows virtual :abbr:`IoT (Internet of Things)` box.
|
||||
|
||||
.. _iot/windows/wordline:
|
||||
|
||||
Worldline exception
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
*Worldline* is a payment terminal that can be connected to Odoo's *PoS* (point of sale) system. It
|
||||
allows for a comprehensive and fluid payment experience for customers. Worldline is available in
|
||||
Benelux (coalition of Belgium, the Netherlands, and Luxembourg).
|
||||
Belgium, the Netherlands, and Luxembourg.
|
||||
|
||||
When using the Windows IoT server to connect the Worldline payment terminal, it is necessary to
|
||||
create an exception in the Windows firewall so that a connection can be made between the Odoo
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
:nosearch:
|
||||
:show-content:
|
||||
:show-toc:
|
||||
|
||||
=======
|
||||
Devices
|
||||
@@ -14,3 +16,8 @@ Devices
|
||||
devices/footswitch
|
||||
devices/printer
|
||||
devices/scale
|
||||
|
||||
.. seealso::
|
||||
- :doc:`Worldline payment terminal
|
||||
<../../sales/point_of_sale/payment_methods/terminals/worldline>`
|
||||
- :doc:`Ingenico payment terminal <../../sales/point_of_sale/payment_methods/terminals/ingenico>`
|
||||
|
||||
@@ -6,6 +6,18 @@ A scale can be connected to the :abbr:`IoT (Internet of Things)` box on an Odoo
|
||||
easy steps. After setup, the *Point of Sale* app can be used to weigh products, which is helpful if
|
||||
their prices are calculated based on weight.
|
||||
|
||||
.. important::
|
||||
- In EU member states, `certification is legally required <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=uriserv%3AOJ.L_.2014.096.01.0107.01.ENG>`_
|
||||
to use a scale as an integrated device.
|
||||
- Odoo is not certified in several countries, including France, Germany, and Switzerland. If you
|
||||
reside in one of these countries, you can still use a scale but without integration to your
|
||||
Odoo database.
|
||||
- Alternatively, you have the option to acquire a *non-integrated* certified scale that prints
|
||||
certified labels, which can then be scanned into your Odoo database.
|
||||
|
||||
.. seealso::
|
||||
`Directive 2014/31/EU of the European Parliament <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=uriserv%3AOJ.L_.2014.096.01.0107.01.ENG>`_
|
||||
|
||||
Connection
|
||||
==========
|
||||
|
||||
|
||||
@@ -4,146 +4,249 @@
|
||||
Users
|
||||
=====
|
||||
|
||||
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 can be applied. Users and access rights can be added and changed at any point.
|
||||
Odoo defines a *user* as someone who has access to a database. An administrator can add as many
|
||||
users as the company needs and, in order to restrict the type of information each user can access,
|
||||
rules can be applied to each user. Users and access rights can be added and changed at any point.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`users/language`
|
||||
- :doc:`users/access_rights`
|
||||
- :ref:`access-rights/superuser`
|
||||
- :ref:`access-rights/groups`
|
||||
|
||||
.. _users/add-individual:
|
||||
|
||||
Add individual users
|
||||
====================
|
||||
|
||||
Go to :menuselection:`Settings --> Manage Users` and click on *Create*.
|
||||
To add new users, navigate to :menuselection:`Settings app --> Users section --> Manage Users`, and
|
||||
click on :guilabel:`Create`.
|
||||
|
||||
.. image:: users/manage-users.png
|
||||
:height: 280
|
||||
:alt: View of the settings page emphasizing the manage users field in Odoo
|
||||
:align: center
|
||||
:alt: View of the settings page emphasizing the manage users field in Odoo.
|
||||
|
||||
| Fill in the form with the needed information. Under the tab
|
||||
:doc:`Access Rights <users/access_rights>` choose the group within each application the user can
|
||||
have access to.
|
||||
| The list of applications shown is based on the applications installed on the database.
|
||||
Fill in the form with all the required information. Under the :doc:`Access Rights
|
||||
<users/access_rights>` tab, choose the group within each application the user can have access to.
|
||||
|
||||
.. image:: users/new_user.png
|
||||
:alt: View of a user’s form emphasizing the access rights tab in Odoo
|
||||
The list of applications shown is based on the applications installed on the database.
|
||||
|
||||
When you are done editing the page and have *Saved* it, an invitation email is automatically sent to
|
||||
the user. The user must click on it to accept the invitation and create a login.
|
||||
.. image:: users/new-user.png
|
||||
:align: center
|
||||
:alt: View of a user's form emphasizing the access rights tab in Odoo.
|
||||
|
||||
After filling out all the necessary fields on the page, click :guilabel:`Save`. An invitation email
|
||||
is automatically sent to the user, using the email in the :guilabel:`Email Address` field. The user
|
||||
must click on the link included in the email to accept the invitation, and to create a database
|
||||
login.
|
||||
|
||||
.. image:: users/invitation-email.png
|
||||
:alt: View of a user’s form with a notification that the invitation email has been sent in Odoo
|
||||
:align: center
|
||||
:alt: View of a user's form with a notification that the invitation email has been sent in Odoo.
|
||||
|
||||
.. note::
|
||||
Remember that subscription prices follow the number of users. Refer to our
|
||||
`pricing page <https://www.odoo.com/pricing>`_
|
||||
for more information.
|
||||
.. warning::
|
||||
If the company is on a monthly subscription plan, the database automatically updates to reflect
|
||||
the added users. If the company is on a yearly or multi-year plan, an expiration banner appears
|
||||
in the database. An upsell quotation can be created by clicking the banner to update the
|
||||
subscription. Alternatively, `send a support ticket <https://www.odoo.com/help>`_ to resolve the
|
||||
issue.
|
||||
|
||||
With the :ref:`developer mode <developer-mode>` activated, *User Types* can be selected.
|
||||
User type
|
||||
---------
|
||||
|
||||
With the :ref:`developer mode <developer-mode>` activated, :guilabel:`User Type` can be selected
|
||||
from the :guilabel:`Access Rights` tab of the user form, accessible via :menuselection:`Settings app
|
||||
--> Users section --> Manage Users`.
|
||||
|
||||
There are three types of users: :guilabel:`Internal User`, :guilabel:`Portal`, and
|
||||
:guilabel:`Public`.
|
||||
|
||||
.. image:: users/user-type.png
|
||||
:height: 300
|
||||
:alt: View of a user’s form in developer mode emphasizing the user type field in Odoo
|
||||
:align: center
|
||||
:alt: View of a user's form in developer mode emphasizing the user type field in Odoo.
|
||||
|
||||
The *Portal* and *Public* options do not allow you to choose access rights. Members have specific
|
||||
ones (such as record rules and restricted menus) and usually do not belong to the usual Odoo
|
||||
groups.
|
||||
.. tip::
|
||||
Users are considered internal database users. Portal users are external users, who only have
|
||||
access to the database portal to view records. See the documentation on :doc:`users/portal`.
|
||||
|
||||
Public users are those visiting websites, via the website's frontend.
|
||||
|
||||
The :guilabel:`Portal` and :guilabel:`Public` user options do **not** allow the administrator to
|
||||
choose access rights. These users have specific access rights pre-set (such as, record rules and
|
||||
restricted menus), and usually do not belong to the usual Odoo groups.
|
||||
|
||||
.. _users/deactivate:
|
||||
|
||||
Deactivate users
|
||||
================
|
||||
|
||||
Go to :menuselection:`Settings --> Users & Companies --> Users`, open the user you want to
|
||||
deactivate, click on *Action*, and then on *Archive*.
|
||||
To deactivate (i.e. archive) a user, navigate to :menuselection:`Settings app --> Users section -->
|
||||
Manage Users`. Then, tick the checkbox to the left of the user(s) to be deactivated.
|
||||
|
||||
After selecting the appropriate user to be archived, click the :guilabel:`⚙️ Actions` icon, and
|
||||
select :guilabel:`Archive` from the resulting drop-down menu. Then, click :guilabel:`OK` from the
|
||||
:guilabel:`Confirmation` pop-up window that appears.
|
||||
|
||||
.. danger::
|
||||
**Never** deactivate the main user (*admin*).
|
||||
**Never** deactivate the main/administrator user (admin). Making changes to admin users can have
|
||||
a detrimental impact on the database. This includes *impotent admin*, which means that no user in
|
||||
the database can make changes to the access rights. For this reason, Odoo recommends contacting
|
||||
an Odoo Business Analyst, or our Support Team, before making changes.
|
||||
|
||||
Error: too many users
|
||||
---------------------
|
||||
|
||||
If there are more users in an Odoo database than provisioned in the Odoo Enterprise subscription,
|
||||
the following message is displayed.
|
||||
|
||||
.. image:: users/add-more-users.png
|
||||
:align: center
|
||||
:alt: Too many users on a database error message.
|
||||
|
||||
When the message appears, the database administrator has 30 days to act before the database expires.
|
||||
The countdown is updated every day.
|
||||
|
||||
To resolve the issue, either:
|
||||
|
||||
- Add more users to the subscription by clicking the :guilabel:`Upgrade your subscription` link
|
||||
displayed in the message to validate the upsell quotation, and pay for the extra users.
|
||||
- :ref:`Deactivate users <users/deactivate>`, and reject the upsell quotation.
|
||||
|
||||
.. warning::
|
||||
If the company is on a monthly subscription plan, the database automatically updates to reflect
|
||||
the added users. If the company is on a yearly or multi-year plan, an expiration banner appears
|
||||
in the database. An upsell quotation can be created by clicking the banner to update the
|
||||
subscription. Alternatively, users can `send a support ticket <https://www.odoo.com/help>`_ to
|
||||
resolve the issue.
|
||||
|
||||
Once the database has the correct number of users, the expiration message disappears automatically
|
||||
after a few days, when the next verification occurs.
|
||||
|
||||
.. _users/passwords-management:
|
||||
|
||||
Passwords management
|
||||
====================
|
||||
Password management
|
||||
===================
|
||||
|
||||
Password management is an important part of granting users autonomous access to the database at all
|
||||
times. Odoo offers a few different methods to reset a user's password.
|
||||
|
||||
.. tip::
|
||||
Odoo has a setting to specify the length needed for a password. This setting can be accessed by
|
||||
navigating to :menuselection:`Settings app --> Permissions` section, and entering the desired
|
||||
password length in the :guilabel:`Minimum Password Length` field. By default the value is `8`.
|
||||
|
||||
.. image:: users/minimum-password-length.png
|
||||
:align: center
|
||||
:alt: Minimum Password Length highlighted in the Permissions section of General Settings.
|
||||
|
||||
.. _users/reset-password:
|
||||
|
||||
Reset passwords
|
||||
---------------
|
||||
Reset password
|
||||
--------------
|
||||
|
||||
Sometimes, users might wish to reset their personal password for added security, so they are the
|
||||
only ones with access to the password. Odoo offers two different reset options: one initiated by the
|
||||
user to reset the password, and another where the administrator triggers a reset.
|
||||
|
||||
.. _users/reset-password-login:
|
||||
|
||||
Enable password resets from login page
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Enable password reset from login page
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
It is possible to enable password resets directly from the login page.
|
||||
It is possible to enable/disable password resets directly from the login page. This action is
|
||||
completed by the individual user, and this setting is enabled by default.
|
||||
|
||||
To do so, go to :menuselection:`Settings --> Permissions`, activate **Password Reset** and *Save*.
|
||||
To change this setting, go to :menuselection:`Settings app --> Permissions` section, activate
|
||||
:guilabel:`Password Reset`, and then click :guilabel:`Save`.
|
||||
|
||||
.. image:: users/password-reset-login.png
|
||||
:align: center
|
||||
:alt: Enabling Password Reset in Odoo Settings
|
||||
|
||||
On the login page, click :guilabel:`Reset Password` to initiate the password reset process, and have
|
||||
a reset-token sent to the email on file.
|
||||
|
||||
.. image:: users/password-reset.png
|
||||
:align: center
|
||||
:alt: Login screen on Odoo.com with the password reset option highlighted.
|
||||
|
||||
.. _users/reset-password-email:
|
||||
|
||||
Send reset instructions to users
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Send reset instructions
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Go to :menuselection:`Settings --> Users & Companies --> Users`, select the user out of the list and
|
||||
click on *Send Password Reset Instructions* on its user form. An email is automatically sent to
|
||||
them.
|
||||
Go to :menuselection:`Settings app --> Users & Companies --> Users`, select the user from the list,
|
||||
and click on :guilabel:`Send Password Reset Instructions` on the user form. An email is
|
||||
automatically sent to them with password reset instructions.
|
||||
|
||||
.. note::
|
||||
The *Send Password Reset Instructions* button only appears if the Odoo invitation email has
|
||||
already been confirmed by the user.
|
||||
The :guilabel:`Send Password Reset Instructions` button **only** appears if the Odoo invitation
|
||||
email has already been confirmed by the user. Otherwise, a :guilabel:`Re-send Invitation Email`
|
||||
button appears.
|
||||
|
||||
This email contains all the instructions needed to reset the password, along with a link redirecting
|
||||
the user to an Odoo login page.
|
||||
|
||||
.. image:: users/password-email.png
|
||||
:alt: Example of an email with a password reset link for an Odoo account
|
||||
.. image:: users/password-reset-email.png
|
||||
:align: center
|
||||
:alt: Example of an email with a password reset link for an Odoo account.
|
||||
|
||||
.. _users/change-password:
|
||||
|
||||
Change users’ passwords
|
||||
-----------------------
|
||||
Change user password
|
||||
--------------------
|
||||
|
||||
Go to :menuselection:`Settings --> Users & Companies --> Users` and select a user to access its
|
||||
form. Click on the *Action* button and select *Change Password*.
|
||||
Go to :menuselection:`Settings app --> Users & Companies --> Users`, and select a user to access its
|
||||
form. Click on the :guilabel:`⚙️ Actions` icon, and select :guilabel:`Change Password` from, the
|
||||
resulting drop-down menu. Enter a new password in the :guilabel:`New Password` column of the
|
||||
:guilabel:`Change Password` pop-up window that appears, and confirm the change by clicking
|
||||
:guilabel:`Change Password`.
|
||||
|
||||
.. image:: users/change-password.png
|
||||
:alt: Change another user's password on Odoo
|
||||
|
||||
Enter a new password and confirm by clicking on *Change Password*.
|
||||
:align: center
|
||||
:alt: Change a user's password on Odoo.
|
||||
|
||||
.. note::
|
||||
This operation only modifies the password of the users locally and does not affect their odoo.com
|
||||
account. If you want to change the odoo.com password, you can :ref:`send the password reset
|
||||
instructions <users/reset-password-email>`.
|
||||
This operation only modifies the password of the users locally, and does **not** affect their
|
||||
odoo.com account.
|
||||
|
||||
Click on *Change Password* one more time. You are then redirected to an Odoo login page where you
|
||||
can reaccess your database using your new password.
|
||||
If the odoo.com password needs to be changed, use the :ref:`send the password reset instructions
|
||||
<users/reset-password-email>`. Odoo.com passwords grant access to the *My Databases* page, and
|
||||
other portal features.
|
||||
|
||||
After clicking :guilabel:`Change Password`, the page is redirected to an Odoo login page where the
|
||||
database can be re-accessed using the new password.
|
||||
|
||||
.. _users/multi-companies:
|
||||
|
||||
Multi Companies
|
||||
===============
|
||||
|
||||
The *Multi Companies* field allows you to set to which of the multiple companies database you hold
|
||||
the user can have access.
|
||||
The :guilabel:`Multi Companies` field on a user form allows an administrator to provide access to
|
||||
multiple companies for existing users. To configure a multi-company environment for a user, navigate
|
||||
to the desired user by going to: :menuselection:`Settings app --> Users section --> Manage users`.
|
||||
Then, select the user to open their user form, and configure with multi-company access.
|
||||
|
||||
.. note::
|
||||
Note that if not handled correctly, it may be the source of a lot of inconsistent multi-company
|
||||
behaviors. Therefore, a good knowledge of Odoo is required. For technical explanations refer
|
||||
to :doc:`this </developer/howtos/company>` documentation.
|
||||
Under :guilabel:`Multi Companies` in the :guilabel:`Access Rights` tab, set the fields labeled
|
||||
:guilabel:`Allowed Companies` and :guilabel:`Default Company`.
|
||||
|
||||
The :guilabel:`Allowed Companies` field can contain multiple companies. These are the companies the
|
||||
user can access and edit, according to the set access rights. The :guilabel:`Default Company` is the
|
||||
company the user defaults to, upon logging in each time. This field can contain only **one**
|
||||
company.
|
||||
|
||||
.. warning::
|
||||
If multi-company access is not configured correctly, it could lead to inconsistent multi-company
|
||||
behaviors. Because of this, only experienced Odoo users should make access rights changes to
|
||||
users for databases with a multi-company configuration. For technical explanations, refer to the
|
||||
developer documentation on :doc:`../../../developer/howtos/company`.
|
||||
|
||||
.. image:: users/multi-companies.png
|
||||
:height: 300
|
||||
:alt: View of a user’s form emphasizing the multi companies field in Odoo
|
||||
:align: center
|
||||
:alt: View of a user's form emphasizing the multi companies field in Odoo.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`companies`
|
||||
:doc:`companies`
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
@@ -1,67 +1,188 @@
|
||||
=============
|
||||
Access Rights
|
||||
Access rights
|
||||
=============
|
||||
|
||||
Activate the :ref:`developer mode <developer-mode>`, then go to :menuselection:`Settings --> Users &
|
||||
Companies --> Groups`.
|
||||
*Access rights* are permissions that determine the content and applications users can access and
|
||||
edit. In Odoo, these permissions can be set for individual users or for groups of users. Limiting
|
||||
permissions to only those who need them ensures that users do not modify or delete anything they
|
||||
should not have access to.
|
||||
|
||||
Groups
|
||||
======
|
||||
**Only** an *administrator* can change access rights.
|
||||
|
||||
| When choosing the groups the user can have access under
|
||||
:ref:`Access Rights <users/add-individual>`, details of the rules and inheritances of that group
|
||||
are not shown, so this is when the menu *Groups* comes along. *Groups* are created to define rules
|
||||
to models within an application.
|
||||
| Under *Users*, have a list of the current ones. The ones with administrative rights are shown
|
||||
in black.
|
||||
.. danger::
|
||||
Making changes to access rights can have a detrimental impact on the database. This includes
|
||||
*impotent admin*, which means that no user in the database can make changes to the access rights.
|
||||
For this reason, Odoo recommends contacting an Odoo Business Analyst, or our Support Team, before
|
||||
making changes.
|
||||
|
||||
.. image:: access_rights/groups-users.png
|
||||
.. tip::
|
||||
A user **must** have the specific *Administration* access rights set on their user profile, in
|
||||
order to make changes on another user's settings for access rights.
|
||||
|
||||
To access this setting, navigate to :menuselection:`Settings app --> Manage users --> select a
|
||||
user --> Access Rights tab --> Administration section --> Administration field`.
|
||||
|
||||
Once at the setting, an already existing administrator **must** change the setting in the
|
||||
:guilabel:`Administration` field to :guilabel:`Access Rights`.
|
||||
|
||||
Once complete, click :guilabel:`Save` to save the changes, and implement the user as an
|
||||
administrator.
|
||||
|
||||
Users
|
||||
=====
|
||||
|
||||
The access rights for :ref:`individual users <users/add-individual>` are set when the user is added
|
||||
to the database, but they can be adjusted at any point in the user's profile.
|
||||
|
||||
To make changes to a user's rights, click on the desired user to edit their profile.
|
||||
|
||||
.. image:: access_rights/navigate-to-users-menu.png
|
||||
:align: center
|
||||
:alt: View of a group’s form emphasizing the tab users in Odoo
|
||||
:alt: Users menu in the Users & Companies section of the Settings app of Odoo.
|
||||
|
||||
*Inherited* means that users added to this application group are automatically added to the
|
||||
following ones. In the example below, users who have access to the group *Administrator* of *Sales*
|
||||
also have access to *Website/Restricted Editor* and *Sales/User: All Documents*.
|
||||
On the user's profile page, in the :guilabel:`Access Rights` tab, scroll down to view the current
|
||||
permissions.
|
||||
|
||||
.. image:: access_rights/groups-inherited.png
|
||||
For each app, use the drop-down menu to select what level of permission this user should have. The
|
||||
options vary for each section, yet the most common are: :guilabel:`Blank/None`, :guilabel:`User: Own
|
||||
Documents`, :guilabel:`User: All Documents`, or :guilabel:`Administrator`.
|
||||
|
||||
The :guilabel:`Administration` field in the :guilabel:`Access Rights` tab has the following options:
|
||||
:guilabel:`Settings` or :guilabel:`Access Rights`.
|
||||
|
||||
.. image:: access_rights/user-permissions-dropdown-menu.png
|
||||
:align: center
|
||||
:height: 330
|
||||
:alt: View of a group’s form emphasizing the tab inherited in Odoo
|
||||
:alt: The Sales apps drop-down menu to set the user's level of permissions.
|
||||
|
||||
.. _access-rights/groups:
|
||||
|
||||
Create and modify groups
|
||||
========================
|
||||
|
||||
*Groups* are app-specific sets of permissions that are used to manage common access rights for a
|
||||
large amount of users. Administrators can modify the existing groups in Odoo, or create new ones to
|
||||
define rules for models within an application.
|
||||
|
||||
To access groups, first activate Odoo's :ref:`developer mode <developer-mode>`, then go to
|
||||
:menuselection:`Settings app --> Users & Companies --> Groups`.
|
||||
|
||||
.. image:: access_rights/click-users-and-companies.png
|
||||
:align: center
|
||||
:alt: Groups menu in the Users & Companies section of the Settings app of Odoo.
|
||||
|
||||
To create a new group from the :guilabel:`Groups` page, click :guilabel:`Create`. Then, from the
|
||||
blank group form, select an :guilabel:`Application`, and complete the group form (detailed below).
|
||||
|
||||
To modify existing groups, click on an existing group from the list displayed on the
|
||||
:guilabel:`Groups` page, and edit the contents of the form.
|
||||
|
||||
Enter a :guilabel:`Name` for the group and tick the checkbox next to :guilabel:`Share Group`, if
|
||||
this group was created to set access rights for sharing data with some users.
|
||||
|
||||
.. important::
|
||||
Remember to always test the settings being changed in order to ensure that they are being applied
|
||||
to the needed and right users.
|
||||
Always test the settings being changed to ensure they are being applied to the correct users.
|
||||
|
||||
The *Menus* tab is where you define which menus (models) the user can have access to.
|
||||
The group form contains multiple tabs for managing all elements of the group. In each tab, click
|
||||
:guilabel:`Add a line` to add a new row for users or rules, and click the :guilabel:`❌ (remove)`
|
||||
icon to remove a row.
|
||||
|
||||
.. image:: access_rights/groups-menus.png
|
||||
.. image:: access_rights/groups-form.png
|
||||
:align: center
|
||||
:height: 330
|
||||
:alt: View of a group’s form emphasizing the tab menus in Odoo
|
||||
:alt: Tabs in the Groups form to modify the settings of the group.
|
||||
|
||||
*Access Rights* rules are the first level of rights. The field is composed of the object name, which
|
||||
is the technical name given to a model. For each model, enable the following options as appropriate:
|
||||
- :guilabel:`Users` tab: lists the current users in the group. Users listed in black have
|
||||
administrative rights. Users without administrative access appear in blue. Click :guilabel:`Add a
|
||||
line` to add users to this group.
|
||||
- :guilabel:`Inherited` tab: inherited means that users added to this group are automatically added
|
||||
to the groups listed on this tab. Click :guilabel:`Add a line` to add inherited groups.
|
||||
|
||||
- *Read*: the values of that object can be only seen by the user.
|
||||
- *Write*: the values of that object can be edited by the user.
|
||||
- *Create*: values for that object can be created by the user.
|
||||
- *Delete*: the values of that object can be deleted by the user.
|
||||
.. example::
|
||||
For example, if the group *Sales/Administrator* lists the group *Website/Restricted Editor* in
|
||||
its :guilabel:`Inherited` tab, then any users added to the *Sales/Administrator* group
|
||||
automatically receive access to the *Website/Restricted Editor* group, as well.
|
||||
|
||||
.. image:: access_rights/groups-access-rights.png
|
||||
:align: center
|
||||
:alt: View of a group’s form emphasizing the tab access rights in Odoo
|
||||
- :guilabel:`Menus` tab: defines which menus/models the group can have access to. Click
|
||||
:guilabel:`Add a line` to add a specific menu.
|
||||
- :guilabel:`Views` tab: lists which views in Odoo the group has access to. Click :guilabel:`Add a
|
||||
line` to add a view to the group.
|
||||
- :guilabel:`Access Rights` tab: lists the first level of rights (models) that this group has access
|
||||
rights to. Click :guilabel:`Add a line` to link access rights to this group. In this tab, the
|
||||
:guilabel:`Model` column represents the common name of the menu/model, and the :guilabel:`Name`
|
||||
column represents the technical name given to the model. For each model, enable the following
|
||||
options as appropriate:
|
||||
|
||||
| As a second layer of editing and visibility rules, *Record Rules* can be formed. They overwrite,
|
||||
or refine, the *Access Rights*.
|
||||
| A record rule is written using a *Domain*. Domains are conditions used to filter or searching
|
||||
data. Therefore, a domain expression is a list of conditions. For each rule, choose among the
|
||||
following options: *Read*, *Write*, *Create* and *Delete* values.
|
||||
- :guilabel:`Read`: users can see the object's existing values.
|
||||
- :guilabel:`Write`: users can edit the object's existing values.
|
||||
- :guilabel:`Create`: users can create new values for the object.
|
||||
- :guilabel:`Delete`: users can delete values for the object.
|
||||
|
||||
.. image:: access_rights/groups-record-rules.png
|
||||
:align: center
|
||||
:alt: View of a group’s form emphasizing the tab record rules in Odoo
|
||||
.. tip::
|
||||
First try searching for the common name of the model in the drop-down menu of the
|
||||
:guilabel:`Model` column. The :guilabel:`Model` technical name can be found by expanding the
|
||||
model common name, which can be done by clicking the :guilabel:`(external link)` icon.
|
||||
|
||||
The model technical name can also be accessed in :ref:`developer mode <developer-mode>`.
|
||||
|
||||
On a form, navigate to any field, and hover over the field name. A box of backend information
|
||||
reveals itself with the specific Odoo :guilabel:`Object` name in the backend. This is the
|
||||
technical name of the model that should be added.
|
||||
|
||||
.. image:: access_rights/technical-info.png
|
||||
:align: center
|
||||
:alt: Technical information shown on a field of a model, with object highlighted.
|
||||
|
||||
- :guilabel:`Record Rules`: lists the second layer of editing and visibility rights.
|
||||
:guilabel:`Record Rules` overwrite, or refine, the group's access rights. Click :guilabel:`Add a
|
||||
line` to add a record rule to this group. For each rule, choose values for the following options:
|
||||
|
||||
- :guilabel:`Apply for Read`.
|
||||
- :guilabel:`Apply for Write`.
|
||||
- :guilabel:`Apply for Create`.
|
||||
- :guilabel:`Apply for Delete`.
|
||||
|
||||
.. important::
|
||||
Record rules are written using a *domain*, or conditions that filter data. A domain expression
|
||||
is a list of such conditions. For example:
|
||||
|
||||
`[('mrp_production_ids', 'in', user.partner_id.commercial_partner_id.production_ids.ids)]`
|
||||
|
||||
This record rule is to enable MRP consumption warnings for subcontractors.
|
||||
|
||||
Odoo has a library of preconfigured record rules for ease of use. Users without knowledge of
|
||||
domains (and domain expressions) should consult an Odoo Business Analyst, or the Odoo Support
|
||||
Team, before making changes.
|
||||
|
||||
.. _access-rights/superuser:
|
||||
|
||||
Superuser mode
|
||||
==============
|
||||
|
||||
*Superuser mode* allows the user to bypass record rules and access rights. To activate *Superuser
|
||||
mode*, first, activate :ref:`developer mode <developer-mode>`. Then, navigate to the *debug* menu,
|
||||
represented by a :guilabel:`🪲 (bug)` icon, located in the top banner.
|
||||
|
||||
Finally, towards the bottom of the menu, click :guilabel:`Become Superuser`.
|
||||
|
||||
.. important::
|
||||
Making changes in access rights can have a big impact on the database. For this reason, we
|
||||
recommend you to contact your Odoo Business Analyst or our Support Team, unless you have
|
||||
knowledge about Domains in Odoo.
|
||||
Only users with *Settings* access for the *Administration* section of the *Access Rights* (in
|
||||
their user profile) are allowed to log in to *Superuser mode*.
|
||||
|
||||
.. danger::
|
||||
*Superuser mode* allows for circumvention of record rules and access rights, and therefore,
|
||||
should be exercised with extreme caution.
|
||||
|
||||
Upon exiting *Superuser mode*, users may be locked out of the database, due to changes that were
|
||||
made. This can cause *impotent admin*, or an administrator without the ability to change access
|
||||
rights/settings.
|
||||
|
||||
In this case contact Odoo Support here: `new help ticket <https://www.odoo.com/help>`_. The
|
||||
support team is able to restore access using a support login.
|
||||
|
||||
To leave *Superuser mode*, log out of the account, by navigating to the upper-right corner, and
|
||||
clicking on the :guilabel:`OdooBot` username. Then, select the :guilabel:`Log out` option.
|
||||
|
||||
.. tip::
|
||||
An alternative way to activate *Superuser mode* is to login as a superuser. To do that, navigate
|
||||
to the login screen, and enter the appropriate :guilabel:`Email` and :guilabel:`Password`.
|
||||
|
||||
Instead of clicking :guilabel:`Login`, click :guilabel:`Log in as superuser`.
|
||||
|
||||
|
After Width: | Height: | Size: 9.5 KiB |
|
Before Width: | Height: | Size: 46 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 40 KiB |