Compare commits

...

26 Commits

Author SHA1 Message Date
Bastien PIERRE
b94a59081b [IMP] web: beautiful duration
Change float_time field with the new options and format.

TASK-5347051
2025-12-17 13:17:19 +01:00
meval1006​
efa4ea8f16 [IMP] rental: section revisions
closes odoo/documentation#15708

X-original-commit: ddef37cb68
Signed-off-by: Megan Valenzuela (meval) <meval@odoo.com>
2025-12-16 03:47:52 +00:00
xpl-odoo
65ad28bbf5 [IMP] administration: introduce standard and extended support
To align with the updated terms of the Odoo Entreprise Subscription Agreement

closes odoo/documentation#15721

X-original-commit: f1fe985fdc
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2025-12-16 03:47:45 +00:00
Niki Brown
27a6f56a97 [IMP] companies: update digest emails
closes odoo/documentation#15679

X-original-commit: 0a5f699ebc
Signed-off-by: Niki Brown (nikbr) <nikbr@odoo.com>
2025-12-16 02:33:23 +00:00
lman-odoo
6c80250596 [FIX] ecommerce: fix info about product images
task-5073971

closes odoo/documentation#15671

X-original-commit: a003e584a8
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Larissa Manderfeld (lman) <lman@odoo.com>
2025-12-15 09:03:11 +00:00
erjer-odoo
2838dbdfdc [MOV] Barcode: Move Barcode Lookup to setup section
closes odoo/documentation#15705

X-original-commit: 4cbc39a79a
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
2025-12-13 02:23:19 +00:00
erjer-odoo
6fdacdbccb [IMP] Inventory: Update FEFO removal strategy
closes odoo/documentation#15692

X-original-commit: 37071f7ce9
Signed-off-by: Erin Jerison (erjer) <erjer@odoo.com>
Co-authored-by: Jess Rogers <104637850+jero-odoo@users.noreply.github.com>
Co-authored-by: Felicia Kuan <feku@odoo.com>
2025-12-12 19:55:42 +00:00
therealthagomizer
c604efb3bc [ADD] Sales: Created a new alternative products page
closes odoo/documentation#15681

X-original-commit: 16f062606d
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Signed-off-by: Thomas Jude Cavazos (thjud) <thjud@odoo.com>
Co-authored-by: Megan Valenzuela <meval@odoo.com>
Co-authored-by: Felicia Kuan <feku@odoo.com>
2025-12-12 19:55:41 +00:00
therealthagomizer
6bbba379b8 [IMP] Sales: Invoicing policy page rewrite
closes odoo/documentation#15682

X-original-commit: 624a763891
Signed-off-by: Thomas Jude Cavazos (thjud) <thjud@odoo.com>
Co-authored-by: Lara Martini <larm@odoo.com>
Co-authored-by: Felicia Kuan <feku@odoo.com>
Co-authored-by: Niki Brown <nikbr@odoo.com>
2025-12-12 19:55:39 +00:00
hun-odoo
960d89a55d [IMP] Payroll: Adding 8 new states to US Payroll user doc
Adding 8 new states to the US Payroll user documentation. We are expanding the scope for US Payroll and will be working on additional states, and the documentation needs to be updated as we merge new states.

closes odoo/documentation#15677

X-original-commit: e472e23800
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
2025-12-12 19:55:38 +00:00
erjer-odoo
cc18f846e5 [IMP] Inventory: Updating LIFO removal strategy
closes odoo/documentation#15678

X-original-commit: 49e9822639
Signed-off-by: Erin Jerison (erjer) <erjer@odoo.com>
Co-authored-by: meval1006 <meval@odoo.com>
Co-authored-by: meval1006 <meval@odoo.com>
Co-authored-by: Felicia Kuan <feku@odoo.com>
2025-12-12 18:12:01 +00:00
erjer-odoo
cd05311e27 [IMP] Inventory: Update FIFO removal strategy
closes odoo/documentation#15680

X-original-commit: 79adccfce7
Signed-off-by: Erin Jerison (erjer) <erjer@odoo.com>
Co-authored-by: theRealThagomizer <96515928+theRealThagomizer@users.noreply.github.com>
Co-authored-by: theRealThagomizer <96515928+theRealThagomizer@users.noreply.github.com>
Co-authored-by: Felicia Kuan <feku@odoo.com>
2025-12-12 18:11:59 +00:00
Louis Travaux
9d8e1476f6 [IMP] general: network configuration recommendation
We add a network security recommendation to tell clients
not to expose their IoT Box on the internet.

closes odoo/documentation#15690

X-original-commit: d35f6c32c2
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Louis Travaux (lotr) <lotr@odoo.com>
2025-12-12 18:11:52 +00:00
emmi-odoo
27ac9a8119 [IMP] pos/pine-labs: add line in Important note
task-5213696

closes odoo/documentation#15661

X-original-commit: 7e79d1b9b0
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Emmanuel Minga (EMMI) <emmi@odoo.com>
2025-12-12 16:51:05 +00:00
Tiffany Chang (tic)
38f47ed1cc [I18N] *: re-export pot files
As per usual, leave off developer.pot and contributing.pot since we
don't translate them (not useful, can't really contribute to/dev in
Odoo without knowing English)

closes odoo/documentation#15662

X-original-commit: 6874b14169
Signed-off-by: Dylan Kiss (dyki) <dyki@odoo.com>
Signed-off-by: Tiffany Chang (tic) <tic@odoo.com>
2025-12-12 03:35:34 +00:00
jero-odoo
cf4f8e2b85 [IMP] Appointments: resource capacity note
closes odoo/documentation#15659

X-original-commit: 7a222894b8
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
2025-12-12 03:35:30 +00:00
Julien Castiaux
4840e3542f [IMP] admin: missing header with X-Accel-Redirect
Nginx doesn't set the Content-Security-Policy and X-Content-Type-Options
headers on the response it sends to the browser even though they were
present on the response from the Odoo server.

closes odoo/documentation#15597

X-original-commit: 4624403d76
Signed-off-by: Julien Castiaux (juc) <juc@odoo.com>
2025-12-12 03:35:25 +00:00
therealthagomizer
1199d09c71 [IMP] Sales: Optional product page rewrite
closes odoo/documentation#15649

X-original-commit: 7cfcecf5c2
Signed-off-by: Thomas Jude Cavazos (thjud) <thjud@odoo.com>
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: Erin Jerison <erjer@odoo.com>
Co-authored-by: Felicia Kuan <feku@odoo.com>
Co-authored-by: Niki Brown <nikbr@odoo.com
2025-12-11 20:34:44 +00:00
meval1006​
21d0709f50 [ADD] rental: service products page
closes odoo/documentation#15648

X-original-commit: 58b838ebc7
Signed-off-by: Megan Valenzuela (meval) <meval@odoo.com>
2025-12-11 20:34:43 +00:00
evtf-odoo
c430791b00 [IMP] l10n_ar: webinar update for v18
Change for v18 for a link for the webinar link

closes odoo/documentation#15646

X-original-commit: 1cfedd9cac
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2025-12-11 20:34:41 +00:00
Krzysztof Magusiak (krma)
b44dfce306 [IMP] developer/cli: config option for system database
odoo/odoo#239487

closes odoo/documentation#15656

Signed-off-by: Krzysztof Magusiak (krma) <krma@odoo.com>
2025-12-11 17:56:49 +00:00
Christophe Monniez
8085941467 [IMP] Makefile: allow to choose the export path
closes odoo/documentation#15641

X-original-commit: cb75529d9a
Signed-off-by: Christophe Monniez (moc) <moc@odoo.com>
2025-12-11 13:29:42 +00:00
xpl-odoo
4c9786e502 [IMP] db: odoo accounts update
closes odoo/documentation#15633

X-original-commit: 0bcc02c613
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2025-12-11 13:29:40 +00:00
Antoine Dupuis
d229372795 [IMP] Belgium: Explain Peppol EAS requirements
task-none

Starting from 1 January 2026, companies in Belgium need to be registered
on the Peppol network. Specifically, even though there are two EASs for
Belgium, which are:
  - 0208 - company registry number;
  - 9925 - Belgian VAT;
all Belgian companies must be registered under scheme 0208 with their
Belgian company number.

Scheme 9925 is optional which means companies can be registered both
on 0208 and 9925. But in any case, they need to be registered on 0208.

We add an `important` block in the Belgium page to explain this
requirement.

closes odoo/documentation#15617

X-original-commit: e49cd7c319
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
Signed-off-by: Antoine Dupuis (andu) <andu@odoo.com>
2025-12-11 02:52:26 +00:00
Felicious
77e0e58b0d [IMP] inventory: sendcloud partnership link
closes odoo/documentation#15618

X-original-commit: 6ccff139c6
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
2025-12-11 01:22:15 +00:00
yaso
e4351395e6 [REV] point_of_sale: revert Epson Server Direct Print
This reverts commit b8aa3b95f45335653502ce0ab092c823e2e3c66a.

Epson Server Direct print support was reverted for 19.1 and so the
documentation is no longer needed

closes odoo/documentation#15589

Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2025-12-10 15:51:40 +00:00
119 changed files with 7593 additions and 5154 deletions

View File

