Compare commits
25 Commits
14.0-iot_h
...
14.0-tuto-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e03e38fb64 | ||
|
|
4bbcf65b50 | ||
|
|
270c926f2f | ||
|
|
dd3fcf677b | ||
|
|
6ed6881eaf | ||
|
|
95639a575c | ||
|
|
04ddd0bcbe | ||
|
|
6fe7cb3a67 | ||
|
|
9b04ed1d01 | ||
|
|
30b457fb4e | ||
|
|
5b63bfcba9 | ||
|
|
330ce42cef | ||
|
|
50824b6677 | ||
|
|
c2409d8a52 | ||
|
|
817e332160 | ||
|
|
ba1105bff7 | ||
|
|
5cb7eb5024 | ||
|
|
42148acbec | ||
|
|
7b2a178e82 | ||
|
|
eb067d6dc1 | ||
|
|
7cfedaffc7 | ||
|
|
1cbb06857d | ||
|
|
c758071861 | ||
|
|
1289a9ec45 | ||
|
|
6f4822cb2b |
@@ -43,7 +43,7 @@ API permissions
|
||||
---------------
|
||||
|
||||
The :guilabel:`API permissions` should be set next. Odoo will need specific API permissions to be
|
||||
able to read (IMAP) and send (IMAP) emails in the Microsoft 365 setup. First, click the
|
||||
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`
|
||||
|
||||
@@ -21,64 +21,87 @@ Setup in Google
|
||||
Create a new project
|
||||
--------------------
|
||||
|
||||
To get started, go to the `Google API Platform
|
||||
<https://console.cloud.google.com/apis/credentials/consent>`_. 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).
|
||||
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 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 left under the :guilabel:`Select a project` drop-down menu.
|
||||
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 :guilabel:`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 `No Organization`.
|
||||
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.
|
||||
:alt: Project Name and Location for Google OAuth.
|
||||
|
||||
Click on :guilabel:`Create` to finish this step. On the next screen, :guilabel:`User Type` options,
|
||||
select the :guilabel:`External` option, and then click on :guilabel:`Create` again, which will
|
||||
finally navigate to the :guilabel:`Edit app registration` page.
|
||||
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
|
||||
---------------------
|
||||
|
||||
- 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 :guilabel:`Scopes` page by scrolling to the bottom and clicking on
|
||||
:guilabel:`Save and Continue`.
|
||||
- Next, add the email 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
|
||||
:guilabel:`App registration` appears.
|
||||
- Finally, scroll to the bottom and click on :guilabel:`Back to Dashboard`.
|
||||
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 you have set up the project, you need to create credentials, which includes the
|
||||
:guilabel:`Client ID` and :guilabel:`Client Secret`. First, click on :guilabel:`Credentials` in the
|
||||
left sidebar menu.
|
||||
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.
|
||||
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:`Client ID` field, enter `Odoo`.
|
||||
- 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 your 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.
|
||||
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
|
||||
@@ -91,32 +114,37 @@ 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`.
|
||||
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` is checked. This populates a
|
||||
new option for :guilabel:`Gmail Credentials`. Then, copy and paste the :guilabel:`Client ID` and
|
||||
:guilabel:`Client Secret` into the respective fields and :guilabel:`Save` the settings.
|
||||
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
|
||||
-------------------------------
|
||||
|
||||
After that, on the :guilabel:`General Settings` page, under :guilabel:`Custom Email Servers`, click
|
||||
:guilabel:`Outgoing Email Servers` to configure the external Gmail account.
|
||||
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, :guilabel:`Create` a new email server and select the option for :guilabel:`Gmail`. Next, fill
|
||||
in the :guilabel:`Description` (can be anything) and the email :guilabel:`Username` and click on
|
||||
:guilabel:`Connect your Gmail account`.
|
||||
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).
|
||||
|
||||
A new window from :guilabel:`Google` opens to complete the authorization process. Select the
|
||||
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, an extra step pops up, click :guilabel:`Continue` to
|
||||
allow the verification and connect the Gmail account to 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
|
||||
@@ -127,9 +155,8 @@ server in Odoo. The configuration automatically loads the token in Odoo, and a t
|
||||
:align: center
|
||||
:alt: Configure Outgoing Email Servers in Odoo.
|
||||
|
||||
Finally, save the settings and :guilabel:`Test the Connection`. A confirmation message should
|
||||
appear. The Odoo database can now send safe, secure emails through Google using OAuth
|
||||
authentication.
|
||||
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
|
||||
================
|
||||
@@ -137,8 +164,8 @@ Google OAuth FAQ
|
||||
Production VS Testing Publishing Status
|
||||
---------------------------------------
|
||||
|
||||
Choosing :guilabel:`Production` as the :guilabel:`Publishing Status` (instead of Testing) will
|
||||
display the following warning message:
|
||||
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
|
||||
@@ -158,39 +185,35 @@ populate.
|
||||
: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.
|
||||
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 :guilabel:`Gmail Module` in Odoo has not been updated to the latest version, then a
|
||||
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 :guilabel:`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`.
|
||||
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 :guilabel:`Credentials` (OAuth Client ID and Client Secret), if
|
||||
:guilabel:`Desktop App` is selected for the :guilabel:`Application Type`, an
|
||||
:guilabel:`Authorization Error` appears.
|
||||
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.
|
||||
|
||||
.. note::
|
||||
Replace *yourdbname* in the URL with the Odoo database name.
|
||||
: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.
|
||||
|
||||
@@ -72,9 +72,9 @@ POS.
|
||||
- Sell products without a valid VAT number.
|
||||
- Use a POS that is not connected to an IoT box.
|
||||
|
||||
- The :doc:`cash rounding <../../sales/point_of_sale/shop/cash_rounding>` feature must be activated
|
||||
and set to a :guilabel:`Rounding Precision` of `0,05` and a :guilabel:`Rounding Method` set as
|
||||
:guilabel:`Half-Up`.
|
||||
- The :doc:`cash rounding <../../sales/point_of_sale/pricing/cash_rounding>` feature must be
|
||||
activated and set to a :guilabel:`Rounding Precision` of `0,05` and a :guilabel:`Rounding Method`
|
||||
set as :guilabel:`Half-Up`.
|
||||
- Taxes must be set as included in the price. To set it up, go to :menuselection:`Point of Sale -->
|
||||
Configuration --> Settings`, and from the :guilabel:`Taxes` section, open the :guilabel:`Default
|
||||
Sales Tax` form by clicking the arrow next to the default sales tax field. There, click
|
||||
|
||||
@@ -2,14 +2,14 @@
|
||||
Google Sign-In Authentication
|
||||
=============================
|
||||
|
||||
The **Google Sign-In Authentication** is a useful function that allows your users to sign in to Odoo
|
||||
with their Google account.
|
||||
The *Google Sign-In Authentication* is a useful function that allows Odoo users to sign in to their
|
||||
database with their Google account.
|
||||
|
||||
This is particularly helpful if your organization uses Google Workforce and you want the employees
|
||||
within your organization to connect to Odoo with their Google Accounts.
|
||||
This is particularly helpful if the organization uses Google Workspace, and wants employees within
|
||||
the organization to connect to Odoo using their Google Accounts.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`../../productivity/calendar/google`
|
||||
- :doc:`/applications/productivity/calendar/google`
|
||||
- :doc:`/administration/maintain/google_oauth`
|
||||
|
||||
.. _google-sign-in/configuration:
|
||||
@@ -17,7 +17,7 @@ within your organization to connect to Odoo with their Google Accounts.
|
||||
Configuration
|
||||
=============
|
||||
|
||||
The integration of the Google sign-in function requires configuration both on Google and on Odoo.
|
||||
The integration of the Google sign-in function requires configuration both on Google *and* Odoo.
|
||||
|
||||
.. _google-sign-in/api:
|
||||
|
||||
@@ -25,15 +25,16 @@ Google API Dashboard
|
||||
--------------------
|
||||
|
||||
#. Go to the `Google API Dashboard <https://console.developers.google.com/>`_.
|
||||
#. Make sure the right project is opened. If you don't have a project yet, click on *Create
|
||||
Project*, fill out the project name and other details of your company, and click on *Create*.
|
||||
#. Make sure the right project is opened. If there isn't a project yet, click on :guilabel:`Create
|
||||
Project`, fill out the project name and other details of the company, and click on
|
||||
:guilabel:`Create`.
|
||||
|
||||
.. image:: google/new-project-details.png
|
||||
:align: center
|
||||
:alt: Filling out the details of a new project
|
||||
:alt: Filling out the details of a new project.
|
||||
|
||||
.. tip::
|
||||
Choose the name of your own company from the drop-down menu.
|
||||
Choose the name of the company from the drop-down menu.
|
||||
|
||||
.. _google-sign-in/oauth:
|
||||
|
||||
@@ -44,16 +45,30 @@ OAuth consent screen
|
||||
|
||||
.. image:: google/consent-selection.png
|
||||
:align: center
|
||||
:alt: Google oauth consent selection menu
|
||||
:alt: Google OAuth consent selection menu.
|
||||
|
||||
#. Choose the option for :guilabel:`internal`, and click on :guilabel:`Create`.
|
||||
#. Choose one of the options (:guilabel:`Internal` / :guilabel:`External`), and click on
|
||||
:guilabel:`Create`.
|
||||
|
||||
.. image:: google/consent.png
|
||||
:align: center
|
||||
:alt: Choice of a user type in oauth consent
|
||||
:alt: Choice of a user type in OAuth consent.
|
||||
|
||||
#. Fill out your details and domain info, then click on *Save and Continue*.
|
||||
#. On the **Scopes** page, leave all fields as is, and click on *Save and Continue*.
|
||||
.. 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.
|
||||
|
||||
#. Fill out the required details and domain info, then click on :guilabel:`Save and Continue`.
|
||||
#. On the :menuselection:`Scopes` page, leave all fields as is, and click on :guilabel:`Save and
|
||||
Continue`.
|
||||
#. Next, 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`.
|
||||
|
||||
.. _google-sign-in/credentials:
|
||||
|
||||
@@ -64,24 +79,24 @@ Credentials
|
||||
|
||||
.. image:: google/credentials-button.png
|
||||
:align: center
|
||||
:alt: Credentials button menu
|
||||
:alt: Credentials button menu.
|
||||
|
||||
#. Click on *Create Credentials* and select **OAuth client ID**.
|
||||
#. Click on :guilabel:`Create Credentials`, and select :guilabel:`OAuth client ID`.
|
||||
|
||||
.. image:: google/client-id.png
|
||||
:align: center
|
||||
:alt: Oauth client id selection
|
||||
:alt: OAuth client id selection.
|
||||
|
||||
#. Select **Web Application** as the Application type. Now configure the allowed pages on which you
|
||||
will be redirected.
|
||||
#. Select :guilabel:`Web Application` as the :guilabel:`Application Type`. Now, configure the
|
||||
allowed pages on which Odoo will be redirected.
|
||||
|
||||
In order to achieve this, in the **Authorized redirect URIs** field, enter your database's domain
|
||||
immediately followed by ``/auth_oauth/signin``. For example:
|
||||
``https://mydomain.odoo.com/auth_oauth/signin``, then click on *Create*.
|
||||
In order to achieve this, in the :guilabel:`Authorized redirect URIs` field, enter the database's
|
||||
domain immediately followed by `/auth_oauth/signin`. For example:
|
||||
`https://mydomain.odoo.com/auth_oauth/signin`, then click on :guilabel:`Create`.
|
||||
|
||||
.. image:: google/create-client-id.png
|
||||
:align: center
|
||||
:alt: Creating oauth client id
|
||||
#. Now that the *OAuth client* has been created, a screen will appear with the :guilabel:`Client ID`
|
||||
and :guilabel:`Client Secret`. Copy the :guilabel:`Client ID` for later, as it will be necessary
|
||||
for the configuration in Odoo, which will be covered in the following steps.
|
||||
|
||||
.. _google-sign-in/auth-odoo:
|
||||
|
||||
@@ -93,47 +108,53 @@ Google Authentication on Odoo
|
||||
Retrieve the Client ID
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Once you have done the previous steps, two keys are generated on the Google API Dashboard: *Client
|
||||
ID* and *Client Secret*. Copy the *Client ID*.
|
||||
Once the previous steps are complete, two keys are generated on the Google API Dashboard:
|
||||
:guilabel:`Client ID` and :guilabel:`Client Secret`. Copy the :guilabel:`Client ID`.
|
||||
|
||||
.. image:: google/secret-ids.png
|
||||
:align: center
|
||||
:alt: Google OAuth Client ID generated
|
||||
:alt: Google OAuth Client ID generated.
|
||||
|
||||
.. _google-sign-in/odoo-activation:
|
||||
|
||||
Odoo activation
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
#. Go to :menuselection:`Odoo General Settings --> Integrations` and activate **OAuth
|
||||
Authentication**.
|
||||
#. Go to :menuselection:`Odoo General Settings --> Integrations` and activate :guilabel:`OAuth
|
||||
Authentication`.
|
||||
|
||||
.. note::
|
||||
You may have to log in again after this step.
|
||||
Odoo may prompt the user to log-in again after this step.
|
||||
|
||||
#. Go back to :menuselection:`General Settings --> Integrations`, activate **Google
|
||||
Authentication**, then fill out the *Client ID* with the key from the Google API Dashboard, and
|
||||
*Save*.
|
||||
#. Go back to :menuselection:`General Settings --> Integrations --> OAuth Authentication`, activate
|
||||
the selection and :guilabel:`Save`. Next, return to :menuselection:`General Settings -->
|
||||
Integrations --> Google Authentication` and activate the selection. Then fill out the
|
||||
:guilabel:`Client ID` with the key from the Google API Dashboard, and :guilabel:`Save`.
|
||||
|
||||
.. image:: google/odoo-client-id.png
|
||||
:align: center
|
||||
:alt: Filling out the client id in Odoo settings
|
||||
:alt: Filling out the client id in Odoo settings.
|
||||
|
||||
.. note::
|
||||
Google OAuth2 configuration can also be accessed by clicking on :guilabel:`OAuth Providers`
|
||||
under the :guilabel:`OAuth Authentication` heading in :menuselection:`Integrations`.
|
||||
|
||||
.. _google-sign-in/log-in:
|
||||
|
||||
Log in to Odoo with Google
|
||||
==========================
|
||||
|
||||
To link your Google account to your Odoo profile, click on *Log in with Google* when you are asked
|
||||
to choose a new password.
|
||||
To link the Google account to the Odoo profile, click on :guilabel:`Log in with Google` when first
|
||||
logging into Odoo.
|
||||
|
||||
.. image:: google/first-login.png
|
||||
:align: center
|
||||
:alt: Reset password screen with "Log in with Google" button
|
||||
:alt: Reset password screen with "Log in with Google" button.
|
||||
|
||||
Existing users must :ref:`reset their password <users/reset-password>` to access the *reset
|
||||
password* page, while new users can directly click on *Log in with Google* instead of choosing a new
|
||||
password.
|
||||
|
||||
Existing users must :ref:`reset their password <users/reset-password>` to access the
|
||||
:menuselection:`Reset Password` page, while new users can directly click on :guilabel:`Log in with
|
||||
Google`, instead of choosing a new password.
|
||||
|
||||
.. seealso::
|
||||
- `Google Cloud Platform Console Help - Setting up OAuth 2.0
|
||||
|
||||
|
Before Width: | Height: | Size: 7.7 KiB |
@@ -1,45 +1,125 @@
|
||||
===============================
|
||||
Manage Stock that you don't own
|
||||
===============================
|
||||
=================================================
|
||||
Consignment: buy and sell stock without owning it
|
||||
=================================================
|
||||
|
||||
Sometimes, suppliers can offer you to store and sell products without
|
||||
having to buy those items. This technique is called *consignee stock*.
|
||||
Most of the time, products stored in a company's warehouse are either purchased from suppliers, or
|
||||
are manufactured in-house. However, suppliers will sometimes let companies store and sell products
|
||||
in the company's warehouse, without having to buy those items up-front. This is called
|
||||
*consignment*.
|
||||
|
||||
Consignee stock is a great way for manufacturers and suppliers to launch
|
||||
new products. As resellers may be reluctant to buy a product they are
|
||||
not sure to be able to sell, consignee stock will allow them to offer an
|
||||
item to check its market without having to pay for it in the first
|
||||
place.
|
||||
Consignment is a useful method for suppliers to launch new products, and easily deliver to their
|
||||
customers. It's also a great way for the company storing the products (the consignee) to earn
|
||||
something back for their efforts. Consignees can even charge a fee for the convenience of storing
|
||||
products they don't actually own.
|
||||
|
||||
Of course, Odoo has the ability to manage those consignee stocks through
|
||||
advanced settings.
|
||||
Enable the consignment setting
|
||||
==============================
|
||||
|
||||
Configuration
|
||||
=============
|
||||
To receive, store, and sell consignment stock, the feature needs to be enabled in the settings. To
|
||||
do this, go to :menuselection:`Inventory --> Configuration --> Settings`, and under the
|
||||
:guilabel:`Traceability` section, check the box next to :guilabel:`Consignment`, and then click
|
||||
:guilabel:`Save` to finish.
|
||||
|
||||
To use this feature, go to :menuselection:`Inventory --> Configuration --> Settings` in
|
||||
the inventory app. Then, enable the *Consignment* feature in the
|
||||
*Traceability* section. Now, hit save.
|
||||
.. image:: owned_stock/owned-stock-enable-consignment.png
|
||||
:align: center
|
||||
:alt: Enabled Consignment setting in Inventory configuration.
|
||||
|
||||
.. image:: owned_stock/owned_stock_01.png
|
||||
:align: center
|
||||
Receive (and store) consignment stock
|
||||
=====================================
|
||||
|
||||
Reception of Consignee Stock
|
||||
============================
|
||||
|
||||
When in the *Inventory* app, open the receipts and create a new
|
||||
reception. On the right side, you will see that a new line called
|
||||
*Assign Owner* has appeared. There, you can specify the partner which
|
||||
owns the stock.
|
||||
|
||||
.. image:: owned_stock/owned_stock_02.png
|
||||
:align: center
|
||||
With the feature enabled in Odoo, consignment stock can now be received into a warehouse. From the
|
||||
main :menuselection:`Inventory` dashboard, click into the :guilabel:`Receipts`
|
||||
section. Then, click :guilabel:`Create`.
|
||||
|
||||
.. note::
|
||||
If you are the owner, you can leave the field blank.
|
||||
Consignment stock is not actually purchased from the vendor; it is simply received and stored.
|
||||
Because of this, there are no quotations or purchase orders involved in receiving consignment
|
||||
stock. So, *every* receipt of consignment stock will start by creating manual receipts.
|
||||
|
||||
Once the receipt is validated, the products enter your stock but still
|
||||
belong to the owner. They don’t impact your inventory valuation.
|
||||
Choose a vendor to enter in the :guilabel:`Receive From` field, and then choose the same vendor to
|
||||
enter in the :guilabel:`Assign Owner` field.
|
||||
|
||||
.. image:: owned_stock/owned_stock_03.png
|
||||
:align: center
|
||||
.. important::
|
||||
Since the products received from the vendor will be owned by the same vendor, the
|
||||
:guilabel:`Receive From` and :guilabel:`Assign Owner` fields must match.
|
||||
|
||||
Once the vendor-related fields are set, enter products into the :guilabel:`Product` lines, and set
|
||||
the quantities to be received into the warehouse under the :guilabel:`Done` column. If the
|
||||
:guilabel:`Units of Measure` feature is enabled, the :abbr:`UoM (Units of Measure)` can be changed,
|
||||
as well. Once all the consignment stock has been received, :guilabel:`Validate` the receipt.
|
||||
|
||||
.. image:: owned_stock/owned-stock-receipt-fields.png
|
||||
:align: center
|
||||
:alt: Matching vendor fields in consignment Receipt creation.
|
||||
|
||||
Sell and deliver consignment stock
|
||||
==================================
|
||||
|
||||
Once consignment stock has been received into the warehouse, it can be sold the same as any other
|
||||
in-stock product that has the :guilabel:`Can Be Sold` option enabled on the product form.
|
||||
|
||||
To create a sales order, navigate to the :menuselection:`Sales` app, and from the
|
||||
:guilabel:`Quotations` overview, click :guilabel:`Create`. Next, choose a customer to enter into the
|
||||
:guilabel:`Customer` field.
|
||||
|
||||
.. note::
|
||||
The :guilabel:`Customer` *must* be different from the :guilabel:`Vendor` that supplied the
|
||||
consignment stock received (and stored) in the warehouse.
|
||||
|
||||
Add the consignment product under the :guilabel:`Product` column in the order lines, set the
|
||||
:guilabel:`Quantity`, and fill out any other pertinent product details on the form. Once the
|
||||
quotation is complete, click :guilabel:`Confirm`.
|
||||
|
||||
.. image:: owned_stock/owned-stock-sales-order.png
|
||||
:align: center
|
||||
:alt: Sales order of consignment stock.
|
||||
|
||||
Once the :abbr:`RFQ (Request for Quotation)` has been confirmed, it will become a sales order. From
|
||||
here, the products can be delivered by clicking on the :guilabel:`Delivery` smart button, and
|
||||
selecting :guilabel:`Validate` to validate the delivery.
|
||||
|
||||
Traceability and reporting of consignment stock
|
||||
===============================================
|
||||
|
||||
Although consignment stock is owned by the vendor who supplied it, and not by the company storing it
|
||||
in their warehouse, consignment products will *still* appear in certain inventory reports.
|
||||
|
||||
To find inventory reports, go to :menuselection:`Inventory --> Reporting`, and choose a report to
|
||||
view.
|
||||
|
||||
.. note::
|
||||
Since the consignee does not actually own consigment stock, these products are *not* reflected
|
||||
in the :guilabel:`Stock Valuation` report, and have no impact on the consignee's inventory
|
||||
valuation.
|
||||
|
||||
Product moves report
|
||||
--------------------
|
||||
|
||||
To view all information about on-hand stock moves, navigate to the the :guilabel:`Product Moves`
|
||||
dashboard by going to :menuselection:`Inventory --> Reporting --> Product Moves`. For consignment
|
||||
products, the information in this report is the same as any other product: the history
|
||||
of its product moves can be reviewed; the :guilabel:`Quantity Done` and :guilabel:`Reference`
|
||||
document are available; and its :guilabel:`Locations` are available, as well. The consignment stock
|
||||
will originate from :guilabel:`Partner Location/Vendors`.
|
||||
|
||||
.. tip::
|
||||
To view a consignment product's moves by ownership, select the :guilabel:`Group By` filter,
|
||||
choose the :guilabel:`Add Custom Group` parameter, and then select :guilabel:`From Owner`, and
|
||||
:guilabel:`Apply` to finish.
|
||||
|
||||
.. image:: owned_stock/owned-stock-moves-history.png
|
||||
:align: center
|
||||
:alt: Consignment stock moves history.
|
||||
|
||||
.. tip::
|
||||
To see forecasted units of consignment stock, go to :menuselection:`Inventory --> Reporting -->
|
||||
Forecasted Inventory`.
|
||||
|
||||
Stock on hand report
|
||||
--------------------
|
||||
|
||||
View the :guilabel:`Stock On Hand` dashboard by navigating to :menuselection:`Inventory -->
|
||||
Reporting --> Inventory Report`. From this report, the :guilabel:`Locations` of all stock on-hand
|
||||
are displayed, in addition to the quantities per location. For consigment products, the
|
||||
:guilabel:`Owner` column will be populated with the owner of those products, or the original vendor
|
||||
who supplied the products in the first place.
|
||||
|
||||
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 8.2 KiB |
@@ -10,3 +10,4 @@ Warehouses
|
||||
|
||||
warehouses/difference_warehouse_location
|
||||
warehouses/warehouse_replenishment_transfer
|
||||
warehouses/create_a_second_warehouse
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
=========================
|
||||
Create a second warehouse
|
||||
=========================
|
||||
|
||||
A *warehouse* is a physical building or space where items are stored. In Odoo, it is possible to set
|
||||
up multiple warehouses and transfer stored items between them.
|
||||
|
||||
By default, the Odoo platform has one warehouse that is already configured, with the address set as
|
||||
the company's address. To create a second warehouse, select :menuselection:`Configuration -->
|
||||
Warehouses`, then click :guilabel:`Create` and configure the form as follows:
|
||||
|
||||
- :guilabel:`Warehouse`: the full name of the warehouse
|
||||
- :guilabel:`Short Name`: the abbreviated code by which the warehouse is referred to; the short name
|
||||
for the default warehouse in Odoo is **WH**
|
||||
- :guilabel:`Company`: the company that owns the warehouse; this can be set as the company that owns
|
||||
the Odoo database or the company of a customer or vendor
|
||||
- :guilabel:`Address`: the address where the warehouse is located
|
||||
|
||||
.. important::
|
||||
The options below will only appear if the :guilabel:`Multi-Step Routes` checkbox is enabled in
|
||||
:menuselection:`Configuration --> Settings` under the :guilabel:`Warehouse` heading. For more
|
||||
information about routes and how they work in Odoo, see :ref:`Using Routes and Pull/Push Rules
|
||||
<use-routes>`.
|
||||
|
||||
- :guilabel:`Incoming/Outgoing Shipments`: select the routes that incoming and outgoing shipments
|
||||
should follow
|
||||
- :guilabel:`Resupply Subcontractors`: allow subcontractors to be resupplied from this warehouse
|
||||
- :guilabel:`Manufacture to Resupply`: allow for items to be manufactured in this warehouse
|
||||
- :guilabel:`Manufacture`: select the route that should be followed when manufacturing goods inside
|
||||
the warehouse
|
||||
- :guilabel:`Buy to Resupply`: check the box to allow for purchased products to be delivered to the
|
||||
warehouse
|
||||
- :guilabel:`Resupply From`: select warehouses that can be used to resupply the warehouse being
|
||||
created
|
||||
|
||||
.. image:: create_a_second_warehouse/new-warehouse-configuration.png
|
||||
:align: center
|
||||
:alt: A filled out form for creating a new warehouse.
|
||||
|
||||
.. important::
|
||||
Creating a second warehouse will automatically enable the *Storage Locations* setting, which
|
||||
allows location tracking of products within a warehouse. To toggle this setting, navigate to
|
||||
:menuselection:`Configuration --> Settings` and click the checkbox under the
|
||||
:guilabel:`Warehouse` heading.
|
||||
|
||||
After filling out the form, click :guilabel:`Save` and the new warehouse will be created.
|
||||
|
||||
Add inventory to a new warehouse
|
||||
================================
|
||||
|
||||
If a new warehouse is created that has existing inventory in it, the inventory counts should be
|
||||
added to Odoo so that the stock listed in the Odoo database reflects what is in the physical
|
||||
warehouse. To add inventory to a new warehouse, navigate to :menuselection:`Inventory -->
|
||||
Operations --> Inventory Adjustments`, and then click :guilabel:`Create`. The inventory adjustment
|
||||
form can then be filled out as follows:
|
||||
|
||||
- :guilabel:`Inventory Reference`: the name or code that the inventory adjustment can be referred to
|
||||
by
|
||||
- :guilabel:`Locations`: the location(s) where the inventory is stored; include the new warehouse
|
||||
and any locations within it that inventory will be added to
|
||||
- :guilabel:`Products`: include all products that will be added to inventory or leave blank to
|
||||
select any product during the next step
|
||||
- :guilabel:`Include Exhausted Products`: include products with a quantity of zero; does not affect
|
||||
inventory adjustments for new warehouses since they have no existing inventory
|
||||
- :guilabel:`Accounting Date`: the date used by accounting teams for bookkeeping related to the
|
||||
inventory
|
||||
- :guilabel:`Company`: the company that owns the inventory; can be set as the user's company or as a
|
||||
customer or vendor
|
||||
- :guilabel:`Counted Quantities`: choose whether the counted quantities for products being added
|
||||
should default to stock on hand or zero; does not affect inventory adjustments for new warehouses
|
||||
since they have no existing inventory
|
||||
|
||||
.. image:: create_a_second_warehouse/inventory-adjustment-configuration.png
|
||||
:align: center
|
||||
:alt: A filled out form for an inventory adjustment.
|
||||
|
||||
Once the form is properly configured, click on :guilabel:`Start Inventory` to be taken to the next
|
||||
page where products can be added to the inventory adjustment. Add a new product by clicking on
|
||||
:guilabel:`Create` and then fill out the product line as follows:
|
||||
|
||||
- :guilabel:`Product`: the product being added to inventory
|
||||
- :guilabel:`Location`: the location where the product is currently stored in the new warehouse;
|
||||
this can be set as the overall warehouse or a location within the warehouse
|
||||
- :guilabel:`Lot/Serial Number`: the lot that the product belongs to or the serial number used to
|
||||
identify it
|
||||
- :guilabel:`On Hand`: the total quantity of the product stored in the location for which inventory
|
||||
is being adjusted; this should be zero for a new location or warehouse
|
||||
- :guilabel:`Counted`: the amount of the product that is being added to inventory
|
||||
- :guilabel:`Difference`: the difference between the *On Hand* and *Counted* values; this will
|
||||
automatically update to reflect the value entered in the :guilabel:`Counted` column
|
||||
- :guilabel:`UoM`: the unit of measure used for counting the product
|
||||
|
||||
.. image:: create_a_second_warehouse/product-line-configuration.png
|
||||
:align: center
|
||||
:alt: Include a line for each product being added to inventory.
|
||||
|
||||
After adding all the products already stored in the new warehouse, click :guilabel:`Validate
|
||||
Inventory` to complete the inventory adjustment. The values in the :guilabel:`On Hand` column will
|
||||
update to reflect those in the :guilabel:`Counted` column and the products added will appear in the
|
||||
inventory of the new warehouse.
|
||||
|
After Width: | Height: | Size: 9.7 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 8.2 KiB |
@@ -1,47 +1,198 @@
|
||||
======================================
|
||||
Taking stock from different warehouses
|
||||
======================================
|
||||
===========================================================
|
||||
Sell stock from multiple warehouses using virtual locations
|
||||
===========================================================
|
||||
|
||||
When you plan to deliver a customer, you don’t know in advance if the products will come from
|
||||
Warehouse A or Warehouse B. You may, in some cases, need to take stock from different warehouses.
|
||||
With *Odoo*, you can configure this by using the concept of virtual warehouses. Let us show you how
|
||||
to set those virtual warehouses.
|
||||
While keeping stock and selling inventory from one warehouse might work for smaller companies,
|
||||
bigger companies might need to keep stock in, or sell from, multiple warehouses in multiple
|
||||
locations.
|
||||
|
||||
Set up virtual warehouses
|
||||
=========================
|
||||
|
||||
Let’s say you have two warehouses: Warehouse A and Warehouse B. Create a new warehouse, that will be
|
||||
a virtual one. It will allow you to take the stock from A or B. To do so, go to your inventory app
|
||||
settings and enable the multi-warehouses feature. Then, go to the warehouses menu and click on
|
||||
create.
|
||||
|
||||
.. image:: stock_warehouses/ware1.png
|
||||
:align: center
|
||||
In Odoo, sometimes products included in a single sales order might take stock from two (or more)
|
||||
warehouses. In Odoo, pulling products from multiple warehouses to satisfy sales demands can be done
|
||||
by using *virtual locations*.
|
||||
|
||||
.. note::
|
||||
The *Storage Location* feature will be automatically enabled. Good news, because you will need it
|
||||
later in the process.
|
||||
In order to create virtual locations in warehouses and proceed to the following steps,
|
||||
the :guilabel:`Storage Locations` and :guilabel:`Multi-Step Routes` features will need to be
|
||||
enabled in the :menuselection:`Settings` app.
|
||||
|
||||
Now, you have to make sure that the main stock locations of warehouse A and warehouse B are children
|
||||
locations of the main stock location of warehouse A + B. Go to the locations menu, and edit the main
|
||||
location of your two warehouses. Then, change their parent location to main location of warehouse
|
||||
A+B.
|
||||
To do so, go to :menuselection:`Inventory --> Configuration --> Settings`, scroll down to the
|
||||
:guilabel:`Warehouse` section, and click the checkboxes next to :guilabel:`Storage Locations`
|
||||
and :guilabel:`Multi-Step Routes`. Then, :guilabel:`Save` the changes to finish.
|
||||
|
||||
.. image:: stock_warehouses/ware2.png
|
||||
Create and configure a virtual parent location
|
||||
==============================================
|
||||
|
||||
Before creating any virtual stock locations, a new warehouse will need to be created. This new
|
||||
warehouse will act as a *virtual* warehouse, and will be the *parent* location of other physical
|
||||
warehouses.
|
||||
|
||||
.. spoiler:: Why a "virtual" warehouse?
|
||||
|
||||
Virtual warehouses are great for companies with multiple physical warehouses. This is because
|
||||
a situation might arise when one warehouse runs out of stock of a particular product, but
|
||||
another warehouse still has stock on-hand. In this case, stock from these two (or more)
|
||||
warehouses could be used to fulfill a single sales order.
|
||||
|
||||
The "virtual" warehouse acts as a single aggregator of all the inventory stored in a company's
|
||||
physical warehouses, and is used (for traceability purposes) to create a hierarchy of locations
|
||||
in Odoo.
|
||||
|
||||
Create a new warehouse
|
||||
----------------------
|
||||
|
||||
To create a new warehouse, go to :menuselection:`Inventory --> Configuration --> Warehouses`, and
|
||||
click :guilabel:`Create`. From here, the warehouse :guilabel:`Name` and :guilabel:`Short Name` can
|
||||
be changed, and other warehouse details can be changed under the :guilabel:`Warehouse Configuration`
|
||||
tab.
|
||||
|
||||
Under the :guilabel:`Shipments` heading, set the number of steps used to process :guilabel:`Incoming
|
||||
Shipments` and :guilabel:`Outgoing Shipments` by selecting between the :guilabel:`1 step`,
|
||||
:guilabel:`2 steps`, and :guilabel:`3 steps` radio buttons. The desired option for
|
||||
:guilabel:`Incoming Shipments` and :guilabel:`Outgoing Shipments` will depend on the warehouse's
|
||||
procurement process, and might differ for individual products or product categories.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`How to choose the right flow to handle receipts?
|
||||
</applications/inventory_and_mrp/inventory/management/incoming/handle_receipts>`
|
||||
- :doc:`How to choose the right inventory flow to handle delivery orders?
|
||||
</applications/inventory_and_mrp/inventory/management/delivery/inventory_flow>`
|
||||
|
||||
Under the :guilabel:`Resupply` heading, configure the method(s) for how the warehouse resupplies
|
||||
its inventory:
|
||||
|
||||
- :guilabel:`Resupply Subcontractors`: resupply subcontractors with components from this warehouse.
|
||||
- :guilabel:`Manufacture to Resupply`: when products are manufactured, they can be manufactured in
|
||||
this warehouse.
|
||||
- :guilabel:`Manufacture`: to produce right away, move the components to the production location
|
||||
directly and start the manufacturing process; to pick first and then produce, unload the
|
||||
components from the stock to input location first, and then transfer it to the production
|
||||
location.
|
||||
- :guilabel:`Buy to Resupply`: when products are bought, they can be delivered to this warehouse.
|
||||
- :guilabel:`Resupply From`: automatically create routes to resupply this warehouse from another
|
||||
chosen warehouse
|
||||
|
||||
.. tip::
|
||||
*Routes* can be set and configured directly from the :guilabel:`Warehouse` form, by clicking on
|
||||
the :guilabel:`Routes` smart button. Once the warehouse is configured, virtual *Locations* can be
|
||||
created.
|
||||
|
||||
.. image:: stock_warehouses/stock-warehouses-create-warehouse.png
|
||||
:align: center
|
||||
:alt: The edit screen for creating a new warehouse.
|
||||
|
||||
Sell a product from the virtual warehouse
|
||||
=========================================
|
||||
In order to apply this virtual warehouse as the *parent* location of two *child* location
|
||||
warehouses, there need to be two warehouses configured with physical stock locations.
|
||||
|
||||
Let’s say you have two products, one stored in warehouse A and one stored in warehouse B. Now, you
|
||||
can create a new quotation for one of each product. Go to other information and choose Warehouse A+B
|
||||
in the shipping information.
|
||||
.. example::
|
||||
|
||||
.. image:: stock_warehouses/ware3.png
|
||||
| **Parent Warehouse**
|
||||
| :guilabel:`Warehouse`: `Virtual Warehouse`
|
||||
| :guilabel:`Location`: `VWH`
|
||||
|
||||
| **Child Warehouses**
|
||||
| :guilabel:`Warehouses`: `Warehouse A` and `Warehouse B`
|
||||
| :guilabel:`Locations`: `WHA/Stock` and `WHB/Stock`
|
||||
|
||||
Create a virtual parent location
|
||||
--------------------------------
|
||||
|
||||
.. important::
|
||||
In order to take stock from multiple warehouses to fulfill a sales order, there need to be at
|
||||
least **two** warehouses acting as *child locations* of the *virtual parent location* warehouse.
|
||||
|
||||
To create and edit *Locations*, go to :menuselection:`Inventory --> Configuration --> Locations`.
|
||||
All :guilabel:`Locations` are listed here, including the *Stock* :guilabel:`Location` of the virtual
|
||||
warehouse that was created. Click into the *Stock* :guilabel:`Location` for the virtual warehouse
|
||||
that was previously created (:dfn:`Warehouse Name/Stock`).
|
||||
|
||||
Then, under the :guilabel:`Additional Information` section, change the :guilabel:`Location Type`
|
||||
from :guilabel:`Internal Location` to :guilabel:`View`. :guilabel:`Save` the changes.
|
||||
|
||||
This identifies this :guilabel:`Location` as a *virtual location*, which is used to create a
|
||||
hierarchical structure for a warehouse and aggregate its *child locations*.
|
||||
|
||||
.. note::
|
||||
Products can *not* be stored in a :guilabel:`View` :guilabel:`Location Type`.
|
||||
|
||||
.. image:: stock_warehouses/stock-warehouses-location-types.png
|
||||
:align: center
|
||||
:alt: Warehouse location types in location creation screen.
|
||||
|
||||
Once you have done it, you can convert it to a sales order. Then, a delivery order will be
|
||||
automatically generated, with a product reserved in warehouse A and one in warehouse B.
|
||||
Configure physical warehouse locations
|
||||
======================================
|
||||
|
||||
.. image:: stock_warehouses/ware4.png
|
||||
Navigate back to the :guilabel:`Locations` overview (via the breadcrumbs), and remove any filters
|
||||
in the :guilabel:`Search Bar`. Then, click into the first physical warehouse :guilabel:`Location`
|
||||
that was previously created to be a *child location*, and click :guilabel:`Edit`.
|
||||
|
||||
Under :guilabel:`Parent Location`, select the virtual warehouse from the drop-down menu, and
|
||||
:guilabel:`Save` changes. Then, navigate back to the :guilabel:`Locations` overview, and repeat this
|
||||
step for the second physical warehouse stock location. Be sure to :guilabel:`Save` changes again.
|
||||
|
||||
Both locations are now *child locations* of the virtual warehouse *parent location*. This allows
|
||||
stock to be taken from multiple locations to fulfill a single sales order, if there is not enough
|
||||
stock in any one location (provided they are both tied to the same virtual warehouse *parent
|
||||
location*).
|
||||
|
||||
Example flow: Sell a product from a virtual warehouse
|
||||
=====================================================
|
||||
|
||||
.. note::
|
||||
To sell products from multiple warehouses using a virtual *parent* location in this flow, there
|
||||
must be at least **two** products and at least **two** warehouses configured - with at least
|
||||
**one** product with quantity on-hand in each warehouse, respectively.
|
||||
|
||||
To create a new request for quotation, or RFQ, navigate to the :menuselection:`Sales` app, and
|
||||
click :guilabel:`Create` from the :guilabel:`Quotations` overview. Fill out the information on the
|
||||
new quotation by adding a :guilabel:`Customer`, and click :guilabel:`Add a product` to add the two
|
||||
products stored in the two warehouses.
|
||||
|
||||
Then, click the :guilabel:`Other Info` tab on the sales order form. Under the :guilabel:`Delivery`
|
||||
section, change the :guilabel:`Warehouse` field value listed to the virtual warehouse that was
|
||||
previously created. Once the warehouse has been changed, click :guilabel:`Confirm` to convert the
|
||||
quotation into a sales order.
|
||||
|
||||
Now that the quotation has been confirmed as a sales order, click the :guilabel:`Delivery` smart
|
||||
button. From the warehouse delivery form, confirm that the :guilabel:`Source Location` value matches
|
||||
the :guilabel:`Warehouse` field value from the sales order. Both should list the virtual warehouse
|
||||
location.
|
||||
|
||||
.. important::
|
||||
The :guilabel:`Source Location` on the warehouse delivery form and the :guilabel:`Warehouse`
|
||||
under the :guilabel:`Other Info` tab on the sales order form *must* match in order for the
|
||||
products included in the sales order to be pulled from different warehouses.
|
||||
|
||||
- If the virtual warehouse is not the value in the :guilabel:`Source Location` field on the
|
||||
warehouse delivery form, then click :guilabel:`Edit`, make the change, and click
|
||||
:guilabel:`Save`.
|
||||
- If the virtual warehouse is not the value in the :guilabel:`Warehouse` field on the sales order,
|
||||
then a new quotation may need to be generated.
|
||||
- If whe :guilabel:`Warehouse` field is missing on the sales order form, then the virtual
|
||||
warehouse (and its children warehouses) may not have been set up correctly, in which case,
|
||||
review the documentation above again to make sure all settings/configuration were done properly.
|
||||
|
||||
.. image:: stock_warehouses/stock-warehouses-delivery-order.png
|
||||
:align: center
|
||||
:alt: Delivery order with matching source and child locations.
|
||||
|
||||
Finally, on the warehouse delivery form, under the :guilabel:`Detailed Operations` tab, confirm
|
||||
that the *Locations* values under the :guilabel:`From` column for each product matches to the *child
|
||||
locations* that are tied to the virtual *parent location*.
|
||||
|
||||
.. note::
|
||||
To view which *Locations* the products are coming from on the drop-down menus, click the
|
||||
:guilabel:`internal link (arrow)` icon to expand the *Location* information. If needed, it can be
|
||||
changed from here (granted there is quantity on hand for the product in that location).
|
||||
|
||||
Once everything has been properly set, click :guilabel:`Validate` and then :guilabel:`Apply` to
|
||||
validate the delivery. Then, navigate back to the sales order form (via the breadcrumbs), and
|
||||
click :guilabel:`Create Invoice` to invoice for the sales order.
|
||||
|
||||
.. tip::
|
||||
To use a virtual *parent* location as the default warehouse for sales orders, each salesperson
|
||||
can have the virtual warehouse assigned to them from the drop-down menu next to
|
||||
:guilabel:`Default Warehouse` on their employee form.
|
||||
|
||||
.. image:: stock_warehouses/stock-warehouses-employee-form.png
|
||||
:align: center
|
||||
:alt: Default warehouse location on employee form.
|
||||
|
||||
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 6.8 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 7.8 KiB |
@@ -1,3 +1,5 @@
|
||||
.. _use-routes:
|
||||
|
||||
================================
|
||||
Using Routes and Pull/Push Rules
|
||||
================================
|
||||
|
||||
@@ -19,5 +19,6 @@ and allow workers to trigger maintenance operations, feedback loops, quality iss
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
manufacturing/maintenance
|
||||
manufacturing/management
|
||||
manufacturing/quality_control
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
:nosearch:
|
||||
|
||||
===========
|
||||
Maintenance
|
||||
===========
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
maintenance/add_new_equipment
|
||||
@@ -0,0 +1,85 @@
|
||||
=================
|
||||
Add new equipment
|
||||
=================
|
||||
|
||||
In Odoo, **equipment** refers to any item that is used in everyday operations, including the
|
||||
manufacturing of products. This can mean a piece of machinery on a production line, a tool that is
|
||||
used in different locations, or a computer in an office space. Equipment registered in Odoo can be
|
||||
owned by the company that uses the Odoo database, or by a third party, such as a vendor in the case
|
||||
of equipment rentals.
|
||||
|
||||
Using Odoo **Maintenance**, it is possible to track individual pieces of equipment, along with
|
||||
information about their maintenance requirements. To add a new piece of equipment, navigate to the
|
||||
:guilabel:`Maintenance` module, select :menuselection:`Equipments --> Machines & Tools --> Create`,
|
||||
and configure the equipment as follows:
|
||||
|
||||
- :guilabel:`Equipment Name`: the product name of the piece of equipment
|
||||
- :guilabel:`Equipment Category`: the category that the equipment belongs to; for example,
|
||||
computers, machinery, tools, etc.; new categories can be created by navigating to
|
||||
:menuselection:`Configuration --> Equipment Categories` and clicking :guilabel:`Create`
|
||||
- :guilabel:`Company`: the company that owns the equipment; again, this can be the company that uses
|
||||
the Odoo database, or a third-party company
|
||||
- :guilabel:`Used By`: specify if the equipment is used by a specific employee, department, or both;
|
||||
select :guilabel:`Other` to specify both an employee and a department
|
||||
- :guilabel:`Maintenance Team`: the team responsible for servicing the equipment; new teams can be
|
||||
created by navigating to :menuselection:`Configuration --> Maintenance Teams` and
|
||||
selecting :guilabel:`Create`; the members of each team can also be assigned from this page
|
||||
- :guilabel:`Technician`: the person responsible for servicing the equipment; this can be used to
|
||||
assign a specific individual in the event that no maintenance team is assigned or when a specific
|
||||
member of the assigned team should always be responsible for the equipment; any person added to
|
||||
Odoo as a user can be assigned as a technician
|
||||
- :guilabel:`Used in location`: the location where the equipment is used; this is a simple text
|
||||
field that can be used to specify locations that are not work centers, like an office, for
|
||||
example
|
||||
- :guilabel:`Work Center`: if the equipment is used at a work center, specify it here; equipment can
|
||||
also be assigned to a work center by navigating to :menuselection:`Maintenance --> Equipments -->
|
||||
Work Centers`, selecting a work center or creating a new one using the :guilabel:`Create` button,
|
||||
and clicking the :guilabel:`Equipment` tab on the work center form
|
||||
|
||||
.. image:: add_new_equipment/new-equipment-form.png
|
||||
:align: center
|
||||
:alt: An example of a fully configured new equipment form.
|
||||
|
||||
Include additional product information
|
||||
--------------------------------------
|
||||
|
||||
The :guilabel:`Product Information` tab at the bottom of the form can be used to provide further
|
||||
details about the piece of equipment:
|
||||
|
||||
- :guilabel:`Vendor`: the vendor that the equipment was purchased from
|
||||
- :guilabel:`Vendor Reference`: the reference code assigned to the vendor
|
||||
- :guilabel:`Model`: the specific model of the piece of equipment
|
||||
- :guilabel:`Serial Number`: the unique serial number of the equipment
|
||||
- :guilabel:`Effective Date`: the date that the equipment became available for use; this is used to
|
||||
calculate the :abbr:`MTBF (Mean Time Between Failures)`
|
||||
- :guilabel:`Cost`: the amount the equipment was purchased for
|
||||
- :guilabel:`Warranty Expiration Date`: the date on which the equipment's warranty will expire
|
||||
|
||||
.. image:: add_new_equipment/new-equipment-product-information.png
|
||||
:align: center
|
||||
:alt: The product information tab for the new piece of equipment.
|
||||
|
||||
Add maintenance details
|
||||
-----------------------
|
||||
|
||||
The :guilabel:`Maintenance` tab includes information that can be useful to maintenance teams:
|
||||
|
||||
- :guilabel:`Preventive Maintenance Frequency`: specifies how often maintenance should be
|
||||
performed to prevent equipment failure
|
||||
- :guilabel:`Maintenance Duration`: the amount of time required to fix the equipment when it fails
|
||||
- :guilabel:`Expected Mean Time Between Failure`: the average amount of time that the equipment is
|
||||
expected to operate before failing
|
||||
|
||||
.. image:: add_new_equipment/new-equipment-maintenance.png
|
||||
:align: center
|
||||
:alt: The maintenance tab for the new piece of equipment.
|
||||
|
||||
.. Note::
|
||||
The :guilabel:`Maintenance` tab also includes sections for :guilabel:`Mean Time Between Failure`,
|
||||
:guilabel:`Estimated Next Failure`, :guilabel:`Latest Failure`,
|
||||
and :guilabel:`Mean Time To Repair`. These values are calculated automatically based on
|
||||
maintenance requests if any exist.
|
||||
|
||||
.. tip::
|
||||
To see the maintenance requests for a piece of equipment, go to the page for the equipment and
|
||||
select :guilabel:`Maintenance` in the top right corner of the form.
|
||||
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 9.0 KiB |
|
After Width: | Height: | Size: 8.3 KiB |
@@ -11,3 +11,4 @@ Marketing
|
||||
marketing/sms_marketing
|
||||
marketing/events
|
||||
marketing/surveys
|
||||
marketing/social_marketing
|
||||
|
||||
16
content/applications/marketing/social_marketing.rst
Normal file
@@ -0,0 +1,16 @@
|
||||
:nosearch:
|
||||
:show-content:
|
||||
:hide-page-toc:
|
||||
:show-toc:
|
||||
|
||||
================
|
||||
Social Marketing
|
||||
================
|
||||
|
||||
.. seealso::
|
||||
- `Odoo Tutorials: Marketing <https://www.odoo.com/slides/marketing-27>`_
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
social_marketing/essentials
|
||||
@@ -0,0 +1,11 @@
|
||||
:nosearch:
|
||||
|
||||
==========
|
||||
Essentials
|
||||
==========
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
essentials/social_essentials
|
||||
essentials/social_campaigns
|
||||
@@ -0,0 +1,151 @@
|
||||
==========================
|
||||
Social marketing campaigns
|
||||
==========================
|
||||
|
||||
Social marketing campaigns help companies connect directly with the marketplace. These campaigns
|
||||
are helpful when introducing a new product to customers, explaining the value of a product or
|
||||
service, or when advertising an upcoming event or product release.
|
||||
|
||||
The most effective social marketing campaigns typically involve multiple channels to maximize
|
||||
content distribution, and Odoo's *Social Marketing* application acts as a singular control center to
|
||||
monitor, plan, post, track, and analyze all of the various content and content channels within a
|
||||
single dashboard.
|
||||
|
||||
Campaigns page
|
||||
==============
|
||||
|
||||
To access a complete overview of all social marketing campaigns, open the :menuselection:`Social
|
||||
Marketing` application, and click :menuselection:`Campaigns` from the header menu. Doing so reveals
|
||||
a separate page with every campaign in a default kanban view.
|
||||
|
||||
.. image:: social_campaigns/campaigns-page.png
|
||||
:align: center
|
||||
:alt: View of the campaigns page in the Odoo Social Marketing application.
|
||||
|
||||
Each *stage* in the kanban view can be edited, by clicking the :guilabel:`gear icon` to the left of
|
||||
the :guilabel:`+ (plus sign)` - located to the right of the stage title.
|
||||
|
||||
.. note::
|
||||
The **gear icon** *only* appears when the cursor hovers to the left of the **+ (plus sign)**.
|
||||
When the gear icon is clicked, a drop-down menu reveals the options: :guilabel:`Fold`,
|
||||
:guilabel:`Edit Stage`, and :guilabel:`Delete`.
|
||||
|
||||
.. image:: social_campaigns/campaign-stage-dropdown.png
|
||||
:align: center
|
||||
:alt: View of the campaigns page in the Odoo Social Marketing application.
|
||||
|
||||
Clicking :guilabel:`Fold` minimizes that specific stage's column. The stage column can be restored
|
||||
by clicking the folded version of it on the main :guilabel:`Campaigns` dashboard in the default
|
||||
kanban view.
|
||||
|
||||
Selecting :guilabel:`Edit Stage` reveals a pop-up window, in which the name and the sequence of the
|
||||
stage can be modified. If changes are made, be sure to click :guilabel:`Save`.
|
||||
|
||||
Clicking :guilabel:`Delete` removes the stage entirely.
|
||||
|
||||
.. note::
|
||||
To add a new stage to the pipeline, side-scroll to the right on the :guilabel:`Campaigns`
|
||||
dashboard, click :guilabel:`Add a Column`, enter in the desired information, and click
|
||||
:guilabel:`Add`.
|
||||
|
||||
.. tip::
|
||||
The same social marketing campaign information on the :guilabel:`Campaigns` dashboard can also be
|
||||
viewed as a list, by selecting the :guilabel:`List` option, located under the search bar, in the
|
||||
upper-right corner.
|
||||
|
||||
Create social marketing campaigns
|
||||
=================================
|
||||
|
||||
First, open the :menuselection:`Social Marketing` application, and select :guilabel:`Campaigns` from
|
||||
the header menu.
|
||||
|
||||
On the :guilabel:`Campaigns` dashboard, a new campaign can be created by clicking the quick add
|
||||
:guilabel:`+ (plus sign)` located in the top-right corner of each stage in the pipeline, visible in
|
||||
the kanban view. Campaigns can also be created by clicking :guilabel:`Create` in the upper-left
|
||||
corner of the :guilabel:`Campaigns` dashboard.
|
||||
|
||||
Both options reveal a new campaign detail window directly on the :guilabel:`Campaigns` dashboard
|
||||
when clicked.
|
||||
|
||||
.. image:: social_campaigns/quick-add-campaign.png
|
||||
:align: center
|
||||
:alt: View of the quick add option for campaigns in Odoo Social Marketing.
|
||||
|
||||
Here, the :guilabel:`Campaign Name`, :guilabel:`Responsible`, and :guilabel:`Tags` can be entered.
|
||||
When all modifications are complete, click :guilabel:`Add` to add the campaign to the database.
|
||||
|
||||
Edit social marketing campaigns
|
||||
===============================
|
||||
|
||||
In order to edit a campaign in greater detail, and create/send various forms of communications
|
||||
related to it, the template page for that campaign must be accessed and modified, accordingly.
|
||||
There are multiple ways to access a template page for a campaign.
|
||||
|
||||
- After entering the pertinent information in the :guilabel:`Quick Add` campaign drop-down, click
|
||||
:guilabel:`Edit`.
|
||||
- Simply select the desired campaign from the :guilabel:`Campaigns` dashboard in list or kanban
|
||||
view.
|
||||
- On the :guilabel:`Campaigns` dashboard in the kanban view, select the :guilabel:`⋮ (three dots)`
|
||||
drop-down menu on the desired campaign, and select :guilabel:`Edit`.
|
||||
|
||||
Any of the above routes will reveal the *Campaign Template* page for that specific campaign.
|
||||
|
||||
Social marketing campaign templates
|
||||
===================================
|
||||
|
||||
On a *Campaign Template* page, numerous elements can be customized/modified, and various forms of
|
||||
communications can be created, modified, and sent or scheduled. Below is a sample of a completed
|
||||
campaign template.
|
||||
|
||||
.. image:: social_campaigns/create-campaign.png
|
||||
:align: center
|
||||
:alt: View of a sample campaign template page in Odoo Social Marketing.
|
||||
|
||||
.. important::
|
||||
In order for the :guilabel:`Send New Mailing` option to appear on campaign templates, make sure
|
||||
the *Mailing Campaigns* feature is enabled in the *Email Marketing* app. To do that, navigate to
|
||||
:menuselection:`Email Marketing --> Configuration --> Settings`, activate :guilabel:`Mailing
|
||||
Campaigns`, and click :guilabel:`Save`.
|
||||
|
||||
.. note::
|
||||
In order for the :guilabel:`Send SMS` option to appear, the Odoo *SMS Marketing* application must
|
||||
be installed on the database.
|
||||
|
||||
Add content and communications to campaigns
|
||||
===========================================
|
||||
|
||||
If the proper settings and applications are installed (as instructed above), there are four forms
|
||||
of communication/content options that can be added to campaigns. Each of these options are displayed
|
||||
as buttons in the upper-left corner of the campaign template page.
|
||||
|
||||
- :guilabel:`Send New Mailing`: reveals a blank email template on a separate page, in which the
|
||||
message can be fully customized in a variety of ways.
|
||||
- :guilabel:`Send SMS`: reveals a blank SMS template on a separate page, in which a SMS
|
||||
communication can be created and configured.
|
||||
- :guilabel:`Send Social Post`: reveals a blank social post template on a separate page, in which
|
||||
a post can be created, and applied to social media accounts that are already connected to the
|
||||
database.
|
||||
- :guilabel:`Push Notification`: reveals a similar blank social post template on a separate page,
|
||||
however, the :guilabel:`Push Notification` options are already pre-selected in the :guilabel:`Post
|
||||
on` field.
|
||||
|
||||
Whichever form of communication is created, once it's completed, Odoo returns to the
|
||||
:guilabel:`Campaign Template` page, showcasing that new content in its corresponding tab (e.g.
|
||||
:guilabel:`Mailings`, :guilabel:`SMS`, :guilabel:`Social Media`, and/or :guilabel:`Push
|
||||
Notifications`).
|
||||
|
||||
As content and communications are added to a campaign, tabs for those specific mediums appear,
|
||||
along with a variety of analytical smart buttons (e.g. :guilabel:`Revenues`, :guilabel:`Quotations`,
|
||||
:guilabel:`Leads`, etc.).
|
||||
|
||||
These smart buttons, located at the top of the template, display different metrics related to the
|
||||
campaign, and its various communications and content. Clicking any smart button reveals a separate
|
||||
page dedicated to that particular element of the campaign, allowing for quicker, more organized
|
||||
analysis.
|
||||
|
||||
.. note::
|
||||
The Odoo *Social Marketing* app is integrated with other Odoo applications, such as *Sales*,
|
||||
*Invoicing*, *CRM*, and *Website*.
|
||||
|
||||
.. seealso::
|
||||
:doc:`/applications/marketing/social_marketing/essentials/social_essentials`
|
||||
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 15 KiB |
@@ -0,0 +1,345 @@
|
||||
===========================
|
||||
Social marketing essentials
|
||||
===========================
|
||||
|
||||
Odoo's *Social Marketing* helps content marketers create and schedule posts, manage various social
|
||||
media accounts, analyze content effectiveness, and engage directly with social media followers in
|
||||
one, centralized location.
|
||||
|
||||
Add social media accounts
|
||||
=========================
|
||||
|
||||
In order to create posts, each social media account must be added as a stream in the Odoo *Social
|
||||
Marketing* application.
|
||||
|
||||
Add a social media stream
|
||||
-------------------------
|
||||
|
||||
Add a social media account as a stream by navigating to :menuselection:`Social Marketing` and then
|
||||
select the :guilabel:`Add A Stream` button located in the upper left corner
|
||||
|
||||
When :guilabel:`Add A Stream` is clicked, the following pop-up appears, displaying the different
|
||||
social media outlets to choose from.
|
||||
|
||||
.. image:: social_essentials/social-add-streams.png
|
||||
:align: center
|
||||
:alt: View of the pop-up that appears when 'Add a Stream' is selected in Odoo.
|
||||
|
||||
.. note::
|
||||
Additional social media outlet options are available depending on your version of Odoo.
|
||||
|
||||
From this pop-up, select a social media option: :guilabel:`Facebook`, :guilabel:`LinkedIn`, or
|
||||
:guilabel:`Twitter`.
|
||||
|
||||
Then, Odoo navigates directly to that specific social media outlet's authorization page, where
|
||||
permission must be granted, in order for Odoo to add that particular social media account to the
|
||||
*Social Marketing* application as a stream on the main dashboard of the app.
|
||||
|
||||
.. note::
|
||||
A Facebook page can be added as long as the Facebook account that grants permission is the
|
||||
administrator for the page. Also, different pages can be added for different streams.
|
||||
|
||||
Once permission is granted, Odoo navigates back to the :guilabel:`Feed` on the main
|
||||
:guilabel:`Social Marketing` dashboard, and a new column with that account's posts are automatically
|
||||
added.
|
||||
|
||||
From here, new accounts and/or streams can be added and managed at any time.
|
||||
|
||||
.. image:: social_essentials/feed.png
|
||||
:align: center
|
||||
:alt: Example of how a populated stream-filled dashboard looks in Odoo Social Marketing
|
||||
|
||||
.. note::
|
||||
Adding social media accounts to the feed also links that specific social media platform's KPIs
|
||||
(if the platform has them). To get redirected to the statistics and metrics related to any social
|
||||
account, click on :guilabel:`Insights`.
|
||||
|
||||
.. image:: social_essentials/insights.png
|
||||
:align: center
|
||||
:alt: The insights link that can be accessed for each social media stream added in Odoo.
|
||||
|
||||
Create and publish social media posts in Odoo
|
||||
=============================================
|
||||
|
||||
To create content for social media accounts in the :menuselection:`Social Marketing` application,
|
||||
click the :guilabel:`New Post` button located in the upper-left corner of the main dashboard, or
|
||||
navigate to :menuselection:`Posts --> Create` from the header menu.
|
||||
|
||||
Either route reveals a blank post template page that can be customized and configured in a number
|
||||
of different ways.
|
||||
|
||||
.. image:: social_essentials/social-create-post.png
|
||||
:align: center
|
||||
:alt: How to create a social media post directly through Odoo
|
||||
|
||||
Post template
|
||||
-------------
|
||||
|
||||
The post template page has many different options avaiable.
|
||||
|
||||
'Your Post' section
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The first option is the :guilabel:`Post on` field. This is where it's determined on what social
|
||||
media account(s), or on which website(s) via push notification, this post will be published.
|
||||
|
||||
.. important::
|
||||
In order for the :guilabel:`Push Notification` option to appear, make sure the *Enable Web Push
|
||||
Notifications* feature is enabled in the *Website* app. To do that, navigate to
|
||||
:menuselection:`Website --> Configuration --> Settings`, activate :guilabel:`Enable Web Push
|
||||
Notifications`, fill out the corresponding fields, and click :guilabel:`Save`.
|
||||
|
||||
Odoo automatically provides every available social media account that's been linked to the database
|
||||
as an option in this section, as well.
|
||||
|
||||
.. note::
|
||||
If a social media account hasn't been added as a stream to the *Social Marketing* application, it
|
||||
will not appear as an option on the post template.
|
||||
|
||||
Next, there's the :guilabel:`Message` field. This is where the main content of the post is created.
|
||||
|
||||
Type the desired message for the post in this field. To the right, as the :guilabel:`Message` field
|
||||
is populated, Odoo displays visual samples of how the post will look on all the previously selected
|
||||
social media accounts from the :guilabel:`Post on` field above.
|
||||
|
||||
.. tip::
|
||||
Emojis can also be added directly to the text in the :guilabel:`Message` field. Just click the
|
||||
:guilabel:`emoji (smiley face) icon`, located on the line of the :guilabel:`Message` field to the
|
||||
far right. Clicking this icon reveals a drop-down containing numerous emojis to choose from.
|
||||
|
||||
If images are to be used in the post, click the :guilabel:`ATTACH IMAGES` link beneath the
|
||||
:guilabel:`Message` field, and Odoo reveals a pop-up window. In this pop-up, the desired image must
|
||||
be chosen, and then uploaded.
|
||||
|
||||
A preview of the entire post, text and image (if applicable), is instantly displayed in the visual
|
||||
preview of the post.
|
||||
|
||||
Next, there's the option to attach this post to a specific marketing campaign in the database in
|
||||
the :guilabel:`Campaign` field. Click the blank line next to :guilabel:`Campaign` to reveal the
|
||||
previously configured campaigns to choose from.
|
||||
|
||||
.. tip::
|
||||
A new campaign can be created, as well, by typing the name of the new campaign on the blank
|
||||
:guilabel:`Campaign` field, and selecting :guilabel:`Create` from the drop-down field menu. Or,
|
||||
select :guilabel:`Create and edit` from the menu to further customize that newly-created
|
||||
campaign.
|
||||
|
||||
.. note::
|
||||
A social post does *not* need to be attached to a campaign.
|
||||
|
||||
Then, in the :guilabel:`When` field, choose either :guilabel:`Send Now` to have Odoo publish the
|
||||
post immediately, or :guilabel:`Schedule later` to have Odoo publish the post at a later date and
|
||||
time.
|
||||
|
||||
If :guilabel:`Schedule later` is selected, Odoo reveals a new field beneath it (the
|
||||
:guilabel:`Scheduled post date` field). Clicking that empty field reveals a pop-up calendar, in
|
||||
which a future date and time is designated. At which time, Odoo will promptly publish the post on
|
||||
the pre-determined social media accounts.
|
||||
|
||||
Click on the desired date to schedule the post for that day. Then, either select and customize
|
||||
the default time in the :guilabel:`Scheduled post date` field manually. Or, adjust the desired post
|
||||
time, by clicking the :guilabel:`scheduling (clock) icon` located on the calendar pop-up, and choose
|
||||
the desired time for Odoo to publish this post on that future date.
|
||||
|
||||
If scheduling a post, remember to hit :guilabel:`Schedule` in the upper left of the post template.
|
||||
Doing so, locks in that specific date/time for Odoo to send the post, and it changes the status of
|
||||
the post to :guilabel:`Scheduled`.
|
||||
|
||||
.. note::
|
||||
Also, when :guilabel:`Schedule` is clicked, a number of analytical smart buttons appear on the
|
||||
post page. Each one offers up a detailed anaylsis of the corresponding metric (e.g.
|
||||
:guilabel:`Leads`, :guilabel:`Revenues`, etc.). These same smart buttons appear when a post is
|
||||
officially published, as well.
|
||||
|
||||
'Web Notification Options' section
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
If any :guilabel:`Push Notifications` are selected in the :guilabel:`Post on` field, Odoo provides
|
||||
another section of settings/options at the bottom of the post template. It should be noted that
|
||||
*none* of these fields are required.
|
||||
|
||||
The first field is for a :guilabel:`Push Notification Title`. This is text that is displayed as the
|
||||
title of the push notification whenever it's sent. Odoo displays a visual preview of this title, if
|
||||
one is created.
|
||||
|
||||
To designate a specific page on the website that should trigger this push notification, enter that
|
||||
page's URL in the :guilabel:`Push Target URL` field. Then, once a visitor reaches that specific
|
||||
page, Odoo will display the push notification.
|
||||
|
||||
Below that field is the option to add a custom :guilabel:`Push Icon Image`. This is an icon that
|
||||
appears beside the push notification. By default, Odoo uses a "smiley face" as the icon.
|
||||
|
||||
To upload a new image, click the :guilabel:`Edit (pencil) icon` when the :guilabel:`Push Icon Image`
|
||||
field is hovered over with the cursor. Then, proceed to locate and upload the desired image, and
|
||||
Odoo automatically displays a preview of how the icon will appear on the push notification.
|
||||
|
||||
Next, there is the option to :guilabel:`Send at Visitors' Timezone`. If enabled, Odoo will send it
|
||||
at the appropriate, pre-determined time, taking the visitor's location into consideration.
|
||||
|
||||
Save, post, and test notification options
|
||||
-----------------------------------------
|
||||
|
||||
When all the modifications have been made, and the post is completed, either click :guilabel:`Save`
|
||||
to save the post as a *Draft*. Or, if the post is ready to be published immediately, click
|
||||
:guilabel:`Post`, and Odoo automatically publishes the post on the pre-determined social media
|
||||
accounts.
|
||||
|
||||
There is also the option to :guilabel:`Test Notification`, if a :guilabel:`Push Notification` was
|
||||
selected in the :guilabel:`Post on` field. Clicking that, provides a quick example of how the
|
||||
notification will appear for visitors.
|
||||
|
||||
Social post status bar
|
||||
----------------------
|
||||
|
||||
In the top-right of the :guilabel:`Post Template` page is the :guilabel:`Status Bar`. This displays
|
||||
the current status of the post.
|
||||
|
||||
When :guilabel:`Save` is clicked, the post is in the *Draft* status.
|
||||
|
||||
If the post is scheduled to be sent at a future date/time, and the :guilabel:`Schedule` button has
|
||||
been clicked, the status of the post is *Scheduled*.
|
||||
|
||||
If the post is in the process of currently being published or sent, the status of the post is
|
||||
*Posting*. And, lastly, if the post has already been published or sent, the status is *Posted*.
|
||||
|
||||
Posts page
|
||||
==========
|
||||
|
||||
To see a complete overview of posts, go to Odoo :menuselection:`Social Marketing`, and click
|
||||
:menuselection:`Posts` in the header menu. Here, every post that has been created and posted with
|
||||
Odoo is available.
|
||||
|
||||
There are four different view options for :guilabel:`Posts` page data: *kanban*, *calendar*, *list*,
|
||||
and *pivot*. The view options are located in the upper right corner of the :guilabel:`Posts` page,
|
||||
beneath the search bar.
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. tab:: Kanban view
|
||||
|
||||
By default, Odoo displays the posts in a kanban view. The information on this page can be
|
||||
sorted even further, via the :guilabel:`Filters` and :guilabel:`Group by` drop-down menu.
|
||||
|
||||
.. image:: social_essentials/posts-page.png
|
||||
:align: center
|
||||
:alt: Kanban view of the posts page in the Odoo Social Marketing application.
|
||||
|
||||
.. tab:: Calendar view
|
||||
|
||||
The calendar view option displays a visual representation in a calendar format of when posts
|
||||
were published, or are scheduled to be published. This option provides a clear overview of any
|
||||
planned day, week, or month, and Odoo displays all drafted, scheduled, and published posts.
|
||||
|
||||
.. image:: social_essentials/calendar-view.png
|
||||
:align: center
|
||||
:alt: Example of the calendar view in Odoo Social Marketing.
|
||||
|
||||
.. tab:: List view
|
||||
|
||||
The list view option is similar to the kanban option, but instead of individual blocks, all
|
||||
the post information is displayed in a clear, list layout. Each line of the list displays the
|
||||
:guilabel:`Social Accounts`, :guilabel:`Message`, and :guilabel:`Status` of every post.
|
||||
|
||||
.. image:: social_essentials/list-view.png
|
||||
:align: center
|
||||
:alt: View of the list option on the posts page in Odoo Social Marketing.
|
||||
|
||||
.. tab:: Pivot view
|
||||
|
||||
The pivot view option provides a fully customizable grid table, where different measures of
|
||||
data can be added and analyzed.
|
||||
|
||||
.. image:: social_essentials/pivot-view.png
|
||||
:align: center
|
||||
:alt: View of the pivot option on the posts page in Odoo Social Marketing.
|
||||
|
||||
The pivot view option provides numerous analytical options, allowing for in-depth, detailed
|
||||
analysis of various posts.
|
||||
|
||||
Click on any :guilabel:`+ (plus sign) icon` next to a line in the pivot table to reveal more metric
|
||||
options to add to the grid.
|
||||
|
||||
While in the pivot view, the option to :guilabel:`Insert in Spreadsheet` is available, located
|
||||
to the right of the :guilabel:`Measures` drop-down.
|
||||
|
||||
When clicked, a pop-up appears, where the option to add this information to a current
|
||||
spreadsheet is available. The option to create a new spreadsheet for this information
|
||||
on-the-fly is also available in this pop-up, as well.
|
||||
|
||||
Next to the :guilabel:`Insert in Spreadsheet` are three view options, specific to the pivot
|
||||
view.
|
||||
|
||||
From left to right, the options are:
|
||||
|
||||
- :guilabel:`Flip Axis`, which switches the *X* and *Y* axis in the grid table.
|
||||
- :guilabel:`Expand All`, which expands each line in the grid, revealing more detailed
|
||||
information related to it.
|
||||
- :guilabel:`Download`, which, when clicked, instantly downloads the pivot table as a
|
||||
spreadsheet.
|
||||
|
||||
Visitors
|
||||
========
|
||||
|
||||
To see a complete overview of all the people who have visited the website(s) connected to the
|
||||
database, navigate to :menuselection:`Social Marketing --> Visitors` in the header menu.
|
||||
|
||||
.. image:: social_essentials/visitors.png
|
||||
:align: center
|
||||
:alt: View of the Visitors page in the Odoo Social Marketing application.
|
||||
|
||||
Here, Odoo provides a detailed layout of all the visitors' pertinent information in a default
|
||||
kanban view. This same information can be sorted via the :guilabel:`Filters` and :guilabel:`Group
|
||||
By` options.
|
||||
|
||||
The visitor data can also be viewed as a list or a graph. Those view options are located in the
|
||||
upper-right corner of the :guilabel:`Visitors` page beneath the search bar.
|
||||
|
||||
Social media page
|
||||
=================
|
||||
|
||||
Go to :menuselection:`Configuration --> Social Media` to see a collection of all social media
|
||||
options: :guilabel:`Facebook`, :guilabel:`LinkedIn`, :guilabel:`Twitter`, and :guilabel:`Push
|
||||
Notifications`.
|
||||
|
||||
.. image:: social_essentials/social-media-page.png
|
||||
:align: center
|
||||
:alt: View of the social media page in the Odoo Social Marketing application.
|
||||
|
||||
If no account has been linked to any particular social media, click :guilabel:`Link Account` to
|
||||
proceed through the linking process.
|
||||
|
||||
Social accounts page
|
||||
====================
|
||||
|
||||
To see a list of all social accounts linked to the database, go to :menuselection:`Configuration -->
|
||||
Social Accounts`. This page will display the :guilabel:`Medium Name` and the :guilabel:`Social
|
||||
Media` platform it is associated with.
|
||||
|
||||
.. image:: social_essentials/social-accounts-page.png
|
||||
:align: center
|
||||
:alt: View of the social accounts page in the Odoo Social Marketing application.
|
||||
|
||||
To edit/modify any social accounts, simply select the desired account from the list on this page,
|
||||
and proceed to make any adjustments necessary. Don't forget to hit :guilabel:`Save` to secure any
|
||||
changes.
|
||||
|
||||
Social streams page
|
||||
===================
|
||||
|
||||
Navigate to :menuselection:`Configuration --> Social Streams` to reveal a separate page containing
|
||||
all of the social media streams that have been added to the main dashboard of the *Social Marketing*
|
||||
app, accessible via the :guilabel:`Feed` option in the header menu.
|
||||
|
||||
.. image:: social_essentials/social-streams-page.png
|
||||
:align: center
|
||||
:alt: View of the social accounts page in the Odoo Social Marketing application.
|
||||
|
||||
Here, the social stream information is organized in a list with the :guilabel:`Social Media`, the
|
||||
:guilabel:`Title` of the stream, and the :guilabel:`Type` of the stream (e.g. :guilabel:`Posts`,
|
||||
:guilabel:`Keyword`, etc.).
|
||||
|
||||
To modify any stream's information, simply click the desired stream from the list, and proceed to
|
||||
make any necessary adjustments. Don't forget to hit :guilabel:`Save` to secure any changes.
|
||||
|
||||
.. seealso::
|
||||
:doc:`/applications/marketing/social_marketing/essentials/social_campaigns`
|
||||
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 86 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 8.6 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 19 KiB |
@@ -1,7 +1,4 @@
|
||||
:nosearch:
|
||||
:show-content:
|
||||
:hide-page-toc:
|
||||
:show-toc:
|
||||
|
||||
=======
|
||||
Surveys
|
||||
@@ -13,4 +10,6 @@ Surveys
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
surveys/overview
|
||||
surveys/create
|
||||
surveys/scoring
|
||||
surveys/time_random
|
||||
|
||||
|
Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
@@ -1,12 +0,0 @@
|
||||
:nosearch:
|
||||
|
||||
========
|
||||
Overview
|
||||
========
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
overview/create
|
||||
overview/scoring
|
||||
overview/time_random
|
||||
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
@@ -1,9 +1,9 @@
|
||||
===============================
|
||||
Google Calendar synchronization
|
||||
===============================
|
||||
=====================================
|
||||
Synchronize Google calendar with Odoo
|
||||
=====================================
|
||||
|
||||
Synchronize Google Calendar with Odoo to see and manage meetings from both platforms (updates go
|
||||
in both directions). This integration helps organize your schedule so you never miss a meeting.
|
||||
Synchronize Google Calendar with Odoo to see and manage meetings from both platforms (updates go in
|
||||
both directions). This integration helps organize schedules, so a meeting is never missed.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`/applications/general/auth/google`
|
||||
@@ -12,96 +12,100 @@ in both directions). This integration helps organize your schedule so you never
|
||||
Setup in Google
|
||||
===============
|
||||
|
||||
Enable Google Calendar API
|
||||
--------------------------
|
||||
Select (or create) a project
|
||||
----------------------------
|
||||
|
||||
Begin by creating a new Google API project and enabling the Google Calendar API. Then, go to the
|
||||
`Google API Console <https://console.developers.google.com>`_ and log into your Google account.
|
||||
Create a new Google API project and enable the Google Calendar API. First, go to the `Google API
|
||||
Console <https://console.developers.google.com>`_ and log into the Google account.
|
||||
|
||||
.. note::
|
||||
If this is your first time visiting this page, Google will prompt you to enter a country and
|
||||
If this is the first time visiting this page, Google will prompt the user to enter a country and
|
||||
agree to the Terms of Service. Select a country from the drop-down list and agree to the
|
||||
:abbr:`ToS (Terms of Service)`.
|
||||
|
||||
Next, click :guilabel:`Select a project` and select or create an API project to store credentials.
|
||||
Next, click :guilabel:`Select a project` and select (or create) an API project to configure OAuth
|
||||
in, and store credentials. Click :guilabel:`New Project`.
|
||||
|
||||
.. image:: google/new-api-project.png
|
||||
:align: center
|
||||
:alt: Create a new API project to store credentials.
|
||||
|
||||
.. tip::
|
||||
Give the API Project a clear name like "Odoo Sync" so you can easily find it.
|
||||
Give the API Project a clear name, like "Odoo Sync", so it can be easily identified.
|
||||
|
||||
Then, open the API Project and click :guilabel:`Enable APIs and Services`.
|
||||
Enable Google calendar API
|
||||
--------------------------
|
||||
|
||||
Now, click on :guilabel:`Enabled APIs and Services` in the left menu. Select :guilabel:`Enabled APIs
|
||||
and Services` again if the :guilabel:`Search bar` doesn't appear.
|
||||
|
||||
.. image:: google/enable-apis-services.png
|
||||
:align: center
|
||||
:alt: Enable APIs and Services on the API Project.
|
||||
|
||||
After that, search for *Google Calendar API* using the search bar and select :guilabel:`Google
|
||||
After that, search for `Google Calendar API` using the search bar and select :guilabel:`Google
|
||||
Calendar API` from the search results. Click :guilabel:`Enable`.
|
||||
|
||||
.. image:: google/enable-google-cal-api.png
|
||||
:align: center
|
||||
:alt: Enable the Google Calendar API.
|
||||
|
||||
OAuth consent screen
|
||||
--------------------
|
||||
|
||||
Now that the API project has been created, OAuth should be configured. To do that, click on
|
||||
:guilabel:`OAuth consent` in the left menu and then select the :guilabel:`User Type`.
|
||||
|
||||
.. 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.
|
||||
|
||||
In the second step, :guilabel:`OAuth Consent Screen`, type `Odoo` in the :guilabel:`App name` field,
|
||||
select the email address for the :guilabel:`User support email` field, and type the email address
|
||||
for the :guilabel:`Developer contact information` section. Then, click :guilabel:`Save and
|
||||
Continue`.
|
||||
|
||||
Skip the third step, :menuselection:`Scopes`, by clicking :guilabel:`Save and Continue`.
|
||||
|
||||
Next, 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`.
|
||||
|
||||
Now, the OAuth consent has been configured, and it's time to create credentials.
|
||||
|
||||
Create credentials
|
||||
------------------
|
||||
|
||||
Now that you have created your API project and enabled the Google Calendar API, you need to create
|
||||
credentials. Begin by clicking :guilabel:`Create Credentials`. Google will then guide you through
|
||||
four steps to create your API credentials.
|
||||
The *Client ID* and the *Client Secret* are both needed to connect Google Calendar to Odoo. This is
|
||||
the last step in the Google console. Begin by clicking :guilabel:`Credentials` in the left menu.
|
||||
Then, click :guilabel:`Create Credentials`, and select :guilabel:`OAuth client ID`, Google will open
|
||||
a guide to create credentials.
|
||||
|
||||
- In the first step, :guilabel:`Credential Type`, select the :guilabel:`Google Calendar API` and
|
||||
:guilabel:`User Data` options. Then, click :guilabel:`Next`.
|
||||
Under :menuselection:`Create OAuth Client ID`, select :guilabel:`Website application` for the
|
||||
:guilabel:`Application Type` field, and type `My Odoo Database` for the :guilabel:`Name`.
|
||||
|
||||
.. image:: google/credential-type.png
|
||||
:align: center
|
||||
:alt: Select Google Calendar API and User Data for the Credential Type.
|
||||
|
||||
- In the second step, :guilabel:`OAuth Consent Screen`, type *Odoo* in the :guilabel:`App name`
|
||||
field, select your email address for the :guilabel:`User support email` field, and type your email
|
||||
address for the :guilabel:`Developer contact information` section. Then, click :guilabel:`Save
|
||||
and Continue`.
|
||||
|
||||
- Skip the third step, :guilabel:`Scopes`, by clicking :guilabel:`Save and Continue`.
|
||||
|
||||
- In the last step, :guilabel:`OAuth Client ID`, select :guilabel:`Website application` for the
|
||||
:guilabel:`Application Type` field and type *My Odoo Database* for the :guilabel:`Name`.
|
||||
|
||||
- Under the :guilabel:`Authorized JavaScript Origins` section, click :guilabel:`+ Add URI` and
|
||||
type your company's Odoo URL address.
|
||||
|
||||
- Under the :guilabel:`Authorized redirect URIs` section, click :guilabel:`+ Add URI` and type
|
||||
your company's Odoo URL address followed by */google_account/authentication*. Finally, click
|
||||
:guilabel:`Create` and :guilabel:`Done`.
|
||||
- Under the :guilabel:`Authorized JavaScript Origins` section, click :guilabel:`+ Add URI` and
|
||||
type the company's Odoo full :abbr:`URL (Uniform Resource Locator)` address.
|
||||
- Under the :guilabel:`Authorized redirect URIs` section, click :guilabel:`+ Add URI` and type
|
||||
the company's Odoo :abbr:`URL (Uniform Resource Locator)` address followed by
|
||||
`/google_account/authentication`. Finally, click :guilabel:`Create`.
|
||||
|
||||
.. image:: google/uri.png
|
||||
:align: center
|
||||
:alt: Add the authorized JavaScript origins and the authorized redirect URIs.
|
||||
|
||||
After successfully creating a new API project, enabling the Google Calendar API, and generating the
|
||||
Google Calendar API credentials, you should now have a Client ID and Client Secret.
|
||||
|
||||
Client ID & Client Secret
|
||||
-------------------------
|
||||
|
||||
The **Client ID** and the **Client Secret** are both needed to connect Google Calendar to Odoo. Find
|
||||
the Client ID and the Client Secret by opening the Google Cloud Platform navigation menu and going
|
||||
to :menuselection:`API & Services --> Credentials --> OAuth 2.0 Client IDs`.
|
||||
|
||||
Next, locate the credentials you just created for the Google Calendar API. Then, click on
|
||||
:guilabel:`Edit OAuth Client` (the pencil icon). The page will redirect to the edit page, where you
|
||||
can view the Client ID and the Client Secret.
|
||||
|
||||
.. image:: google/edit-oauth-2.png
|
||||
:align: center
|
||||
:alt: Click Edit OAuth Client to view the credential details.
|
||||
A :guilabel:`Client ID` and :guilabel:`Client Secret` will appear, copy these to a notepad.
|
||||
|
||||
Setup in Odoo
|
||||
=============
|
||||
|
||||
Once the Client ID and the Client Secret are located, open the Odoo database and go to
|
||||
Once the *Client ID* and the *Client Secret* are located, open the Odoo database and go to
|
||||
:menuselection:`Settings --> General Settings --> Integrations --> Google Calendar`. Check the box
|
||||
next to :guilabel:`Google Calendar`.
|
||||
|
||||
@@ -109,20 +113,25 @@ next to :guilabel:`Google Calendar`.
|
||||
:align: center
|
||||
:alt: The Google Calendar checkbox in General Settings.
|
||||
|
||||
Next, copy and paste the Client ID and the Client Secret from the Google Calendar API Credentials
|
||||
page into their respective fields below the :guilabel:`Google Calendar` checkbox. Then, click
|
||||
:guilabel:`Save`.
|
||||
Next, copy and paste the *Client ID* and the *Client Secret* from the Google Calendar API
|
||||
credentials page into their respective fields below the :guilabel:`Google Calendar` checkbox. Then,
|
||||
click :guilabel:`Save`.
|
||||
|
||||
Finally, open the Calendar module in Odoo and click on the :guilabel:`Google` sync button to sync
|
||||
Google Calendar with Odoo.
|
||||
Sync calendar in Odoo
|
||||
=====================
|
||||
|
||||
Finally, open the :menuselection:`Calendar` app in Odoo and click on the :guilabel:`Google` sync
|
||||
button to sync Google Calendar with Odoo.
|
||||
|
||||
.. image:: google/sync-google.png
|
||||
:align: center
|
||||
:alt: Click the Google sync button in Odoo Calendar to sync Google Calendar with Odoo.
|
||||
|
||||
.. note::
|
||||
The first time you sync your Google Calendar with Odoo, the page will redirect to your Google
|
||||
Account. Click :guilabel:`OK` and :guilabel:`Allow` to authorize Odoo to access Google Calendar.
|
||||
When syncing Google Calendar with Odoo for the first time, the page will redirect to the Google
|
||||
Account. From there, select the :guilabel:`Email Account` that should have access, then select
|
||||
:guilabel:`Continue` (should the app be unverifed), and finally select :guilabel:`Continue` (to
|
||||
give permission for the transfer of data)`.
|
||||
|
||||
.. image:: google/trust-odoo.png
|
||||
:align: center
|
||||
@@ -130,6 +139,17 @@ Google Calendar with Odoo.
|
||||
|
||||
Now, Odoo Calendar is successfully synced with Google Calendar!
|
||||
|
||||
.. image:: google/successful-sync.png
|
||||
:align: center
|
||||
:alt: Successfully sync between Odoo and Google Calendar.
|
||||
.. warning::
|
||||
Odoo highly recommends testing the Google calendar synchronization on a test database and a test
|
||||
email address (that is not used for any other purpose) before attempting to sync the desired
|
||||
Google Calendar with the user's production database.
|
||||
|
||||
Once a user synchronizes their Google calendar with the Odoo calendar:
|
||||
|
||||
- Creating an event in Odoo causes Google to send an invitation to all event attendees.
|
||||
- Deleting an event in Odoo causes Google to send a cancellation to all event attendees.
|
||||
- Adding a contact to an event causes Google to send an invitation to all event attendees.
|
||||
- Removing a contact from an event causes Google to send a cancellation to all event attendees.
|
||||
|
||||
Events can be created in Google Calendar without sending a notification by selecting
|
||||
:guilabel:`Don't Send` when prompted to send invitation emails.
|
||||
|
||||
|
Before Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 8.3 KiB |
|
Before Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 65 KiB |
@@ -12,4 +12,3 @@ Internet of Things (IoT)
|
||||
|
||||
iot/config
|
||||
iot/devices
|
||||
../sales/point_of_sale/payment
|
||||
|
||||
@@ -54,7 +54,7 @@ Then, you have to connect the peripheral devices to your IoT Box.
|
||||
|
||||
- **Payment terminal**: The connection process depends on the terminal,
|
||||
please refer to the :doc:`payment terminals documentation
|
||||
</applications/sales/point_of_sale/payment>`.
|
||||
</applications/sales/point_of_sale/payment_methods>`.
|
||||
|
||||
Once it's done, you can connect the IoT Box to your PoS. For this, go in
|
||||
:menuselection:`Point of Sale --> Configuration --> PoS`, tick *IoT Box*
|
||||
|
||||
@@ -1,24 +1,120 @@
|
||||
:nosearch:
|
||||
:show-content:
|
||||
:hide-page-toc:
|
||||
:show-toc:
|
||||
|
||||
=============
|
||||
Point of Sale
|
||||
=============
|
||||
|
||||
With **Odoo Point of Sale**, run your shops or restaurants easily. The app runs on the browser, but
|
||||
is able to continue working even if you are offline.
|
||||
With **Odoo Point of Sale**, run your shops and restaurants easily. The app works on any device with
|
||||
a web browser, even if you are temporarily offline. Product moves are automatically registered in
|
||||
your stock, you get real-time statistics, and your data is consolidated across all shops.
|
||||
|
||||
.. seealso::
|
||||
- `Odoo Tutorials: Point of Sale Tutorials <https://www.odoo.com/slides/point-of-sale-28>`_
|
||||
- :doc:`IoT Boxes Documentations </applications/productivity/iot>`
|
||||
|
||||
.. _pos/session-start:
|
||||
|
||||
Start a session
|
||||
===============
|
||||
|
||||
From the **POS dashboard**, click :guilabel:`New Session` to start a POS session, or
|
||||
:guilabel:`Resume` if the session was already open.
|
||||
|
||||
.. note::
|
||||
Multiple users can be connected to the same session at the same time. However, the session can
|
||||
only be open once on the same browser.
|
||||
|
||||
.. _pos/sell:
|
||||
|
||||
Sell products
|
||||
=============
|
||||
|
||||
Click on products to add them to the cart. To change the **quantity**, click :guilabel:`Qty` and
|
||||
enter the number of products using the keypad. To add a **discount** or modify the product
|
||||
**price**, click respectively :guilabel:`Disc` or :guilabel:`Price` and enter the amounts.
|
||||
|
||||
Once an order is completed, proceed to checkout by clicking :guilabel:`Payment`. Select the
|
||||
**payment method**, enter the received amount, and click :guilabel:`Validate`. Click
|
||||
:guilabel:`New Order` to move on to the next customer.
|
||||
|
||||
.. image:: point_of_sale/pos-interface.png
|
||||
:align: center
|
||||
:alt: POS session interface.
|
||||
|
||||
.. tip::
|
||||
- You can use both `,` and `.` on your keyboard as decimal separators.
|
||||
- **Cash** is selected by default if you enter the amount without choosing a payment method.
|
||||
|
||||
.. _pos/customers:
|
||||
|
||||
Register customers
|
||||
==================
|
||||
|
||||
Registering your customers gives you the ability to grant them various privileges such as discounts,
|
||||
loyalty program, specific communication. It is also required if they want an invoice and registering
|
||||
them makes any future interaction with them faster.
|
||||
|
||||
From your session interface, use the customer button.
|
||||
|
||||
.. image:: point_of_sale/customer-button.png
|
||||
|
||||
Create a new one by using this button.
|
||||
|
||||
.. image:: point_of_sale/customer-add.png
|
||||
|
||||
You will be invited to fill out the customer form with their
|
||||
information.
|
||||
|
||||
.. image:: point_of_sale/customer-form.png
|
||||
|
||||
Use the save button when you are done. You can then select that customer
|
||||
in any future transactions.
|
||||
|
||||
.. _pos/refund:
|
||||
|
||||
Return and refund products
|
||||
==========================
|
||||
|
||||
To return a product and make a refund,
|
||||
|
||||
#. from the **POS dashboard**, **open a session** and select the returned product;
|
||||
#. click :guilabel:`Qty` and :guilabel:`+/-` to enter the quantity of returned products;
|
||||
#. once the order is completed, click :guilabel:`Payment` to proceed to the refund;
|
||||
#. click :guilabel:`Validate` and :guilabel:`New Order` to move on to the next customer.
|
||||
|
||||
.. _pos/session-close:
|
||||
|
||||
Close the POS session
|
||||
=====================
|
||||
|
||||
To close your session,
|
||||
|
||||
#. go back to the POS dashboard by clicking :guilabel:`Close` and :guilabel:`Confirm` in the upper
|
||||
right corner of your screen;
|
||||
#. then, click :guilabel:`Close` and proceed to the **closing control**;
|
||||
#. click the :guilabel:`Payments` smart button to know what amount of cash should be in your cash
|
||||
drawer;
|
||||
#. once the control is done, click :guilabel:`Close session & post entries`;
|
||||
#. the status goes automatically from :guilabel:`In Progress` to :guilabel:`Closed & Posted`.
|
||||
|
||||
.. image:: point_of_sale/close-pos-session.png
|
||||
:align: center
|
||||
:alt: How to close a POS session.
|
||||
|
||||
.. tip::
|
||||
- It is strongly advised to close your POS session at the end of each day.
|
||||
- To look at all your previous sessions, go to :menuselection:`Point of Sale --> Orders -->
|
||||
Sessions`.
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
point_of_sale/overview
|
||||
point_of_sale/employee_login
|
||||
point_of_sale/receipts_invoices
|
||||
point_of_sale/configuration
|
||||
point_of_sale/shop
|
||||
point_of_sale/restaurant
|
||||
point_of_sale/payment
|
||||
point_of_sale/advanced_pricing_features
|
||||
point_of_sale/pricing
|
||||
point_of_sale/payment_methods
|
||||
point_of_sale/reporting
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
:nosearch:
|
||||
|
||||
================
|
||||
Pricing Features
|
||||
================
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
advanced_pricing_features/discounts
|
||||
advanced_pricing_features/discount_tags
|
||||
advanced_pricing_features/loyalty
|
||||
advanced_pricing_features/pricelists
|
||||
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
33
content/applications/sales/point_of_sale/configuration.rst
Normal file
@@ -0,0 +1,33 @@
|
||||
:show-content:
|
||||
:show-toc:
|
||||
|
||||
=============
|
||||
Configuration
|
||||
=============
|
||||
|
||||
.. _configuration/settings:
|
||||
|
||||
Access POS settings
|
||||
===================
|
||||
|
||||
To access the general POS settings, go to :menuselection:`Point of Sale --> Configuration -->
|
||||
Settings`.
|
||||
|
||||
To access the settings of a specific point of sale, go to :menuselection:`Point of Sale -->
|
||||
Configuration --> Point of Sale`. Alternatively, from the Point of Sale dashboard, click the
|
||||
vertical ellipsis (:guilabel:`⋮`) button on a POS card, then on :guilabel:`Settings`.
|
||||
|
||||
Make products available
|
||||
=======================
|
||||
|
||||
To make products available for sale, go to :menuselection:`Point of Sale --> Products --> Products`,
|
||||
and open a product. In the :guilabel:`Point of Sale` tab, enable :guilabel:`Available in POS`.
|
||||
|
||||
.. image:: configuration/pos-available.png
|
||||
:alt: Making a product available in your POS.
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
configuration/https
|
||||
configuration/epos_ssc
|
||||
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 8.6 KiB After Width: | Height: | Size: 8.6 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB |
@@ -21,7 +21,7 @@ To enable the feature, go to your *PoS settings* and check log in with
|
||||
employees on your *PoS form*. Then, add the employees that have access
|
||||
to the cash register.
|
||||
|
||||
.. image:: multicashiers/multicashiers01.png
|
||||
.. image:: employee_login/multicashiers01.png
|
||||
:align: center
|
||||
|
||||
Now, you can switch cashier easily.
|
||||
@@ -32,12 +32,12 @@ Switch without pin codes
|
||||
The easiest way to switch cashiers is without a code. To do so, click on
|
||||
the cashier name in your PoS interface.
|
||||
|
||||
.. image:: multicashiers/multicashiers02.png
|
||||
.. image:: employee_login/multicashiers02.png
|
||||
:align: center
|
||||
|
||||
Now, you just have to click on your name.
|
||||
|
||||
.. image:: multicashiers/multicashiers03.png
|
||||
.. image:: employee_login/multicashiers03.png
|
||||
:align: center
|
||||
|
||||
.. _set-pin-code:
|
||||
@@ -48,12 +48,12 @@ Switch cashier with pin codes
|
||||
You can set a pin code on each cashier. To set up a pin code, go to the
|
||||
employee form and add a security PIN, in the *HR settings tab*.
|
||||
|
||||
.. image:: multicashiers/multicashiers04.png
|
||||
.. image:: employee_login/multicashiers04.png
|
||||
:align: center
|
||||
|
||||
Now, when switching cashier, a PIN password will be asked.
|
||||
|
||||
.. image:: multicashiers/multicashiers05.png
|
||||
.. image:: employee_login/multicashiers05.png
|
||||
:align: center
|
||||
|
||||
.. _employee-barcode:
|
||||
@@ -66,7 +66,7 @@ so, set up a barcode at the same place you add the PIN code. Print the
|
||||
badge and when they will scan it, the cashier will be switched to that
|
||||
employee.
|
||||
|
||||
.. image:: multicashiers/multicashiers06.png
|
||||
.. image:: employee_login/multicashiers06.png
|
||||
:align: center
|
||||
|
||||
Find who was the cashier
|
||||
@@ -75,7 +75,7 @@ Find who was the cashier
|
||||
Once you have closed your *PoS session*, you can have an overview of
|
||||
the amount each cashier sold for. To do so, go to the orders menu.
|
||||
|
||||
.. image:: multicashiers/multicashiers07.png
|
||||
.. image:: employee_login/multicashiers07.png
|
||||
:align: center
|
||||
|
||||
Now, you can open the order and have a summary of the sold products.
|
||||
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 5.9 KiB |
|
Before Width: | Height: | Size: 8.4 KiB After Width: | Height: | Size: 8.4 KiB |
@@ -1,13 +0,0 @@
|
||||
:nosearch:
|
||||
|
||||
========
|
||||
Overview
|
||||
========
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
overview/getting_started
|
||||
overview/register
|
||||
overview/https
|
||||
overview/epos_ssc
|
||||
@@ -1,118 +0,0 @@
|
||||
===============
|
||||
Getting started
|
||||
===============
|
||||
|
||||
**Point of Sale** is a fully integrated application that allows you to sell products (online or
|
||||
offline) with any device. It also automatically registers product moves in your stock, gives you
|
||||
real-time statistics, and consolidations across all shops.
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
Make products available
|
||||
-----------------------
|
||||
|
||||
To make products available for sale, go to :menuselection:`Point of Sale --> Products --> Products`,
|
||||
and open a product. In the :guilabel:`Point of Sale` tab, enable :guilabel:`Available in POS`.
|
||||
|
||||
.. image:: getting_started/pos-available.png
|
||||
:align: center
|
||||
:alt: Making a product available in your POS.
|
||||
|
||||
Configure payment methods
|
||||
-------------------------
|
||||
|
||||
To add a payment method, you first need to create it. Go to :menuselection:`Point of Sale -->
|
||||
Configuration --> Payment Methods --> Create`. Set a name and select the **payment terminal** or
|
||||
check :guilabel:`Cash` for cash payments.
|
||||
|
||||
.. image:: getting_started/payment-method.png
|
||||
:align: center
|
||||
:alt: Creating a new payment method for a POS.
|
||||
|
||||
.. note::
|
||||
Credentials are mandatory to use a payment terminal. To learn how to configure the different
|
||||
terminals, check out the following documentation pages:.
|
||||
|
||||
- :doc:`Adyen configuration <../payment/adyen>`
|
||||
- :doc:`Vantiv configuration <../payment/vantiv>`
|
||||
- :doc:`Ingenico configuration <../payment/ingenico>`
|
||||
- :doc:`Six configuration <../payment/six>`
|
||||
|
||||
Now, you can select the payment method in your POS settings. To do so, go to
|
||||
:menuselection:`Point of Sale --> Configuration --> Point of Sale` and select a POS for which you
|
||||
wish to make the payment method available. Click :guilabel:`Edit` and add the payment method under
|
||||
the :guilabel:`Payments` section.
|
||||
|
||||
|
||||
POS sessions
|
||||
============
|
||||
|
||||
Start a session
|
||||
---------------
|
||||
|
||||
From the **POS dashboard**, click :guilabel:`New Session` to start a POS session, or
|
||||
:guilabel:`Resume` if the session was already open.
|
||||
|
||||
.. note::
|
||||
Multiple users can be connected to the same session at the same time. However, the session can
|
||||
only be open once on the same browser.
|
||||
|
||||
Click on products to add them to the cart. To change the **quantity**, click :guilabel:`Qty` and
|
||||
enter the number of products using the keypad. To add a **discount** or modify the product
|
||||
**price**, click respectively :guilabel:`Disc` or :guilabel:`Price` and enter the amounts.
|
||||
|
||||
Once an order is completed, proceed to checkout by clicking :guilabel:`Payment`. Select the
|
||||
**payment method**, enter the received amount, and click :guilabel:`Validate`. Click
|
||||
:guilabel:`New Order` to move on to the next customer.
|
||||
|
||||
.. image:: getting_started/pos-interface.png
|
||||
:align: center
|
||||
:alt: POS session interface.
|
||||
|
||||
.. tip::
|
||||
- You can use both `,` and `.` on your keyboard as decimal separators.
|
||||
- **Cash** is selected by default if you enter the amount without choosing a payment method.
|
||||
|
||||
|
||||
Return and refund products
|
||||
--------------------------
|
||||
|
||||
To return a product and make a refund,
|
||||
|
||||
#. from the **POS dashboard**, **open a session** and select the returned product;
|
||||
#. click :guilabel:`Qty` and :guilabel:`+/-` to enter the quantity of returned products;
|
||||
#. once the order is completed, click :guilabel:`Payment` to proceed to the refund;
|
||||
#. click :guilabel:`Validate` and :guilabel:`New Order` to move on to the next customer.
|
||||
|
||||
Close the POS session
|
||||
---------------------
|
||||
|
||||
To close your session,
|
||||
|
||||
#. go back to the POS dashboard by clicking :guilabel:`Close` and :guilabel:`Confirm` in the upper
|
||||
right corner of your screen;
|
||||
#. then, click :guilabel:`Close` and proceed to the **closing control**;
|
||||
#. click the :guilabel:`Payments` smart button to know what amount of cash should be in your cash
|
||||
drawer;
|
||||
#. once the control is done, click :guilabel:`Close session & post entries`;
|
||||
#. the status goes automatically from :guilabel:`In Progress` to :guilabel:`Closed & Posted`.
|
||||
|
||||
.. image:: getting_started/close-pos-session.png
|
||||
:align: center
|
||||
:alt: How to close a POS session.
|
||||
|
||||
.. tip::
|
||||
- It is strongly advised to close your POS session at the end of each day.
|
||||
- To look at all your previous sessions, go to :menuselection:`Point of Sale --> Orders -->
|
||||
Sessions`.
|
||||
|
||||
View statistics
|
||||
===============
|
||||
|
||||
To access your statistics, go to :menuselection:`Point of Sale --> Reporting --> Orders`. Or, from
|
||||
the **POS dashboard**, click the vertical ellipsis (:guilabel:`⋮`) button, :guilabel:`Reporting`,
|
||||
and :guilabel:`Orders`.
|
||||
|
||||
These statistics are available in graph or pivot view that you can filter or group depending on your
|
||||
needs.
|
||||
@@ -1,30 +0,0 @@
|
||||
==================
|
||||
Register customers
|
||||
==================
|
||||
|
||||
Registering your customers will give you the ability to grant them
|
||||
various privileges such as discounts, loyalty program, specific
|
||||
communication. It will also be required if they want an invoice and
|
||||
registering them will make any future interaction with them faster.
|
||||
|
||||
Create a customer
|
||||
=================
|
||||
|
||||
From your session interface, use the customer button.
|
||||
|
||||
.. image:: register/register01.png
|
||||
:align: center
|
||||
|
||||
Create a new one by using this button.
|
||||
|
||||
.. image:: register/register02.png
|
||||
:align: center
|
||||
|
||||
You will be invited to fill out the customer form with their
|
||||
information.
|
||||
|
||||
.. image:: register/register03.png
|
||||
:align: center
|
||||
|
||||
Use the save button when you are done. You can then select that customer
|
||||
in any future transactions.
|
||||
@@ -1,13 +0,0 @@
|
||||
:nosearch:
|
||||
|
||||
=================
|
||||
Payment Terminals
|
||||
=================
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
payment/adyen
|
||||
payment/ingenico
|
||||
payment/vantiv
|
||||
payment/six
|
||||