Compare commits

...

7 Commits

Author SHA1 Message Date
Jonathan
bdaf736eef [IMP] on_premise: update version number in source install 2024-04-03 10:35:33 +02:00
jero-odoo
83d105c067 [ADD] CRM: Merge Leads and Opps
closes odoo/documentation#8428

Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-04-02 19:48:42 +00:00
Antoine Vandevenne (anv)
79289bf99b [IMP] supported_versions: release saas-17.2
closes odoo/documentation#8497

X-original-commit: a906478bc7
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2024-04-02 18:18:00 +00:00
John Holton (hojo)
ee2cfe2bb5 [ADD] Manufacturing: Shop Floor time tracking
closes odoo/documentation#8432

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-04-02 18:17:56 +00:00
XPL
490eb9a865 [ADD] database management: odoo mobile apps
task-3821019

closes odoo/documentation#8489

X-original-commit: 9fd199ff27
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-04-02 15:40:30 +00:00
KC (ksc)
f019e3b18f [IMP] email marketing: update essentials doc
closes odoo/documentation#7521

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-04-01 18:48:54 +00:00
Sam Lieber (sali)
31bfb0c693 [IMP] marketing automation: audience targeting
closes odoo/documentation#8018

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-04-01 17:16:47 +00:00
67 changed files with 1034 additions and 378 deletions

View File