@@ -13,6 +13,10 @@ ifndef CURRENT_LANG
CURRENT_LANG = en
endif
ifndef EXPORT_PATH
EXPORT_PATH = locale/sources
endif
SPHINX_BUILD = sphinx-build
CONFIG_DIR = .
SPHINXOPTS = -D project_root=$(ROOT) -D canonical_version=$(CANONICAL_VERSION) \
@@ -69,7 +73,7 @@ latexpdf:
gettext:
@echo "Generating translatable files..."
$(SPHINX_BUILD) -c $(CONFIG_DIR) -b gettext $(SOURCE_DIR) locale/sources
$(SPHINX_BUILD) -c $(CONFIG_DIR) -b gettext $(SOURCE_DIR) $(EXPORT_PATH)
@echo "Generation finished."
$(HTML_BUILD_DIR)/_static/style.css: extensions/odoo_theme/static/style.scss extensions/odoo_theme/static/scss/*.scss

View File

@@ -10,7 +10,7 @@ Database management
These guides provide instructions on how to install, maintain and upgrade Odoo databases.
.. seealso::
:doc:`History of Versions <administration/supported_versions>`
:doc:`History of Versions <administration/standard_extended_support>`
Installation
============
@@ -60,6 +60,6 @@ functionalities, including functional support, upgrades, and hosting. `Pricing
administration/on_premise
administration/upgrade
administration/neutralized_database
administration/supported_versions
administration/standard_extended_support
administration/mobile
administration/odoo_accounts

View File

@@ -18,7 +18,7 @@ To Odoo Online
.. important::
- Odoo Online is *not* compatible with **non-standard apps**.
- The database's current version must be :doc:`supported <supported_versions>`.
- The database's current version must be :doc:`supported <standard_extended_support>`.
#. Create a :ref:`duplicate of the database <on-premise/duplicate>`.
#. In this duplicate, uninstall all **non-standard apps**.
@@ -46,10 +46,10 @@ Transferring an Odoo Online database
====================================
.. important::
Odoo Online's :ref:`intermediary versions <supported_versions>` are not supported by Odoo.sh or
on-premise. Therefore, if the database to transfer is running an intermediary version, it must be
upgraded first to the next :ref:`major version <supported_versions>`, waiting for its release if
necessary.
Odoo Online's :doc:`intermediary versions <standard_extended_support>` are not supported by
Odoo.sh or on-premise. Therefore, if the database to transfer is running an intermediary version,
it must be upgraded first to the next :doc:`major version <standard_extended_support>`, waiting
for its release if necessary.
.. example::
Transferring an online database running on Odoo 16.3 would require first upgrading it to Odoo

View File

@@ -1,105 +1,57 @@
=================
Odoo.com accounts
=================
================
Odoo.com account
================
This document describes how to edit and manage an Odoo.com account, including adding a client
database, deleting an account, resetting a password, and enabling two-factor authentication.
Open the `Connection & Security page <https://www.odoo.com/my/security>`_ on your Odoo.com account
portal to:
Grant users access to database
==============================
- Change your :guilabel:`Password`.
A database can be linked to an Odoo.com account that was created by a different Odoo.com account.
This allows the database to appear in the *My Databases* page of the account. To do so, the
client Odoo.com account needs to be added to the database as a user.
.. note::
- When you create a database, a user linked to your Odoo.com account is generated on the
database. Changing your Odoo.com account's password will also modify the password used to
sign in with that user to the database.
- You can set a database-specific password for that user by going to the :ref:`database's
settings <users/change-password>`. However, you will still be able to sign in with your
Odoo.com account's password.
First, sign in to the Odoo.com account that created the client database. In the main Odoo dashboard
of the database, navigate to the **Settings** app, and click :guilabel:`Manage Users` in the
:guilabel:`Users` section. Click the :guilabel:`New` button, and enter a name in the
:guilabel:`Name` field for this user. Next, enter the email address used to register the desired
Odoo.com account in the :guilabel:`Email` field. Navigate back to :guilabel:`Settings` using the
breadcrumbs, and a pop-up window titled :guilabel:`Users Invitations` appears, with a warning that
adding additional users will increase the amount of the subscription.
- Enable :guilabel:`Two-factor authentication` using an authenticator app.
Click :guilabel:`Confirm`, and the :guilabel:`Users` list appears. An invitation is automatically
sent to the email address. Once confirmed, the client database now appears in the **My Databases**
page of the target Odoo.com account.
.. seealso::
Refer to the :doc:`Two-factor authentication documentation <../applications/general/users/2fa>`
for more information. The process to enable it for a database user and for your Odoo.com
account is similar.
- :guilabel:`Log out from all devices` signed in to your Odoo.com account, except for the current
session.
.. tip::
To log out from the current session, click the :icon:`fa-user-circle-o` (:guilabel:`user`)
icon in the top right and select :icon:`fa-sign-out` :guilabel:`Logout`.
- Enable :ref:`developer mode <developer-mode>` to add a :ref:`developer API key
<api/external_api/keys>`.
- :guilabel:`Delete` your account.
.. danger::
Deleting your Odoo.com account is **irreversible**. Once deleted, your account **cannot be
retrieved**.
Open the `Account Information page <https://www.odoo.com/my/account>`_ to edit your account details,
including your **email address**.
.. note::
- When you create a database, a user linked to your Odoo.com account is generated on the
database. Changing your Odoo.com account's email address does not modify the email address used
to sign in with that user.
- You can set a database-specific email address for that user by clicking your avatar in the
top-right corner of the database and selecting :guilabel:`My Preferences`. You will still need
to sign in to the database using the email address used at the time of the database creation.
- To change the email address used to sign in to a database, `contact Odoo Support
<https://www.odoo.com/help>`_.
.. tip::
To provide full access to the database for this user, set the :guilabel:`Dashboard` field under
the :guilabel:`Productivity` header to :guilabel:`Admin`. Next, set the
:guilabel:`Administration` field under the :guilabel:`Administration` header to
:guilabel:`Settings`.
Delete Odoo.com account
=======================
To delete an Odoo.com account, start by clicking the profile icon in the upper-right corner
(represented by the username and icon) to reveal a drop-down menu. From the drop-down menu, select
:guilabel:`My Odoo.com account`, which reveals the user portal.
From the user portal, the delete option can be accessed by going to :menuselection:`My Account -->
Edit Security Settings --> Delete Account`. It can also be accessed by going to
`https://www.odoo.com/my/home <https://www.odoo.com/my/home>`_.
.. danger::
Deleting an Odoo account is irreversible. Be careful performing this action, as the Odoo.com
account is **not** retrievable once deleted.
Upon clicking the :guilabel:`Delete Account` button, a pop-up window appears, requesting
confirmation for the account deletion.
.. image:: odoo_accounts/delete-account.png
:align: center
:alt: Clicking on the Delete Account button will populate a window verifying the change.
To confirm the deletion, enter the :guilabel:`Password` and the :guilabel:`Login` for the account
being deleted. Then, click the :guilabel:`Delete Account` button to confirm the deletion.
.. _odoocom/change_password:
Odoo.com account password change
================================
To change an Odoo.com account password, first login into the Odoo.com user account from the Odoo.com
login page. After logging-in, go to the upper-right corner of the screen, and click the :guilabel:`▼
(down arrow)` icon next to the profile icon. Then, select :guilabel:`My Account`, and a portal
dashboard appears.
To change the Odoo.com password, click on the :guilabel:`Edit Security Settings` link, below the
:menuselection:`Account Security` section. Next, make the necessary changes by typing in the current
:guilabel:`Password`, :guilabel:`New Password`, and verify the new password. Lastly, click on
:guilabel:`Change Password` to complete the password change.
.. note::
If a customer would like to change the login, contact Odoo support `here
<https://www.odoo.com/help>`_.
.. note::
Passwords for Odoo.com users and portal users remain separate, even if the same email address is
used.
Add two-factor authentication
=============================
To add two-factor authentication, login into the Odoo.com user account from the Odoo.com login page.
After logging-in, go to the upper-right corner of the screen, and click the :guilabel:`▼ (down
arrow)` icon next to the :guilabel:`profile icon`. Then, select :guilabel:`My Account`, and a portal
dashboard appears.
If the user would like to turn on two-factor authentication (2FA) for Odoo.com access, click on the
:guilabel:`Edit Security Settings` link below the :menuselection:`Account Security` section.
Click on :guilabel:`Enable two-factor authentication` to turn on :abbr:`2FA (two-factor
authentication)`. Then, confirm the current password in the :guilabel:`Password` field. Next, click
on :guilabel:`Confirm Password`. Following that, activate :abbr:`2FA (two-factor authentication)` in
a :abbr:`2FA (two-factor authentication)` app (Google Authenticator, Authy, etc.), by scanning the
:guilabel:`QR code` or entering a :guilabel:`Verification Code`.
Finally, click on :guilabel:`Enable two-factor authentication` to complete the setup.
.. note::
Under :guilabel:`My Account` Odoo.com users can also access the following:
- :guilabel:`My Partner dashboard`
- :guilabel:`My In-App Services`
- :guilabel:`My Apps Dashboard`
In addition to the database you create, all databases you are :ref:`invited to join
<users/add-individual>` with your Odoo.com account's email address will be displayed under the
`database manager <https://www.odoo.com/my/databases>`_.

View File

@@ -67,7 +67,7 @@ Import a database
=================
Once your platform is deployed, you can import a database into your Odoo.sh project, provided it
uses a :doc:`supported version <../../supported_versions>` of Odoo.
uses a :doc:`supported version <../../standard_extended_support>` of Odoo.
.. note::
Due to `Odoo's backup policy <https://www.odoo.com/cloud-sla>`_, the import process requires

View File

@@ -533,6 +533,8 @@ X-Sendfile and X-Accel).
location /web/filestore {
internal;
alias /path/to/odoo/data-dir/filestore;
add_header Content-Security-Policy $upstream_http_content_security_policy;
add_header X-Content-Type-Options nosniff;
}
In case you don't know what is the path to your filestore, start Odoo with the
@@ -750,8 +752,7 @@ reset. The following process is for system administrators of an Odoo on-premise
how to manually reset and re-encrypt the master password.
.. seealso::
For more information about changing an Odoo.com account password, see this documentation:
:ref:`odoocom/change_password`.
:doc:`../odoo_accounts`
When creating a new on-premise database, a random master password is generated. Odoo recommends
using this password to secure the database. This password is implemented by default, so there is a

View File

@@ -0,0 +1,102 @@
=============================
Standard and extended support
=============================
.. warning::
The information presented on this page is not intended to amend, modify, or replace any terms of
the :doc:`Odoo Enterprise Subscription Agreement <../legal/terms/enterprise>`. In the event of
any inconsistency or conflict, the Subscription Agreement shall govern.
Odoo provides **standard support** for all major versions for three years. It includes helpdesk
support, bug fixing, and security updates.
Beyond those three years, you can benefit from **extended support** by paying an extra fee. It
includes helpdesk support and bug fixes (depending on feasibility).
.. note::
- Odoo releases intermediary versions, called online or SaaS versions, every two to three months.
These versions are only available on Odoo Online and are not eligible for extended support.
- You can `upgrade <https://upgrade.odoo.com>`_ from any version.
The table below shows the support status of every version. Major releases are highlighted in bold.
.. list-table::
:header-rows: 1
:widths: auto
* -
- Odoo Online
- Odoo.sh
- On-premise
- Release date
- End of standard support
* - **Odoo 19.0**
- |green|
- |green|
- |green|
- September 2025
- September 2028 (planned)
* - Odoo SaaS 18.4
- |red|
- N/A
- N/A
- July 2025
-
* - Odoo SaaS 18.3
- |red|
- N/A
- N/A
- May 2025
-
* - Odoo SaaS 18.2
- |red|
- N/A
- N/A
- March 2025
-
* - **Odoo 18.0**
- |green|
- |green|
- |green|
- October 2024
- September 2027 (planned)
* - **Odoo 17.0**
- |green|
- |green|
- |green|
- November 2023
- September 2026 (planned)
* - **Odoo 16.0**
- |red|
- |red|
- |red|
- October 2022
- September 2025
* - **Odoo 15.0**
- |red|
- |red|
- |red|
- October 2021
- October 2024
* - Older versions
- |red|
- |red|
- |red|
- Before 2021
- Before 2024
.. admonition:: Legend
|green| : Standard support
|red| : Extended support available (with an extra fee)
N/A : Never released for this platform
.. |green| raw:: html
<span class="text-success" style="font-size: 32px; line-height: 32px; display: inline-block; vertical-align: middle;">●</span>
.. |red| raw:: html
<span class="text-danger" style="font-size: 32px; line-height: 32px; display: inline-block; vertical-align: middle;">●</span>

View File

@@ -1,107 +0,0 @@
:hide-page-toc:
.. _supported_versions:
==================
Supported versions
==================
Odoo provides support and bug fixing **for the 3 last major versions** of Odoo.
.. note::
Odoo releases intermediary versions called **Online versions** on the :doc:`Odoo Online
<odoo_online>` hosting every two months. Odoo Online users can then benefit from the latest
features of Odoo.
- Admins of Odoo Online databases are invited to :doc:`upgrade <upgrade>` them regularly.
- Online versions are *not* released for Odoo.sh and On-Premise installations.
- Online versions are listed below as *SaaS*.
This matrix shows the support status of every version.
**Major releases are in bold type.**
.. list-table::
:header-rows: 1
:widths: auto
* -
- Odoo Online
- Odoo.sh
- On-Premise
- Release date
- End of support
* - **Odoo 19.0**
- |green|
- |green|
- |green|
- September 2025
- September 2028 (planned)
* - Odoo SaaS 18.4
- |red|
- N/A
- N/A
- July 2025
-
* - Odoo SaaS 18.3
- |red|
- N/A
- N/A
- May 2025
-
* - Odoo SaaS 18.2
- |red|
- N/A
- N/A
- March 2025
-
* - **Odoo 18.0**
- |green|
- |green|
- |green|
- October 2024
- September 2027 (planned)
* - **Odoo 17.0**
- |green|
- |green|
- |green|
- November 2023
- September 2026 (planned)
* - **Odoo 16.0**
- |red|
- |red|
- |red|
- October 2022
- September 2025
* - **Odoo 15.0**
- |red|
- |red|
- |red|
- October 2021
- October 2024
* - Older versions
- |red|
- |red|
- |red|
- Before 2021
- Before 2024
.. admonition:: Legend
|green| Supported version
|red| End-of-support
N/A Never released for this platform
.. important::
Even though we don't support older versions, you can always `upgrade from any version
<https://upgrade.odoo.com/>`_.
.. |green| raw:: html
<span class="text-success" style="font-size: 32px; line-height: 0.5">●</span>
.. |red| raw:: html
<span class="text-danger" style="font-size: 32px; line-height: 0.5">●</span>

View File

@@ -4,8 +4,8 @@ Upgrade
An upgrade involves moving a database from an older version to a newer supported version (e.g., from
Odoo 16.0 to Odoo 18.0). Regular upgrades are crucial as each version offers new features, bug
fixes, and security patches. Using a :doc:`supported version <supported_versions>` is strongly
recommended. Each major version is supported for three years.
fixes, and security patches. Using a :doc:`supported version <standard_extended_support>` is
strongly recommended. Each major version is supported for three years.
Depending on the hosting type and Odoo version used, a database upgrade can be **mandatory**.
@@ -429,4 +429,4 @@ The following upgrade-related services are **not** included:
.. seealso::
- :doc:`Odoo.sh documentation <odoo_sh>`
- :doc:`Supported Odoo versions <supported_versions>`
- :doc:`Supported Odoo versions <standard_extended_support>`

View File

@@ -7,7 +7,7 @@ Webinars
Below you can find videos with a general description of the localization, and how to configure it.
- `Webinar - Localización de Argentina <https://www.youtube.com/watch?v=_H1HbU-wKVg>`_.
- `Webinar - Localización de Argentina <https://youtu.be/S5xlANeXja0>`_.
- `eCommerce - Localización de Argentina <https://www.youtube.com/watch?v=5gUi2WWfRuI>`_.
.. seealso::

View File

@@ -498,15 +498,27 @@ via Codaclean are checked every twelve hours.
To manually check for new CODA files, go to the Accounting Dashboard and click :guilabel:`Fetch
from Codaclean` on the relevant :ref:`journal <belgium/codaclean-configuration-journal>` .
Electronic invoicing
====================
.. _belgium/peppol:
Odoo supports the **Peppol BIS Billing 3.0 (UBL)** electronic invoicing format. To enable it for a
customer, go to :menuselection:`Accounting --> Customers --> Customers`, open their contact form,
and under the :guilabel:`Accounting` tab, select the :guilabel:`Peppol BIS Billing 3.0` format.
Electronic invoicing with Peppol
================================
As of 1 January 2026, all Belgian companies must be registered on the Peppol network to send and
receive electronic invoices.
To activate Peppol, refer to the :ref:`Peppol documentation <accounting/e-invoicing/peppol>`,
ensuring during :ref:`registration <accounting/e-invoicing/peppol-registration>` that:
- The :guilabel:`Peppol EAS` field is set to :guilabel:`0208 - Numero d'entreprise /
ondernemingsnummer / Unternehmensnummer`.
- the :guilabel:`Peppol Endpoint` field is set to the company registry number.
In addition, when veryfing that a customer is :ref:`registered as a Peppol participant
<accounting/e-invoicing/contact-verification>`, ensure the :guilabel:`Format` field is set to
:guilabel:`BIS Billing 3.0`.
.. seealso::
:doc:`../accounting/customer_invoices/electronic_invoicing`
:ref:`Peppol documentation <accounting/e-invoicing/peppol>`
.. _belgium/cash-discount:
@@ -548,7 +560,7 @@ The Odoo POS system is certified for databases hosted on **Odoo Online**, **Odoo
**On-Premise**.
.. seealso::
:doc:`/administration/supported_versions`
:doc:`/administration/standard_extended_support`
A `certified POS system <https://www.systemedecaisseenregistreuse.be/systemes-certifies>`_ must
adhere to rigorous government regulations, which means it operates differently from a non-certified

View File

@@ -45,8 +45,8 @@ app's card.
Upgrade apps and modules
========================
With each :doc:`new Odoo release </administration/supported_versions>`, new improvements or app
features are added. Upgrade the app to use these new improvements and features.
With each :doc:`new Odoo release <../../administration/standard_extended_support>`, new improvements
or app features are added. Upgrade the app to use these new improvements and features.
Go to :menuselection:`Apps` and then on the app to upgrade, click the :icon:`fa-ellipsis-v`
:guilabel:`(vertical ellipsis)` icon and select :guilabel:`Upgrade`.

View File

@@ -5,11 +5,10 @@ Digest emails
*Digest Emails* are periodic snapshots sent via email to users in an organization that include
high-level information about how the business is performing.
To start sending digest emails, begin by navigating to :menuselection:`Settings app --> Statistics
To start sending digest emails, begin by navigating to :menuselection:`Settings app --> Emails
section`, activate the :guilabel:`Digest Emails` feature, and click :guilabel:`Save`.
.. image:: digest_emails/digest-email-settings.png
:align: center
.. image:: digest_emails/digest-email-settings-screenshot.png
:alt: Digest Emails section inside General Settings.
A variety of settings can be configured for digest emails, such as:
@@ -29,8 +28,8 @@ A variety of settings can be configured for digest emails, such as:
When creating duplicates of databases that have sending capabilities (not testing-mode), the
digest emails continue to send from the duplicate database, unless deactivated.
To deactivate the digest email, navigate to :menuselection:`Settings --> Statistics section`.
Then, deactivate the :guilabel:`Digest Emails` feature, by un-ticking the checkbox, and clicking
To deactivate the digest email, navigate to :menuselection:`Settings --> Emails section`. Then,
deactivate the :guilabel:`Digest Emails` feature, by un-ticking the checkbox, and clicking
:guilabel:`Save`. See the section on :ref:`digest-emails/deactivate`.
.. _digest-emails/customize-digest:
@@ -39,8 +38,8 @@ Customize default digest email
==============================
To customize the default digest email (*Your Odoo Periodic Digest*), go to :menuselection:`Settings
app --> Statistics section --> Digest Email field`. Then, select :guilabel:`Your Odoo Periodic
Digest`, and click on the :guilabel:`↗️ (External link)` icon, next to the drop-down menu selection.
app --> Emails section --> Digest Email field`. Then, select :guilabel:`Your Odoo Periodic Digest`,
and click on the :guilabel:`↗️ (External link)` icon, next to the drop-down menu selection.
A pop-up window appears, and presents a variety of editable settings, which include:
@@ -59,8 +58,7 @@ A pop-up window appears, and presents a variety of editable settings, which incl
costs to the database subscription are incurred should *Studio* need to be installed. See this
section on :ref:`digest-emails/custom-kpi`.
.. image:: digest_emails/periodic-digest.png
:align: center
.. image:: digest_emails/periodic-digest-screenshot.png
:alt: Customize default Digest Email settings and custom KPIs.
.. _digest-emails/deactivate:
@@ -69,19 +67,16 @@ Deactivate digest email
=======================
To manually deactivate an individual digest email, first navigate to :menuselection:`Settings app
--> Statistics section`, and click :guilabel:`Configure Digest Emails`. Then, select the desired
digest email from the list that should be deactivated.
--> Emails section`, and click :guilabel:`Configure Digest Emails`. Then, select the desired digest
email from the list that should be deactivated. Then, click :guilabel:`Deactivate`.
Next, click :guilabel:`DEACTIVATE FOR EVERYONE` to deactivate the digest email for everyone, or
:guilabel:`UNSUBSCRIBE ME` to remove the logged in user from the mailing list. These buttons are
located in the top menu, just above the :guilabel:`Digest Name`.
Manually send digest email
==========================
To manually send a digest email, first navigate to :menuselection:`Settings app --> Statistics
section`, and click :guilabel:`Configure Digest Emails`. Then, select the desired digest email, and
click :guilabel:`SEND NOW`. This button is located in the top menu, just above the :guilabel:`Digest
To manually send a digest email, first navigate to :menuselection:`Settings app --> Emails section`,
and click :guilabel:`Configure Digest Emails`. Then, select the desired digest email, and click
:guilabel:`SEND NOW`. This button is located in the top menu, just above the :guilabel:`Digest
Name`.
.. _digest-emails/kpis:
@@ -92,8 +87,8 @@ KPIs
Pre-configured :abbr:`KPIs (key performance indicators)` can be added to the digest email from the
:guilabel:`KPIs` tab of the digest email template form.
First, navigate to :menuselection:`Settings app --> Statistics section`, and click
:guilabel:`Configure Digest Emails`.
First, navigate to :menuselection:`Settings app --> Emails section`, and click :guilabel:`Configure
Digest Emails`.
Then, select the desired digest email, and open the :guilabel:`KPIs` tab.
@@ -104,43 +99,46 @@ are added (or deselected), click :guilabel:`Save`.
The following :abbr:`KPIs (key performance indicators)` are available in the :guilabel:`KPIs` tab on
a digest email template form out-of-box in Odoo:
.. image:: digest_emails/oob-kpis.png
:align: right
:alt: KPIs listed in the out-of-box digest email.
:guilabel:`General`
- :guilabel:`Connected Users`
- :guilabel:`Messages`
:guilabel:`CRM`
- :guilabel:`New Leads`
- :guilabel:`Opportunities Won`
:guilabel:`Project`
- :guilabel:`Open Tasks`
:guilabel:`Recruitment`
- :guilabel:`Employees`
:guilabel:`CRM`
- :guilabel:`New Leads/Opportunities`
- :guilabel:`Opportunities Won`
:guilabel:`Sales`
- :guilabel:`All Sales`
- :guilabel:`eCommerce Sales`
:guilabel:`Point of Sale`
- :guilabel:`POS Sales`
:guilabel:`Helpdesk`
- :guilabel:`Tickets Closed`
:guilabel:`Live Chat`
- :guilabel:`% of Happiness`
- :guilabel:`Conversations handled`
- :guilabel:`Time to answer (sec)`
:guilabel:`Helpdesk`
- :guilabel:`Tickets Closed`
:guilabel:`Sales`
- :guilabel:`All Sales`
- :guilabel:`eCommerce Sales`
:guilabel:`Sales`
- :guilabel:`All Sales`
- :guilabel:`eCommerce Sales`
:guilabel:`Invoicing`
- :guilabel:`Revenue`
- :guilabel:`Banks and Cash Moves`
:guilabel:`Point of Sale`
- :guilabel:`POS Sales`
:guilabel:`Recruitment`
- :guilabel:`Employees`
:guilabel:`Custom`
.. _digest-emails/recipients:
Recipients
@@ -149,18 +147,18 @@ Recipients
Digest email recipients are added from the :guilabel:`Recipients` tab of the digest email template
form.
To add a recipient, navigate to :menuselection:`Settings app --> Statistics section`, and click
To add a recipient, navigate to :menuselection:`Settings app --> Emails section`, and click
:guilabel:`Configure Digest Emails`. Then, select the desired digest email, and open the
:guilabel:`Recipients` tab.
To add a recipient, click :guilabel:`Add a line`, and an :guilabel:`Add Recipients` pop-up window
To add a recipient, click :guilabel:`Add a line`, and an :guilabel:`Add: Recipients` pop-up window
appears, with all available users to add as recipients.
From the pop-up window, tick the checkbox next to the :guilabel:`Name` of the user(s), and click the
:guilabel:`Select` button.
To remove a user as a recipient, click the :guilabel:`❌ (remove)` icon to the far-right of the user
listed in the :guilabel:`Recipients` tab.
To remove a user as a recipient, click the :icon:`fa-times` :guilabel:`(cancel)` icon to the
far-right of the user listed in the :guilabel:`Recipients` tab.
Click :guilabel:`Save` to implement the changes.
@@ -169,9 +167,8 @@ Click :guilabel:`Save` to implement the changes.
Create digest emails
====================
To create a new digest email, navigate to :menuselection:`Settings app --> Statistics section`, and
click :guilabel:`Configure Digest Emails`. Then, click :guilabel:`Create` to create a new digest
email.
To create a new digest email, navigate to :menuselection:`Settings app --> Emails section`, and
click :guilabel:`Configure Digest Emails`. Then, click :guilabel:`New` to create a new digest email.
A separate page, with a blank digest email template appears, and presents a variety of editable
settings, including:
@@ -186,12 +183,11 @@ settings, including:
- :guilabel:`Recipients` tab: add/remove users who receive the digest emails. See the section on
:ref:`digest-emails/recipients`.
From there, give the digest email a :guilabel:`Digest Name`, specify :guilabel:`Periodicity`,
choose the desired :abbr:`KPIs (key performance indicators)`, and add :guilabel:`Recipients`, as
needed.
From there, give the digest email a :guilabel:`Digest Name`, specify :guilabel:`Periodicity`, choose
the desired :abbr:`KPIs (key performance indicators)`, and add :guilabel:`Recipients`, as needed.
After clicking :guilabel:`Save`, the new custom digest email is available as a selection in the
:guilabel:`Digest Email` field, located in the :menuselection:`Settings app --> Statistics section`.
:guilabel:`Digest Email` field, located in the :menuselection:`Settings app --> Emails section`.
.. _digest-emails/custom-kpi:
@@ -220,11 +216,6 @@ In order to create additional fields, create two fields on the digest object:
<https://github.com/odoo/odoo/blob/15.0/addons/digest/models/digest.py>`_ for the `digest.py`
file, which guides the programmer in the coding of the computed field.
.. seealso::
Users can also click the :guilabel:`Recipients` tab, and then the vertical three-dot
:guilabel:`(kebab)` menu to edit this view. Either click :guilabel:`EDIT LIST VIEW` or
:guilabel:`EDIT FORM VIEW` to modify this tab.
Computed values reference table
-------------------------------

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -9,4 +9,3 @@ Integrations
integrations/geolocation
integrations/google_translate
integrations/cloud_storage
integrations/barcodelookup

View File

@@ -17,6 +17,11 @@ To start using an IoT box:
Devices can also be connected after the IoT box is added to the network and/or connected to the
database; however, a reboot of the IoT box might be required.
.. important::
Never make the IoT box accessible from the public Internet.
IoT systems are designed to provide your database with access to devices on your local network.
Exposing them to the public Internet would create a **security risk**.
.. _iot/iot_box/network:
Network connection

View File

@@ -27,6 +27,11 @@ The following prerequisites must be met before setting up and using the Windows
- It is also possible to create a Windows Virtual Machine on a MacOS/Linux computer. However,
this option is not supported by Odoo, and no troubleshooting assistance will be provided.
.. important::
Never make the Windows virtual IoT accessible from the public Internet.
IoT systems are designed to provide your database with access to devices on your local network.
Exposing them to the public Internet would create a **security risk**.
.. _iot/windows-iot/installation:
Installation

View File

@@ -15,6 +15,14 @@ The states included in this localization are:
- Alabama (AL)
- Washington (WA)
- Nevada (NV)
- Vermont (VT)
- Illinois (IL)
- Virginia (VA)
- Washington, D.C (DC)
- Arizona (AZ)
- Idaho (ID)
- Oregon (OR)
- North Carolina (NC)
.. note::
Federal taxes (Income, :abbr:`FICA (Federal Insurance Contributions Act)`, and Unemployment) for

View File

@@ -11,6 +11,7 @@ Setup
setup/device_troubleshooting
setup/hardware
setup/software
setup/barcodelookup
setup/serial_numbers_lots
setup/operation_types
setup/rfid

View File

@@ -44,9 +44,8 @@ To enable automatic barcode look up, go to :menuselection:`Inventory app --> Con
Settings` and scroll down to the :guilabel:`Barcode` section to tick the box for :guilabel:`Stock
Barcode Database`.
.. note::
Databases hosted on **Odoo.sh** or **on-premise**, require :ref:`configuring an API key
<barcodelookup/configuration>`.
.. seealso::
:doc:`Barcode Lookup <barcodelookup>`
.. _inventory/barcode/set-barcodes:

View File

@@ -5,8 +5,82 @@ FEFO removal
The *First Expired, First Out* (FEFO) removal strategy targets products for removal based on their
assigned removal dates.
.. seealso::
:doc:`About removal strategies <../removal_strategies>`
.. _inventory/warehouses_storage/fefo_enable:
Enabling the FEFO removal strategy
==================================
Lots and serial numbers differentiate identical products and track information like arrival or
expiration dates. To enable this feature, navigate to :menuselection:`Inventory --> Configuration
--> Settings`. Under the :guilabel:`Traceability` heading, check the box beside :guilabel:`Lots &
Serial Numbers`. After :guilabel:`Lots & Serial Numbers` is enabled, the :guilabel:`Expiration Date`
feature appears. Enable it to track expiration dates, best-before dates, removal dates, and alert
dates.
.. image:: fefo/enable-features.png
:alt: Enable Lots & Serial Numbers and Expiration Dates in the Inventory settings.
Enable tracking by lots or serial numbers
-----------------------------------------
Next, ensure the intended product is tracked by lots or serial numbers by navigating to the product
form through :menuselection:`Inventory --> Products --> Products` and selecting the desired product.
On the product form, open the :guilabel:`General Information` tab and select the check box next to
the :guilabel:`Track Inventory` field, then select either :guilabel:`By Unique Serial Number` or
:guilabel:`By Lots`.
.. image:: fefo/track-by-lots.png
:alt: Enable tracking by lot.
Setting dates
-------------
Next, set the :guilabel:`Expiration Date`, :guilabel:`Best Before Date`, :guilabel:`Removal Date`,
and :guilabel:`Alert Date` settings for the product. In the :guilabel:`Inventory` tab of the product
form, under the :guilabel:`Traceability` heading, select the :guilabel:`Expiration Date` check box.
The :guilabel:`Dates` heading appears. See :ref:`Removal date
<inventory/warehouses_storage/removal-date>` for more information.
Assigning lots and serial numbers
---------------------------------
After enabling the features, assign lot or serial numbers to products using an :doc:`inventory
adjustment <../../warehouses_storage/inventory_management/count_products>` or during :ref:`product
reception <inventory/product_management/assign-lots>`.
Setting removal strategies
--------------------------
After lot or serial numbers have been assigned, set the removal strategy on the storage location or
product category.
.. image:: fefo/location-categories.png
:alt: Find the Locations or Categories from the Configuration menu.
On the location
~~~~~~~~~~~~~~~
Open :menuselection:`Inventory app --> Configuration --> Locations`. Select the desired location. On
the location form, under the :guilabel:`Logistics` heading, select :guilabel:`First Expiry First Out
(FEFO)` from the list of removal strategies.
.. image:: fefo/set-on-location.png
:alt: Set First Expiry First Out as the location removal strategy.
On the product category
~~~~~~~~~~~~~~~~~~~~~~~
Configure removal strategies on product categories by going to :menuselection:`Inventory app -->
Configuration --> Categories` and selecting the intended product category. Next, in the
:guilabel:`Force Removal Strategy` field, specify :guilabel:`First Expiry First Out (FEFO)`.
.. image:: fefo/set-on-category.png
:alt: Set First Expiry First Out as the product category removal strategy.
.. important::
When there are different removal strategies applied on both the location and product category for
a product, the value set on the :guilabel:`Force Removal Strategy` field set on a product
category form is applied as top priority.
.. _inventory/warehouses_storage/removal-date:
@@ -34,9 +108,6 @@ number of days specified in the :guilabel:`Expiration Date` field of the product
The removal date takes this expiration date, and subtracts the number of days specified in the
:guilabel:`Removal Date` field of the product form.
.. seealso::
:doc:`Expiration dates <../../product_management/product_tracking/expiration_dates>`
.. example::
In the :guilabel:`Inventory` tab of the product, `Egg`, the following :guilabel:`Dates` are set
by the user:
@@ -45,7 +116,6 @@ The removal date takes this expiration date, and subtracts the number of days sp
- :guilabel:`Removal Date`: `15` days before expiration date
.. image:: fefo/user-set-date.png
:align: center
:alt: Display expiration and removal dates set on the product form.
A shipment of Eggs arrive at the warehouse on January 1st. So, the expiration date of the Eggs is
@@ -54,16 +124,20 @@ The removal date takes this expiration date, and subtracts the number of days sp
.. _inventory/warehouses_storage/exp-date:
To view the expiration dates of items in stock, navigate to the product form, and click the
:guilabel:`On Hand` smart button.
Next, click the additional options icon, located on the far-right, and select the columns:
:guilabel:`Expiration Date` and :guilabel:`Removal Date`.
To view the expiration dates of items in stock, go to :menuselection:`Inventory app --> Products -->
Lots / Serial Numbers`. By default, this report is grouped by location. If necessary, remove that
grouping in the search bar and group by product. Expand the product to show its lots. Next, click
the :icon:`oi-settings-adjust` :guilabel:`(settings adjust)` icon, located on the far-right, and
select the columns: :guilabel:`Expiration Date` and :guilabel:`Removal Date`.
.. image:: fefo/removal-date.png
:align: center
:alt: Show expiration dates from the inventory adjustments model accessed from the *On Hand*
smart button from the product form.
:alt: Show expiration dates from the Lots / Serial Numbers list.
Alternatively, view these dates by clicking the :guilabel:`Lot/Serial Numbers` smart button on the
product form.
.. image:: fefo/removal-date-lots-serial-numbers.png
:alt: Show expiration dates from the Lots/Serial Numbers list on the product form.
Workflow
========
@@ -72,15 +146,10 @@ Using the :abbr:`FEFO (First Expired, First Out)` removal strategy ensures that
nearest removal date are picked first.
To understand how this removal strategy works, consider the following example below about the
product, `Carton of eggs`, which is a box containing twelve eggs.
product, `Carton of Eggs`, which is a box containing twelve eggs.
The product is tracked :guilabel:`By Lots`, and the product category's :guilabel:`Force Removal
Strategy` is set to :guilabel:`First Expired, First Out (FEFO)`.
.. seealso::
- :ref:`Set up force removal strategy <inventory/warehouses_storage/removal-config>`
- :ref:`Enable lots tracking <inventory/warehouses_storage/lots-setup>`
- `Odoo Tutorials: Perishable Products <https://www.odoo.com/slides/slide/5324/share>`_
Strategy` is set to :guilabel:`First Expiry First Out (FEFO)`.
.. list-table::
:header-rows: 1
@@ -95,32 +164,38 @@ Strategy` is set to :guilabel:`First Expired, First Out (FEFO)`.
- 2
- 1
* - Expiration date
- April 4
- April 10
- April 15
- January 8, 2026
- January 15, 2026
- January 22, 2026
* - :ref:`Removal date <inventory/warehouses_storage/exp-date>`
- February 26
- March 4
- March 9
- December 24, 2025
- December 31, 2025
- January 7, 2026
To see the removal strategy in action, go to the :menuselection:`Sales app` and create a new
quotation.
Clicking :guilabel:`Confirm` creates a delivery order for today, December 29th, and the lot numbers
Clicking :guilabel:`Confirm` creates a delivery order for today, December 9th, and the lot numbers
with the soonest expiration dates are reserved, using the :abbr:`FEFO (First Expired, First Out)`
removal strategy.
To view the detailed pickings, click the :guilabel:`⦙≣ (bulleted list)` icon, located on the
far-right of the Carton of egg's product line, in the :guilabel:`Operations` tab of the delivery
order. Doing so opens the :guilabel:`Open: Stock move` pop-up window.
To view the detailed pickings, click the :guilabel:`Details` link, located on the far-right of the
Carton of Eggs' product line, in the :guilabel:`Operations` tab of the delivery order. Doing so
opens the :guilabel:`Detailed Operations` pop-up window.
In the :guilabel:`Open: Stock move` pop-up window, the :guilabel:`Pick from` field displays where
In the :guilabel:`Detailed Operations` pop-up window, the :guilabel:`Pick From` field displays where
the quantities to fulfill the :guilabel:`Demand` are picked from.
Since the order demanded six Cartons of eggs, using the :abbr:`FEFO (First Expired, First Out)`
removal strategy, all five Cartons from `LOT1`, with the removal date of February 26th, are picked.
The remaining Carton is selected from `LOT2`, which has a removal date of March 4th.
Since the order demanded six Cartons of Eggs, using the :abbr:`FEFO (First Expired, First Out)`
removal strategy, all five Cartons from `LOT1`, with the removal date of December 24, are picked.
The remaining Carton is selected from `LOT2`, which has a removal date of December 31.
.. image:: fefo/eggs-picking.png
:align: center
:alt: The stock moves window that shows the lots to be removed using FEFO.
:alt: The detailed operations window that shows the lots to be removed using FEFO.
.. seealso::
- :doc:`Removal strategies <../removal_strategies>`
- :ref:`Set up force removal strategy <inventory/warehouses_storage/removal-config>`
- :doc:`Expiration dates <../../product_management/product_tracking/expiration_dates>`
- :ref:`Enable lots tracking <inventory/warehouses_storage/lots-setup>`
- `Odoo Tutorials: Perishable Products <https://www.odoo.com/slides/slide/5324/share>`_

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -3,25 +3,84 @@ FIFO removal
============
The *First In, First Out* (FIFO) removal strategy selects products with the earliest arrival dates.
This method is useful for companies selling products that have short demand cycles, like clothes,
for example. By using :abbr:`FIFO (First In, First Out)`, companies can prevent prolonged stock
retention of specific styles.
.. seealso::
:doc:`About removal strategies <../removal_strategies>`
This method is useful for companies selling products that have short demand cycles, like clothes.
By using :abbr:`FIFO (First In, First Out)`, companies can prevent prolonged stock retention of
specific styles.
.. example::
Various quantities of the product, `T-shirt`, tracked by lot numbers, arrive on August 1st and
August 25th. For an order made on September 1st, the :abbr:`FIFO (First In, First Out)` removal
strategy prioritizes lots that have been in stock the longest. So, products received on August
1st are selected first for picking.
Different shipments of t-shirts, tracked by lot numbers, arrive in a business's warehouse between
August 1st and August 25th. When a customer makes an order on September 1st, the :abbr:`FIFO
(First In, First Out)` removal strategy prioritizes lots that have been in stock the longest. So,
products received on August 1st are selected first for picking.
.. image:: fifo/fifo-example.png
:align: center
:alt: Illustration of FIFO selecting the oldest products in stock.
.. seealso::
:ref:`Lot/serial number setup details <inventory/warehouses_storage/lots-setup>`
.. _inventory/warehouses_storage/fifo_enable:
Enabling the FIFO removal strategy
==================================
Lots and serial numbers differentiate identical products and track information like arrival or
expiration dates. To enable this feature, navigate to :menuselection:`Inventory --> Configuration
--> Settings`. Under the :guilabel:`Traceability` section, check the box beside :guilabel:`Lots &
Serial Numbers`.
.. image:: fifo/enable-lots-serial-numbers.png
:alt: Enable Lots & Serial Numbers in the Inventory settings.
Enable tracking by lots or serial numbers
-----------------------------------------
Next, ensure the intended product is tracked by lots or serial numbers by navigating to the product
form through :menuselection:`Inventory --> Products --> Products` and selecting the desired product.
On the product form, open the :guilabel:`General Information` tab and select the check box next to
the :guilabel:`Track Inventory` field, then select either :guilabel:`By Unique Serial Number` or
:guilabel:`By Lots`.
.. image:: fifo/track-by-serial-number.png
:alt: Enable tracking by serial number.
Assigning lots and serial numbers
---------------------------------
After enabling the features, assign lot or serial numbers to products using an :doc:`inventory
adjustment <../../warehouses_storage/inventory_management/count_products>` or :ref:`during
reception <inventory/product_management/assign-lots>`.
Setting removal strategies
--------------------------
After lot or serial numbers have been assigned, set the removal strategy on the product category or
storage location.
.. image:: fifo/location-categories.png
:alt: Find the Locations or Categories from the Configuration menu.
On the location
~~~~~~~~~~~~~~~
Open :menuselection:`Inventory app --> Configuration --> Locations`. Select the desired location. On
the location form, under the :guilabel:`Logistics` heading, select :guilabel:`First In First Out
(FIFO)` from the list of removal strategies.
.. image:: fifo/fifo-on-location.png
:alt: Set First In First Out as the location removal strategy.
On the product category
~~~~~~~~~~~~~~~~~~~~~~~
Configure removal strategies on product categories by going to :menuselection:`Inventory app -->
Configuration --> Categories` and selecting the intended product category. Next, in the
:guilabel:`Force Removal Strategy` field, specify :guilabel:`First In First Out (FIFO)`.
.. image:: fifo/fifo-on-category.png
:alt: Set First In First Out as the product category removal strategy.
.. important::
When there are different removal strategies applied on both the location and product category for
a product, the value set on the :guilabel:`Force Removal Strategy` field set on a product
category form is applied as top priority.
.. _inventory/warehouses_storage/arrival_date:
@@ -29,18 +88,19 @@ Arrival date
============
To see the product lot or serial number that arrived in inventory first, navigate to
:menuselection:`Inventory app --> Products --> Lots/Serial Numbers`.
:menuselection:`Inventory app --> Products --> Lots/Serial Numbers`. By default, this list is
grouped by location. If necessary, remove that grouping and group by product instead.
Then, select the :guilabel:`▶️ (right-pointing arrow)` icon on the left of a product line, in order
to reveal a list of the product's lots or serial numbers that are in stock. The :guilabel:`Created
On` field shows the lot/serial number creation date, which is, essentially, the arrival date.
Then, select the :icon:`fa-caret-right` :guilabel:`(right-pointing arrow)` icon on the left of a
product line, in order to reveal a list of the product's lots or serial numbers that are in stock.
The :guilabel:`Created on` field shows the lot/serial number creation date, which the system
considers to be the arrival date.
.. example::
Serial number `00000000500` of the product, `Cabinet with Doors`, arrived on December 29th, as
displayed in the :guilabel:`Created On` field.
Serial number `0000000000500` of the product, `Cabinet with Doors`, arrived on December 9th, as
displayed in the :guilabel:`Created on` field.
.. image:: fifo/created-on.png
:align: center
:alt: Display arrival date of a lot for an item.
Workflow
@@ -55,10 +115,6 @@ the :guilabel:`Force Removal Strategy`.
The white shirts are tracked :guilabel:`By Lots` in the :guilabel:`Inventory` tab of the product
form.
.. seealso::
- :ref:`Set up force removal strategy <inventory/warehouses_storage/removal-config>`
- :ref:`Enable lots tracking <inventory/warehouses_storage/lots-setup>`
The following table represents the on-hand stock and lot number details of white shirts.
.. list-table::
@@ -84,14 +140,19 @@ for six white shirts by navigating to the :menuselection:`Sales app` and creatin
After clicking :guilabel:`Confirm` on the sales order, a delivery order with the oldest lot numbers
for shirts are reserved, using the :abbr:`FIFO (First In, First Out)` removal strategy.
To view the detailed pickings, click the :guilabel:`⦙≣ (bulleted list)` icon, located on the
far-right of the white shirt's product line in the :guilabel:`Operations` tab of the delivery order.
Doing so opens the :guilabel:`Open: Stock move` pop-up window.
To view the detailed pickings, click the :guilabel:`Details` link, located on the far-right of the
white shirt's product line in the :guilabel:`Operations` tab of the delivery order. Doing so opens
the :guilabel:`Detailed Operations` pop-up window.
In the :guilabel:`Open: Stock move` pop-up window, the :guilabel:`Pick from` field displays where
In the :guilabel:`Detailed Operations` pop-up window, the :guilabel:`Pick From` field displays where
the quantities to fulfill the :guilabel:`Demand` are picked from. Since the order demanded six
shirts, all five shirts from `LOT1`, and one shirt from `LOT2`, are selected.
.. image:: fifo/white-shirt-picking.png
:align: center
:alt: Two lots being reserved for a sales order with the FIFO strategy.
.. seealso::
- :doc:`Removal strategies <../removal_strategies>`
- :ref:`Lot/serial number setup details <inventory/warehouses_storage/lots-setup>`
- :ref:`Set up force removal strategy <inventory/warehouses_storage/removal-config>`
- :ref:`Enable lots tracking <inventory/warehouses_storage/lots-setup>`

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -9,23 +9,85 @@ Every time an order is placed for products using the :abbr:`LIFO (Last In, First
transfer is created for the lot/serial number that has most recently entered the stock (the **last**
lot/serial number that entered the warehouse's inventory).
.. seealso::
:doc:`About removal strategies <../removal_strategies>`
.. warning::
In many countries, the :abbr:`LIFO (Last In, First Out)` removal strategy is banned, since it can
potentially result in old, expired, or obsolete products being delivered to customers.
.. _inventory/warehouses_storage/lifo_enable:
Enabling the LIFO removal strategy
==================================
Lots and serial numbers differentiate identical products and track information like arrival or
expiration dates. To enable this feature, navigate to :menuselection:`Inventory --> Configuration
--> Settings`. Under the :guilabel:`Traceability` section, check the box beside :guilabel:`Lots &
Serial Numbers` to enable the feature.
.. image:: lifo/enable-lots-serial-numbers.png
:alt: Enable Lots & Serial Numbers in the Inventory settings.
Enable tracking by lots or serial numbers
-----------------------------------------
Next, ensure the intended product is tracked by lots or serial numbers by navigating to the product
form in the :menuselection:`Inventory app --> Products --> Products`, then selecting the desired
product. On the product form, open the :guilabel:`General Information` tab, select the checkbox next
to the :guilabel:`Track Inventory` field, then choose either :guilabel:`By Unique Serial Number` or
:guilabel:`By Lots`.
.. image:: lifo/track-by-serial-number.png
:alt: Enable tracking by serial number.
Assigning lots and serial numbers
---------------------------------
After enabling the features, assign lot or serial numbers to products using an :doc:`inventory
adjustment <../../warehouses_storage/inventory_management/count_products>` or :ref:`during reception
<inventory/product_management/assign-lots>`.
Setting removal strategies
--------------------------
After lots or serial numbers have been assigned, set the removal strategy on the product category or
storage location.
.. image:: lifo/location-categories.png
:alt: Find the Locations or Categories from the Configuration menu.
On the storage location
~~~~~~~~~~~~~~~~~~~~~~~
Open :menuselection:`Inventory app --> Configuration --> Locations`. Select the desired location. On
the location form, under the :guilabel:`Logistics` heading, select :guilabel:`Last In First Out
(LIFO)` from the list of removal strategies.
.. image:: lifo/lifo-on-location.png
:alt: Set Last In First Out as the location removal strategy.
On the product category
~~~~~~~~~~~~~~~~~~~~~~~
Configure removal strategies on product categories by going to :menuselection:`Inventory app -->
Configuration --> Categories` and selecting the intended product category. In the
:guilabel:`Logistics` section, specify :guilabel:`Last In First Out (LIFO)` in the :guilabel:`Force
Removal Strategy` field.
.. image:: lifo/lifo-on-category.png
:alt: Set Last In First Out as the product category removal strategy.
.. important::
When there are different removal strategies applied on both the location and product category for
a product, the value set on the :guilabel:`Force Removal Strategy` field set on a product
category form is applied as top priority.
Workflow
========
Consider the following example, with the product, `Cinder Block`, which is tracked :guilabel:`By
Lots` in the :guilabel:`Inventory` tab of the product form. The :guilabel:`Force Removal Strategy`
for the cinder block's product category is set to :guilabel:`Last In, First Out (LIFO)`.
Lots` in the :guilabel:`General Information` tab of the product form. The :guilabel:`Force Removal
Strategy` for the cinder block's product category is set to :guilabel:`Last In, First Out (LIFO)`.
.. seealso::
- :ref:`Set up force removal strategy <inventory/warehouses_storage/removal-config>`
- :ref:`Enable lots tracking <inventory/warehouses_storage/lots-setup>`
- :ref:`Check arrival date <inventory/warehouses_storage/arrival_date>`
The following table represents the cinder blocks in stock, and their various lot number details.
The following table lists the cinder blocks in stock and their respective lot numbers.
.. list-table::
:header-rows: 1
@@ -45,21 +107,28 @@ The following table represents the cinder blocks in stock, and their various lot
- June 6
To see the removal strategy in action, create a :ref:`delivery order <inventory/delivery/one-step>`
for seven cinder blocks by navigating to the :menuselection:`Sales app` and creating a new
quotation.
for seven cinder blocks by navigating to the **Sales** app and creating a new quotation.
:guilabel:`Confirm` the sales order to create a delivery order. Doing so reserves the newest lot
numbers are using the :abbr:`LIFO (Last In, First Out)` removal strategy.
Click :guilabel:`Confirm` on the sales order form to create a delivery order. Doing so reserves the
newest lot numbers using the :abbr:`LIFO (Last In, First Out)` removal strategy.
To view the detailed pickings, click the :guilabel:`⦙≣ (bulleted list)` icon, located on the
far-right of the cinder block's product line in the :guilabel:`Operations` tab of the delivery
order. Doing so opens the :guilabel:`Open: Stock move` pop-up window.
To view the detailed pickings, click the :guilabel:`Details` link at the far-right of the cinder
block's product line in the :guilabel:`Operations` tab of the delivery order.
In the :guilabel:`Open: Stock move` pop-up window, the :guilabel:`Pick from` field displays where
the quantities to fulfill the :guilabel:`Demand` are picked from. Since the order demanded seven
cinder blocks, the newest cinder blocks from `LOT3` are selected, using the :abbr:`LIFO (Last In,
First Out)` removal strategy.
.. image:: lifo/details-link.png
:alt: Find the Details link in the Operations tab of the delivery order.
Clicking the :guilabel:`Details` link opens the :guilabel:`Detailed Operations` pop-up window.
In the :guilabel:`Detailed Operations` pop-up window, the :guilabel:`Pick From` field shows where
the quantities to fulfill the :guilabel:`Demand` are picked. Since the order demanded seven cinder
blocks, the newest cinder blocks from `LOT3` are selected using the :abbr:`LIFO (Last In, First
Out)` removal strategy.
.. image:: lifo/cinder-block-picking.png
:align: center
:alt: The detailed operations shows which lots are being selected for the picking.
.. seealso::
- :doc:`Removal strategies <../removal_strategies>`
- :ref:`Enable lots tracking <inventory/warehouses_storage/lots-setup>`
- :ref:`Check arrival date <inventory/warehouses_storage/arrival_date>`

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

View File

@@ -72,6 +72,8 @@ delivery order has been completed.
:align: center
:alt: The Packages smart button on a delivery order.
.. _inventory/shipping/backorders:
Create a backorder for items to be shipped later
================================================

View File

@@ -6,20 +6,18 @@ Sendcloud is a shipping service aggregator that facilitates the integration of E
carriers with Odoo. Once integrated, users can select shipping carriers on inventory operations in
their Odoo database.
.. seealso::
`Sendcloud integration documentation <https://support.sendcloud.com/hc/en-us/articles/
360059470491-Odoo-Native-integration>`_
Setup in Sendcloud
==================
Create an account and activate carriers
---------------------------------------
To get started, go to `Sendcloud's platform <https://sendcloud.com/
?utm_source=odoo&utm_medium=partnerships&utm_campaign=partner_integrations_page>`_ to configure the
account and generate the connector credentials. Log in with the Sendcloud account, or create a new
one if needed.
To get started, `create or log in to a Sendcloud account <https://account.sendcloud.com/signup/
?utm_source=odoo&utm_medium=partnerships&utm_campaign=partner_integrations_page>`_.
On the Sendcloud platform, follow the `Sendcloud integration documentation
<https://support.sendcloud.com/hc/en-us/articles/360059470491-Odoo-Native-integration>`_ to
configure the account and generate the connector credentials.
.. note::
For new account creation, Sendcloud will ask for a :abbr:`VAT (Value-Added Tax Identification)`

View File

@@ -37,11 +37,26 @@ designates one or more resources that can be used in combination to handled a bi
*Linked resources* are only used when using the :ref:`auto-assign <appointments/configure>`
:guilabel:`Assignment Method`.
Lastly, add a :guilabel:`Description` for this resource.
Lastly, add a :guilabel:`Description` for this resource. The contents of the :guilabel:`Description`
tab are visible to customers when booking an appointment online.
.. note::
The contents of the :guilabel:`Description` tab are visible to customers when booking an
appointment online.
Resource capacity
~~~~~~~~~~~~~~~~~
When booking an appointment based on resource availability, the website only displays capacity up to
`12`. This occurs even if the resource has a higher capacity. To avoid this, a new *System
Parameter* needs to be added to the database.
First, ensure that :ref:`developer mode <developer-mode>` is enabled. Then, navigate to the
:menuselection:`Settings app --> Technical --> Parameters --> System Parameters`. Click
:guilabel:`New` to add a new parameter.
In the :guilabel:`Key` field, enter `appointment.resource_max_capacity_allowed`. In the
:guilabel:`Value` field, enter the maximum capacity that should be allowed. Click
:icon:`fa-cloud-upload` :guilabel:`(Save manually)` when finished.
.. image:: appointments/system-parameter.png
:alt: The new system parameter for capacity limits.
.. _appointments/configure:

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -92,6 +92,5 @@ settings <configuration/settings>` and choose the specific categories to display
configuration/pos_iot
configuration/epos_printers
configuration/epson_server_direct_print
configuration/https
configuration/epos_ssc

View File

@@ -1,85 +0,0 @@
===========================
Epson server direct printer
===========================
The Epson Server Direct Print functionality allows for receipt printing from Point of Sale systems.
Once enabled, the POS register sends tickets directly to any Epson printer model supporting Server
Direct Print.
.. note::
We recommended using the Epson **TM-m30III** model for receipt printing. However, all the
following models are compatible:
- TM-H6000V
- TM-T88VI
- TM-T88VI-iHUB
- TM-T88VII
- TM-m30II-NT
- TM-m30II-S
- TM-m30II-SL
- TM-m30II-H
- TM-m30III
- TM-m30III-H
- TM-m50
- TM-m50II
These printers don't require connecting to an :doc:`IoT system
</applications/general/iot/connect>` or configuring an SSL certificate.
.. _epson-direct/pos-configuration:
Point of Sale configuration
===========================
To configure the printer in Point of Sale, follow these steps:
#. :ref:`Access the POS settings <configuration/settings>`.
#. Scroll down to the :guilabel:`Point of Sale` section and enable the :guilabel:`Epson Server
Direct Printer` setting.
#. Optionally, select :guilabel:`Cashdrawer` if using a cash drawer connected to the printer.
#. Click the :icon:`fa-clipboard` :guilabel:`Copy URL` and :icon:`fa-clipboard` :guilabel:`Copy ID`
clipboard buttons to copy the URL and ID for the :ref:`printer configuration
<epson-direct/printer-configuration>`.
.. image:: epson_server_direct_print/pos-config.png
:alt: setting to enable the Server Direct Print feature
.. note::
When the printer connects to a network, it automatically prints a receipt with an IP address.
.. _epson-direct/printer-configuration:
Printer configuration
=====================
To configure the printer, follow the next steps:
#. Connect the printer to the Internet and find the IP address on the automatically-printed receipt.
#. Open an Internet browser, enter the printer's IP address in the search bar, and press `Enter`.
#. On the printer homepage, click :guilabel:`Advanced Settings`, then :guilabel:`Administrator
Login`.
#. Enter the printer's password.
#. Go to :menuselection:`TM-i Settings --> Services --> Server Direct Print`.
#. Set the :guilabel:`Server Direct Print` field to :guilabel:`Enable`.
#. In the :guilabel:`URL` field, paste the printer setup URL from the :ref:`POS configuration
<epson-direct/pos-configuration>`.
#. In the :guilabel:`Interval` section, set the value to :guilabel:`5`.
#. In the :guilabel:`ID` field, paste the printer setup ID from the :ref:`POS configuration
<epson-direct/pos-configuration>`.
#. Click :guilabel:`Apply & Restart`.
.. image:: epson_server_direct_print/printer-configuration.png
:alt: configuration in the printer settings
.. tip::
- The same printer can be used for multiple POS configurations.
- Setting the :guilabel:`Interval` field to :guilabel:`5` ensures a balance between printing
speed and server load; the printer processes all queued receipts at each interval.
- Ensure the printer's :guilabel:`Device ID` is set to `local_printer` in the :guilabel:`Device
Admin` section.
- Update the printer firmware before enabling the print confirmations.
- Find the printer's password on the back of the device next to the :icon:`fa-lock`
(:guilabel:`lock`) icon.
.. seealso::
:doc:`epos_printers`

View File

@@ -10,6 +10,10 @@ customer transactions through several `physical terminals
- The Odoo Pine Labs module is only available for Indian companies.
- Pine Labs terminals accept credit/debit cards (Visa, MasterCard, and RuPay) and UPI QR codes
by swiping, scanning, or tapping.
- When an Odoo database is hosted outside India, Pine Labs requires a proxy to operate, as its
services only accept traffic from Indian IP addresses. A proxy ensures the connection is
routed through India for better integration. To activate a proxy on an Odoo Online or Odoo.sh
database, `reach out to Odoo support <https://www.odoo.com/help>`_.
.. _pos/pine-labs/credentials:

View File

@@ -139,5 +139,6 @@ Odoo always uses two rules to compute the price of a product when a rental order
.. toctree::
rental/products
rental/service_products
rental/manage_deposits

View File

@@ -0,0 +1,369 @@
=======================
Service rental products
=======================
The **Rental** app is a comprehensive tool that enables users to manage the scheduling, pricing, and
inventory for both physical goods (products) and non-physical goods (services) within a single
platform.
This flexibility allows for combining products and services like bike rentals with guided tours, or
booking a studio with a photographer.
This document covers how to configure a rental service to automatically sync with staff shifts,
track time sheet hours, and set up and link project tasks based on a rental order.
Settings
========
To configure default settings on rental products, navigate to :menuselection:`Rental app -->
Configuration --> Settings`.
.. image:: service_products/rental-settings.png
:alt: Sample of Rental app configuration settings.
In the :guilabel:`Rental` section, under the :guilabel:`Default Delay Costs` subsection, fill in the
:guilabel:`Apply after` field.
.. note::
For finer control, configure the costs of late returns for the :guilabel:`Per Hour` and
:guilabel:`Per Day` fields at the product level. If the defaults apply to all products, leave the
:guilabel:`Product` field blank.
In the :guilabel:`Default Padding Time` section, fill in the :guilabel:`Padding` field.
Next, enable :guilabel:`Rental Transfers`. In the :guilabel:`Rent Online` section, fill in the
:guilabel:`Minimal Rental Duration` field and designate :guilabel:`Unavailability days`. Click
:guilabel:`Save` to apply the changes.
App integration configuration
=============================
The following apps are essential for workflow efficiency and automation when creating a service
product and rental order:
- **Sales** app: Enables the use of online payments and utilizes quotation templates within the
**Rental** app.
- **Sign** app: Allows for the upload and customization of different rental and service agreements.
These documents are used to facilitate the :guilabel:`Request Signature` feature.
- **Project** and **Planning** apps: Integrate with the Rental app to automatically match purchased
products and services with employees based on availability.
.. seealso::
- :doc:`../sales/sales_quotations/quote_template`
- :doc:`../sales/sales_quotations/get_paid_to_validate`
- :doc:`../../services/project/project_management`
- :doc:`../../services/planning`
- :doc:`../../productivity/sign`
Rental services
===============
To view all products that can be rented in the database, navigate to :menuselection:`Rentals app -->
Products`. By default, the :guilabel:`Rental` filter appears in the search bar, and the view is
Kanban. Remove the filter, then click the search bar. From the preset filters, select
:guilabel:`Services`. All the configured services appear.
Each Kanban card displays the name and rental price of the service.
.. _rental/service_products/service:
Create a new service product
============================
.. important::
The **Project** and the **Sales** apps must be installed for following options to be available:
- :guilabel:`Create on Order`
- :guilabel:`Project Template`
- :guilabel:`Invoicing Policy`
- :guilabel:`Project & Task`
Ticking the :guilabel:`Sales` checkbox displays the :guilabel:`Create on Order` and
:guilabel:`Invoicing Policy`.
To set up a new rental service, go to the :menuselection:`Rental app --> Products` and then click
:guilabel:`New`. In the new product window, the :guilabel:`Rental` checkbox is already ticked by
default.
Tick the :guilabel:`Sales` checkbox. Select the :guilabel:`Product Type` as a :guilabel:`Service`.
In the :guilabel:`Create on Order` drop-down menu, select :guilabel:`Project & Task`. In the
:guilabel:`Invoicing Policy` drop-down menu, select :guilabel:`Based on Timesheets`.
Tick the :guilabel:`Plan Services` checkbox and either create a new role or select a pre-existing
one. To create a new role, type in the name of the role in the blank field and click
:guilabel:`Create and edit` that appears.
.. image:: service_products/service-product.png
:alt: Sample of a configured service product in the Rental app.
In the :guilabel:`Create Planning Role` pop-up window, enter the role's name. Select an option for
the :guilabel:`Services` and :guilabel:`Resources`, and click :guilabel:`Save`.
.. image:: service_products/create-planning-role-window.png
:alt: Sample of the Create Planning Role window for a service product in the Rental app.
Configure rental price
----------------------
Click the :guilabel:`Rental prices` tab and in the :guilabel:`Pricing` section, click :guilabel:`Add
a price` to enter a new rental rate. Choose a *pricing period* (:dfn:`the unit of duration of the
rental`) in the :guilabel:`Period` column, or create a new pricing period by typing in the name and
clicking Create and edit.
.. tip::
Customize rental rate time periods by navigating to :menuselection:`Rental app --> Configuration
--> Rental periods`.
.. image:: service_products/new-rental-period.png
:alt: Sample of a Create Period pop up window in the Rental app.
Next, enter the :guilabel:`Price` for that specific :guilabel:`Period`. To apply the configured
rental rate to an existing pricelist, click in the :guilabel:`Pricelist` column and select the
desired list from the drop-down menu.
In the :guilabel:`Reservations` section, fill in the :guilabel:`Hourly Fine`, :guilabel:`Daily
Fine`, and the :guilabel:`Reserve product` time. These values are automatically populated from the
:guilabel:`Default Delay Costs` section, provided they have been configured in the
:menuselection:`Rental app --> Configuration --> Settings`.
Click the :icon:`fa-cloud-upload` :guilabel:`(Save manually)` icon near the top to save.
.. example::
A photography studio rents out its photographers on an hourly and daily basis. They want to add a
new four hour package for $750.
All reservations require 24-hour notice to reserve a photographer, but they do not charge a fine
if the reservations go over the agreed time. Instead, they default to their hourly fee.
Create a new pricing period by navigating to :menuselection:`Rental app --> Configuration -->
Rental periods`. Click :guilabel:`New` and configure the period for four hours.
Navigate to the :guilabel:`Photographer` service product and in the :guilabel:`Rental prices`
tab, add the four hour period set at $750. Manually save to apply changes.
.. image:: service_products/example-4hrs-rental-period.png
:alt: Sample of the Rental prices tab of service product in the Rental app.
Create a rental order with a service product
============================================
In Odoo, a rental order is the same as a sales order. When creating orders in the **Rental** app
they are referred to as rental orders.
Navigate to the **Rental** app which opens the Rental Orders dashboard. Click :guilabel:`New` to
open a new rental order form.
Enter the :guilabel:`Customer` field, and select a :guilabel:`Quotation Template`, if applicable.
Next, set the desired rental duration in the :guilabel:`Rental period` field. To adjust the rental
duration, click the first date in the :guilabel:`Rental period` field, and select the range of dates
and times to represent the rental duration from the pop-up calendar form that appears.
.. image:: service_products/rental-period-field-popup.png
:alt: Sample of the rental period field calendar pop-up window in the Rental app.
Once complete, click :guilabel:`Apply` in the calendar pop-up form. Following that, the pop-up form
disappears, and the designated rental time period is represented in the :guilabel:`Duration` field.
Next, add a rental service in the :guilabel:`Order Lines` tab, by clicking :guilabel:`Add a product`
and selecting the desired rental service to add to the form. Enter the desired amount in the
:guilabel:`Quantity` column.
.. note::
If a rental product is added before the Rental period field has been properly configured, the
user can still adjust the Rental period field accordingly. Select the desired range of dates to
represent the duration of the rental, then click Update Rental Prices in the Duration field.
.. image:: service_products/rental-update-rental-prices.png
:alt: Sample of the Duration field with the Update Rental Prices option in the Rental app.
Doing so reveals a Confirmation pop-up window. If everything is correct, click Ok, and Odoo
recalculates the rental price accordingly.
.. image:: service_products/rental-order-form.png
:alt: Sample of a rental order for a service product in the Rental app.
Once all information has been entered correctly on the rental order form, click :guilabel:`Send` to
email the quotation to the customer. When the customer approves the quotation, click
:guilabel:`Confirm`. A banner displays on the rental order stating its current status.
Customer signature
==================
Odoo enables electronic signature requests for customer service agreements and any other documents
that require signatures. Service agreements detail the business relationship and mutual duties.
These agreements protect both the provider and the customer by creating clear, enforceable
guidelines.
If signatures are required, go to the **Rental** app and from the default :guilabel:`Rental Orders`
dashboard, select the desired rental order. Click the :icon:`fa-cog` :guilabel:`(Actions)` icon, and
click :guilabel:`Request Signature`.
.. image:: service_products/request-signature.png
:alt: The Action drop-down menu for requesting a signature in the Rental app.
A :guilabel:`New Signature Request` pop-up window displays. Select the desired document from the
:guilabel:`Template` drop-down menu.
.. image:: service_products/new-signature-request.png
:alt: Sample of the New Signature Request pop-up window in the Rental app.
Doing so reveals a :guilabel:`New Signature Request` pop-up window. Upon confirming the information
in the :guilabel:`New Signature Request` pop-up form, click :guilabel:`Send` to initiate the signing
process.
.. image:: service_products/new-signature-request-message.png
:alt: Sample of the New Signature Request message in the Rental app.
A link to the signature request will appear in the chatter of the rental order. The document is
accessible to the customer via the customer portal or email.
.. note::
Requesting an electronic signature can be done at any stage of the order. This feature requires
the **Sign** app. Typically, rental or service agreements are signed **after the rental order is
confirmed** to establish the responsibilities and terms for the parties involved.
.. important::
The :guilabel:`Request Signature` feature only allows the customer to sign the document through
their email or customer portal. The customer cannot sign the document through the user's **Sign**
app.
Signing a document from an email link
-------------------------------------
When a customer clicks :guilabel:`Sign document`, a separate page is then revealed, showcasing the
document to be signed. The customer begins the process by clicking :guilabel:`Click` to start.
The app guides the signer to the required signature locations and allows them to create electronic
signatures to complete the form.
.. image:: service_products/adopt-signature-popup.png
:alt: Sample of a customer signature with the Auto option chosen.
The *Adopt your signature* pop-up window that appears in the Odoo Rental application. Once the
document has been signed and completed, click :guilabel:`Validate & Send Completed Document` at the
bottom of the document.
Odoo presents the option to download the signed document for record-keeping purposes, if necessary.
.. image:: service_products/validate-send-doc-button.png
:alt: Sample of a signed document with the Validate & Send Completed Document button.
.. seealso::
`Odoo Tutorials: Sign <https://www.odoo.com/slides/sign-61>`_.
Entering time for the rental order
==================================
.. important::
For the appropriate smart buttons to display, the **Project**, **Timesheet**, and **Planning**
apps are needed. The selected service product on the rental order must be :ref:`properly
configured <rental/service_products/service>` to integrate with the recommended apps.
Navigate to the rental orders by :menuselection:`Rental app --> Orders --> Orders` and select the
desired rental order. At the top of the rental order form, the following smart buttons appear:
- :icon:`fa-puzzle-piece` :guilabel:`Tasks`: Linked to the **Projects** app and shows any projects
or tasks related to the rental order.
- :icon:`fa-clock-o` :guilabel:`Recorded`: Linked to the **Timesheets** app and shows how many hours
are related to the rental order.
- :icon:`fa-tasks` :guilabel:`Planned`: Linked to the **Planning** app and shows how many shifts are
related to the rental order.
Click the :icon:`fa-puzzle-piece` :guilabel:`Tasks` smart button to view a Kanban view of all the
associated tasks that were automatically created when confirming the rental order. Click the desired
task, then select the :guilabel:`Timesheets` tab.
.. image:: service_products/rental-order-task-card.png
:alt: Sample of a project task card for the rental order in the Rental app.
Click :guilabel:`Add a line` to enter the number of hours worked on the task manually. Click on the
:icon:`fa-dollar` :guilabel:`Sales Order` smart button to return to the rental order.
.. image:: service_products/rental-task-timesheets-tab.png
:alt: Sample of a task Timesheet tab for a rental order in the Rental app.
.. note::
Once time is added to the :guilabel:`Timesheets` tab of a task, the status of the rental order
is automatically changed to :guilabel:`Picked-up` and the :guilabel:`Return` button appears.
Create an invoice
=================
Go to the desired invoice by navigating to the :menuselection:`Rental` app and, on the
:guilabel:`Rental Orders` dashboard, click :guilabel:`To Invoice` in the :guilabel:`INVOICE STATUS`
section to view all rental orders that require invoices to be sent.
.. image:: service_products/invoice-status-section.png
:alt: Sample of the INVOICE STATUS section in the Rental app.
Click on the desired rental order and click :guilabel:`Create Invoice`. Select :guilabel:`Regular
invoice` from the :guilabel:`Create invoice(s)` window and click :guilabel:`Create Draft`.
.. image:: service_products/create-invoices.png
:alt: Sample of Create invoices window in the Rental app.
If all the details are correct, click :guilabel:`Confirm`. Click :guilabel:`Send` to email the
invoice to the customer or :guilabel:`Print` and then click :guilabel:`Pay` if the customer is in
person.
In the :guilabel:`Pay` pop-up window, select a :guilabel:`Journal` and click :guilabel:`Create
Payment`.
.. image:: service_products/pay-popup.png
:alt: Sample of the Pay pop-up window in the Rental app.
Click on the :icon:`fa-bars` :guilabel:`Payments` smart button that appears on the top of the rental
order. Click :guilabel:`Validate` on the :guilabel:`Payment` page.
.. image:: service_products/payment-validate.png
:alt: Sample of the Payment page in the Rental app.
Use the breadcrumbs to return to the rental order.
Pickup products
===============
When time is entered on the :guilabel:`Timesheets` tab of an associated task, the rental order
status automatically changes to :guilabel:`Picked-up`. This happens even if time is entered before
the physical product ordered with the service is picked up.
If a product is rented alongside a service, it is advised to pick it up before entering time on the
associated task. The :guilabel:`Pickup` button is still available on the rental order if time is
entered before picking up the product.
When a customer picks up the product, navigate to the appropriate rental order, click
:guilabel:`Pickup`, and then click :guilabel:`Validate` in the :guilabel:`Validate a pickup` pop-up
form that appears.
.. image:: service_products/pickup-popup.png
:alt: Sample of a service product pick up pop-up window in the Rental.
Doing so places a :guilabel:`Picked-up` status banner on the rental order.
Return products
===============
Regardless if there is a product rented along with a service, the service or product must be
returned on the rental order.
When a customer returns the products or when the service has been completed, navigate to the
appropriate rental order and click :guilabel:`Return`. Validate the return by clicking
:guilabel:`Validate` in the :guilabel:`Validate a return` pop-up form that appears.
.. image:: service_products/validate-a-return-window.png
:alt: Sample of returning a service product in the Rental app.
Doing so places a :guilabel:`Returned` status banner on the rental order.
.. example::
The photography studio had a customer who wanted to rent one of their photographers and banner
decorations for a home photo shoot. The booking was for two hours.
On the :guilabel:`Validate a return` form the rental order, the banner line item matches number
of banners picked up and the photographer line item matches the number of hours submitted on the
:guilabel:`Timesheets` tab on the related task.
.. image:: service_products/return-form-example-product-service.png
:alt: Sample of a Validate a return form with a rental product and service listed.

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

View File

@@ -1,8 +1,12 @@
================================================
Invoice based on delivered or ordered quantities
================================================
==================
Invoicing policies
==================
Different business policies might require different options for invoicing:
Depending on business needs, it may be advantageous to choose whether to invoice customers based on
the goods and services that they order or when those goods and services are delivered to them. To
allow businesses maximum flexibility to best meet their needs, Odoo offers two invoicing policies
that can be enabled in the **Sales** app: :ref:`Invoice what is ordered <invoice-on-order>` and
:ref:`Invoice what is delivered <invoice-on-delivery>`.
- The *Invoice what is ordered* rule is used as the default mode in Odoo **Sales**, which means
customers are invoiced once the sales order is confirmed.
@@ -12,76 +16,116 @@ Different business policies might require different options for invoicing:
to invoice the quantity actually delivered. When the delivery order is validated, Odoo will
automatically decrease the on-hand quantity in the inventory.
Being able to have different invoicing options provides more flexibility.
To configure an invoicing policy, go to :menuselection:`Sales app --> Configuration --> Settings`,
and under the :guilabel:`Invoicing` heading, select an :guilabel:`Invoicing Policy` option:
:guilabel:`Invoice what is ordered` or :guilabel:`Invoice what is delivered`.
Invoicing policy features
=========================
To activate the necessary invoicing policy features, go to :menuselection:`Sales app -->
Configuration --> Settings`, and under the :guilabel:`Invoicing` heading, select an
:guilabel:`Invoicing Policy` rule: :guilabel:`Invoice what is ordered` or :guilabel:`Invoice what is
delivered`.
Activating an invoicing policy option automatically applies the chosen option to all newly created
products. Existing products **must** have their invoicing policy manually updated on their product
forms.
.. image:: invoicing_policy/invoicing-policy-setting.png
:align: center
:alt: Choosing an invoicing policy on Odoo Sales.
:alt: Choosing an invoicing policy in the Sales app.
.. important::
If the :guilabel:`Invoice what is delivered` rule is chosen, it is **not** possible to activate
If the :guilabel:`Invoice what is delivered` option is chosen, it is **not** possible to activate
the :guilabel:`Automatic Invoice` feature, which automatically generates invoices when an online
payment is confirmed. Regular draft invoices can only be created once the delivery order has been
processed and validated.
Invoicing policy on product form
================================
Changing the invoicing policy for existing products
---------------------------------------------------
On any product page, via the :menuselection:`Sales app --> Products --> Products dashboard`, locate
the :guilabel:`Invoicing Policy` option located under the :guilabel:`General Information` tab. It
can be changed manually using the drop-down menu.
After the invoicing policy has been configured in *Settings*, navigate to a product's form through
:menuselection:`Sales app --> Products --> Products` and choosing a product. Locate the
:guilabel:`Invoicing Policy` option located under the :guilabel:`General Information` tab. Use the
drop-down menu to change the policy.
.. image:: invoicing_policy/invoicing-policy-general-info-tab.png
:align: center
:alt: How to change your invoicing policy on a product form on Odoo Sales.
:alt: How to change invoicing policy on a product form in the **Sales** app.
Impact on sales flow
====================
.. _invoice-on-order:
In Odoo *Sales*, the basic sales flow starts with the creation of a quotation. Then, that quotation
is sent to a customer. Next, it needs to be confirmed, which turns the quotation into a sales order.
This, in turn, creates an invoice.
Invoicing what is ordered
=========================
The following is a breakdown of how invoicing policy rules impact the aforementioned sales flow:
The *Invoice what is ordered* option is used as the default mode in the **Sales** app, which means
customers are invoiced once a quotation has been sent to the customer and confirmed. The creation of
a quotation in turn leads to the creation and confirmation of a sales order. An invoice can then be
created as soon as the sales order is confirmed.
- :guilabel:`Invoice what is ordered`: No impact on the basic sales flow. An invoice is created as
soon as a sale is confirmed.
- :guilabel:`Invoice what is delivered`: Minor impact on sales flow, because the delivered quantity
needs to be manually entered on the sales order. Or, the *Inventory* app can be installed and used
to confirm the delivered quantity before creating an invoice with the *Sales* app.
This invoicing policy has no impact on the basic Odoo sales flow.
Invoice ordered quantity workflow
---------------------------------
Confirm that the product's invoicing policy is set to :guilabel:`Ordered quantities` in the product
form. :ref:`Create a quotation and sales order <sales/create-quotation>` as normal. After the sales
order has been confirmed, create an invoice by clicking the :guilabel:`Create Invoice` button on the
sales order form. Choose the type of invoice to be sent, click :guilabel:`Create Draft Invoice`,
confirm the invoice when ready, and proceed with the payment flow as normal.
.. example::
A independent artisan with a small business sells handmade jewelery nationwide online. Because
they have direct control over their inventory levels and ship with 3rd party carriers, they
invoice their customers after a sales order has been confirmed.
The artisan receives an order for a necklace. They send their customer a quotation, confirm it,
and create a sales order. After the sales order has been confirmed, an invoice can be created and
sent to the customer for payment without any additional steps be taken. The invoice gets paid,
the necklace is shipped and delivered, and the transaction is complete.
.. _invoice-on-delivery:
Invoicing what is delivered
===========================
The *Invoice what is delivered* option invoices customers as different amounts of the ordered goods
are delivered. This option is often used for businesses that sell large quantities of physical goods
in each sales order, but may not always be able to completely fulfill a given order all at once. In
these cases, the ordered quantity may differ slightly from the delivered quantity based on product
availability. Once a quotation is confirmed, and the status changes from :guilabel:`Quotation sent`
to :guilabel:`Sales order`, Odoo automatically adds both the delivered and invoiced quantities to
the invoice and sales order. Both partial and complete deliveries are tracked. :ref:`Backorders
<inventory/shipping/backorders>` can be created for partial orders that will be completed at a later
time.
This invoicing policy has a minor impact on the sales flow because the delivered quantity of a
product needs to be manually entered on the sales order.
.. image:: invoicing_policy/invoicing-policy-order-lines.png
:alt: How to see delivered and invoiced quantities on Odoo Sales.
Invoice delivered quantity workflow
-----------------------------------
Confirm that the product's invoicing policy is set to :guilabel:`Delivered quantities` in the
product form. :ref:`Create a quotation and sales order <sales/create-quotation>` as normal. After
the sales order has been confirmed, the product must be delivered before an invoice can be created.
Once the product has been shipped and delivery has been confirmed, click the :guilabel:`Delivery`
smart button on the sales order screen and click :guilabel:`Validate` to validate the delivery
order. Once at least a partial delivery has been confirmed, return to the sales order form. The
:guilabel:`Create Invoice` button is now purple to indicate that an invoice can be created and
confirmed, and that it is possible to proceed with the payment flow as normal.
.. warning::
If a user attempts to create an invoice without validating the delivered quantity, the following
error message appears: :guilabel:`There is no invoiceable line. If a product has a Delivered
quantities invoicing policy, please make sure that a quantity has been delivered.`
If a user attempts to create an invoice without validating the delivered quantity, the system
returns an error message alerting them to the issue.
.. image:: invoicing_policy/invoicing-policy-error-message.png
:align: center
:alt: If Delivered Quantities invoicing policy is chosen, ensure a quantity has been
delivered.
.. note::
Once a quotation is confirmed, and the status changes from :guilabel:`Quotation sent` to
:guilabel:`Sales order`, the delivered and invoiced quantities are available to view, directly
from the sales order. This is true for both invoicing policy rule options.
.. image:: invoicing_policy/invoicing-policy-order-lines.png
:align: center
:alt: How to see your delivered and invoiced quantities on Odoo Sales.
Odoo automatically adds the quantities to the invoice, both :guilabel:`Delivered` and
:guilabel:`Invoiced`, even if it's a partial delivery, when the quotation is confirmed.
Finally, there are a few different options to create an invoice: :guilabel:`Regular invoice`,
:guilabel:`Down payment (percentage)` or :guilabel:`Down payment (fixed amount)`.
.. example::
A produce distributor using the invoice what is delivered option sells 50 heads of lettuce to a
local restaurant. At the time the delivery is made, only 40 heads are available. The distributor
delivers the available heads of lettuce and creates an invoice for what was delivered. Later,
when more supply comes in, the distributor delivers the remaning 10 heads of lettuce and creates
a second invoice to complete the order.
.. seealso::
Be sure to check out the documentation explaining down payment options to learn more:
:doc:`/applications/sales/sales/invoicing/down_payment`
- :doc:`../sales_quotations/create_quotations`
- :doc:`down_payment`
- :doc:`../../../inventory_and_mrp/inventory`
- :doc:`../../../inventory_and_mrp/inventory/shipping_receiving/setup_configuration/multipack`

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -12,3 +12,4 @@ Products & Prices
products_prices/returns
products_prices/ewallets_giftcards
products_prices/loyalty_discount
products_prices/alternative_products

View File

@@ -0,0 +1,51 @@
====================
Alternative products
====================
The use of alternative products is a marketing strategy that involves upselling related products
alongside a desired core product. For instance, by configuring alternative products, a customer
could be suggested a mechanical keyboard or a wireless keyboard when they visit the eCommerce
website page for a standard keyboard.
.. note::
Alternative products are different from accessory and optional products because of where they
show up in the customer's shopping experience.
- Alternative products are suggested at the bottom of an eCommerce product page whenever the
product page is viewed. This creates an opportunity for upselling during the shopping process.
- Accessory products appear as suggestions when viewing an eCommerce cart. This creates an
opportunity for cross-selling during the checkout process.
- Optional products are suggested when a core product has been added to a cart or a quotation.
This creates an opportunity for cross-selling during the shopping process.
Configuring alternative products
================================
To add an alternative product to a product form, navigate to :menuselection:`Sales --> Products -->
Products` and choose a product. Ensure that the product's :guilabel:`Sales` checkbox is ticked and
click the :guilabel:`Sales` tab. In the :guilabel:`Upsell & Cross-sell` section, click the
:guilabel:`Alternative Products` drop-down menu to set alternative products. Products are displayed
in alphabetical order. If the desired product isn't readily visible, type its name in the field to
bring it up, then select it to add it as an alternative product.
.. figure:: alternative_products/product-form-alternative-products.png
:alt: The alternative product field on the product form with multiple entries.
Entries in the :guilabel:`Alternative Products` field on a product form.
How alternative products appear to customers
============================================
Although the **Sales** app is used to configure alternative products, customers will only encounter
them when visiting a website created with the **eCommerce** app. Alternative products are
automatically suggested during the shopping process when a customer visits the webpage for an
associated core product. They appear underneath the product listing under the header
:guilabel:`Alternative Products`.
.. figure:: alternative_products/alternative-products-ecommerce.png
:alt: Alternative products as they appear on an eCommerce website.
The alternative products section of an eCommerce product page.
.. seealso::
:doc:`/applications/websites/ecommerce/products/cross_upselling`

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

@@ -66,6 +66,8 @@ To view and/or modify any listed quotation from the :guilabel:`Quotations` dashb
desired quotation line from the list, and Odoo reveals the specific form for that selected
quotation.
.. _sales/create-quotation:
Create quotation
================

View File

@@ -2,98 +2,68 @@
Optional products
=================
The use of optional products is a marketing strategy that involves the cross-selling of products
along with a core product. The aim is to offer useful and related products to customers, which may
result in an increased sale.
The use of optional products is a marketing strategy that involves the cross-selling of useful and
related products alongside a desired core product. For instance, when a business configures optional
products in their Odoo database, an eCommerce or Website customer could be suggested a mouse and
keyboard or an extended warranty when they add a laptop to their shopping cart.
For instance, if a customer wants to buy a car, they have the choice to order massaging seats, as
well, or ignore the offer and simply buy the car. Presenting the choice to purchase optional
products enhances the customer experience.
Optional products on quotations
===============================
With the Odoo *Sales* application, it is possible to add or modify optional products directly on
quotations by navigating to the :guilabel:`Optional Products` tab on a quotation form.
.. image:: optional_products/optional-products-tab.png
:align: center
:alt: How to add optional products to your quotations on Odoo Sales.
To add an optional product(s) to a quotation, click :guilabel:`Add a product` in the
:guilabel:`Optional Products` tab of a quotation. Doing so reveals a blank field in the
:guilabel:`Product` column.
When clicked, a drop-down menu with products from the database appear. Select the desired product
from the drop-down menu to add it as an optional product to the quotation template.
.. tip::
If the desired product isn't readily visible, type the name of the desired product in the field,
and the option appears in the drop-down menu. Then, select that desired product to add it to the
quotation.
Optional products are automatically suggested during the quotation process whenever an associated
core product is added to a quote. They are also suggested in eCommerce interactions when a customer
adds an associated core product to their shopping cart.
.. note::
When a product is added, the default :guilabel:`Quantity` is `1`, but that can be edited at any
time.
Optional products are differentiated from accessory products and alternative products by where
they appear in the customer's shopping experience.
To delete any line item from the :guilabel:`Optional Products` tab, click the :guilabel:`🗑️ (trash
can)` icon.
- Optional products are suggested when a core product has been added to a cart or a quotation.
- Accessory products appear as suggestions when viewing an eCommerce cart.
- Alternative products are suggested at the bottom of an eCommerce product page whenever the
product page is viewed.
Click the :guilabel:`Preview` button, located in the upper-left corner of the quotation, to reveal a
preview of the quotation customers would receive, via email, along with the optional products they
can potentially add to their order, located in the :guilabel:`Options` section.
.. figure:: optional_products/optional-products-quotation.png
:alt: A screen from the quotation process shows how optional products appear as a pop-up window.
.. image:: optional_products/optional-products-checkout.png
:align: center
:alt: Preview your quotations on Odoo Sales.
Optional products as they appear during the quotation process.
Customers are able to add different optional products to an order by clicking the :guilabel:`🛒
(shopping cart)` icon, located to the right of the optional product line.
.. figure:: optional_products/optional-products-ecommerce.png
:alt: An eCommerce shopping cart screen shows how optional products appear in eCommerce websites.
If a customer selects optional products, these are automatically added to the quotation managed by
the salesperson.
Optional products as they appear when viewing the shopping cart on an eCommerce website.
When the customer adds an optional product(s) to an order, the salesperson is instantly notified
about the change, along with any other change the customer makes to an order. This allows
salespeople to stay up-to-date with everything related to an order in the backend of the *Sales*
application.
Configuring optional products
=============================
Optional products on quotation templates
========================================
With the Odoo **Sales** app, it is possible to add optional products directly to product forms. To
add an optional product to a product form, navigate to :menuselection:`Sales --> Products -->
Products` and choose a product.
.. note::
Be sure to review the :doc:`quote_template` documentation to better understand how quotation
templates work before reading the following information.
Ensure that the product's :guilabel:`Sales` checkbox is checked and click the :guilabel:`Sales` tab.
Under :guilabel:`Upsell & Cross-sell` heading, the :guilabel:`Optional Products` drop-down menu
allows for optional products to be set. Products will be displayed in alphabetical order. If the
desired product isn't readily visible, type its name in the field to bring it up, then select it to
add it as an optional product.
For quotation templates, just like a typical quotation form, there is also an :guilabel:`Optional
Products` tab, wherein related products or services can be added to a quotation template.
To delete an optional product from the product form, simply click the :icon:`fa-times`
:guilabel:`(Delete)` icon.
To add optional products to a quotation template, navigate to :menuselection:`Sales app -->
Configuration --> Quotation Templates`. Then, either select an existing quotation template to edit,
or create a new one by clicking :guilabel:`New`.
.. image:: optional_products/optional-products-product-form.png
:alt: Where the optional products section appears in product forms in Odoo Sales.
On the quotation template form, click the :guilabel:`Optional Products` tab. Under the
:guilabel:`Optional Products` tab, click :guilabel:`Add a line`, and select the desired product to
add as an optional product to the quotation template.
Additional products can also be added to a core product by clicking :guilabel:`Search more...`. This
opens the :guilabel:`Search: Optional Products` form, which displays all products in the catalog and
includes the :guilabel:`New` button to create a new product. Multiple products may be selected as
optional products at once when using this form by clicking their checkboxes and then clicking
:guilabel:`Select`.
.. image:: optional_products/optional-products-tab-quotation-template.png
:align: center
:alt: Preview your quotations on Odoo Sales.
.. image:: optional_products/search-optional-products-form.png
:alt: The Search: Optional Products form accessed by clicking Search more...
The products added in the :guilabel:`Optional Products` tab are present in the quotation, by
default, whenever that particular quotation template is used. These products can be removed, and
additional products can be added, before the quotation is sent to a customer.
.. tip::
It's best to offer optional products that would encourage a customer to add additional items to
their order, or entice them to purchase a more expensive version of their initially selected
product.
For example, if a customer purchases a wooden chair, some optional products could be: a warranty
on that chair and/or a wooden chair with leather seats.
.. note::
There is no limit to how many optional products can be added to a quotation template.
.. important::
Prior to Odoo 19.0, optional products were added to quotations on a separate tab in the quotation
and quotation template forms. Beginning in 19.0, that tab has been removed from both quotations
and quotation templates. If a core product with associated optional products is added to a
quotation template, those optional products **will not** be automatically suggested during the
quotation process and must instead be manually suggested to customers.
.. seealso::
:doc:`quote_template`

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

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