[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 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
field service interventions directly from a ticket.
*After-Sales* services can be configured in the *Helpdesk* application for individual teams. Once
enabled, users can :ref:`issue refunds <helpdesk/refunds>`, :ref:`generate coupons
<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
:menuselection:`Helpdesk --> Configuration --> Teams` and selecting which teams(s) these services
should be active on. Then, scroll to the :guilabel:`After-Sales` section on the team's settings
page, and choose which of the following options to enable:
Start by enabling the after-sales services on a specific *Helpdesk* team, by going to
:menuselection:`Helpdesk app --> Configuration --> Helpdesk Teams` and click on the team the
services should be applied to. Then, scroll to the :guilabel:`After-Sales` section on the team's
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:`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:`Repairs`: creates repair orders for broken or faulty products
- :guilabel:`Field Service`: plans onsite intervention through the *Field Service* application
- :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:`Returns`: initiates a product return from a customer through a reverse transfer.
- :guilabel:`Repairs`: creates repair orders for broken or faulty products.
- :guilabel:`Field Service`: plans onsite intervention through the *Field Service* application.
.. figure:: after_sales/after-sales-enable.png
:align: center
The services that are enabled can vary based on the type of support a team provides.
.. warning::
As all of 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
new application on a One-App-Free database will trigger a 15-day trial. At the end of the trial,
if a paid subscription has not been added to the database, it will no longer be accessible.*
.. danger::
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
new application on a One-App-Free database triggers a 15-day trial. At the end of the trial, if a
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
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*
applications, they can be created through a *Helpdesk* ticket, as well.
.. note::
Invoices must be posted before a credit note can be generated.
.. important::
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
click the :guilabel:`Refund` button in the upper-left corner of the ticket dashboard. Then, select
the corresponding invoice from the :guilabel:`Invoices to Refund` drop-down menu.
To create a credit note, navigate to a ticket on the :menuselection:`Helpdesk app`, and click the
:guilabel:`Refund` button in the top-left corner of the ticket form. This opens a
:guilabel:`Refund` pop-up window.
.. image:: after_sales/after-sales-refund-details.png
:align: center
: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
issued
- :guilabel:`Full Refund`: the credit note is auto-validated and reconciled with the invoice. *This
is the option to choose if a validated invoice needs to be canceled*
- :guilabel:`Full refund and new draft invoice`: the credit note is auto-validated and reconciled
with the invoice. The original invoice is duplicated as a new draft. *This is the option to choose
if a validated invoice needs to be modified*
- :guilabel:`Sales Order`: if a sales order was referenced on the original ticket, it automatically
populates in this field.
- :guilabel:`Product`: the product the ticket is about. If an item is selected in this field, only
the sales orders, deliveries, and invoices including this product can be selected.
- :guilabel:`Lot/Serial Number`: this field is **only** visible if the :guilabel:`Product` selected
has associated lot or serial numbers.
- :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::
The :guilabel:`Credit Method` options will **not** be available for invoices that have already
been paid.
After the necessary fields are filled in, click :guilabel:`Reverse` or :guilabel:`Reverse and Create
Invoice`.
Make any necessary changes to the details of the credit note and click :guilabel:`Reverse.` Then
click :guilabel:`Confirm` to post the credit note.
:guilabel:`Reverse` creates a credit note in a draft state that can be edited before it is posted.
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.
.. 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.
.. seealso::
:doc:`/applications/finance/accounting/customer_invoices/credit_notes`
:doc:`../../../finance/accounting/customer_invoices/credit_notes`
.. _helpdesk/coupons:
Generate coupons from a ticket
==============================
Coupons can be used to alter the price of products or orders. The usage constraints of a coupon are
defined by conditional rules. *Coupon Programs* are configured in the *Sales* or *Website*
applications.
Coupons can be used to alter the price of products or orders. Conditional rules define the usage
constraints of a coupon. *Coupon Programs* are configured in the *Sales*, *Point of Sale*, or
*Website* applications.
.. note::
The *eCommerce* module must be installed in order to create coupon codes from the *Website*.
.. important::
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
upper left corner. Select an option from the :guilabel:`Coupon Program` drop-down menu, then click
:guilabel:`Generate`.
top-left corner. Select an option from the :guilabel:`Coupon Program` drop-down menu in the
:guilabel:`Generate a Coupon` pop-up window that appears.
.. image:: after_sales/after-sales-generate-coupon.png
:align: center
:alt: View of a coupon generation window.
The :guilabel:`Coupon Code` can be copied directly from the pop-up window (by clicking the
:guilabel:`Copy` button), or sent in an email by clicking :guilabel:`Send`.
.. note::
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::
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`
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
:align: center
: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
to the top of the ticket; click the smart button to view the coupon code, expiration date, and
Click :guilabel:`Get Share Link` to generate a link to send directly to the customer. Doing so opens
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.
.. 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.
.. 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
===================================================
@ -129,101 +167,132 @@ the :guilabel:`Reverse Transfer` pop-up window.
:align: center
:alt: View of a Helpdesk ticket with the return button highlighted.
.. note::
The :guilabel:`Return` button only appears on a ticket if the customer has a recorded delivery in
the database.
.. important::
The :guilabel:`Return` button **only** appears on a ticket if the customer has a recorded
delivery in the database.
By default, the quantity will match the validated quantity from the delivery order. Update the
:guilabel:`Quantity` field if necessary.
Select a :guilabel:`Sales Order` or :guilabel:`Delivery to Return` to identify the products that
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
:align: center
:alt: View of a reverse transfer creation page.
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
ticket.
incoming returned products.
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
:align: center
:alt: View of the return smart button on a helpdesk ticket.
.. seealso::
:doc:`/applications/sales/sales/products_prices/returns`
:doc:`../../../sales/sales/products_prices/returns`
.. _helpdesk/repairs:
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
from the *Helpdesk* ticket, and managed through the *Repairs* application.
If the ticket is related to an issue with a faulty or broken product, a *repair order* can be
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
:guilabel:`Repair` button in the upper left corner.
Clicking the :guilabel:`Repair` button opens a blank :guilabel:`Repair Reference` form.
:guilabel:`Repair` button in the top-left corner. This opens a :guilabel:`Repair Reference` form.
.. image:: after_sales/after-sales-repair-reference.png
:align: center
:alt: View of a repair reference page.
.. note::
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 fields with the necessary information:
Fill out the :guilabel:`Repair Description` field with a brief explanation of the issue. Click the
:guilabel:`Sale Order` field and then select the originating :abbr:`SO (Sales Order)` from which the
product is being repaired from. If a return has been initiated for the product, select the reference
number from the drop-down in the :guilabel:`Return` field.
- :guilabel:`Customer`: this field carries over from the ticket, though a new contact can been
selected from the drop-down menu.
- :guilabel:`Product to Repair`: if a product was specified in the :guilabel:`Product` field on the
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
:guilabel:`After Repair` to generate an invoice before or after the work is completed. Selecting
: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. Additional
information for the internal repair team can be added to the :guilabel:`Repair Notes` tab.
If parts are required for the repair, they can be added in the :guilabel:`Parts` tab. Services can
be added as product lines on the :guilabel:`Operations` tab. Additional information for the internal
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`.
Once the form is complete, click :guilabel:`Confirm Repair`. To create, edit, and send a quote for
this repair, click :guilabel:`Create Quotation`.
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
:align: center
:alt: View of smart buttons focusing on repair button.
.. note::
Once a user creates a repair order from a *Helpdesk* ticket, they will be able to access it
through the ticket's :guilabel:`Repair` smart button, or from a link in the :guilabel:`Chatter`,
even if they do not have access rights to the *Repair* application.
.. tip::
Once a user creates a repair order from a *Helpdesk* ticket, they can access it through the
ticket's :guilabel:`Repair` smart button, or from a link in the chatter, even if they do not have
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*
application. Customers with :doc:`portal access </applications/general/users/portal>` will be able
to track the progress of a :guilabel:`Field Service` task just as they would a *Helpdesk* ticket.
application. Customers with :doc:`portal access <../../../general/users/portal>` are able to track
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`
to open the :guilabel:`Create a Field Service task` pop-up. Confirm or update the task
:guilabel:`Title`.
.. tip::
To change the default *Field Service* project for the team, go to :menuselection:`Helpdesk app
--> Configuration --> Helpdesk Teams` to select a :guilabel:`Team`. Scroll to the
:guilabel:`After-Sales` section, and choose a project under :guilabel:`Field Service`.
.. note::
The :guilabel:`Project` field on the :guilabel:`Create a Field Service task` pop-up will default
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`.
To create a new *Field Service* task, navigate to a :menuselection:`Helpdesk` ticket. Click
:guilabel:`Plan Intervention` to open the :guilabel:`Create a Field Service task` pop-up window.
.. image:: after_sales/after-sales-field-service-create.png
:align: center
: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.
.. 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