@@ -213,6 +213,7 @@ sphinx.transforms.i18n.docname_to_domain = (
# is populated. If a version is passed to `versions` but is not listed here, it will not be shown.
versions_names = {
'master': "Master",
'saas-17.2': "Odoo Online",
'saas-17.1': "Odoo Online",
'17.0': "Odoo 17",
'saas-16.4': "Odoo Online",

View File

@@ -61,4 +61,5 @@ functionalities, including functional support, upgrades, and hosting. `Pricing
administration/upgrade
administration/neutralized_database
administration/supported_versions
administration/mobile
administration/odoo_accounts

View File

@@ -0,0 +1,67 @@
================
Odoo mobile apps
================
Two kind of Odoo mobile app exist: the progressive web app (PWA) and store apps. Using the PWA is
recommended.
Progressive web app (PWA)
=========================
PWAs are web-based applications designed to function across different devices and platforms,
leveraging web browsers to deliver user experiences similar to native apps.
The Odoo PWA features include:
- Quick access by adding the PWA to a device's home screen
- Seamless and borderless navigation experience
- Push notifications
- SSO authentication
To install the Odoo PWA, launch a browser supporting PWAs, and sign in to an Odoo database. The
instructions to install a PWA depend on the platform and browser used.
.. tabs::
.. tab:: Android
**Chrome**: open Chrome's menu (:guilabel:`⋮`), select :guilabel:`Install app`, and tap
:guilabel:`Install`.
**Firefox**: open Firefox's menu (:guilabel:`⋮`), select :guilabel:`Install`, and either touch
and hold the Odoo icon or tap :guilabel:`Add automatically`.
The PWA can also be installed with **Samsung Internet**, **Edge**, and **Opera**.
.. tab:: iOS
**Safari**: open the **Share** menu by tapping the square with an arrow pointing upwards icon,
select :guilabel:`Add to Home Screen`, edit the PWA details if desired, and tap
:guilabel:`Add`.
On iOS 16.4 and above, the PWA can also be installed with **Chrome**, **Firefox**, and
**Edge**.
.. tab:: Desktop
**Chrome** and **Edge**: click the installation icon at the right of the address bar and click
:guilabel:`Install`.
.. seealso::
- `Google Chrome Help: Use progressive web apps
<https://support.google.com/chrome/answer/9658361>`_
- `MDN Web Docs: Installing and uninstalling web apps
<https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Guides/Installing>`_
- `Microsoft Support: Install, manage, or uninstall apps in Microsoft Edge <https://support.microsoft.com/en-us/topic/install-manage-or-uninstall-apps-in-microsoft-edge-0c156575-a94a-45e4-a54f-3a84846f6113>`_
Store apps
==========
The Odoo mobile apps are available for download on the `Google Play Store
<https://play.google.com/store/apps/details?id=com.odoo.mobile>`_ and `Apple App Store
<https://apps.apple.com/app/odoo/id1272543640>`_.
.. important::
The iOS app cannot be updated and will be deprecated at some point in the future.
While the store apps support multi-accounts, they are not compatible with SS0 authentication.

View File

@@ -144,7 +144,7 @@ Odoo requires **Python 3.10** or later to run.
to download and install Python 3 if needed.
.. note::
If Python 3 is already installed, make sure that the version is 3.7 or above, as previous
If Python 3 is already installed, make sure that the version is 3.10 or above, as previous
versions are not compatible with Odoo.
.. tabs::

View File

@@ -31,6 +31,12 @@ This matrix shows the support status of every version.
- On-Premise
- Release date
- End of support
* - Odoo saas~17.2
- |green|
- N/A
- N/A
- April 2024
-
* - Odoo saas~17.1
- |green|
- N/A

View File

@@ -8,3 +8,4 @@ Shop Floor
:titlesonly:
shop_floor/shop_floor_overview
shop_floor/shop_floor_tracking

View File

@@ -0,0 +1,119 @@
========================
Shop Floor time tracking
========================
.. |MO| replace:: :abbr:`MO (Manufacturing Order)`
.. |MOs| replace:: :abbr:`MOs (Manufacturing Orders)`
By signing in to the Odoo *Shop Floor* module as *operators*, employees are able to track the amount
of time they spend working on each work order.
Odoo tracks the time it takes to complete each work order, as well as the time each operator spends
on each work order.
Operator sign in
================
To sign in to the *Shop Floor* module as an operator, sign in to the Odoo database, and open the
:menuselection:`Shop Floor` module. The employee profile that is signed in to the database is
automatically signed in as an operator.
All active operators are listed in the operator panel on the left side of the module. The panel can
be opened or collapsed by clicking the :guilabel:`show/hide panel (white square with black column on
left side)` button, located in the top-left corner of the module.
.. image:: shop_floor_tracking/operator-panel.png
:align: center
:alt: The operator panel in the Shop Floor module, with the show/hide panel button above it.
To sign in to *Shop Floor* as a different employee, click the :guilabel:`+ Add Operator` button at
the bottom of the panel. Doing so opens the :guilabel:`Select Employee` pop-up window, which lists
every employee that is able to sign in to the module.
Click on a specific employee to sign in using their profile. If no PIN code is required to sign in
as that employee, the profile will be signed in automatically.
If a PIN code is required, a :guilabel:`Password?` pop-up window appears, showing a number pad, from
which the code can be entered. Enter the code using the number pad, and click :guilabel:`Confirm` to
sign in to the *Shop Floor* module.
.. image:: shop_floor_tracking/pin-code.png
:align: center
:alt: The "Password?" pop-up window, which is used to enter an operator PIN code.
.. note::
A PIN code can be set for each employee, which must be entered each time they sign in to the
*Shop Floor* module, check in or out in the *Kiosk Mode* of the *Attendances* application, or
sign in as a cashier in the *Point of Sale* application.
To set an employee PIN, navigate to the :menuselection:`Employees` app, and select a specific
employee. At the bottom of the employee's form, click on the :guilabel:`HR Settings` tab, and
enter a numerical code in the :guilabel:`PIN Code` field.
Once an employee is signed in to the module, their name appears in the operator panel, along with
every other employee that has signed in. While the panel can list multiple employees, only one
employee can be active at any given time, on a single instance of the *Shop Floor* module.
Click on an employee's name to make their profile active. The active employee appears highlighted
in blue, while employees that are signed in, but not active, have their names faded out.
To sign out a specific employee from the module, click the :guilabel:`X (remove)` button next to
their name, in the operator panel.
Track work order duration
=========================
To track time spent working on a work order, begin by selecting the employee working on it from the
operator panel.
Next, navigate to the page for the work center where the work order is scheduled to be carried out.
This can be done by selecting the work center from the top navigation in the *Shop Floor* module, or
by clicking the name of the work center on the card for the manufacturing order (MO) that the work
order is a part of.
On the page for the work center, find the card for the work order. Once work begins, click the
header of the work order card to start timing the duration it takes to complete. This duration is
displayed by a timer on the header of the work order card, which tracks the collective time spent
working on the work order, by all employees.
.. image:: shop_floor_tracking/work-order-timer.png
:align: center
:alt: A work order card with an active timer.
In addition, the reference number of the work order appears in the operator panel, under the name of
the employee working on it, along with a second timer, which tracks the amount of time the employee
has spent on the work order individually. This timer only reflects work done during the current
session, even if the employee has previously worked on the work order.
Employees are able to work on multiple work orders simultaneously, and track their time for each.
The reference number for each work order being worked on appears below the employee's name, along
with a timer.
.. image:: shop_floor_tracking/employee-timer.png
:align: center
:alt: An employee card in the operator panel, showing two work order timers.
To pause the timer on the work order card, and remove the work order from below the employee's name
on the operator panel, click the header a second time.
Once the work order is completed, click the :guilabel:`Mark as Done` button at the bottom of the
work order card, which causes the card to fade away. If the timer is still active, it stops once the
card disappears completely.
View work order duration
========================
To view the duration of a work order, navigate to :menuselection:`Manufacturing app --> Operations
--> Manufacturing Orders`, and select an |MO|.
To view and select |MOs| that have been completed and marked as *Done*, remove the :guilabel:`To Do`
filter from the :guilabel:`Search...` bar, by clicking on the :guilabel:`X (close)` button on the
right side of the filter.
On the page for the |MO|, click on the :guilabel:`Work Orders` tab to see a list of all work orders
included in the |MO|. The time it took to complete each work order is displayed in the
:guilabel:`Real Duration` column of the tab.
The *Real Duration* represents the total time spent working on the work order by all workers who
worked on it. It includes time tracked in the *Shop Floor* module, as well as time tracked on the
:guilabel:`Work Orders` tab of the |MO| itself.

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View File

@@ -20,7 +20,7 @@ with a :ref:`campaign template <marketing-automation/campaign-templates>`.
.. cards::
.. card:: Target an audience
.. card:: Audience targeting
:target: marketing_automation/target_audience
Configure the target audience for a campaign.
@@ -148,7 +148,7 @@ The number of participants engaged in a running, or stopped, campaign are shown
*Participants* smart button at the top of the campaign form.
.. seealso::
:doc:`Target an audience <marketing_automation/target_audience>`
:doc:`Audience targeting <marketing_automation/target_audience>`
Workflow
========

View File

@@ -1,123 +1,84 @@
==================
Target an audience
Audience targeting
==================
Delivering marketing campaigns to the right audience is paramount when trying to grow a business.
The Odoo *Marketing Automation* application helps marketers to do just that by providing detailed
filtering tools, which can be as simple (or as complex) as necessary, to reach the right customers
at the right time.
The :guilabel:`Target` and :guilabel:`Filter` fields on the campaign form, also referred to as the
*domain*, contain the parameters used to define the target audience for the campaign's reach (i.e.,
the unique contact records in the database, and imported list, etc.).
Configure target filters
========================
- :guilabel:`Target`: specifies the type of records available for use in the campaign, such as
:guilabel:`Lead/Opportunity`, :guilabel:`Event Registration`, :guilabel:`Contact`, The assigned
records model determines the fields that are available throughout the campaign, including the
fields available in the :guilabel:`Filter` section, and in dynamic placeholders.
- :guilabel:`Save as Favorite Filter`: saves the current :guilabel:`Filter` for future use with the
current :guilabel:`Target` model, and can be managed from the :menuselection:`Marketing Automation
app --> Configuration --> Favorite Filters` menu.
- :guilabel:`Unicity based on`: specifies the :guilabel:`Target` model field where duplicates should
be avoided. Traditionally, the :guilabel:`Email` field is used, but any available field can be
used.
- :guilabel:`Filter`: contains an interactive form with configurable logic to further refine the
targeting parameters under the chosen :guilabel:`Target` model. See more details in the
:ref:`marketing_automation/defining-filters` section.
- :guilabel:`Include archived`: allows or disallows the inclusion of archived records in the target
audience.
When configuring the target filters on a marketing campaign, there are some options that have an
:guilabel:`> (arrow)` icon beside them. The :guilabel:`> (arrow)` icon signifies that the particular
filter has more refined parameters within it that can be customized.
.. tip::
A :guilabel:`Responsible` user can be assigned to the campaign by activating
:ref:`developer-mode`.
.. image:: target_audience/marketing-filters.png
.. note::
Each activity in a campaign's workflow can target a subset of the target audience; see the
:doc:`workflow_activities` documentation for more information.
.. _marketing_automation/defining-filters:
Defining filters
================
The default campaign :guilabel:`Filter` configuration is set to :guilabel:`Match all records`,
indicating that the campaign is targeting **all** records of the :guilabel:`Target` model.
To refine the :guilabel:`Filter` rules of a campaign, click the :guilabel:` Add condition` button
to reveal a new row with configurable rule parameters. See the :ref:`Search, filter, and group
records <search/custom-filters>` documentation for more information on how to create filter rules.
.. image:: target_audience/domain-filters.png
:align: center
:alt: The drop-down filter menu in the Marketing Automation application.
:alt: A new filter rule row on the campaign form Filters.
Filters can be extended by adding *branches* and *nodes*. A *node* adds another filtering parameter
to a group of targeting conditions (e.g. a new line), and a *branch* creates a narrowly refined
cluster of parameters, allowing filters to be grouped with :guilabel:`ANY` or :guilabel:`ALL`
statements.
At the bottom of the filter rules is a :guilabel:`# record(s)` button, which indicates the total
number of records targeted by this domain. Select the :guilabel:`# record(s)` button to open a
:guilabel:`Selected records` pop-up window, in which the targeted records can be viewed.
Every time a new branch is created, there are two options:
.. tip::
Activate :ref:`developer-mode` to reveal each field's technical name and data type, as well as
the :guilabel:`# Code editor` text area below the filter rules, to view and edit the domain
manually.
- Either the records can match :guilabel:`ALL` criteria for the upcoming rules (creating an AND
statement where *all* criteria must match).
- Or, the records can match :guilabel:`ANY` criteria for the upcoming rules (creating an OR
statement where *only one* of the criteria must match).
.. example::
To target all leads and opportunities from the *CRM* app that are in the *New* stage, and have an
expected revenue greater than $1,000, the following should be entered:
To change between these two options, simply click the drop-down arrow icon in the green box and
select :guilabel:`ANY` or :guilabel:`ALL`.
- :guilabel:`Target`: `Lead/Opportunity`
- :guilabel:`Unicity based on`: `Email (Lead/Opportunity)`
- :guilabel:`Filter`: :guilabel:`Match` :guilabel:`all 🔽 (down arrow)` :guilabel:`of the
following rules:`
To add a node, click on the :guilabel:` (plus sign)` icon, and to add another branch click on the
:guilabel:`⋯ (ellipses)` icon. To exclude a node or a branch, click on :guilabel:`✖ (delete)` icon
to delete it.
#. :guilabel:`Stage` :guilabel:`is in` :guilabel:`New`
#. :guilabel:`Expected Revenue` :guilabel:`>` `1,000`
#. :guilabel:`any 🔽 (down arrow)` :guilabel:`of:`
.. image:: target_audience/marketing-filter-nodes.png
:align: center
:alt: The drop-down filter menu in the Marketing Automation application.
- :guilabel:`Type` :guilabel:`=` :guilabel:`Lead`
- :guilabel:`Type` :guilabel:`=` :guilabel:`Opportunity`
Use cases
=========
With the above configuration, the campaign targets :guilabel:`157 record(s)`.
The following scenarios outline different combinations of filters a marketing campaign might
commonly use.
.. image:: target_audience/filter-scenario-one.png
:align: center
:alt: A domain configuration in a Marketing Automation campaign.
Scenario #1: Narrow target down to new opportunities in the pipeline
--------------------------------------------------------------------
While in *Edit mode* on a campaign template form (by clicking the :guilabel:`Edit` button), select
the :guilabel:`Target` field, and click :guilabel:`Search More` from the drop-down menu. Then,
search for :guilabel:`Lead/Opportunity`, and select it.
Next, click :guilabel:`Add Filter` in the :guilabel:`Filter` field. Then, click on the default
:guilabel:`ID` filter option in the first portion of the filter equation. Doing so reveals a
drop-down menu full of filter options. From this drop-down, scroll down (or search for)
:guilabel:`Type`.
Keep the second portion of the filter equation on the default :guilabel:`🟰 (equal sign)` icon.
Next, change the third (and final) portion of the filter equation from :guilabel:`Lead` to
:guilabel:`Opportunity`. The number of :guilabel:`Records` that fit this specific filter equation
changes as the equation is customized.
Add another node to this filter by clicking the :guilabel:` (plus sign)` icon to the right of the
equation.
With "new" opportunities being the target of this filter, the second node will focus on *only*
locating opportunities that are in the :guilabel:`New` stage of the pipeline. To do that, select
the default :guilabel:`ID` from the first portion of the second filter equation, and scroll down (or
search for) :guilabel:`Stage` from the field drop-down menu.
Once again, leave the second portion of the filter equation on :guilabel:`🟰 (equal sign)` icon.
Lastly, highlight the default value in the third (and final) portion of the second filter equation,
and type in `New`. With that in place, Odoo only targets opportunities that are in the "New" stage
of the pipeline.
.. image:: target_audience/filters-opportunities.png
:align: center
:alt: A standard scenario using filters in the Odoo Marketing Automation app.
Scenario #2: Narrow down target to event attendees who purchased a specific ticket
----------------------------------------------------------------------------------
While in *Edit mode* on a campaign template form (by clicking the :guilabel:`Edit` button), select
the :guilabel:`Target` field, and click :guilabel:`Search More` from the drop-down menu. Then,
scroll down (or search for) :guilabel:`Event`, and select it.
Next, click :guilabel:`Add Filter` in the :guilabel:`Filter` field. Click on the default
:guilabel:`ID` filter option in the first portion of the filter equation. Doing so reveals a
drop-down menu full of filter options. From this drop-down, scroll down (or search for)
:guilabel:`Event`.
Click the default :guilabel:`🟰 (equal sign)` icon in the second portion of the filter equation. This
reveals a drop-down menu. From this drop-down menu, select :guilabel:`contains`.
In the third (and final) empty portion of the filter equation, type in the name of the event(s) that
Odoo should consider for this campaign filter.
Then, add another node to this filter by clicking the :guilabel:` (plus sign)` icon to the right of
the equation.
The second node will focus on targeting this campaign to attendees who purchase a specific type of
ticket to the aforementioned event(s) mentioned in the first filter equation.
To do that, select the default :guilabel:`ID` from the first portion of the second filter equation,
and scroll down (or search for) :guilabel:`Event Ticket` from the field drop-down menu. Then, in
that same drop-down menu, select :guilabel:`Name`.
Once again, click the default :guilabel:`🟰 (equal sign)` icon in the second portion of the filter
equation, and select :guilabel:`contains`.
Lastly, in the third (and final) portion of the second filter equation, which is blank, type in the
name of the ticket type that should be used for the filter. In this case, :guilabel:`Standard` is
the name of the event ticket type for this sample filter.
.. image:: target_audience/filters-event-ticket.png
:align: center
:alt: An event ticket filter in the Odoo Marketing Automation application.
.. seealso::
- :ref:`Domain developer documentation <reference/orm/domains>`
- :doc:`workflow_activities`
- :doc:`testing_running`
- :doc:`understanding_metrics`

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -9,3 +9,4 @@ Organize the pipeline
pipeline/lost_opportunities
pipeline/multi_sales_team
pipeline/merge_similar

View File

@@ -0,0 +1,115 @@
=====================================
Merge similar leads and opportunities
=====================================
Odoo automatically detects similar *leads* and *opportunities* within the *CRM* app. Identifying
these duplicated records allows them to be merged without losing any information in the process.
Not only does this help keep the *pipeline* organized, but it also prevents customers from being
contacted by more than one salesperson.
.. note::
When merging opportunities, no information is lost. Data from the other opportunity is logged in
the chatter, and the information fields, for reference.
Identify similar leads and opportunities
========================================
Similar leads and opportunities are identified by comparing the *email address* and *phone number*
of the associated contact. If a similar lead/opportunity is found, a *Similar Leads* smart button
appears at the top of the lead (or opportunity) record.
.. image:: merge_similar/similar-smart-button.png
:align: center
:alt: An opportunity record with emphasis on the Similar Leads smart button.
Comparing similar leads and opportunities
-----------------------------------------
To compare the details of similar leads/opportunities, navigate to :menuselection:`CRM app -->
Pipeline` or :menuselection:`CRM app --> Leads`. Open a lead or opportunity, and click the
Doing so opens a Kanban view that only displays similar leads/opportunities. Click on a card to view
the details for the lead/opportunity, and confirm if they should be merged.
Merging similar leads and opportunities
=======================================
.. important::
When merging, Odoo gives priority to whichever lead/opportunity was created in the system first,
merging the information into the first created lead/opportunity. However, if a lead and an
opportunity are being merged, the resulting record is referred to as an opportunity, regardless
of which record was created first.
After confirming that the leads/opportunities should be merged, return to the Kanban view using the
breadcrumb link, or by clicking the :guilabel:`Similar Leads` smart button. Click the :guilabel:`≣
(view list)` icon to change to list view.
Check the box on the left of the page for the leads/opportunities to be merged. Then, click the
:guilabel:`⚙️ Actions` icon at the top of the page, to reveal a drop-down menu. From that drop-down
menu, select the :guilabel:`Merge` option to merge the selected opportunities or leads.
When :guilabel:`Merge` is selected from the :guilabel:`⚙️ Actions` drop-down menu, a
:guilabel:`Merge` pop-up modal appears. In that pop-up modal, under the :guilabel:`Assign
opportunities to` heading, select a :guilabel:`Salesperson` and :guilabel:`Sales Team` from the
appropriate drop-down menus.
Below those fields, the leads/opportunities to merge are listed, along with their related
information. To merge those selected leads/opportunities, click :guilabel:`Merge`.
.. image:: merge_similar/select-merge.png
:align: center
:alt: List of similar leads and opportunities selected for merge in the CRM app.
.. danger::
Merging is an irreversible action. Do **not** merge leads/opportunities unless absolutely certain
they should be combined.
When leads/opportunities should not be merged
=============================================
There may be instances where a similar lead or opportunity is identified, but should *not* be
merged. These circumstances vary, based on the processes of the sales team and organization. Some
potential scenarios are listed below.
Lost leads
----------
If a lead/opportunity has been marked as :doc:`lost <lost_opportunities>`, it can still be merged
with an active lead or opportunity. The resulting lead/opportunity is marked active, and added to
the pipeline.
Different contact within an organization
----------------------------------------
Leads/opportunities from the same organization, but with different points of contact, may not have
the same needs. In this case, it is beneficial to *not* merge these records, though assigning the
same salesperson, or sales team, can prevent duplicated work and miscommunication.
Existing duplicates with more than one salesperson
--------------------------------------------------
If more than one lead/opportunity exists in the database, there may be multiple salespeople assigned
to them, who are actively working on them independently. While these leads/opportunities may need
to be managed separately, it is recommended that any affected salespeople be tagged in an internal
note for visibility.
Contact information is similar but not exact
--------------------------------------------
Similar leads and opportunities are identified by comparing the email addresses and phone numbers of
the associated contacts. However, if the email address is *similar*, but not *exact*, they may need
to remain independent.
.. example::
Three different leads were added to the pipeline and assigned to different salespeople. They
were identified as *Similar Leads* due to the email addresses of the contacts.
Two of the leads appear to come from the same individual, `Robin`, and have identical email
addresses. These leads should be merged.
The third lead has the same email domain, but the address is different, as is the contact name.
While this lead is most likely from the same organization, it is from a different contact, and
should **not** be merged.
.. image:: merge_similar/contact-info-example.png
:align: center
:alt: List of similar leads with emphasis on the contact information in the CRM app.

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB