diff --git a/content/applications/services/helpdesk/advanced/after_sales.rst b/content/applications/services/helpdesk/advanced/after_sales.rst index 8e77c7a97..fbf579d1a 100644 --- a/content/applications/services/helpdesk/advanced/after_sales.rst +++ b/content/applications/services/helpdesk/advanced/after_sales.rst @@ -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 `, :ref:`generate coupons +`, :ref:`process returns `, and :ref:`schedule repairs +` or :ref:`field service interventions ` 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 `_ + - `Coupons `_ + - :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 ` 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 diff --git a/content/applications/services/helpdesk/advanced/after_sales/after-sales-coupon-email.png b/content/applications/services/helpdesk/advanced/after_sales/after-sales-coupon-email.png index e5d3b79c4..dee4683b0 100644 Binary files a/content/applications/services/helpdesk/advanced/after_sales/after-sales-coupon-email.png and b/content/applications/services/helpdesk/advanced/after_sales/after-sales-coupon-email.png differ diff --git a/content/applications/services/helpdesk/advanced/after_sales/after-sales-coupon-smart-button.png b/content/applications/services/helpdesk/advanced/after_sales/after-sales-coupon-smart-button.png index 6d966f8aa..e91a723ce 100644 Binary files a/content/applications/services/helpdesk/advanced/after_sales/after-sales-coupon-smart-button.png and b/content/applications/services/helpdesk/advanced/after_sales/after-sales-coupon-smart-button.png differ diff --git a/content/applications/services/helpdesk/advanced/after_sales/after-sales-credit-note-smart-button.png b/content/applications/services/helpdesk/advanced/after_sales/after-sales-credit-note-smart-button.png index 5ad9f0d70..80dc4b6d8 100644 Binary files a/content/applications/services/helpdesk/advanced/after_sales/after-sales-credit-note-smart-button.png and b/content/applications/services/helpdesk/advanced/after_sales/after-sales-credit-note-smart-button.png differ diff --git a/content/applications/services/helpdesk/advanced/after_sales/after-sales-enable.png b/content/applications/services/helpdesk/advanced/after_sales/after-sales-enable.png index c7d52c367..ac63b39cf 100644 Binary files a/content/applications/services/helpdesk/advanced/after_sales/after-sales-enable.png and b/content/applications/services/helpdesk/advanced/after_sales/after-sales-enable.png differ diff --git a/content/applications/services/helpdesk/advanced/after_sales/after-sales-field-service-create.png b/content/applications/services/helpdesk/advanced/after_sales/after-sales-field-service-create.png index 2516bf62f..71d9fa30e 100644 Binary files a/content/applications/services/helpdesk/advanced/after_sales/after-sales-field-service-create.png and b/content/applications/services/helpdesk/advanced/after_sales/after-sales-field-service-create.png differ diff --git a/content/applications/services/helpdesk/advanced/after_sales/after-sales-field-service-smart-button.png b/content/applications/services/helpdesk/advanced/after_sales/after-sales-field-service-smart-button.png index c5094d05b..ff35c12a9 100644 Binary files a/content/applications/services/helpdesk/advanced/after_sales/after-sales-field-service-smart-button.png and b/content/applications/services/helpdesk/advanced/after_sales/after-sales-field-service-smart-button.png differ diff --git a/content/applications/services/helpdesk/advanced/after_sales/after-sales-generate-coupon.png b/content/applications/services/helpdesk/advanced/after_sales/after-sales-generate-coupon.png index 2c1e2a0a9..4696cb7c3 100644 Binary files a/content/applications/services/helpdesk/advanced/after_sales/after-sales-generate-coupon.png and b/content/applications/services/helpdesk/advanced/after_sales/after-sales-generate-coupon.png differ diff --git a/content/applications/services/helpdesk/advanced/after_sales/after-sales-modify-pricing.png b/content/applications/services/helpdesk/advanced/after_sales/after-sales-modify-pricing.png deleted file mode 100644 index 944f6ce94..000000000 Binary files a/content/applications/services/helpdesk/advanced/after_sales/after-sales-modify-pricing.png and /dev/null differ diff --git a/content/applications/services/helpdesk/advanced/after_sales/after-sales-refund-details.png b/content/applications/services/helpdesk/advanced/after_sales/after-sales-refund-details.png index 4b0334c25..79fed194d 100644 Binary files a/content/applications/services/helpdesk/advanced/after_sales/after-sales-refund-details.png and b/content/applications/services/helpdesk/advanced/after_sales/after-sales-refund-details.png differ diff --git a/content/applications/services/helpdesk/advanced/after_sales/after-sales-repair-reference.png b/content/applications/services/helpdesk/advanced/after_sales/after-sales-repair-reference.png index 8499d7e43..a4882d0bb 100644 Binary files a/content/applications/services/helpdesk/advanced/after_sales/after-sales-repair-reference.png and b/content/applications/services/helpdesk/advanced/after_sales/after-sales-repair-reference.png differ diff --git a/content/applications/services/helpdesk/advanced/after_sales/after-sales-repair-smart-button.png b/content/applications/services/helpdesk/advanced/after_sales/after-sales-repair-smart-button.png index aca9d9684..80460fef8 100644 Binary files a/content/applications/services/helpdesk/advanced/after_sales/after-sales-repair-smart-button.png and b/content/applications/services/helpdesk/advanced/after_sales/after-sales-repair-smart-button.png differ diff --git a/content/applications/services/helpdesk/advanced/after_sales/after-sales-return-button.png b/content/applications/services/helpdesk/advanced/after_sales/after-sales-return-button.png index 7c6462b27..b6447ed15 100644 Binary files a/content/applications/services/helpdesk/advanced/after_sales/after-sales-return-button.png and b/content/applications/services/helpdesk/advanced/after_sales/after-sales-return-button.png differ diff --git a/content/applications/services/helpdesk/advanced/after_sales/after-sales-return-smart-button.png b/content/applications/services/helpdesk/advanced/after_sales/after-sales-return-smart-button.png index e16d55942..1d5c33d3f 100644 Binary files a/content/applications/services/helpdesk/advanced/after_sales/after-sales-return-smart-button.png and b/content/applications/services/helpdesk/advanced/after_sales/after-sales-return-smart-button.png differ diff --git a/content/applications/services/helpdesk/advanced/after_sales/after-sales-reverse-transfer.png b/content/applications/services/helpdesk/advanced/after_sales/after-sales-reverse-transfer.png index 37f4d5347..069a966a9 100644 Binary files a/content/applications/services/helpdesk/advanced/after_sales/after-sales-reverse-transfer.png and b/content/applications/services/helpdesk/advanced/after_sales/after-sales-reverse-transfer.png differ