[MOV] documentation structure reorganization
This commit aims to improve the documentation's navigability by redefining some categories' purposes and titles. There is a redirection rule for each documentation page moved. This ensures that users won't have a 404 error message. task-3217827 closes odoo/documentation#8063 Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
@@ -45,8 +45,7 @@ Upgrade apps and modules
|
||||
========================
|
||||
|
||||
On some occasions, new improvements or app features are added to :doc:`supported versions of Odoo
|
||||
</administration/maintain/supported_versions>`. To be able to use them, you must **upgrade** your
|
||||
app.
|
||||
</administration/supported_versions>`. To be able to use them, you must **upgrade** your app.
|
||||
|
||||
Go to :menuselection:`Apps`, click on the *dropdown menu* of the app you want to upgrade, then on
|
||||
*Upgrade*.
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
:nosearch:
|
||||
|
||||
==============
|
||||
Authentication
|
||||
==============
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
auth/google
|
||||
auth/azure
|
||||
auth/ldap
|
||||
auth/2fa
|
||||
@@ -1,3 +1,5 @@
|
||||
:show-content:
|
||||
|
||||
=========
|
||||
Companies
|
||||
=========
|
||||
@@ -52,7 +54,7 @@ company only. To do so, on their forms, choose between:
|
||||
Employees' access
|
||||
=================
|
||||
|
||||
Once companies are created, manage your employees' :doc:`Access Rights <access_rights>`
|
||||
Once companies are created, manage your employees' :doc:`Access Rights <users/access_rights>`
|
||||
for *Multi Companies*.
|
||||
|
||||
.. image:: companies/access_rights_multi_companies.png
|
||||
@@ -86,12 +88,12 @@ Inter-Company Transactions
|
||||
|
||||
First, make sure each one of your companies is properly set in relation to:
|
||||
|
||||
- :doc:`Chart of Accounts <../../finance/accounting/get_started/chart_of_accounts>`
|
||||
- :doc:`Taxes <../../finance/accounting/taxes>`
|
||||
- :doc:`Fiscal Positions <../../finance/accounting/taxes/fiscal_positions>`
|
||||
- :doc:`Journals <../../finance/accounting/bank>`
|
||||
- :doc:`Fiscal Localizations <../../finance/fiscal_localizations>`
|
||||
- :doc:`Pricelists <../../sales/sales/products_prices/prices/pricing>`
|
||||
- :doc:`Chart of Accounts <../finance/accounting/get_started/chart_of_accounts>`
|
||||
- :doc:`Taxes <../finance/accounting/taxes>`
|
||||
- :doc:`Fiscal Positions <../finance/accounting/taxes/fiscal_positions>`
|
||||
- :doc:`Journals <../finance/accounting/bank>`
|
||||
- :doc:`Fiscal Localizations <../finance/fiscal_localizations>`
|
||||
- :doc:`Pricelists <../sales/sales/products_prices/prices/pricing>`
|
||||
|
||||
Now, activate the *Inter-Company Transactions* option under *Settings*. With the respective company
|
||||
*activated* and *selected*, choose if you would like operations between companies to be synchronized
|
||||
@@ -131,4 +133,10 @@ at an invoice/bills level or at a sales/purchase orders level.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`Multi-company Guidelines </developer/howtos/company>`
|
||||
- :doc:`../../finance/accounting/get_started/multi_currency`
|
||||
- :doc:`../finance/accounting/get_started/multi_currency`
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
companies/digest_emails
|
||||
companies/email_template
|
||||
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 42 KiB |
@@ -255,7 +255,7 @@ parameter used to generate all the links.
|
||||
This is a known limitation.
|
||||
|
||||
For more information about how to configure domains, check out the :doc:`domain name documentation
|
||||
</administration/maintain/domain_names>`.
|
||||
</applications/websites/website/configuration/domain_names>`.
|
||||
|
||||
Updating translations within email templates
|
||||
--------------------------------------------
|
||||
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 68 KiB |
@@ -1,7 +1,7 @@
|
||||
:nosearch:
|
||||
|
||||
===================
|
||||
Email Communication
|
||||
Email communication
|
||||
===================
|
||||
|
||||
.. toctree::
|
||||
@@ -9,5 +9,7 @@ Email Communication
|
||||
|
||||
email_communication/email_servers
|
||||
email_communication/email_domain
|
||||
email_communication/email_template
|
||||
email_communication/azure_oauth
|
||||
email_communication/google_oauth
|
||||
email_communication/mailjet_api
|
||||
email_communication/faq
|
||||
|
||||
@@ -0,0 +1,293 @@
|
||||
=======================================================
|
||||
Connect Microsoft Outlook 365 to Odoo using Azure OAuth
|
||||
=======================================================
|
||||
|
||||
Odoo is compatible with Microsoft's Azure OAuth for Microsoft 365. In order to send and receive
|
||||
secure emails from a custom domain, all that is required is to configure a few settings on the
|
||||
Azure platform and on the back end of the Odoo database. This configuration works with either a
|
||||
personal email address or an address created by a custom domain.
|
||||
|
||||
.. seealso::
|
||||
`Microsoft Learn: Register an application with the Microsoft identity platform
|
||||
<https://learn.microsoft.com/azure/active-directory/develop/quickstart-register-app>`_
|
||||
|
||||
.. seealso::
|
||||
- :doc:`/applications/general/users/azure`
|
||||
- :doc:`/applications/productivity/calendar/outlook`
|
||||
|
||||
Setup in Microsoft Azure Portal
|
||||
===============================
|
||||
|
||||
Create a new application
|
||||
------------------------
|
||||
|
||||
To get started, go to `Microsoft's Azure Portal <https://portal.azure.com/>`_. Log in with the
|
||||
:guilabel:`Microsoft Outlook Office 365` account if there is one, otherwise log in with the
|
||||
personal :guilabel:`Microsoft account`. A user with administrative access to the Azure Settings
|
||||
will need to connect and perform the following configuration. Next, navigate to the section
|
||||
labeled :guilabel:`Manage Microsoft Entra ID` (formally *Azure Active Directory*).
|
||||
|
||||
Now, click on :guilabel:`Add (+)`, located in the top menu, and then select :guilabel:`App
|
||||
registration`. On the :guilabel:`Register an application` screen, rename the :guilabel:`Name` to
|
||||
`Odoo` or something recognizable. Under the :guilabel:`Supported account types` section select
|
||||
:guilabel:`Accounts in any organizational directory (Any Microsoft Entra ID directory - Multitenant)
|
||||
and personal Microsoft accounts (e.g. Skype, Xbox)`.
|
||||
|
||||
Under the :guilabel:`Redirect URL` section, select :guilabel:`Web` as the platform, and then input
|
||||
`https://<odoo base url>/microsoft_outlook/confirm` in the :guilabel:`URL` field. The Odoo base URL
|
||||
is the canonical domain at which your Odoo instance can be reached in the URL field.
|
||||
|
||||
.. example::
|
||||
*mydatabase.odoo.com*, where *mydatabase* is the actual prefix of the database's subdomain,
|
||||
assuming it's hosted on Odoo.com
|
||||
|
||||
After the URL has been added to the field, :guilabel:`Register` the application so it is created.
|
||||
|
||||
API permissions
|
||||
---------------
|
||||
|
||||
The :guilabel:`API permissions` should be set next. Odoo will need specific API permissions to be
|
||||
able to read (IMAP) and send (SMTP) emails in the Microsoft 365 setup. First, click the
|
||||
:guilabel:`API permissions` link, located in the left menu bar. Next, click on the :guilabel:`(+)
|
||||
Add a Permission` button and select :guilabel:`Microsoft Graph` under :guilabel:`Commonly Used
|
||||
Microsoft APIs`. After, select the :guilabel:`Delegated Permissions` option.
|
||||
|
||||
In the search bar, search for the following :guilabel:`Delegated permissions` and click
|
||||
:guilabel:`Add permissions` for each one:
|
||||
|
||||
- :guilabel:`SMTP.Send`
|
||||
- :guilabel:`IMAP.AccessAsUser.All`
|
||||
|
||||
.. note::
|
||||
The :guilabel:`User.Read` permission will be added by default.
|
||||
|
||||
.. image:: azure_oauth/permissions.png
|
||||
:align: center
|
||||
:alt: API permissions needed for Odoo integration are listed under the Microsoft Graph.
|
||||
|
||||
Assign users and groups
|
||||
=======================
|
||||
|
||||
After adding the API permissions, navigate back to the :guilabel:`Overview` of the
|
||||
:guilabel:`Application` in the top of the left sidebar menu.
|
||||
|
||||
Now, add users to this application. Under the :guilabel:`Essentials` overview table, click on the
|
||||
link labeled :guilabel:`Managed Application in Local Directory`, or the last option on the bottom
|
||||
right-hand side of the table.
|
||||
|
||||
.. image:: azure_oauth/managed-application.png
|
||||
:align: center
|
||||
:alt: Add users/groups by clicking the Managed application in local directory link for the
|
||||
created application.
|
||||
|
||||
In the left sidebar menu, select :guilabel:`Users and Groups`. Next, click on :guilabel:`(+) Add
|
||||
User/Group`. Depending on the account, either a :guilabel:`Group` and a :guilabel:`User` can be
|
||||
added, or only :guilabel:`Users`. Personal accounts will only allow for :guilabel:`Users` to be
|
||||
added.
|
||||
|
||||
Under :guilabel:`Users` or :guilabel:`Groups`, click on :guilabel:`None Selected` and add the users
|
||||
or group of users that will be sending emails from the :guilabel:`Microsoft account` in Odoo.
|
||||
:guilabel:`Add` the users/groups, click :guilabel:`Select`, and then :guilabel:`Assign` them to the
|
||||
application.
|
||||
|
||||
Create credentials
|
||||
------------------
|
||||
|
||||
Now that the Microsoft Azure app is set up, credentials need to be created for the Odoo setup.
|
||||
These include the :guilabel:`Client ID` and :guilabel:`Client Secret`. To start, the
|
||||
:guilabel:`Client ID` can be copied from the :guilabel:`Overview` page of the app. The
|
||||
:guilabel:`Client ID` or :guilabel:`Application ID` is located under the :guilabel:`Display Name`
|
||||
in the :guilabel:`Essentials` overview of the app.
|
||||
|
||||
.. image:: azure_oauth/application-id.png
|
||||
:align: center
|
||||
:alt: Application/Client ID located in the Overview of the app.
|
||||
|
||||
Next, the :guilabel:`Client Secret Value` needs to be retrieved. To get this value, click on
|
||||
:guilabel:`Certificates & Secrets` in the left sidebar menu. Then, a :guilabel:`Client Secret`
|
||||
needs to be produced. In order to do this, click on the :guilabel:`(+) New Client Secret` button.
|
||||
|
||||
A window on the right will populate with a button labeled :guilabel:`Add a client secret`. Under
|
||||
:guilabel:`Description`, type in `Odoo Fetchmail` or something recognizable, and then set the
|
||||
:guilabel:`expiration date`.
|
||||
|
||||
.. important::
|
||||
A new :guilabel:`Client Secret` will need to be produced and configured if the first one
|
||||
expires. In this event, there could be an interruption of service, so the expiration date should
|
||||
be noted and set to the furthest possible date.
|
||||
|
||||
Next, click on :guilabel:`Add` when these two values are entered. A :guilabel:`Client Secret Value`
|
||||
and :guilabel:`Secret ID` will be created. It is important to copy the :guilabel:`Value` or
|
||||
:guilabel:`Client Secret Value` into a notepad as it will become encrypted after leaving this page.
|
||||
The :guilabel:`Secret ID` is not needed.
|
||||
|
||||
.. image:: azure_oauth/secretvalue.png
|
||||
:align: center
|
||||
:alt: Client Secret Value or Value in the app's credentials.
|
||||
|
||||
After these steps, the following items should be ready to be set up in Odoo:
|
||||
|
||||
- A client ID (:guilabel:`Client ID` or :guilabel:`Application ID`)
|
||||
- A client secret (:guilabel:`Value` or :guilabel:`Client Secret Value`)
|
||||
|
||||
This completes the setup on the :guilabel:`Microsoft Azure Portal` side.
|
||||
|
||||
Setup in Odoo
|
||||
=============
|
||||
|
||||
Enter Microsoft Outlook credentials
|
||||
-----------------------------------
|
||||
|
||||
First, open the Odoo database and navigate to the :guilabel:`Apps` module. Then, remove the
|
||||
:guilabel:`Apps` filter from the search bar and type in `Outlook`. After that, install the module
|
||||
called :guilabel:`Microsoft Outlook`.
|
||||
|
||||
Next, navigate to :menuselection:`Settings --> General Settings`, and under the :guilabel:`Discuss`
|
||||
section, ensure that the checkbox for :guilabel:`Custom Email Servers` is checked. This populates
|
||||
a new option for :guilabel:`Outlook Credentials`.
|
||||
|
||||
:guilabel:`Save` the progress.
|
||||
|
||||
Then, copy and paste the :guilabel:`Client ID` (Application ID) and :guilabel:`Client Secret
|
||||
(Client Secret Value)` into the respective fields and :guilabel:`Save` the settings.
|
||||
|
||||
.. image:: azure_oauth/outlookcreds.png
|
||||
:align: center
|
||||
:alt: Outlook Credentials in Odoo General Settings.
|
||||
|
||||
Configure outgoing email server
|
||||
-------------------------------
|
||||
|
||||
On the :guilabel:`General Settings` page, under the :guilabel:`Custom Email Servers` setting,
|
||||
click the :guilabel:`Outgoing Email Servers` link to configure the Microsoft account.
|
||||
|
||||
Then, create a new email server and check the box for :guilabel:`Outlook`. Next, fill in the
|
||||
:guilabel:`Name` (it can be anything) and the Microsoft Outlook email :guilabel:`Username`.
|
||||
|
||||
If the :guilabel:`From Filter` field is empty, enter either a :ref:`domain or email address
|
||||
<email_communication/default>`.
|
||||
|
||||
Then, click on :guilabel:`Connect your Outlook account`.
|
||||
|
||||
A new window from Microsoft opens to complete the :guilabel:`authorization process`. Select the
|
||||
appropriate email address that is being configured in Odoo.
|
||||
|
||||
.. image:: azure_oauth/verify-outlook.png
|
||||
:align: center
|
||||
:alt: Permission page to grant access between newly created app and Odoo.
|
||||
|
||||
Then, allow Odoo to access the Microsoft account by clicking on :guilabel:`Yes`. After this, the
|
||||
page will navigate back to the newly configured :guilabel:`Outgoing Mail Server` in Odoo. The
|
||||
configuration automatically loads the :guilabel:`token` in Odoo, and a tag stating
|
||||
:guilabel:`Outlook Token Valid` appears in green.
|
||||
|
||||
.. image:: azure_oauth/outlook-token.png
|
||||
:align: center
|
||||
:alt: Valid Outlook Token indicator.
|
||||
|
||||
Finally, click :guilabel:`Test Connection`. A confirmation message should appear. The Odoo database
|
||||
can now send safe, secure emails through Microsoft Outlook using OAuth authentication.
|
||||
|
||||
.. _azure_oauth/notifications:
|
||||
|
||||
Configuration with a single outgoing mail server
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Configuring a single outgoing server is the simplest configuration available for Microsoft Azure
|
||||
and it doesn't require extensive access rights for the users in the database.
|
||||
|
||||
A generic email address would be used to send emails for all users within the database. For example
|
||||
it could be structured with a `notifications` alias (`notifications@example.com`) or `contact` alias
|
||||
(`contact@example.com`). This address must be set as the :guilabel:`FROM Filtering` on the server.
|
||||
This address must also match the `{mail.default.from}@{mail.catchall.domain}` key combination in the
|
||||
system parameters.
|
||||
|
||||
.. seealso::
|
||||
For more information on the from filter visit: :ref:`email_communication/default`.
|
||||
|
||||
.. note::
|
||||
The :guilabel:`System Parameters` can be accessed by activating :ref:`developer-mode` in the
|
||||
:menuselection:`Settings --> Technical --> Parameters --> System Parameters` menu.
|
||||
|
||||
When using this configuration, every email that is sent from the database will use the address of
|
||||
the configured `notification` mailbox. However it should be noted that the name of the sender will
|
||||
appear but their email address will change:
|
||||
|
||||
.. image:: azure_oauth/from-name-remain.png
|
||||
:align: center
|
||||
:alt: Name from real sender with static email.
|
||||
|
||||
.. example::
|
||||
Single outgoing mail server configuration:
|
||||
|
||||
- Outgoing mail server **username** (login) = `notifications@example.com`
|
||||
- Outgoing mail server :guilabel:`FROM Filtering` = `notifications@example.com`
|
||||
- `mail.catchall.domain` in system parameters = `example.com`
|
||||
- `mail.default.from` in system parameters = `notifications`
|
||||
|
||||
User-specific (multiple user) configuration
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
In addition to a generic email server, individual email servers can be set up for users in a
|
||||
database. These email addresses must be set as the :guilabel:`FROM Filtering` on each individual
|
||||
server for this configuration to work.
|
||||
|
||||
This configuration is the more difficult of the two Microsoft Azure configurations, in that it
|
||||
requires all users configured with email servers to have access rights to settings in order to
|
||||
establish a connection to the email server.
|
||||
|
||||
Setup
|
||||
*****
|
||||
|
||||
Each user should have a separate email server set up. The :guilabel:`FROM Filtering` should be set
|
||||
so that only the user's email is sent from that server. In other words, only a user with an email
|
||||
address that matches the set :guilabel:`FROM Filtering` is able to use this server.
|
||||
|
||||
.. seealso::
|
||||
For more information on the from filter visit: :ref:`email_communication/default`.
|
||||
|
||||
A :ref:`fallback server <azure_oauth/notifications>` must be setup to allow for the sending of
|
||||
:guilabel:`notifications`. The :guilabel:`FROM Filtering` for this server should have the value of
|
||||
the `{mail.default.from}@{mail.catchall.domain}`.
|
||||
|
||||
.. note::
|
||||
The :guilabel:`System Parameters` can be accessed by activating :ref:`developer-mode` in the
|
||||
:menuselection:`Settings --> Technical --> Parameters --> System Parameters` menu.
|
||||
|
||||
.. important::
|
||||
The configuration for this transactional email server can work alongside an outgoing mass-mailing
|
||||
email server. The :guilabel:`FROM Filtering` for the mass-mailing email server can remain empty,
|
||||
but it's require to be added in the settings of the *Email Marketing* application.
|
||||
|
||||
.. seealso::
|
||||
For more information on setting the mass-mailing email server visit
|
||||
:ref:`email_communication/mass_mails`.
|
||||
|
||||
.. example::
|
||||
Multiple user outgoing mail server configuration:
|
||||
|
||||
- User #1 mailbox
|
||||
- Outgoing mail server #1 **username** (login) = `john@example.com`
|
||||
- Outgoing mail server #1 :guilabel:`FROM Filtering` = `john@example.com`
|
||||
- User #2 mailbox
|
||||
- Outgoing mail server #2 **username** (login) = `jane@example.com`
|
||||
- Outgoing mail server #2 :guilabel:`FROM Filtering` = `jane@example.com`
|
||||
- Notifications mailbox
|
||||
- Outgoing mail server #3 **username** (login) = `notifications@example.com`
|
||||
- Outgoing mail server #3 :guilabel:`FROM Filtering` = `notifications@example.com`
|
||||
- System Parameters
|
||||
- `mail.catchall.domain` in system parameters = `example.com`
|
||||
- `mail.default.from` in system parameters = `notifications`
|
||||
|
||||
Configure incoming email server
|
||||
-------------------------------
|
||||
|
||||
The incoming account should be configured in a similar way to the outgoing email account. Navigate
|
||||
to the :guilabel:`Incoming Mail Servers` in the :guilabel:`Technical Menu` and :guilabel:`Create` a
|
||||
new configuration. Check or Select the button next to :guilabel:`Outlook Oauth Authentication` and
|
||||
enter the :guilabel:`Microsoft Outlook username`. Click on :guilabel:`Connect your Outlook
|
||||
account`. Odoo will state: :guilabel:`Outlook Token Valid` Now :guilabel:`Test and Confirm` the
|
||||
account. The account should be ready to receive email to the Odoo database.
|
||||
|
||||
.. seealso::
|
||||
:doc:`email_servers`
|
||||
|
After Width: | Height: | Size: 54 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 47 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 64 KiB |
@@ -65,8 +65,8 @@ record in Odoo. Reference the SMTP data of the external email server. Once all t
|
||||
been filled out, click :guilabel:`Test Connection`.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`/administration/maintain/google_oauth`
|
||||
- :doc:`/administration/maintain/azure_oauth`
|
||||
- :doc:`google_oauth`
|
||||
- :doc:`azure_oauth`
|
||||
|
||||
.. note::
|
||||
Ensuring the outgoing domain has :abbr:`SPF (Sender Policy Framework)`, :abbr:`DKIM (DomainKeys
|
||||
@@ -178,7 +178,7 @@ Set up different dedicated servers for transactional and mass emails
|
||||
|
||||
In Odoo a separate email server can be used for transactional emails and mass
|
||||
mailings. Example: Use Postmark or SendinBlue for transactional emails, and Amazon SES, Mailgun,
|
||||
Sendgrid or :doc:`Mailjet </administration/maintain/mailjet_api>` for mass mailings.
|
||||
Sendgrid or :doc:`Mailjet <mailjet_api>` for mass mailings.
|
||||
|
||||
.. important::
|
||||
A default outgoing email server is already configured. Do not create an alternative one unless a
|
||||
|
||||
@@ -0,0 +1,219 @@
|
||||
========================================
|
||||
Connect Gmail to Odoo using Google OAuth
|
||||
========================================
|
||||
|
||||
Odoo is compatible with Google's OAuth for Gmail. In order to send secure emails from a custom
|
||||
domain, all that is required is to configure a few settings on Google's *Workspace* platform, as
|
||||
well as on the back end of the Odoo database. This configuration works by using either a personal
|
||||
email address or an address created by a custom domain.
|
||||
|
||||
.. tip::
|
||||
For more information, visit `Google's documentation
|
||||
<https://support.google.com/cloud/answer/6158849>`_ on setting up OAuth.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`/applications/general/users/google`
|
||||
- :doc:`/applications/productivity/calendar/google`
|
||||
|
||||
Setup in Google
|
||||
===============
|
||||
|
||||
Create a new project
|
||||
--------------------
|
||||
|
||||
To get started, go to the `Google API Console <https://console.developers.google.com>`_. Log in
|
||||
with your *Google Workspace* account if you have one, otherwise log in with your personal Gmail
|
||||
account (this should match the email address you want to configure in Odoo).
|
||||
|
||||
After that, click on :guilabel:`Create Project`, located on the far right of the :guilabel:`OAuth
|
||||
consent screen`. If a project has already been created in this account, then the :guilabel:`New
|
||||
Project` option will be located on the top right under the :guilabel:`Select a project` drop-down
|
||||
menu.
|
||||
|
||||
On the :menuselection:`New Project` screen, rename the :guilabel:`Project name` to `Odoo` and
|
||||
browse for the :guilabel:`Location`. Set the :guilabel:`Location` as the *Google Workspace
|
||||
organization*. If you are using a personal Gmail account, then leave the :guilabel:`Location` as
|
||||
:guilabel:`No Organization`.
|
||||
|
||||
.. image:: google_oauth/new-project.png
|
||||
:align: center
|
||||
:alt: Project Name and Location for Google OAuth.
|
||||
|
||||
Click on :guilabel:`Create` to finish this step.
|
||||
|
||||
OAuth consent screen
|
||||
--------------------
|
||||
|
||||
If the page doesn't redirect to the :menuselection:`User Type` options, click on :guilabel:`OAuth
|
||||
consent screen` in the left menu.
|
||||
|
||||
Under :guilabel:`User Type` options, select the appropriate :guilabel:`User Type`, and then click on
|
||||
:guilabel:`Create` again, which will finally navigate to the :menuselection:`Edit app registration`
|
||||
page.
|
||||
|
||||
.. warning::
|
||||
*Personal* Gmail Accounts are only allowed to be **External** User Type, which means Google may
|
||||
require an approval, or for *Scopes* to be added on. However, using a *Google WorkSpace* account
|
||||
allows for **Internal** User Type to be used.
|
||||
|
||||
Note, as well, that while the API connection is in the *External* testing mode, then no approval is
|
||||
necessary from Google. User limits in this testing mode is set to 100 users.
|
||||
|
||||
Edit app registration
|
||||
---------------------
|
||||
|
||||
Next we will configure the app registration of the project.
|
||||
|
||||
On the :guilabel:`OAuth consent screen` step, under the :guilabel:`App information` section, enter
|
||||
`Odoo` in the :guilabel:`App name` field. Select the organization's email address under the
|
||||
:guilabel:`User support` email field.
|
||||
|
||||
Next, under :menuselection:`App Domain --> Authorized domains`, click on :guilabel:`Add Domain` and
|
||||
enter `odoo.com`.
|
||||
|
||||
After that, under the :guilabel:`Developer contact information` section, enter the organization's
|
||||
email address. Google uses this email address to notify the organization about any changes to your
|
||||
project.
|
||||
|
||||
Next, click on the :guilabel:`Save and Continue` button. Then, skip the :menuselection:`Scopes` page
|
||||
by scrolling to the bottom and clicking on :guilabel:`Save and Continue`.
|
||||
|
||||
If continuing in testing mode (External), add the email addresses being configured under the
|
||||
:guilabel:`Test users` step, by clicking on :guilabel:`Add Users`, and then the :guilabel:`Save and
|
||||
Continue` button. A summary of the app registration appears.
|
||||
|
||||
Finally, scroll to the bottom and click on :guilabel:`Back to Dashboard` to finish setting up the
|
||||
project.
|
||||
|
||||
Create Credentials
|
||||
------------------
|
||||
|
||||
Now that the project is set up, credentials should be created, which includes the *Client ID* and
|
||||
*Client Secret*. First, click on :guilabel:`Credentials` in the left sidebar menu.
|
||||
|
||||
Then, click on :guilabel:`Create Credentials` in the top menu and select :guilabel:`OAuth client ID`
|
||||
from the dropdown menu.
|
||||
|
||||
- Under :guilabel:`Application Type`, select :guilabel:`Web Application` from the dropdown menu.
|
||||
- In the :guilabel:`Name` field, enter `Odoo`.
|
||||
- Under the :guilabel:`Authorized redirect URIs` label, click the button :guilabel:`ADD URI`, and
|
||||
then input `https://yourdbname.odoo.com/google_gmail/confirm` in the :guilabel:`URIs 1` field.
|
||||
Be sure to replace the *yourdbname* part of the URL with the actual Odoo database name.
|
||||
- Next, click on :guilabel:`Create` to generate an OAuth :guilabel:`Client ID` and :guilabel:`Client
|
||||
Secret`. Finally, copy each generated value for later use when configuring in Odoo, and then
|
||||
navigate to the Odoo database.
|
||||
|
||||
.. image:: google_oauth/client-credentials.png
|
||||
:align: center
|
||||
:alt: Client ID and Client Secret for Google OAuth.
|
||||
|
||||
Setup in Odoo
|
||||
=============
|
||||
|
||||
Enter Google Credentials
|
||||
------------------------
|
||||
|
||||
First, open Odoo and navigate to the :guilabel:`Apps` module. Then, remove the :guilabel:`Apps`
|
||||
filter from the search bar and type in `Google`. Install the module called :guilabel:`Google
|
||||
Gmail`.
|
||||
|
||||
Next, navigate to :menuselection:`Settings --> General Settings`, and under the :guilabel:`Discuss`
|
||||
section, ensure that the checkbox for :guilabel:`Custom Email Servers` or :guilabel:`External Email
|
||||
Servers` is checked. This populates a new option for :guilabel:`Gmail Credentials` or :guilabel:`Use
|
||||
a Gmail Sever`. Then, copy and paste the respective values into the :guilabel:`Client ID` and
|
||||
:guilabel:`Client Secret` fields and :guilabel:`Save` the settings.
|
||||
|
||||
Configure outgoing email server
|
||||
-------------------------------
|
||||
|
||||
To configure the external Gmail account, return to the top of the :guilabel:`Custom Email Servers`
|
||||
setting and then click the :guilabel:`Outgoing Email Servers` link.
|
||||
|
||||
.. image:: google_oauth/outgoing-servers.png
|
||||
:align: center
|
||||
:alt: Configure Outgoing Email Servers in Odoo.
|
||||
|
||||
Then, click on :guilabel:`New` or :guilabel:`Create` to create a new email server, and fill in the
|
||||
:guilabel:`Name`, :guilabel:`Description`, and the email :guilabel:`Username` (if required).
|
||||
|
||||
Next, click on :guilabel:`Gmail OAuth Authentication` or :guilabel:`Gmail` (under the
|
||||
:guilabel:`Authenticate with` or :guilabel:`Connection` section). Finally, click on
|
||||
:guilabel:`Connect your Gmail Account`.
|
||||
|
||||
A new window labeled :guilabel:`Google` opens to complete the authorization process. Select the
|
||||
appropriate email address that is being configured in Odoo.
|
||||
|
||||
If the email address is a personal account, then an extra step pops up, so click
|
||||
:guilabel:`Continue` to allow the verification and connect the Gmail account to Odoo.
|
||||
|
||||
Then, allow Odoo to access the Google account by clicking on :guilabel:`Continue` or
|
||||
:guilabel:`Allow`. After that, the page navigates back to the newly configured outgoing email
|
||||
server in Odoo. The configuration automatically loads the token in Odoo, and a tag stating
|
||||
:guilabel:`Gmail Token Valid` appears in green.
|
||||
|
||||
.. image:: google_oauth/green-token.png
|
||||
:align: center
|
||||
:alt: Configure Outgoing Email Servers in Odoo.
|
||||
|
||||
Finally, :guilabel:`Test the Connection`. A confirmation message should appear. The Odoo database
|
||||
can now send safe, secure emails through Google using OAuth authentication.
|
||||
|
||||
Google OAuth FAQ
|
||||
================
|
||||
|
||||
Production VS Testing Publishing Status
|
||||
---------------------------------------
|
||||
|
||||
Choosing :guilabel:`Production` as the :guilabel:`Publishing Status` (instead of
|
||||
:guilabel:`Testing`) will display the following warning message:
|
||||
|
||||
.. image:: google_oauth/published-status.png
|
||||
:align: center
|
||||
:alt: OAuth is Limited to 100 Sensitive Scope Logins.
|
||||
|
||||
To correct this warning, navigate to the `Google API Platform
|
||||
<https://console.cloud.google.com/apis/credentials/consent>`_. If the :guilabel:`Publishing status`
|
||||
is :guilabel:`In Production`, click :guilabel:`Back to Testing` to correct the issue.
|
||||
|
||||
No Test Users Added
|
||||
-------------------
|
||||
|
||||
If no test users are added to the OAuth consent screen, then a 403 access denied error will
|
||||
populate.
|
||||
|
||||
.. image:: google_oauth/403-error.png
|
||||
:align: center
|
||||
:alt: 403 Access Denied Error.
|
||||
|
||||
To correct this error, return to the :guilabel:`OAuth consent screen` under :guilabel:`APIs &
|
||||
Services` and add test user(s) to the app. Add the email that you are configuring in Odoo.
|
||||
|
||||
Gmail Module not updated
|
||||
------------------------
|
||||
|
||||
If the *Google Gmail* module in Odoo has not been updated to the latest version, then a
|
||||
:guilabel:`Forbidden` error message populates.
|
||||
|
||||
.. image:: google_oauth/forbidden-error.png
|
||||
:align: center
|
||||
:alt: Forbidden you don't have the permission to access the requested resource.
|
||||
|
||||
To correct this error, go to the :menuselection:`Apps` module and clear out the search terms. Then,
|
||||
search for `Gmail` or `Google` and upgrade the :guilabel:`Google Gmail` module. Finally, click
|
||||
on the three dots on the upper right of the module and select :guilabel:`Upgrade`.
|
||||
|
||||
Application Type
|
||||
----------------
|
||||
|
||||
When creating the credentials (OAuth *Client ID* and *Client Secret*), if :guilabel:`Desktop App` is
|
||||
selected for the :guilabel:`Application Type`, an :guilabel:`Authorization Error` appears.
|
||||
|
||||
.. image:: google_oauth/error-400.png
|
||||
:align: center
|
||||
:alt: Error 400 Redirect URI Mismatch.
|
||||
|
||||
To correct this error, delete the credentials already created and create new credentials, selecting
|
||||
:guilabel:`Web Application` for the :guilabel:`Application Type`. Then, under :guilabel:`Authorized
|
||||
redirect URIs`, click :guilabel:`ADD URI` and type:
|
||||
`https://yourdbname.odoo.com/google_gmail/confirm` in the field, being sure to replace *yourdbname*
|
||||
in the URL with the Odoo database name.
|
||||
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 9.8 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 6.1 KiB |
@@ -0,0 +1,217 @@
|
||||
===========
|
||||
Mailjet API
|
||||
===========
|
||||
|
||||
Odoo is compatible with Mailjet's :abbr:`API (Application Programming Interface)` for mass mailing.
|
||||
Set up a dedicated mass mailing server through Mailjet by configuring settings in the Mailjet
|
||||
account and the Odoo database. In some circumstances, settings need to be configured on the custom
|
||||
domain's :abbr:`DNS (Domain Name System)` settings as well.
|
||||
|
||||
Set up in Mailjet
|
||||
=================
|
||||
|
||||
Create API credentials
|
||||
----------------------
|
||||
|
||||
To get started, sign in to the `Mailjet Account Information <https://app.mailjet.com/account>`_
|
||||
page. Next, navigate to the :guilabel:`Senders & Domains` section and click on :guilabel:`SMTP and
|
||||
SEND API Settings`.
|
||||
|
||||
.. image:: mailjet_api/api-settings.png
|
||||
:align: center
|
||||
:alt: SMTP and Send API Settings link in the Senders & Domains section of Mailjet.
|
||||
|
||||
Then, copy the :abbr:`SMTP (Simple Mail Transfer Protocol)` configuration settings onto a notepad.
|
||||
They can be found under the :guilabel:`Configuration (SMTP only)` section. The :abbr:`SMTP (Simple
|
||||
Mail Transfer Protocol)` configuration settings include the server address, the security option
|
||||
needed (Use :abbr:`SSL (Secure Sockets Layer)`/:abbr:`TLS (Transport Layer Security)`), and the
|
||||
port number. The settings are needed to configure Mailjet in Odoo, which is covered in the
|
||||
:ref:`last section <maintain/mailjet-api/odoo-setup>`.
|
||||
|
||||
.. seealso::
|
||||
`Mailjet: How can I configure my SMTP parameters?
|
||||
<https://documentation.mailjet.com/hc/articles/360043229473>`_
|
||||
|
||||
.. important::
|
||||
Odoo blocks `port 25` on Odoo Online and Odoo.sh databases. :ref:`See reference here
|
||||
<email_servers/restriction>`.
|
||||
|
||||
.. image:: mailjet_api/smtp-config.png
|
||||
:align: center
|
||||
:alt: SMTP configuration from Mailjet.
|
||||
|
||||
Next, click on the button labeled :guilabel:`Retrieve your API credentials` to retrieve the Mailjet
|
||||
API credentials.
|
||||
|
||||
Then, click on the eye icon to reveal the :guilabel:`API key`. Copy this key to a notepad, as this
|
||||
serves as the :guilabel:`Username` in the Odoo configuration. Next, click on the
|
||||
:guilabel:`Generate Secret Key` button to generate the :guilabel:`Secret Key`. Copy this key to a
|
||||
notepad, as this serves as the :guilabel:`Password` in the Odoo configuration.
|
||||
|
||||
Add verified sender address(es)
|
||||
-------------------------------
|
||||
|
||||
The next step is to add a sender address or a domain to the Mailjet account settings so that the
|
||||
email address or domain is approved to send emails using Mailjet's servers. First, navigate to the
|
||||
`Mailjet Account Information <https://app.mailjet.com/account>`_ page. Next, click on the
|
||||
:guilabel:`Add a Sender Domain or Address` link under the :guilabel:`Senders & Domains` section.
|
||||
|
||||
.. image:: mailjet_api/add-domain-email.png
|
||||
:align: center
|
||||
:alt: Add a sender domain or address in the Mailjet interface.
|
||||
|
||||
Determine if a sender's email address or the entire domain needs to be added to the Mailjet
|
||||
settings. It may be easier to configure the domain as a whole if :abbr:`DNS (Domain Name System)`
|
||||
access is available. Jump to the :ref:`Add a domain <maintain/mailjet-api/add-domain>` section for
|
||||
steps on adding the domain.
|
||||
|
||||
.. note::
|
||||
Either all email addresses of the Odoo database users who are sending emails using Mailjet's
|
||||
servers need to be configured or the domain(s) of the users' email addresses can be configured.
|
||||
|
||||
By default, the email address originally set up in the Mailjet account is added as a trusted
|
||||
sender. To add another email address, click on the button labeled :guilabel:`Add a sender address`.
|
||||
Then, add the email address that is configured to send from the custom domain.
|
||||
|
||||
At minimum the following email addresses should be set up in the provider and verified in Mailjet:
|
||||
|
||||
- notifications\@yourdomain.com
|
||||
- bounce\@yourdomain.com
|
||||
- catchall\@yourdomain.com
|
||||
|
||||
.. note::
|
||||
Replace `yourdomain` with the custom domain for the Odoo database. If there isn't one, then use
|
||||
the :guilabel:`mail.catchall.domain` system parameter.
|
||||
|
||||
After that, fill out the :guilabel:`Email Information` form, making sure to select the appropriate
|
||||
email type: transactional email or mass emails. After completing the form, an activation email is
|
||||
sent to the email address and the trusted sender can be activated.
|
||||
|
||||
It is recommended to set up the :abbr:`SPF (Sender Policy Framework)`/:abbr:`DKIM (DomainKeys
|
||||
Identified Mail)`/:abbr:`DMARC (Domain-based Message Authentication, Reporting, and
|
||||
Conformance)` settings on the domain of the sender.
|
||||
|
||||
.. seealso::
|
||||
`Mailjet's SPF/DKIM/DMARC documentation <https://documentation.mailjet.com/hc/articles/
|
||||
360042412734-Authenticating-Domains-with-SPF-DKIM>`_
|
||||
|
||||
.. important::
|
||||
If the database is not using a custom domain, then in order to verify the sender's address, a
|
||||
temporary alias (of the three email addresses mentioned above) should be set up in Odoo CRM to
|
||||
create a lead. Then, the database is able to receive the verification email and verify the
|
||||
accounts.
|
||||
|
||||
.. _maintain/mailjet-api/add-domain:
|
||||
|
||||
Add a domain
|
||||
------------
|
||||
|
||||
By adding an entire domain to the Mailjet account, all the sender addresses related to that domain
|
||||
are automatically validated for sending emails using Mailjet servers. First, navigate to the
|
||||
`Mailjet Account Information <https://app.mailjet.com/account>`_ page. Next, click on
|
||||
:guilabel:`Add a Sender Domain or Address` link under the :guilabel:`Senders & Domains` section.
|
||||
Then, click on :guilabel:`Add domain` to add the custom domain.
|
||||
|
||||
.. note::
|
||||
The domain needs to be added to the Mailjet account and then validated through the :abbr:`DNS
|
||||
(Domain Name System)`.
|
||||
|
||||
After that, fill out the :guilabel:`Add a new Domain` page on Mailjet and click
|
||||
:guilabel:`Continue`.
|
||||
|
||||
After adding the domain, a validation page will populate. Unless the Odoo database is on-premise
|
||||
(in which case, choose :guilabel:`Option 1`), choose :guilabel:`Option 2: Create a DNS Record`.
|
||||
Copy the TXT record information to a notepad and then navigate to the domain's :abbr:`DNS (Domain
|
||||
Name System)` provider to complete validation.
|
||||
|
||||
.. image:: mailjet_api/host-value-dns.png
|
||||
:align: center
|
||||
:alt: The TXT record information to input on the domain's DNS.
|
||||
|
||||
Setup in the domain's DNS
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
After getting the TXT record information from the Mailjet account, add a TXT record to the domain's
|
||||
:abbr:`DNS (Domain Name System)`. This process varies depending on the :abbr:`DNS (Domain Name
|
||||
System)` provider. Consult the provider for specific configuration processes. The TXT record
|
||||
information consists of the :guilabel:`Host` and :guilabel:`Value`. Paste these into
|
||||
the corresponding fields in the TXT record.
|
||||
|
||||
Return to Mailjet account information
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
After adding the TXT record to the domain's :abbr:`DNS (Domain Name System)`, navigate back to the
|
||||
Mailjet account. Then, navigate to :menuselection:`Account Information --> Add a Sender Domain or
|
||||
Address`, click the gear icon next to :guilabel:`Domain`, and select :guilabel:`Validate`.
|
||||
|
||||
This action can also be done by going to the `Sender domains & addresses <https://app.mailjet.com/
|
||||
account/sender>`_ page on the Mailjet account information and clicking on :guilabel:`Manage`.
|
||||
|
||||
Next, click :guilabel:`Check Now` to validate the TXT record that was added on the domain. A
|
||||
success screen will appear if the domain is configured correctly.
|
||||
|
||||
.. image:: mailjet_api/check-dns.png
|
||||
:align: center
|
||||
:alt: Check DNS record in Mailjet.
|
||||
|
||||
After successfully setting up the domain, there is an option to :guilabel:`Authenticate this domain
|
||||
(SPF/DKIM)`. This button populates :abbr:`SPF (Sender Policy Framework)` & :abbr:`DKIM (DomainKeys
|
||||
Identified Mail) records to input into the :abbr:`DNS (Domain Name System)` provider.
|
||||
|
||||
.. seealso::
|
||||
`Mailjet's SPF/DKIM/DMARC documentation <https://documentation.mailjet.com/hc/articles/
|
||||
360042412734-Authenticating-Domains-with-SPF-DKIM>`_
|
||||
|
||||
.. image:: mailjet_api/authenticate.png
|
||||
:align: center
|
||||
:alt: Authenticate the domain with SPF/DKIM records in Mailjet.
|
||||
|
||||
.. _maintain/mailjet-api/odoo-setup:
|
||||
|
||||
Set up in Odoo
|
||||
==============
|
||||
|
||||
To complete the setup, navigate to the Odoo database and go to the :guilabel:`Settings`. With
|
||||
:ref:`developer-mode` turned on, go to the :menuselection:`Technical Menu --> Email --> Outgoing
|
||||
Mail Servers`. Then, create a new outgoing server configuration by clicking on the
|
||||
:guilabel:`Create` button.
|
||||
|
||||
Next, input the `SMTP server` (in-v3.mailjet.com), `port number` (587 or 465), and `Security
|
||||
(SSL/TLS)` that was copied earlier from the Mailjet account. They can also be found `here
|
||||
<https://app.mailjet.com/account/setup>`_. It is recommended to use :abbr:`SSL (Secure Sockets
|
||||
Layer)`/:abbr:`TLS (Transport Layer Security)` even though Mailjet may not require it.
|
||||
|
||||
For the :guilabel:`Username`, input the :guilabel:`API KEY`. For the :guilabel:`Password`, input
|
||||
the :guilabel:`SECRET KEY` that was copied from the Mailjet account to the notepad earlier. These
|
||||
settings can be found on :menuselection:`Mailjet --> Account Settings --> SMTP and SEND API
|
||||
Settings`.
|
||||
|
||||
Then, if the Mailjet server is used for mass emailing, set the :guilabel:`Priority` value higher
|
||||
than that of any transactional email server(s). Finally, save the settings and :guilabel:`Test the
|
||||
Connection`.
|
||||
|
||||
.. image:: mailjet_api/server-settings.png
|
||||
:align: center
|
||||
:alt: Odoo outgoing email server settings.
|
||||
|
||||
.. important::
|
||||
In order for the notifications feature to work using Mailjet, there are three settings that need
|
||||
to be set in Odoo.
|
||||
|
||||
#. The :guilabel:`From Filter` needs to be set on the server configuration. It is recommended
|
||||
to set it as a domain and not a full email address. It should match the domain in the two
|
||||
proceeding steps. More information can be referenced :ref:`here
|
||||
<email_communication/from_filter>`.
|
||||
#. The :guilabel:`mail.default.from` system parameter must have the value
|
||||
`notifications\@yourdomain.com`.
|
||||
#. The :guilabel:`mail.default.from_filter` system parameter must have the value
|
||||
`yourdomain.com`. Replace `yourdomain` with the custom domain for the Odoo database. If there
|
||||
isn't one, then use the :guilabel:`mail.catchall.domain` system parameter.
|
||||
|
||||
For more information see :ref:`Using a default email address <email_communication/default>`.
|
||||
|
||||
The :guilabel:`System Parameters` can be accessed by activating the :ref:`developer mode
|
||||
<developer-mode>`.
|
||||
|
||||
Once the setup is complete, the Odoo database is ready to use the Mailjet email server for mass
|
||||
mailing or transactional emails!
|
||||
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 35 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 24 KiB |
@@ -1,411 +0,0 @@
|
||||
======================
|
||||
Export and import data
|
||||
======================
|
||||
|
||||
.. _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).
|
||||
|
||||
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*.
|
||||
|
||||
.. image:: export_import_data/list-view-export.png
|
||||
:align: center
|
||||
: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:
|
||||
|
||||
.. 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
|
||||
|
||||
#. 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.
|
||||
|
||||
.. 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.
|
||||
|
||||
.. _import-data:
|
||||
|
||||
Import data into Odoo
|
||||
=====================
|
||||
|
||||
How to start
|
||||
------------
|
||||
|
||||
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!
|
||||
|
||||
Open the view of the object you want to populate and click on :menuselection:`Favorites --> Import
|
||||
records`.
|
||||
|
||||
.. image:: export_import_data/import_button.png
|
||||
:align: center
|
||||
|
||||
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.
|
||||
|
||||
How to adapt the template
|
||||
-------------------------
|
||||
|
||||
* 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/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 in Odoo. Don't worry! You can map
|
||||
new columns manually when you test the import. Search the list for the
|
||||
corresponding field.
|
||||
|
||||
.. image:: export_import_data/field_list.png
|
||||
:align: center
|
||||
|
||||
Then, use this field's label in your file in order to make it work
|
||||
straight on the very next time.
|
||||
|
||||
How to import from another application
|
||||
--------------------------------------
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
|
||||
I cannot find the field I want to map my column to
|
||||
--------------------------------------------------
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
.. image:: export_import_data/field_list.png
|
||||
:align: center
|
||||
|
||||
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.
|
||||
|
||||
.. 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.
|
||||
|
||||
Can I import numbers with currency sign (e.g.: $32.00)?
|
||||
-------------------------------------------------------
|
||||
|
||||
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.
|
||||
|
||||
Examples of supported numbers (using thirty-two thousands as an example):
|
||||
|
||||
- 32.000,00
|
||||
- 32000,00
|
||||
- 32,000.00
|
||||
- -32000.00
|
||||
- (32000.00)
|
||||
- $ 32.000,00
|
||||
- (32000.00 €)
|
||||
|
||||
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?
|
||||
----------------------------------------------------------------------
|
||||
|
||||
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).
|
||||
|
||||
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.
|
||||
|
||||
How can I change the CSV file format options when saving in my spreadsheet application?
|
||||
---------------------------------------------------------------------------------------
|
||||
|
||||
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`).
|
||||
|
||||
Microsoft Excel will allow you to modify only the encoding when saving (in :menuselection:`'Save As'
|
||||
dialog box --> click 'Tools' dropdown list --> Encoding tab`).
|
||||
|
||||
What's the 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.
|
||||
|
||||
For example, to reference the country of a contact, Odoo proposes you 3 different fields to import:
|
||||
|
||||
- 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 the country Belgium, you can use one of these 3 ways to import:
|
||||
|
||||
- Country: Belgium
|
||||
- Country/Database ID: 21
|
||||
- Country/External ID: base.be
|
||||
|
||||
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:
|
||||
|
||||
- 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,
|
||||
but they always have a unique Database ID)
|
||||
- Use Country/External ID: Use External ID when you import 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.
|
||||
|
||||
: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>`.
|
||||
|
||||
What can I do if I have multiple matches for a field?
|
||||
-----------------------------------------------------
|
||||
|
||||
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.
|
||||
|
||||
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'.
|
||||
|
||||
How can I import a many2many relationship field (e.g. a customer that has multiple tags)?
|
||||
-----------------------------------------------------------------------------------------
|
||||
|
||||
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.
|
||||
|
||||
:download:`CSV file for Manufacturer, Retailer <export_import_data/m2m_customers_tags.csv>`
|
||||
|
||||
|
||||
How can I import a one2many relationship (e.g. several Order Lines of a Sales Order)?
|
||||
-------------------------------------------------------------------------------------
|
||||
|
||||
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:`File for some Quotations <export_import_data/purchase.order_functional_error_line_cant_adpat.csv>`.
|
||||
|
||||
The following CSV file shows how to import purchase orders with their respective purchase order
|
||||
lines:
|
||||
|
||||
:download:`Purchase orders with their respective purchase order lines <export_import_data/o2m_purchase_order_lines.csv>`.
|
||||
|
||||
The following CSV file shows how to import customers and their respective contacts:
|
||||
|
||||
:download:`Customers and their respective contacts <export_import_data/o2m_customers_contacts.csv>`.
|
||||
|
||||
Can I import several times the same record?
|
||||
-------------------------------------------
|
||||
|
||||
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.
|
||||
|
||||
This feature allows you to use the Import/Export tool of Odoo to modify a batch of records in your
|
||||
favorite spreadsheet application.
|
||||
|
||||
What happens if I do not provide a value for a specific field?
|
||||
--------------------------------------------------------------
|
||||
|
||||
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.
|
||||
|
||||
How to export/import different tables from an SQL application to Odoo?
|
||||
----------------------------------------------------------------------
|
||||
|
||||
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).
|
||||
|
||||
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')
|
||||
|
||||
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:
|
||||
|
||||
.. 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:
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
External ID,Name,Is a Company
|
||||
company_1,Bigees,True
|
||||
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:
|
||||
|
||||
.. 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:
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
External ID,Name,Is a Company,Related Company/External ID
|
||||
person_1,Fabien,False,company_1
|
||||
person_2,Laurence,False,company_1
|
||||
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).
|
||||
|
||||
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).
|
||||
@@ -1,6 +0,0 @@
|
||||
External ID,Name,Parent Category/External ID
|
||||
a1,Expenses,product.product_category_all
|
||||
a2,Other Products,product.product_category_all
|
||||
a3,Sellable Products,product.product_category_all
|
||||
a4,Tables,a1
|
||||
a5,Seating furniture,a2
|
||||
|
@@ -1,6 +0,0 @@
|
||||
External ID,Name,Internal Reference,Category/External ID,Can be Expensed,Can be Purchased,Can be Sold,Sale Price,Cost,Supply Method,Product Type,Procurement Method
|
||||
a6,Aluminum Stool,ALS,a5,False,True,True,49.00,25.00,Buy,Stockable Product,Make to Stock
|
||||
a7,Chair,CHR,a5,False,True,True,89.00,40.00,Buy,Stockable Product,Make to Stock
|
||||
a8,Table,TBL,a4,False,True,True,169.00,100.00,Buy,Stockable Product,Make to Stock
|
||||
a9,Software Book Tutorial,SBT,a2,False,True,False,19.00,8.00,Buy,Consumable,Make to Stock
|
||||
a10,Fuel,FL,a1,True,False,False,0.30,0.25,Buy,Service,Make to Stock
|
||||
|
@@ -1,154 +0,0 @@
|
||||
--
|
||||
-- PostgreSQL database dump
|
||||
--
|
||||
|
||||
SET statement_timeout = 0;
|
||||
SET client_encoding = 'UTF8';
|
||||
SET standard_conforming_strings = off;
|
||||
SET check_function_bodies = false;
|
||||
SET client_min_messages = warning;
|
||||
SET escape_string_warning = off;
|
||||
|
||||
SET search_path = public, pg_catalog;
|
||||
|
||||
SET default_tablespace = '';
|
||||
|
||||
SET default_with_oids = false;
|
||||
|
||||
--
|
||||
-- Name: companies; Type: TABLE; Schema: public; Owner: fp; Tablespace:
|
||||
--
|
||||
|
||||
CREATE TABLE companies (
|
||||
id integer NOT NULL,
|
||||
company_name character varying
|
||||
);
|
||||
|
||||
|
||||
ALTER TABLE public.companies OWNER TO fp;
|
||||
|
||||
--
|
||||
-- Name: companies_id_seq; Type: SEQUENCE; Schema: public; Owner: fp
|
||||
--
|
||||
|
||||
CREATE SEQUENCE companies_id_seq
|
||||
START WITH 1
|
||||
INCREMENT BY 1
|
||||
NO MAXVALUE
|
||||
NO MINVALUE
|
||||
CACHE 1;
|
||||
|
||||
|
||||
ALTER TABLE public.companies_id_seq OWNER TO fp;
|
||||
|
||||
--
|
||||
-- Name: companies_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: fp
|
||||
--
|
||||
|
||||
ALTER SEQUENCE companies_id_seq OWNED BY companies.id;
|
||||
|
||||
|
||||
--
|
||||
-- Name: companies_id_seq; Type: SEQUENCE SET; Schema: public; Owner: fp
|
||||
--
|
||||
|
||||
SELECT pg_catalog.setval('companies_id_seq', 3, true);
|
||||
|
||||
|
||||
--
|
||||
-- Name: persons; Type: TABLE; Schema: public; Owner: fp; Tablespace:
|
||||
--
|
||||
|
||||
CREATE TABLE persons (
|
||||
id integer NOT NULL,
|
||||
company_id integer,
|
||||
person_name character varying
|
||||
);
|
||||
|
||||
|
||||
ALTER TABLE public.persons OWNER TO fp;
|
||||
|
||||
--
|
||||
-- Name: persons_id_seq; Type: SEQUENCE; Schema: public; Owner: fp
|
||||
--
|
||||
|
||||
CREATE SEQUENCE persons_id_seq
|
||||
START WITH 1
|
||||
INCREMENT BY 1
|
||||
NO MAXVALUE
|
||||
NO MINVALUE
|
||||
CACHE 1;
|
||||
|
||||
|
||||
ALTER TABLE public.persons_id_seq OWNER TO fp;
|
||||
|
||||
--
|
||||
-- Name: persons_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: fp
|
||||
--
|
||||
|
||||
ALTER SEQUENCE persons_id_seq OWNED BY persons.id;
|
||||
|
||||
|
||||
--
|
||||
-- Name: persons_id_seq; Type: SEQUENCE SET; Schema: public; Owner: fp
|
||||
--
|
||||
|
||||
SELECT pg_catalog.setval('persons_id_seq', 4, true);
|
||||
|
||||
|
||||
--
|
||||
-- Name: id; Type: DEFAULT; Schema: public; Owner: fp
|
||||
--
|
||||
|
||||
ALTER TABLE ONLY companies ALTER COLUMN id SET DEFAULT nextval('companies_id_seq'::regclass);
|
||||
|
||||
|
||||
--
|
||||
-- Name: id; Type: DEFAULT; Schema: public; Owner: fp
|
||||
--
|
||||
|
||||
ALTER TABLE ONLY persons ALTER COLUMN id SET DEFAULT nextval('persons_id_seq'::regclass);
|
||||
|
||||
|
||||
--
|
||||
-- Data for Name: companies; Type: TABLE DATA; Schema: public; Owner: fp
|
||||
--
|
||||
|
||||
COPY companies (id, company_name) FROM stdin;
|
||||
1 Bigees
|
||||
2 Organi
|
||||
3 Boum
|
||||
\.
|
||||
|
||||
|
||||
--
|
||||
-- Data for Name: persons; Type: TABLE DATA; Schema: public; Owner: fp
|
||||
--
|
||||
|
||||
COPY persons (id, company_id, person_name) FROM stdin;
|
||||
1 1 Fabien
|
||||
2 1 Laurence
|
||||
3 2 Eric
|
||||
4 3 Ramsy
|
||||
\.
|
||||
|
||||
|
||||
--
|
||||
-- Name: companies_pkey; Type: CONSTRAINT; Schema: public; Owner: fp; Tablespace:
|
||||
--
|
||||
|
||||
ALTER TABLE ONLY companies
|
||||
ADD CONSTRAINT companies_pkey PRIMARY KEY (id);
|
||||
|
||||
|
||||
--
|
||||
-- Name: persons_company_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: fp
|
||||
--
|
||||
|
||||
ALTER TABLE ONLY persons
|
||||
ADD CONSTRAINT persons_company_id_fkey FOREIGN KEY (company_id) REFERENCES companies(id);
|
||||
|
||||
|
||||
--
|
||||
-- PostgreSQL database dump complete
|
||||
--
|
||||
|
Before Width: | Height: | Size: 1.6 MiB |
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 8.2 KiB |
|
Before Width: | Height: | Size: 14 KiB |
@@ -1,6 +0,0 @@
|
||||
Name,Reference,Tags,Customer,Street,City,Country
|
||||
Credit & Leasing,3,Services,True,Central Avenue 814,Johannesburg,South Africa
|
||||
Services & Finance,5,"Consultancy Services,IT Services",True,Grove Road 5,London,United Kingdom
|
||||
Hydra Supplies,6,"Manufacturer,Retailer",True,Palm Street 9,Los Angeles,United States
|
||||
Bolts & Screws,8,"Wholesaler,Components Buyer",True,Rua Américo 1000,Campinas,Brazil
|
||||
National Parts & Supplies,18,"Manufacturer,Wholesaler",True,Guangdong Way 20,Shenzen,China
|
||||
|
@@ -1,9 +0,0 @@
|
||||
Name,Is a company,Related company,Address type,Customer,Supplier,Street,ZIP,City,State,Country
|
||||
Aurora Shelves,1,,,1,0,25 Pacific Road,95101,San José,CA,United States
|
||||
Roger Martins,0,Aurora Shelves,Invoice address,1,0,27 Pacific Road,95102,San José,CA,United States
|
||||
House Sales Direct,1,,,1,0,104 Saint Mary Avenue,94059,Redwood,CA,United States
|
||||
Yvan Holiday,0,House Sales Direct,Contact,1,0,104 Saint Mary Avenue,94060,Redwood,CA,United States
|
||||
Jack Unsworth,0,House Sales Direct,Invoice address,1,0,227 Jackson Road,94061,Redwood,CA,United States
|
||||
Michael Mason,0,,,1,0,16 5th Avenue,94104,San Francisco,CA,United States
|
||||
International Wood,1,,,1,0,748 White House Boulevard,20004,Washington,DC,United States
|
||||
Sharon Pecker,0,International Wood,Invoice address,1,0,755 White House Boulevard,20005,Washington,DC,United States
|
||||
|
@@ -1,10 +0,0 @@
|
||||
Order Date,Order Reference,Supplier,Destination,Pricelist,Order Lines / Product,Order Lines / Quantity
|
||||
2012-12-15,PO00008,ASUSTeK,Stock,Default Purchase Pricelist,ADPT,20
|
||||
,,,,,CARD,30
|
||||
,,,,,C-Case,40
|
||||
2012-12-15,PO00009,Axelor,Stock,Default Purchase Pricelist,CD,5
|
||||
,,,,,CPUa8,15
|
||||
2012-12-15,PO000010,China Export,Stock,Default Purchase Pricelist,HDD SH-1,10
|
||||
,,,,,HDD SH-2,20
|
||||
,,,,,LAP-CUS,35
|
||||
,,,,,LAP-E5,40
|
||||
|
@@ -1,6 +0,0 @@
|
||||
"Order Reference","Supplier","Destination","Pricelist","Order Lines / Product","Order Lines / Quantity"
|
||||
"PO000020","ASUSTeK","Stock","Default Purchase Pricelist","ADPT",20
|
||||
,,,,"CARD",30
|
||||
,,,,"C-Case",40
|
||||
"PO000021","Axelor","Stock","Default Purchase Pricelist","CD",5
|
||||
,,,,"CPUa8",15
|
||||
|
@@ -1,192 +0,0 @@
|
||||
=====================
|
||||
In-app purchase (IAP)
|
||||
=====================
|
||||
|
||||
.. |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::
|
||||
Users with an Enterprise version of Odoo Online get free credits to test IAP features.
|
||||
|
||||
.. _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 provided 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.
|
||||
|
||||
For more information on every service currently available, 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:`📱 (phone) 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:
|
||||
|
||||
#. 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.
|
||||
#. Hover the mouse over the :guilabel:`Phone` or :guilabel:`Mobile` field, and a :guilabel:`📱
|
||||
(phone) SMS` icon appears to the right.
|
||||
#. Click the :guilabel:`📱 (phone) SMS` icon, and a :guilabel:`Send SMS Text Message` pop-up
|
||||
window appears.
|
||||
#. Type a message in the :guilabel:`Message` field of the :guilabel:`Send SMS Text Message`
|
||||
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 </applications/sales/crm/acquire_leads/lead_mining>`
|
||||
- :doc:`Enrich your contacts base with Partner Autocomplete
|
||||
</applications/sales/crm/optimize/partner_autocomplete>`
|
||||
- :doc:`SMS essentials </applications/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
|
||||
</applications/marketing/sms_marketing/pricing/pricing_and_faq>` documentation.
|
||||
|
||||
.. _iap/buying_credits:
|
||||
|
||||
Buy credits
|
||||
-----------
|
||||
|
||||
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 --> Search IAP --> View My Services`.
|
||||
|
||||
Doing so reveals an :guilabel:`IAP Account` 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:
|
||||
|
||||
#. Go to the :menuselection:`Settings application`.
|
||||
#. Type `IAP` in the search bar.
|
||||
#. Click :guilabel:`View My Services`.
|
||||
|
||||
.. image:: in_app_purchase/view-services.png
|
||||
:align: center
|
||||
:alt: The Settings app showing the Odoo IAP heading and View My Services button.
|
||||
|
||||
#. Doing so reveals an :guilabel:`IAP Account` 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.
|
||||
#. On the :guilabel:`Account Information` page, click the :guilabel:`Buy Credit` button.
|
||||
|
||||
.. image:: in_app_purchase/account-info.png
|
||||
:align: center
|
||||
:alt: The Account Information page for an IAP service showing the 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.
|
||||
|
||||
.. 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.
|
||||
|
||||
#. Once the transaction is complete, the credits are available for use in the database.
|
||||
|
||||
.. _in_app_purchase/low-credits:
|
||||
|
||||
Low-credit notification
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
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:
|
||||
|
||||
#. Go to the :menuselection:`Settings application`.
|
||||
#. Type `IAP` in the search bar.
|
||||
#. Click :guilabel:`View My Services`.
|
||||
#. 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 :guilabel:`Account Information`
|
||||
page.
|
||||
#. On the :guilabel:`Account Information` page, tick the :guilabel:`Warn Me` box. Doing so reveals
|
||||
two fields on the form: :guilabel:`Threshold` and :guilabel:`Warning Email`.
|
||||
|
||||
.. image:: in_app_purchase/low-credits.png
|
||||
:align: center
|
||||
:alt: Odoo will send an email alert when credits for this service fall below the threshold.
|
||||
|
||||
#. In the :guilabel:`Threshold` field, enter an amount of credits Odoo should use as the minimum
|
||||
threshold for this service.
|
||||
#. In the :guilabel:`Warning Email` field, enter the email address that should receive the
|
||||
notification.
|
||||
|
||||
Odoo sends a low-credit alert to the :guilabel:`Warning Email` when the balance of credits falls
|
||||
below the amount listed as the :guilabel:`Threshold`.
|
||||
|
Before Width: | Height: | Size: 8.7 KiB |
|
Before Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 9.1 KiB |
|
Before Width: | Height: | Size: 12 KiB |
@@ -0,0 +1,9 @@
|
||||
============
|
||||
Integrations
|
||||
============
|
||||
|
||||
.. toctree::
|
||||
|
||||
integrations/mail_plugins
|
||||
integrations/unsplash
|
||||
integrations/geolocation
|
||||
@@ -36,4 +36,4 @@ To use it, select :guilabel:`Google Place Map` and enter your :ref:`API Key
|
||||
:alt: Google Places API key
|
||||
|
||||
.. seealso::
|
||||
:doc:`../../applications/websites/website/configuration/address_autocomplete`
|
||||
:doc:`/applications/websites/website/configuration/address_autocomplete`
|
||||
|
Before Width: | Height: | Size: 385 KiB After Width: | Height: | Size: 385 KiB |
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 5.6 KiB |
@@ -0,0 +1,57 @@
|
||||
:show-content:
|
||||
|
||||
============
|
||||
Mail Plugins
|
||||
============
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
mail_plugins/outlook
|
||||
mail_plugins/gmail
|
||||
|
||||
Mail Plugins are connectors that bridge your mailbox with your Odoo database. With them, you can
|
||||
interact with your Odoo database directly from your mailbox by:
|
||||
|
||||
- Creating leads and centralizing prospects' emails into the CRM app.
|
||||
- Generating tasks in any Odoo project.
|
||||
- Creating tickets in the Helpdesk app.
|
||||
- Searching and storing insights on your contacts.
|
||||
|
||||
Mail Plugins are available for :doc:`Outlook <mail_plugins/outlook>` and :doc:`Gmail
|
||||
<mail_plugins/gmail>`.
|
||||
|
||||
.. _mail_plugins/pricing:
|
||||
|
||||
Pricing
|
||||
=======
|
||||
|
||||
Mail Plugins are **free** to install and use.
|
||||
|
||||
However, they can provide **Lead Enrichment**, which is part of a paid service known as **Lead
|
||||
Generation**.
|
||||
|
||||
Mail plugins allow you to test Lead Enrichment for free, whether you connect the plugins to a
|
||||
database or not. After a while, the plugins ask you to buy :doc:`../../essentials/in_app_purchase`
|
||||
credits if you would like to keep using this service.
|
||||
|
||||
.. _mail_plugins/lead-generation:
|
||||
|
||||
Lead Generation IAP service
|
||||
---------------------------
|
||||
|
||||
Lead Enrichment uses the *Lead Generation IAP service*. Each request consumes one *Lead Generation
|
||||
credit*.
|
||||
|
||||
To buy credits, go to :menuselection:`Settings --> CRM --> Lead Enrichment --> Buy credits` and
|
||||
select a package.
|
||||
|
||||
.. note::
|
||||
- If you are out of credits, the only information populated when clicking on the suggested
|
||||
company is its website link and logo.
|
||||
- Check out the `Lead Generation IAP service Privacy Policy
|
||||
<https://iap.odoo.com/privacy#header_3>`_.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`../../essentials/in_app_purchase`
|
||||
- `Odoo Tutorials: Lead Enrichment <https://www.odoo.com/r/p73>`_
|
||||
@@ -0,0 +1,165 @@
|
||||
============
|
||||
Gmail Plugin
|
||||
============
|
||||
|
||||
The *Gmail Plugin* integrates an Odoo database with a Gmail inbox, so users can keep track of all
|
||||
their work between Gmail and Odoo, without losing any information.
|
||||
|
||||
Odoo Online users
|
||||
=================
|
||||
|
||||
For databases hosted on Odoo Online (or Odoo.sh), follow the steps below to configure the Gmail
|
||||
Plugin.
|
||||
|
||||
Install the Gmail Plugin
|
||||
------------------------
|
||||
|
||||
First, log in to the Gmail account that the user wishes to connect to Odoo.
|
||||
|
||||
From the Gmail inbox, click the plus sign icon on the right side panel to get add-ons. If the side
|
||||
panel is not visible, click on the arrow icon at the bottom right corner of the inbox to reveal it.
|
||||
|
||||
.. image:: gmail/gmail-side-panel.png
|
||||
:align: center
|
||||
:alt: Plus sign icon on the Gmail inbox side panel.
|
||||
|
||||
Then, use the search bar to search for `Odoo` and locate the :guilabel:`Odoo Inbox Addin`.
|
||||
|
||||
.. image:: gmail/google-workspace-marketplace.png
|
||||
:align: center
|
||||
:alt: Odoo Inbox Addin on Google Workspace Marketplace.
|
||||
|
||||
Or, go directly to the :guilabel:`Odoo Inbox Addin` page on the `Google Workspace Marketplace
|
||||
<https://workspace.google.com/marketplace/app/odoo_inbox_addin/873497133275>`_.
|
||||
|
||||
Once the plugin is located, click :guilabel:`Install`. Then, click :guilabel:`Continue` to start
|
||||
the installation.
|
||||
|
||||
Next, select which Gmail account the user wishes to connect to Odoo. Then click :guilabel:`Allow`
|
||||
to let Odoo access the Google account. Google will then show a pop-up window confirming that the
|
||||
installation was successful.
|
||||
|
||||
Configure the Odoo database
|
||||
---------------------------
|
||||
|
||||
The :guilabel:`Mail Plugin` feature must be enabled in the Odoo database in order to use the Gmail
|
||||
Plugin. To enable the feature, go to :menuselection:`Settings --> General Settings`. Under the
|
||||
:guilabel:`Integrations` section, activate :guilabel:`Mail Plugin`, and then click
|
||||
:guilabel:`Save`.
|
||||
|
||||
.. image:: gmail/mail-plugin-setting.png
|
||||
:align: center
|
||||
:alt: The Mail Plugin feature in the Settings.
|
||||
|
||||
Configure the Gmail inbox
|
||||
-------------------------
|
||||
|
||||
In the Gmail inbox, a purple Odoo icon is now visible on the right side panel. Click on the Odoo
|
||||
icon to open up the Odoo plugin window. Then, click on any email in the inbox. Click
|
||||
:guilabel:`Authorize Access` in the plugin window to grant Odoo access to the Gmail inbox.
|
||||
|
||||
.. image:: gmail/authorize-access.png
|
||||
:align: center
|
||||
:alt: The Authorize Access button in the right sidebar of the Odoo plugin panel.
|
||||
|
||||
Next, click :guilabel:`Login`. Then, enter the URL of the Odoo database that the user wishes to
|
||||
connect to the Gmail inbox, and log in to the database.
|
||||
|
||||
.. note::
|
||||
Use the general URL for the database, not the URL of a specific page in the database. For
|
||||
example, use `https://mycompany.odoo.com`, not
|
||||
`https://mycompany.odoo.com/web#cids=1&action=menu`.
|
||||
|
||||
Finally, click :guilabel:`Allow` to let Gmail access the Odoo database. The browser will then show
|
||||
a :guilabel:`Success!` message. After that, close the window. The Gmail inbox and Odoo database are
|
||||
now connected.
|
||||
|
||||
Odoo On-Premise users
|
||||
=====================
|
||||
|
||||
For databases hosted on servers other than Odoo Online (or Odoo.sh), follow the steps below to
|
||||
configure the Gmail Plugin.
|
||||
|
||||
.. note::
|
||||
As part of their security guidelines, Google requires add-on creators to provide a list of URLs
|
||||
that can be used in actions and redirections launched by the add-on. This protects users by
|
||||
ensuring, for example, that no add-on redirects users toward a malicious website. (Read more on
|
||||
`Google Apps Script <https://developers.google.com/apps-script/manifest/allowlist-url>`_.)
|
||||
|
||||
Since Odoo can only list the `odoo.com` domain and not every on-premise customer's unique server
|
||||
domain, on-premise customers cannot install the Gmail Plugin from the Google Workspace
|
||||
Marketplace.
|
||||
|
||||
Install the Gmail Plugin
|
||||
------------------------
|
||||
|
||||
First, access the `GitHub repository <https://github.com/odoo/mail-client-extensions>`_ for the
|
||||
Odoo Mail Plugins. Next, click on the green :guilabel:`Code` button. Then, click
|
||||
:guilabel:`Download ZIP` to download the Mail Plugin files onto the user's computer.
|
||||
|
||||
.. image:: gmail/gh-download-zip.png
|
||||
:align: center
|
||||
:alt: Download the ZIP file from the Odoo GitHub repository for Mail Plugins.
|
||||
|
||||
Open the ZIP file on the computer. Then, go to :menuselection:`mail-client-extensions-master -->
|
||||
gmail --> src --> views`, and open the :file:`login.ts` file using any text editor software,
|
||||
such as Notepad (Windows), TextEdit (Mac), or Visual Studio Code.
|
||||
|
||||
Delete the following three lines of text from the :file:`login.ts` file:
|
||||
|
||||
.. code-block::
|
||||
|
||||
if (!/^https:\/\/([^\/?]*\.)?odoo\.com(\/|$)/.test(validatedUrl)) {
|
||||
return notify("The URL must be a subdomain of odoo.com");
|
||||
}
|
||||
|
||||
This removes the `odoo.com` domain constraint from the Gmail Plugin program.
|
||||
|
||||
Next, in the ZIP file, go to :menuselection:`mail-client-extensions-master --> gmail`, and open the
|
||||
file called :guilabel:`appsscript.json`. In the :guilabel:`urlFetchWhitelist` section, replace all
|
||||
the references to `odoo.com` with the Odoo customer's unique server domain.
|
||||
|
||||
Then, in the same :guilabel:`gmail` folder, open the file called :guilabel:`README.md`. Follow the
|
||||
instructions in the :guilabel:`README.md` file to push the Gmail Plugin files as a Google Project.
|
||||
|
||||
.. note::
|
||||
The computer must be able to run Linux commands in order to follow the instructions on the
|
||||
:guilabel:`README.md` file.
|
||||
|
||||
After that, share the Google Project with the Gmail account that the user wishes to connect to Odoo.
|
||||
Then, click :guilabel:`Publish` and :guilabel:`Deploy from manifest`. Lastly, click
|
||||
:guilabel:`Install the add-on` to install the Gmail Plugin.
|
||||
|
||||
Configure the Odoo database
|
||||
---------------------------
|
||||
|
||||
The :guilabel:`Mail Plugin` feature must be enabled in the Odoo database in order to use the Gmail
|
||||
Plugin. To enable the feature, go to :menuselection:`Settings --> General Settings`. Under the
|
||||
:guilabel:`Integrations` section, activate :guilabel:`Mail Plugin`, and then click :guilabel:`Save`.
|
||||
|
||||
.. image:: gmail/mail-plugin-setting.png
|
||||
:align: center
|
||||
:alt: The Mail Plugin feature in the Settings.
|
||||
|
||||
Configure the Gmail inbox
|
||||
-------------------------
|
||||
|
||||
In the Gmail inbox, a purple Odoo icon is now visible on the right side panel. Click on the Odoo
|
||||
icon to open up the Odoo plugin window. Then, click on any email in the inbox. Click
|
||||
:guilabel:`Authorize Access` in the plugin window to grant Odoo access to the Gmail inbox.
|
||||
|
||||
.. image:: gmail/authorize-access.png
|
||||
:align: center
|
||||
:alt: The Authorize Access button in the right sidebar of the Odoo plugin panel.
|
||||
|
||||
Next, click :guilabel:`Login`. Then, enter the URL of the Odoo database that the user wishes to
|
||||
connect to the Gmail inbox, and log in to the database.
|
||||
|
||||
.. note::
|
||||
Use the general URL for the database, not the URL of a specific page in the database. For
|
||||
example, use `https://mycompany.odoo.com`, not
|
||||
`https://mycompany.odoo.com/web#cids=1&action=menu`.
|
||||
|
||||
Finally, click :guilabel:`Allow` to let Gmail access the Odoo database. The browser will then show
|
||||
a :guilabel:`Success!` message. After that, close the window. The Gmail inbox and Odoo database are
|
||||
now connected.
|
||||
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 7.6 KiB |
|
After Width: | Height: | Size: 9.6 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 9.6 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 7.9 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 9.8 KiB |
|
After Width: | Height: | Size: 39 KiB |
|
After Width: | Height: | Size: 5.5 KiB |
@@ -0,0 +1,150 @@
|
||||
==============
|
||||
Outlook Plugin
|
||||
==============
|
||||
|
||||
Outlook allows for third-party applications to connect in order to execute database actions from
|
||||
emails. Odoo has a plugin for Outlook that allows for the creation of an opportunity from the email
|
||||
panel.
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
The Outlook :doc:`Mail Plugin <../mail_plugins>` needs to be configured both on Odoo and Outlook.
|
||||
|
||||
.. _mail-plugin/outlook/enable-mail-plugin:
|
||||
|
||||
Enable Mail Plugin
|
||||
------------------
|
||||
|
||||
First, enable the *Mail Plugin* feature in the database. Go to :menuselection:`Settings --> General
|
||||
Settings --> Integrations`, enable :guilabel:`Mail Plugin`, and :guilabel:`Save` the configuration.
|
||||
|
||||
.. _mail-plugin/outlook/install-plugin:
|
||||
|
||||
Install the Outlook Plugin
|
||||
--------------------------
|
||||
|
||||
Download (:menuselection:`Save Page As --> Web Page XML only`) the following XML file to upload
|
||||
later: `https://download.odoocdn.com/plugins/outlook/manifest.xml
|
||||
<https://download.odoocdn.com/plugins/outlook/manifest.xml>`_.
|
||||
|
||||
Next, open the Outlook mailbox, and select any email. After completing this, click on the
|
||||
:guilabel:`More actions` button in the upper right-side and select :guilabel:`Get Add-ins`.
|
||||
|
||||
.. image:: outlook/more-actions.png
|
||||
:align: center
|
||||
:alt: More actions button in Outlook
|
||||
|
||||
Following this step, select the :guilabel:`My add-ins` tab on the left-side.
|
||||
|
||||
.. image:: outlook/my-add-ins.png
|
||||
:align: center
|
||||
:alt: My add-ins in Outlook
|
||||
|
||||
Under :guilabel:`Custom add-ins` towards the bottom, click on :guilabel:`+ Add a custom add-in`, and
|
||||
then on :guilabel:`Add from file...`
|
||||
|
||||
.. image:: outlook/custom-add-ins.png
|
||||
:align: center
|
||||
:alt: Custom add-ins in Outlook
|
||||
|
||||
For the next step, attach the `manifest.xml` file downloaded above, and press :guilabel:`OK`. Next,
|
||||
read the warning and click on :guilabel:`Install`.
|
||||
|
||||
.. image:: outlook/add-in-warning.png
|
||||
:align: center
|
||||
:alt: Custom add-in installation warning in Outlook
|
||||
|
||||
.. _mail-plugin/outlook/connect-database:
|
||||
|
||||
Connect the database
|
||||
--------------------
|
||||
|
||||
Now, Outlook will be connected to the Odoo database. First, open any email in the Outlook mailbox,
|
||||
click on the :guilabel:`More actions` button in the upper right-side, and select :guilabel:`Odoo for
|
||||
Outlook`.
|
||||
|
||||
.. image:: outlook/odoo-for-outlook.png
|
||||
:align: center
|
||||
:alt: Odoo for Outlook add-in button
|
||||
|
||||
The right-side panel can now display **Company Insights**. At the bottom, click on
|
||||
:guilabel:`Login`.
|
||||
|
||||
.. image:: outlook/panel-login.png
|
||||
:align: center
|
||||
:alt: Logging in the Odoo database
|
||||
|
||||
.. note::
|
||||
Only a limited amount of **Company Insights** (*Lead Enrichment*) requests are available as a
|
||||
trial database. This feature requires :ref:`prepaid credits <mail_plugins/pricing>`.
|
||||
|
||||
.. tip::
|
||||
If, after a short while, the panel is still empty, it is possible that the browser cookie
|
||||
settings prevented it from loading. Note that these settings also change if the browser is in
|
||||
"Incognito" mode.
|
||||
|
||||
To fix this issue, configure the browser to always allow cookies on Odoo's plugin page.
|
||||
|
||||
For Google Chrome, change the browser cookie settings by following the guide at:
|
||||
`https://support.google.com/chrome/answer/95647
|
||||
<https://support.google.com/chrome/answer/95647>`_
|
||||
and adding `download.odoo.com` to the list of :guilabel:`Sites that can always use cookies`.
|
||||
|
||||
Once this is complete, the Outlook panel needs to be opened again.
|
||||
|
||||
Now, enter the Odoo database URL and click on :guilabel:`Login`.
|
||||
|
||||
.. image:: outlook/enter-database-url.png
|
||||
:align: center
|
||||
:alt: Entering the Odoo database URL
|
||||
|
||||
Next, click on :guilabel:`Allow` to open the pop-up window.
|
||||
|
||||
.. image:: outlook/new-window-warning.png
|
||||
:align: center
|
||||
:alt: New window pop-up warning
|
||||
|
||||
If the user isn't logged into the database, enter the credentials. Click on :guilabel:`Allow` to let
|
||||
the Outlook Plugin connect to the database.
|
||||
|
||||
.. image:: outlook/odoo-permission.png
|
||||
:align: center
|
||||
:alt: Allowing the Outlook Plugin to connect to a database
|
||||
|
||||
.. _mail-plugin/outlook/add-shortcut:
|
||||
|
||||
Add a shortcut to the plugin
|
||||
----------------------------
|
||||
|
||||
By default, the Outlook Plugin can be opened from the *More actions* menu. However, to save time,
|
||||
it's possible to add it next to the other default actions.
|
||||
|
||||
In the Outlook mailbox, click on :guilabel:`Settings`, then on :guilabel:`View all Outlook
|
||||
settings`.
|
||||
|
||||
.. image:: outlook/all-outlook-settings.png
|
||||
:align: center
|
||||
:alt: Viewing all Outlook settings
|
||||
|
||||
Now, select :guilabel:`Customize actions` under :guilabel:`Mail`, click on :guilabel:`Odoo for
|
||||
Outlook`, and then :guilabel:`Save`.
|
||||
|
||||
.. image:: outlook/customize-actions.png
|
||||
:align: center
|
||||
:alt: Odoo for Outlook customized action
|
||||
|
||||
Following this step, open any email; the shortcut should be displayed.
|
||||
|
||||
.. image:: outlook/odoo-outlook-shortcut.png
|
||||
:align: center
|
||||
:alt: Odoo for Outlook customized action
|
||||
|
||||
Using the plugin
|
||||
----------------
|
||||
|
||||
Now that the plug-in is installed and operational, all that needs to be done to create a lead is to
|
||||
click on the `O` [Odoo icon] or navigate to :guilabel:`More actions` and click on :guilabel:`Odoo
|
||||
for Outlook`. The side panel will appear on the right-side, and under :guilabel:`Opportunities`
|
||||
click on :guilabel:`New`. A new window with the created opportunity in the Odoo database will
|
||||
populate.
|
||||
|
After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 6.3 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 7.3 KiB |
|
After Width: | Height: | Size: 2.4 KiB |