[IMP] helpdesk: after sales updates

closes odoo/documentation#8022

X-original-commit: dc0dfea959
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: larm-odoo <121518652+larm-odoo@users.noreply.github.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>
This commit is contained in:
Jess Rogers (jero) 2024-02-21 16:16:51 -05:00
parent f095395c32
commit d13ddab247
15 changed files with 176 additions and 107 deletions

View File

@ -2,72 +2,87 @@
After-Sales services After-Sales services
==================== ====================
*After-Sales* services can be configured in the *Helpdesk* application for individual *teams*. Once *After-Sales* services can be configured in the *Helpdesk* application for individual teams. Once
enabled, users can issue refunds, process returns, generate coupons, and/or schedule repair and enabled, users can :ref:`issue refunds <helpdesk/refunds>`, :ref:`generate coupons
field service interventions directly from a ticket. <helpdesk/coupons>`, :ref:`process returns <helpdesk/returns>`, and :ref:`schedule repairs
<helpdesk/repairs>` or :ref:`field service interventions <helpdesk/field>` directly from a ticket.
Set up the after-sales services Set up after-sales services
=============================== ===========================
Start by enabling the after-sales services on specific *Helpdesk* team(s), by going to Start by enabling the after-sales services on a specific *Helpdesk* team, by going to
:menuselection:`Helpdesk --> Configuration --> Teams` and selecting which teams(s) these services :menuselection:`Helpdesk app --> Configuration --> Helpdesk Teams` and click on the team the
should be active on. Then, scroll to the :guilabel:`After-Sales` section on the team's settings services should be applied to. Then, scroll to the :guilabel:`After-Sales` section on the team's
page, and choose which of the following options to enable: settings page, and choose which of the following options to enable:
- :guilabel:`Refunds`: issues credit notes to refund a customer, or adjust the remaining amount due - :guilabel:`Refunds`: issues credit notes to refund a customer, or adjust the remaining amount due.
- :guilabel:`Coupons`: offers discounts and free products through an existing coupon program - :guilabel:`Coupons`: offers discounts and free products through an existing coupon program.
- :guilabel:`Returns`: initiates a product return from a customer through a reverse transfer - :guilabel:`Returns`: initiates a product return from a customer through a reverse transfer.
- :guilabel:`Repairs`: creates repair orders for broken or faulty products - :guilabel:`Repairs`: creates repair orders for broken or faulty products.
- :guilabel:`Field Service`: plans onsite intervention through the *Field Service* application - :guilabel:`Field Service`: plans onsite intervention through the *Field Service* application.
.. figure:: after_sales/after-sales-enable.png .. figure:: after_sales/after-sales-enable.png
:align: center :align: center
The services that are enabled can vary based on the type of support a team provides. The services that are enabled can vary based on the type of support a team provides.
.. warning:: .. danger::
As all of the after-sales services in Odoo require integration with other applications, enabling Since all the after-sales services in Odoo require integration with other applications, enabling
any of them may result in the installation of additional modules or applications. *Installing a any of them may result in the installation of additional modules or applications. Installing a
new application on a One-App-Free database will trigger a 15-day trial. At the end of the trial, new application on a One-App-Free database triggers a 15-day trial. At the end of the trial, if a
if a paid subscription has not been added to the database, it will no longer be accessible.* paid subscription has not been added to the database, it will no longer be accessible.
Issue a refund with a credit note .. _helpdesk/refunds:
=================================
Issue refund with credit note
=============================
A *credit note* is a document issued to a customer informing them that they have been credited a A *credit note* is a document issued to a customer informing them that they have been credited a
certain amount of money. They can be used to provide a full refund to a customer, or to adjust any certain amount of money. They can be used to provide a full refund to a customer, or to adjust any
remaining amount due. While they are usually created through the *Accounting* or *Invoicing* remaining amount due. While they are usually created through the *Accounting* or *Invoicing*
applications, they can be created through a *Helpdesk* ticket, as well. applications, they can be created through a *Helpdesk* ticket, as well.
.. note:: .. important::
Invoices must be posted before a credit note can be generated. Invoices **must** be posted before a credit note can be generated.
To create a credit note, navigate to a ticket on the :menuselection:`Helpdesk` application, and To create a credit note, navigate to a ticket on the :menuselection:`Helpdesk app`, and click the
click the :guilabel:`Refund` button in the upper-left corner of the ticket dashboard. Then, select :guilabel:`Refund` button in the top-left corner of the ticket form. This opens a
the corresponding invoice from the :guilabel:`Invoices to Refund` drop-down menu. :guilabel:`Refund` pop-up window.
.. image:: after_sales/after-sales-refund-details.png .. image:: after_sales/after-sales-refund-details.png
:align: center :align: center
:alt: View of a refund creation page. :alt: View of a refund creation page.
Choose a :guilabel:`Credit Method` from one of the following options: Fill out the fields with the necessary information:
- :guilabel:`Partial Refund`: the credit note is created in draft and can be edited before being - :guilabel:`Sales Order`: if a sales order was referenced on the original ticket, it automatically
issued populates in this field.
- :guilabel:`Full Refund`: the credit note is auto-validated and reconciled with the invoice. *This - :guilabel:`Product`: the product the ticket is about. If an item is selected in this field, only
is the option to choose if a validated invoice needs to be canceled* the sales orders, deliveries, and invoices including this product can be selected.
- :guilabel:`Full refund and new draft invoice`: the credit note is auto-validated and reconciled - :guilabel:`Lot/Serial Number`: this field is **only** visible if the :guilabel:`Product` selected
with the invoice. The original invoice is duplicated as a new draft. *This is the option to choose has associated lot or serial numbers.
if a validated invoice needs to be modified* - :guilabel:`Invoices to Refund`: this field is **required**. If no invoices are available in the
drop-down, it indicates this customer currently has no posted invoices, or the
:guilabel:`Product` has no related invoices.
- :guilabel:`Reason displayed on Credit Note`: this field automatically populates with the ticket
number, though it can be edited with additional information.
- :guilabel:`Journal`: the accounting journal where the credit note should be posted. After an
invoice is selected, this field defaults to the journal listed on the original invoice, though it
can be changed, if necessary.
- :guilabel:`Reversal date`: when this field is clicked, use the pop-up calendar that appears to
select a date for the credit note invoice. This field is **required**.
.. important:: After the necessary fields are filled in, click :guilabel:`Reverse` or :guilabel:`Reverse and Create
The :guilabel:`Credit Method` options will **not** be available for invoices that have already Invoice`.
been paid.
Make any necessary changes to the details of the credit note and click :guilabel:`Reverse.` Then :guilabel:`Reverse` creates a credit note in a draft state that can be edited before it is posted.
click :guilabel:`Confirm` to post the credit note. This option can be used to provide a partial refund.
Once the credit note has been posted, a :guilabel:`Credit Notes` smart button will be added to the :guilabel:`Reverse and Create Invoice` creates a credit note that is automatically posted as well as
an invoice in a draft state. The invoice contains the same information as the original invoice,
though this information can be altered.
Once the credit note has been posted, a :guilabel:`Credit Notes` smart button is added to the
*Helpdesk* ticket. *Helpdesk* ticket.
.. image:: after_sales/after-sales-credit-note-smart-button.png .. image:: after_sales/after-sales-credit-note-smart-button.png
@ -75,40 +90,60 @@ Once the credit note has been posted, a :guilabel:`Credit Notes` smart button wi
:alt: View of smart buttons on a ticket focusing on the credit note button. :alt: View of smart buttons on a ticket focusing on the credit note button.
.. seealso:: .. seealso::
:doc:`/applications/finance/accounting/customer_invoices/credit_notes` :doc:`../../../finance/accounting/customer_invoices/credit_notes`
.. _helpdesk/coupons:
Generate coupons from a ticket Generate coupons from a ticket
============================== ==============================
Coupons can be used to alter the price of products or orders. The usage constraints of a coupon are Coupons can be used to alter the price of products or orders. Conditional rules define the usage
defined by conditional rules. *Coupon Programs* are configured in the *Sales* or *Website* constraints of a coupon. *Coupon Programs* are configured in the *Sales*, *Point of Sale*, or
applications. *Website* applications.
.. note:: .. important::
The *eCommerce* module must be installed in order to create coupon codes from the *Website*. The *eCommerce* module **must** be installed to create coupon codes from the *Website*.
To generate a coupon, open a *Helpdesk* ticket and click on the :guilabel:`Coupon` button in the To generate a coupon, open a *Helpdesk* ticket and click on the :guilabel:`Coupon` button in the
upper left corner. Select an option from the :guilabel:`Coupon Program` drop-down menu, then click top-left corner. Select an option from the :guilabel:`Coupon Program` drop-down menu in the
:guilabel:`Generate`. :guilabel:`Generate a Coupon` pop-up window that appears.
.. image:: after_sales/after-sales-generate-coupon.png .. image:: after_sales/after-sales-generate-coupon.png
:align: center :align: center
:alt: View of a coupon generation window. :alt: View of a coupon generation window.
The :guilabel:`Coupon Code` can be copied directly from the pop-up window (by clicking the .. note::
:guilabel:`Copy` button), or sent in an email by clicking :guilabel:`Send`. To create a new :guilabel:`Coupon Program`, navigate to :menuselection:`Sales app --> Products
--> Discount & Loyalty` and click :guilabel:`New`. To make the program available to share with
*Helpdesk* customers, the :guilabel:`Program Type` **must** be set to :guilabel:`Coupons`. This
generates single-use coupon codes that grant immediate access to rewards and discounts.
Coupon programs can also be created in the *Point of Sale* application or *Website* application.
Refer to :doc:`discount and loyalty programs
<../../../sales/sales/products_prices/loyalty_discount>` for more information.
Click on the :guilabel:`Valid Until` field, and use the pop-up calendar to select an expiration date
for this coupon code. If this field is left blank, the code does **not** expire.
Click :guilabel:`Send by Email` to compose an email to send to the customer with the coupon code.
.. note:: .. note::
When emailing a coupon code, all the followers of the ticket will be added as recipients to the When emailing a coupon code, **all** the followers of the ticket are added as recipients to the
email. Additional recipients can be added to the email as well, in the :guilabel:`Recipients` email. Additional recipients can be added to the email as well, in the :guilabel:`Recipients`
field of the :guilabel:`Compose Email` pop-up window. field of the :guilabel:`Compose Email` pop-up window. If an expiration date was selected for the
code, it is included in the message template.
.. image:: after_sales/after-sales-coupon-email.png .. image:: after_sales/after-sales-coupon-email.png
:align: center :align: center
:alt: View of an email draft window with coupon code. :alt: View of an email draft window with coupon code.
Once a :guilabel:`Coupon Code` has been generated, a :guilabel:`Coupons` smart button will be added Click :guilabel:`Get Share Link` to generate a link to send directly to the customer. Doing so opens
to the top of the ticket; click the smart button to view the coupon code, expiration date, and a :guilabel:`Share Coupons` pop-up window. Click the :guilabel:`Copy` button next to the
:guilabel:`Share Link` field and paste the results to any communication with the customer. When the
customer uses the link, the code is automatically applied to their cart.
After a :guilabel:`Coupon Code` has been generated, a :guilabel:`Coupons` smart button is added to
the top of the ticket; click the smart button to view the coupon code, expiration date, and
additional information. additional information.
.. image:: after_sales/after-sales-coupon-smart-button.png .. image:: after_sales/after-sales-coupon-smart-button.png
@ -116,7 +151,10 @@ additional information.
:alt: View of the smart buttons on a ticket focusing on the coupon button. :alt: View of the smart buttons on a ticket focusing on the coupon button.
.. seealso:: .. seealso::
`Coupons <https://www.odoo.com/slides/slide/coupon-programs-640?fullscreen=1>`_ - `Coupons <https://www.youtube.com/watch?v=KW5cZHg10jQ>`_
- :doc:`../../../sales/sales/products_prices/loyalty_discount`
.. _helpdesk/returns:
Facilitate a product return with a reverse transfer Facilitate a product return with a reverse transfer
=================================================== ===================================================
@ -129,101 +167,132 @@ the :guilabel:`Reverse Transfer` pop-up window.
:align: center :align: center
:alt: View of a Helpdesk ticket with the return button highlighted. :alt: View of a Helpdesk ticket with the return button highlighted.
.. note:: .. important::
The :guilabel:`Return` button only appears on a ticket if the customer has a recorded delivery in The :guilabel:`Return` button **only** appears on a ticket if the customer has a recorded
the database. delivery in the database.
By default, the quantity will match the validated quantity from the delivery order. Update the Select a :guilabel:`Sales Order` or :guilabel:`Delivery to Return` to identify the products that
:guilabel:`Quantity` field if necessary. need to be returned.
By default, the quantity matches the validated quantity from the delivery order. Update the
:guilabel:`Quantity` field, if necessary. To remove a line, click the :guilabel:`🗑️ (trash can)`
icon.
Select a :guilabel:`Return Location` where the items should be directed after the return is
completed.
.. image:: after_sales/after-sales-reverse-transfer.png .. image:: after_sales/after-sales-reverse-transfer.png
:align: center :align: center
:alt: View of a reverse transfer creation page. :alt: View of a reverse transfer creation page.
Click :guilabel:`Return` to confirm the return. This generates a new warehouse operation for the Click :guilabel:`Return` to confirm the return. This generates a new warehouse operation for the
incoming returned product(s). A :guilabel:`Return` smart button will then be added to the top of the incoming returned products.
ticket.
Use the breadcrumbs to return to the helpdesk ticket. A new :guilabel:`Return` smart button can now
be accessed at the top of the ticket.
.. image:: after_sales/after-sales-return-smart-button.png .. image:: after_sales/after-sales-return-smart-button.png
:align: center :align: center
:alt: View of the return smart button on a helpdesk ticket. :alt: View of the return smart button on a helpdesk ticket.
.. seealso:: .. seealso::
:doc:`/applications/sales/sales/products_prices/returns` :doc:`../../../sales/sales/products_prices/returns`
.. _helpdesk/repairs:
Send products for repair from a ticket Send products for repair from a ticket
====================================== ======================================
If the ticket is related to an issue with a faulty or broken product, a repair order can be created If the ticket is related to an issue with a faulty or broken product, a *repair order* can be
from the *Helpdesk* ticket, and managed through the *Repairs* application. created from the *Helpdesk* ticket, and managed through the *Repairs* application.
To create a new repair order, open a :menuselection:`Helpdesk` ticket and click on the To create a new repair order, open a :menuselection:`Helpdesk` ticket and click on the
:guilabel:`Repair` button in the upper left corner. :guilabel:`Repair` button in the top-left corner. This opens a :guilabel:`Repair Reference` form.
Clicking the :guilabel:`Repair` button opens a blank :guilabel:`Repair Reference` form.
.. image:: after_sales/after-sales-repair-reference.png .. image:: after_sales/after-sales-repair-reference.png
:align: center :align: center
:alt: View of a repair reference page. :alt: View of a repair reference page.
.. note:: Fill out the fields with the necessary information:
If a product was specified in the :guilabel:`Product` field on the ticket, it will be added to
the :guilabel:`Product to Repair` field automatically. If not, click into the field to select a
product from the drop down.
Fill out the :guilabel:`Repair Description` field with a brief explanation of the issue. Click the - :guilabel:`Customer`: this field carries over from the ticket, though a new contact can been
:guilabel:`Sale Order` field and then select the originating :abbr:`SO (Sales Order)` from which the selected from the drop-down menu.
product is being repaired from. If a return has been initiated for the product, select the reference - :guilabel:`Product to Repair`: if a product was specified in the :guilabel:`Product` field on the
number from the drop-down in the :guilabel:`Return` field. ticket, it is added to this field automatically. If not, click into the field to select a product
from the drop-down menu.
- :guilabel:`Lot/Serial`: this field is **only** visible if the products being repaired are
tracked, via lot or serial numbers.
- :guilabel:`Return`: return order from which the product to be repaired comes from.
- :guilabel:`Under Warranty`: if this box is checked, the sale price for all products from the
repair order are set to zero.
- :guilabel:`Scheduled Date`: this field defaults to the current date. To select a new date, click
into the field and select a date using the drop-down calendar.
- :guilabel:`Responsible`: assign a user from the drop-down menu to manage the repair.
- :guilabel:`Tags`: click into this field to assign an existing tag or create a new one. Multiple
tags can be assigned.
Choose an :guilabel:`Invoice Method` from the drop-down. Select :guilabel:`Before Repair` or If parts are required for the repair, they can be added in the :guilabel:`Parts` tab. Additional
:guilabel:`After Repair` to generate an invoice before or after the work is completed. Selecting information for the internal repair team can be added to the :guilabel:`Repair Notes` tab.
:guilabel:`No Invoice` means that an invoice cannot be generated for this service.
If parts are required for the repair, they can be added in the :guilabel:`Parts` tab. Services can Once the form is complete, click :guilabel:`Confirm Repair`. To create, edit, and send a quote for
be added as product lines on the :guilabel:`Operations` tab. Additional information for the internal this repair, click :guilabel:`Create Quotation`.
repair team can be added to the :guilabel:`Repair Notes` tab. Information for the customer can be
added to the :guilabel:`Quotation Notes` tab, and will be automatically added to the PDF of the
quotations generated from this :guilabel:`Repair Reference`.
A :guilabel:`Repairs` smart button will be added to the ticket, linking to the repair order. A :guilabel:`Repairs` smart button is then added to the ticket, linking to the repair order.
.. image:: after_sales/after-sales-repair-smart-button.png .. image:: after_sales/after-sales-repair-smart-button.png
:align: center :align: center
:alt: View of smart buttons focusing on repair button. :alt: View of smart buttons focusing on repair button.
.. note:: .. tip::
Once a user creates a repair order from a *Helpdesk* ticket, they will be able to access it Once a user creates a repair order from a *Helpdesk* ticket, they can access it through the
through the ticket's :guilabel:`Repair` smart button, or from a link in the :guilabel:`Chatter`, ticket's :guilabel:`Repair` smart button, or from a link in the chatter, even if they do not have
even if they do not have access rights to the *Repair* application. access rights to the *Repair* application.
Create a field service task from a ticket .. _helpdesk/field:
=========================================
Create field service task from a ticket
=======================================
On-site interventions can be planned from a ticket and managed through the *Field Service* On-site interventions can be planned from a ticket and managed through the *Field Service*
application. Customers with :doc:`portal access </applications/general/users/portal>` will be able application. Customers with :doc:`portal access <../../../general/users/portal>` are able to track
to track the progress of a :guilabel:`Field Service` task just as they would a *Helpdesk* ticket. the progress of a *Field Service* task just as they would a *Helpdesk* ticket.
To create a new task, navigate to a :menuselection:`Helpdesk` ticket. Click :guilabel:`Create Task` .. tip::
to open the :guilabel:`Create a Field Service task` pop-up. Confirm or update the task To change the default *Field Service* project for the team, go to :menuselection:`Helpdesk app
:guilabel:`Title`. --> Configuration --> Helpdesk Teams` to select a :guilabel:`Team`. Scroll to the
:guilabel:`After-Sales` section, and choose a project under :guilabel:`Field Service`.
.. note:: To create a new *Field Service* task, navigate to a :menuselection:`Helpdesk` ticket. Click
The :guilabel:`Project` field on the :guilabel:`Create a Field Service task` pop-up will default :guilabel:`Plan Intervention` to open the :guilabel:`Create a Field Service task` pop-up window.
to the same *Field Service* project that was identified on the team's settings page. To change
the project for this specific task, select one from the :guilabel:`Project` field.
To change the default *Field Service* project for the team, go to :menuselection:`Helpdesk -->
Configuration --> Teams` to select a :guilabel:`Team`. Scroll to the :guilabel:`After-Sales`
section and choose new project under :guilabel:`Field Service`.
Click :guilabel:`Create Task` or :guilabel:`Create & View Task`.
.. image:: after_sales/after-sales-field-service-create.png .. image:: after_sales/after-sales-field-service-create.png
:align: center :align: center
:alt: View of a Field Service task creation page. :alt: View of a Field Service task creation page.
After the task is created, a :guilabel:`Tasks` smart button will be added to the ticket, linking the Confirm or update the task :guilabel:`Title`.
The :guilabel:`Project` field on the :guilabel:`Create a Field Service task` pop-up window defaults
to the same *Field Service* project that was identified on the team's settings page. To change the
project for this specific task, select one from the :guilabel:`Project` field.
If applicable, select a :guilabel:`Worksheet Template` from the drop-down menu.
.. note::
*Field Service Worksheets* are reports that detail the work completed during an on-site task.
When work is completed, worksheets are signed by the customer to confirm the job is done and the
customer is satisfied.
If the *Field Service* project assigned to the *Helpdesk* team has worksheets enabled, and has a
default template assigned, that template automatically appears in the :guilabel:`Worksheet
Template` drop-down field. Even so, the field can be edited, and another template can be
selected.
If the *Field Service* project does **not** have worksheets enabled, the :guilabel:`Worksheet
Template` field does not appear on the :guilabel:`Create a Field Service task` pop-up window.
Click :guilabel:`Create Task` or :guilabel:`Create & View Task`.
After the task is created, a :guilabel:`Tasks` smart button is added to the ticket, linking the
:guilabel:`Field Service` task to the ticket. :guilabel:`Field Service` task to the ticket.
.. image:: after_sales/after-sales-field-service-smart-button.png .. image:: after_sales/after-sales-field-service-smart-button.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB