Compare commits

..

25 Commits

Author SHA1 Message Date
Julien Castiaux
e03e38fb64 wip 2023-06-05 17:00:35 +02:00
Julien Castiaux
4bbcf65b50 wip 2023-06-01 17:48:29 +02:00
Julien Castiaux
270c926f2f wip 2023-05-31 18:54:35 +02:00
Julien Castiaux
dd3fcf677b wip 2023-05-31 14:53:52 +02:00
Julien Castiaux
6ed6881eaf wip 2023-05-30 18:37:43 +02:00
Julien Castiaux
95639a575c wip 2023-05-22 16:57:06 +02:00
Julien Castiaux
04ddd0bcbe wip 2023-05-05 16:21:33 +02:00
Julien Castiaux
6fe7cb3a67 wip 2023-05-03 16:01:01 +02:00
John Holton (hojo)
9b04ed1d01 [ADD] Inventory: add create second warehouse
closes odoo/documentation#3842

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-05-02 00:14:44 +02:00
Odoo Translation Bot
30b457fb4e [I18N] Update translation terms from Transifex 2023-04-30 02:40:35 +02:00
Timothy Kukulka (tiku)
5b63bfcba9 [IMP] Google Oauth Docs edits final review
closes odoo/documentation#3965

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-04-28 22:53:41 +02:00
tiku-odoo
330ce42cef [IMP]Maintain:Fix typo in Azure Mail
closes odoo/documentation#4278

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-04-26 19:39:48 +02:00
Sam Lieber (sali)
50824b6677 [REF] surveys: remove overview folder
closes odoo/documentation#3803

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-04-26 04:09:40 +02:00
Brandon Seltenrich (BRSE)
c2409d8a52 [IMP] inventory: update stock_warehouses
closes odoo/documentation#3588

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-04-25 20:53:17 +02:00
Jonathan
817e332160 [IMP] contributing/dev: add cd command to the git config section
closes odoo/documentation#4253

Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2023-04-25 11:08:39 +02:00
Odoo Translation Bot
ba1105bff7 [I18N] Update translation terms from Transifex 2023-04-23 02:40:38 +02:00
Jonathan
5cb7eb5024 [MOV] pos: fiscal_position to "pricing" section
task-3284514

closes odoo/documentation#4236

Signed-off-by: Castillo Jonathan (jcs) <jcs@odoo.com>
2023-04-21 23:00:51 +02:00
KC (ksc)
42148acbec [ADD] social marketing: added social marketing documentation to v14
closes odoo/documentation#2554

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-04-21 21:16:44 +02:00
Jonathan
7b2a178e82 [MOV] pos: restructuration of pos toctree
task-3284514

closes odoo/documentation#4226

Signed-off-by: Castillo Jonathan (jcs) <jcs@odoo.com>
2023-04-21 17:52:56 +02:00
John Holton (hojo)
eb067d6dc1 [ADD] Maintenance: add new equipment
closes odoo/documentation#3532

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-04-18 22:48:53 +02:00
Odoo Translation Bot
7cfedaffc7 [I18N] Update translation terms from Transifex 2023-04-16 02:40:35 +02:00
Zuzanna Luczynska
1cbb06857d [MOV] field service: improve the structure and merge docs
Currently, there are two pages about onsite interventions in two
separate categories. This task aims to merge both pages into a single
one and remove the useless categories.

task-3275322

closes odoo/documentation#4169

Signed-off-by: Castillo Jonathan (jcs) <jcs@odoo.com>
2023-04-14 18:37:44 +02:00
Elisabeth Dickinson
c758071861 [IMP] odoo_theme: fix menu links
When searching for a word, if that word happens to be in the menu, the
`display-flex` on the `a` would remove the space around the word because
a `span class=highlight` gets added around it.
Fixed by changing `display-flex` on the `a` to display-block (but
keeping it for `.o_toc_entry_wrapper`)

closes odoo/documentation#4168

Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2023-04-14 17:45:59 +02:00
Brandon Seltenrich (BRSE)
1289a9ec45 [IMP] inventory: update owned_stock
closes odoo/documentation#3600

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-04-12 22:52:20 +02:00
Loan (LSE)
6f4822cb2b [IMP] iot: add documentation regarding HTTPS certificate
Also include details/troubleshoot/solutions for redundant
support issues:
 - Error code details for HTTPS certificate generation
   (see: https://github.com/odoo/odoo/pull/114993 )
 - DNS issue with HTTPS domain

 OPW-3227004

closes odoo/documentation#3818

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-04-12 19:57:11 +02:00
253 changed files with 2823 additions and 787 deletions

View File

@@ -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`

View File

@@ -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.

View File

@@ -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

View File

@@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

View File

@@ -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 dont 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.

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

View File

@@ -10,3 +10,4 @@ Warehouses
warehouses/difference_warehouse_location
warehouses/warehouse_replenishment_transfer
warehouses/create_a_second_warehouse

View File

@@ -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.

View File

@@ -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 dont 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
=========================
Lets 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.
Lets 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.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

View File

@@ -1,3 +1,5 @@
.. _use-routes:
================================
Using Routes and Pull/Push Rules
================================

View File

@@ -19,5 +19,6 @@ and allow workers to trigger maintenance operations, feedback loops, quality iss
.. toctree::
:titlesonly:
manufacturing/maintenance
manufacturing/management
manufacturing/quality_control

View File

@@ -0,0 +1,10 @@
:nosearch:
===========
Maintenance
===========
.. toctree::
:titlesonly:
maintenance/add_new_equipment

View File

@@ -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.

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

@@ -11,3 +11,4 @@ Marketing
marketing/sms_marketing
marketing/events
marketing/surveys
marketing/social_marketing

View 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

View File

@@ -0,0 +1,11 @@
:nosearch:
==========
Essentials
==========
.. toctree::
:titlesonly:
essentials/social_essentials
essentials/social_campaigns

View File

@@ -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`

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -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`

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View File

@@ -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

View File

@@ -1,12 +0,0 @@
:nosearch:
========
Overview
========
.. toctree::
:titlesonly:
overview/create
overview/scoring
overview/time_random

View File

@@ -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.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 65 KiB

View File

@@ -12,4 +12,3 @@ Internet of Things (IoT)
iot/config
iot/devices
../sales/point_of_sale/payment

View File

@@ -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*

View File

@@ -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

View File

@@ -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

View 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

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 54 KiB

View File

@@ -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.

View File

@@ -1,13 +0,0 @@
:nosearch:
========
Overview
========
.. toctree::
:titlesonly:
overview/getting_started
overview/register
overview/https
overview/epos_ssc

View File

@@ -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.

View File

@@ -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.

View File

@@ -1,13 +0,0 @@
:nosearch:
=================
Payment Terminals
=================
.. toctree::
:titlesonly:
payment/adyen
payment/ingenico
payment/vantiv
payment/six

Some files were not shown because too many files have changed in this diff Show More