How to install extension

  1. Backup your store's database and web directory.
  2. Login to the SSH console on your server and navigate to the root directory of the Magento 2 store.
  3. Copy the installation instructions from page My Downloadable Products to the SSH console and press ENTER.
  4. Run command php -f bin/magento module:enable Mirasvit_Core Mirasvit_Report Mirasvit_Rma to enable the extension.
  5. Run command php -f bin/magento setup:upgrade to install the extension.
  6. Run command php -f bin/magento cache:clean to clean the cache.
  7. Deploy static view files

    rm -rf pub/static/*; rm -rf var/view_preprocessed/*; php -f bin/magento setup:static-content:deploy

Quick Start

Our Return Merchandise Authorization (RMA) extension for M2 is a simple, yet powerful tool for managing products returns. Most of its functions are quite intuitive, and work just out-of-box.

However, it also features rich configuration, which allows to employ almost any return policy. Here is a short guide, which will help you in building your returns workflow.

  1. Each Return begins from Return Request. It can be submitted either from three sources:

    • Customer's Account. This source can be disabled, if you wish to have RMA created only for staff. To do that, you need simply set option RMA -> Settings -> Customer Account -> Show RMA section in Customer Account to No;
    • Guest RMA Page. This source is always enabled by default, and currently can not be disabled.
    • Backend RMA Grid. This source also is always enabled.

    When customer submits RMA, it also shall supply three main parameters:

    • Reason - why did he choose to return the product. Although pre-defined reasons are relatively simple, you can always define your own in Reasons grid.
    • Condition - describes condition, which currently product has. Conditions also can be defined, using Conditions grid.
    • Resolution - defines action, which he expects to conduct. You can define your custom actions, but base actions - Exchange and Refund shall remain in place. If you do not need, just add new and disable unneeded records in Resolutions grid.

    You can control, which parameters shall customer supply, and which staff shall fill-in. It is done using option RMA -> Settings -> Customer Account -> Customers are required to select.

    You can even add your own parameters for submission, using our feature of Custom Fields.

  2. Request submission can have certain limitation, like days quantity since original order, or particular status, which should have order to be eligible for requests. These limitations you can set at RMA -> Settings -> RMA Policy.

  3. Once Return is submitted and saved, it receives a number. You can use default numbering scheme, which is simple counter, prefixed with store ID - or create your own numbering scheme using options in RMA -> Settings -> RMA Number section.

  4. Each Return document proceeds through different stages - from pending to approval or decline. These stages are called Statuses, and they can be defined in Statuses grid. Each time RMA assigned in new status, our extension can send automated notification for customer, or for staff. They are set in corresponding status record, in Notification section. Use these fields wisely to automate your communication with customer.

  5. While communicating with customer, you may encounter typical situations, that require typical answers. We call it Quick Responses, and you can create them at appropriate grid.

  6. Sometimes you need to set product return not to your store, but to some alternative address - a warehouse, for example. Use for that Return Addresses grid, which allows you to work with multiple return addresses.

  7. Finally, you can automate your RMA requests - for example, automatically decline all broken products. You will need to create one or more Workflow Rule for that. You can also use these rules to create your own email notifications flow.

  8. Observe return statistics frequently with our Reports, that allow you to see - which products are returned, which reasons are most popular and so on, making your Return policy flexible and responsive to customer's demands.

This should be a good beginning.

Refer to appropriate sections of our manual to have more info.

RMA Settings

This section describes the most of settings, that you can use for configuring your returns policy, except of Email Notification Settings, which is included in other section:

General Settings

Option Description
Return Address Default Return address of the store. Will be shown in the RMA Packing Slip. See Return Addresses.
Default status for new RMA When customer creates a new RMA, this option sets the RMA default status.
Default owner for the new RMA Sets the default owner for a new RMA.
Ask customer to confirm shipping If option is enabled, the customer will be asked to confirm shipping of the returned items.
Shipping confirmation text Text of the shipping confirmation dialog.
Allow RMA for offline orders If option is enabled, RMA requests will be available for offline orders.
Enable option "This was a gift" This option is useful when your customers buy gifts for their friends. Friends can create an RMA request for a gift and the initial customer will not be notified about such RMA.
Enable integration with Help Desk Allows to integrate RMA requests to the Help Desk system.
Code of "Brand" attribute You can set the code of the brand attribute.
Allow to upload only attachments with extensions Customers will be allowed to upload only those types of files.
Limit of attachments size Customers will not be able to upload files with a size more than this limit.
Show Columns in RMA Grid You can configure what columns you would like to show in the main RMA list in the backend.

Customer Account

Option Description
Show RMA section in Customer Account If option is enabled, RMA section is displayed in a customer account.
Customers are required to select List option, that allows to choose, which basic return parameters (e. q. Reasons, Conditions, Resolutions) shall be submitted by customer.

RMA Policy

Option Description
Allow to request RMA after order completion, days Number of days after order completion when a customer can create an RMA request.
Allow to request RMA if order has status Sets product's order status(es) which allows a customer to create a RMA request.
Request only shipped products If the order has only been partially shipped, then only the shipped items will be available for the RMA.
Ask to agree with RMA policy text If option is enabled, RMA policy is shown when customer creates a new RMA. Customer must accept the policy to proceed with the RMA.
CMS block with RMA policy text Sets CMS static block with text of the RMA policy. To create and manage this block go to the: CMS > Static Blocks

RMA Number

Option Description
Number Format You can specify a custom format for RMA numbers. You can use variables [store], [counter]. E.g. you have a format 'RM-[store][counter]' and you'll receive RMAs with the numbers RM-1000001, RM-1000002, RM-1000003, etc.
Start Counter From Initial number of the counter.
Counter Increment Step Counter's increment step.
Counter Length Number of digits in the counter.

Email Notifications

RMA extension sends emails with different types of notifications to the customer and store agents. You can customize the templates of those emails.

In this section you will find:

Note: If you need to create your own emails flow, refer to Workflow Rules section.

How to configure Email Notification workflow

Email notifications are governed by corresponding section of Sales -> RMA -> Settings, as was noted below. Here is short descriptions of options, that are available there.

Option Description
Email Sender Sets email from which letters will be sent to a customer.
Template of Notification Email for Customer Template of email notifications for customers.
Template of Notification Email for RMA Owner Template of email notifications for RMA agents.
Template of Rule Notification Template of Workflow Rule email notifications for customers.
Send blind carbon copy (BCC) of all emails to All outgoing emails will be sent to this list of emails. You should create a comma-separated list of emails.

How to disable Email notifications

To disable Email notifications you need to go to the Sales > RMA > Settings > Email Notification Settings. In the dropdown list of the necessary notification, select the option Disable these emails. Save configuration.

How to customize email template

To change the email template of RMA you need to do following steps:

  • Go to the Marketing > Email Templates.
  • Press the button Add New Template.
  • Select the template in the dropdown list that you would like to customize. The current extension templates are placed at the Mirasvit_Rma header.
  • Press button Load Template.
  • Enter new Template Name (e.g. Email notification for Customer).
  • Change Template Subject and Template Content as you need, and save template.
  • Go the to Sales > RMA > Settings > Email Notification Settings. Select your new template in the dropdown list of necessary notifications. Save configuration.

How to use variables in Email notification

Email templates can contain special variables, which allows a high level of customization.

RMA supports standard Magento Email Template variables, such as {{var logo_alt}}, and supports function calling, like {{var store.getFrontendName()}}, and also adds a set of its own variables.

  • {{var customer}} - allows access to customer properties;
  • {{var rma}} - allows access to RMA properties, including custom fields (see below).
  • {{var comment}} - contains a message sent to a customer or staff in RMA discussion.
  • {{var email_body}} - contains a customized at module helper message

Access to properties is similar to Javascript, with dot (.) operator. For example, if we need to include a customer's name to notifier, we can write {{var customer.name}}. If RMA contains custom fields, they can be accessed by codes which are found at Sales > RMA > Custom Fields > Dictionaries > Custom Fields > Custom Field edit page > Code, in similar manner - if custom field has code customdate, then the variable will be {{var rma.customdate}}.

The most usable properties are:

  • {{var store.getName()}} - name of current store
  • {{var store.getCode()}} - code of current store (e. q. admin for backend, or default for default store)
  • {{var user.getFirstname()}} - First Name of current agent
  • {{var user.getLastname()}} - Last Name of current agent
  • {{var user.getName()}} - Full Name of current agent
  • {{var user.getEmail()}} - Email of current agent
  • {{var rma.getIncrementId()}} - current RMA number
  • {{var rma.getGuestId()}} - displays a Guest ID of current RMA.
  • {{var rma.getUrl()}} - URL of current RMA
  • {{var rma.getBackendUrl()}} - backend URL to RMA page
  • {{var rma.getGuestPrintUrl()}} - URL of the printable version of the current RMA
  • {{var status.getName()}} - current status of RMA
  • {{var customer.getName()}} - Full Name of current customers
  • {{var customer.getEmail()}} - Email of current customer
  • {{var rma.getReturnAddressHtml()}} - address where the package is returned

There is a number of variables, that allow you to use your Store Information, as set in Stores -> Configuration -> General -> Store Information

  • {{var storeInfo.getName()}} - name of your store
  • {{var storeInfo.getPhone()}} - phone of current store
  • {{var storeInfo.getCountry()}} - country of your store's location
  • {{var storeInfo.getCity()}} - city, where your store is located
  • {{var storeInfo.getRegion()}} - region, where your store is located (if available).
  • {{var storeInfo.getPostcode()}} - postal code of your location

If Helpdesk is also integrated with RMA, it is possible to use two other variables:

  • {{var hidden_separator}} - allows to separate the answer from the communication history
  • {{var hidden_code}} - allows to hide the ticket code in the email template which is used to bind the email with the ticket

You also can use special variables to check, whether particular RMA has items with appropriate Reasons, Conditions and Resolutions. These special variables can be used for creating complex notifications, with sections, dependable from items properties. See more on this matter here:

  • {{var rma.getHasItemsWithReason(XXX)}} - allows to check, whether RMA has items with Reason, which have ID=XXX.
  • {{var rma.getHasItemsWithConditions(XXX)}} - allows to check, whether RMA has items with Condition, which have ID=XXX.
  • {{var rma.getHasItemsWithResolution(XXX)}} - allows to check, whether RMA has items with Resolution, which have ID=XXX.

If you need, it is possible to use RMA templates standard custom variables. These variables are created with System > Custom Variables and can be inserted with {{customvar code="var_name"}}. For example, if the custom variables have a code "test", then the variable will be {{customvar code="test"}}.

Statuses

Each RMA request proceeds through a set of stages, on which data are gathered, goes communication with customers, and performed some actions. Each of these stages corresponds with Status, which is crucial part of RMA.

By default RMA can have the following statuses:

  • Pending approval - RMA request isn`t reviewed yet. Assigned just after submission, if other not set at RMA -> Settings -> General Settings -> Default status for new RMA.
  • Approved - RMA request is approved. Customer can print the RMA packing slip and ship their items.
  • Package Sent - customer has confirmed sending the RMA items to the store.
  • Rejected - RMA request is rejected.
  • –°losed - RMA request is closed.

Address Status Grid

But sometimes RMA processing can be more complex, so our extension provides customers with ability to create their own Statuses, thus creating their own return processing procedure.

How to create a new status

Go to the Sales > RMA > Statuses. Press the button Add New.

You'll see following fields:

Address Status Edit

General information

  • Title - Title of the new status.
  • Code - Unique internal code for the statuses.
  • Sort Order - sorting order (used for displaying in drop-down menu)
  • Is Active - whether current reason is visible on RMA creation and edit page.
  • Show buttons 'Print RMA Packing Slip' and 'Confirm Shipping' in the customer account - When the RMA request recieves current status, additional buttons Print RMA Packing Slip and Confirm Shipping will be displayed on the customer RMA page.

Notifications

Assigning a status to a RMA can be accompanied with automated email notification. It can be used for speeding up RMA handling in standard use cases. There's three types of them:

  • Email Notification for customer - Text of email notification for customer.
  • Message for RMA history - Text of the message to the RMA history.
  • Email Notification for administrator - Text of the email notification for the store agent.

To send notification, enter in corresponding field contents of that notification. To disable it - just make it empty and save status.

You can use the following umbrella variables in the notification text:

  • rma
  • order
  • customer
  • status
  • store

You can gain access to their properties and even methods using point operator. For example, if you need to add customer's name - use variable {{var rma.getCustomerEmail()}}.

Example

For example, you can use the following code as notification text:

Dear {{var customer.name}},<br><br>

Your Return request has been approved.
<br>

{{depend rma.getHasItemsWithResolution(1)}}
You choose to receive your money back, so we will refund the following items:<br><br>
{{block class="Mirasvit\\Rma\\Block\\Rma\\View\\Items" area='frontend' template='Mirasvit_Rma::email/rma/items.phtml' rma=$rma resolution_id=1}}<br><br>
{{/depend}}

{{depend rma.getHasItemsWithResolution(2)}}
You choose to exchange your product, we will contact you about the following items:<br><br>
{{block class="Mirasvit\\Rma\\Block\\Rma\\View\\Items" area='frontend' template='Mirasvit_Rma::email/rma/items.phtml' rma=$rma resolution_id=2}}
<br><br>
{{/depend}}

Please, print <a href='{{var rma.guest_print_url}}'>RMA Packing Slip</a>.

Note: You can have different notifications for different stores, but for the same Statuses. To do it, just switch store switcher to desired one, and enter contents to the proper field. It will be saved independently just for selected store.

Reasons

Each product, returned by customer, can be supplied with Reason, why did customer choose to return this particular product. It is extremely useful for monitoring return statistics (refer to Report by Reason), and can be used for improving your sales.

Our extension provides you with basic conditions set, but you're free to create your own.

Reasons Grid

How to create a new reason

Go to the Sales > RMA > Reasons. Press the button Add New. You'll see following edit page:

Reasons Edit Page

  • Title - Title of the reason.
  • Sort Order - sorting order (used for displaying in drop-down menu)
  • Is Active - whether current reason is visible on RMA creation and edit page.

Conditions

Each product, returned by customer, can be supplied with description of its current (or on arrival - depending on your police) Condition.

Our extension provides you with basic conditions set, but you're free to create your own.

Conditions Edit Page

How to create a new condition

Go to the Sales > RMA > Conditions. Press the button Add New. You'll see the following edit page:

Conditions Edit Page

  • Title - Title of the condition.
  • Sort Order - sorting order (used for displaying in drop-down menu)
  • Is Active - whether current condition is visible on RMA creation and edit page.

Resolutions

When customer submits an RMA, it can mark, which service he would select - for example, Exchange or Refund. Typically, these two are enough to create reliable return service, but sometimes you need an extended resolutions - different kinds of Refund, or even Repair service.

Our extension allows you to create as many possible return Resolution, as your policy need.

Resolutions Grid

How to create a new resolution

Go to the Sales > RMA > Resolutions. Press the button Add New. You'll see following edit page:

Resolutions Edit Page

  • Title - Title of the reason.
  • Code - Unique internal code of the resolution.
  • Sort Order - sorting order (used for displaying in drop-down menu)
  • Is Active - whether current condition is visible on RMA creation and edit page.

Custom Fields

Custom fields are poweful instrument to boost your return services, especially when you had defined additional Resolutions. You can use them to store additional information about RMA.

For example, when a customer confirms the shipment of RMA package, you can use custom fields to get additional information about the shipment (like carrier, tracking number).

How to create a new custom field

Go to the Sales > RMA > Custom Fields. Press the button Add New. You'll see the following edit page:

Custom Fields Edit Page

  • Title - Title of the field.
  • Code - A unique internal code of the field.
  • Type - Field type, which defines - which control element will be used for entering values. The following types are possible:
    • Text - One line text field.
    • Multi-line text - Multi-line text field (textarea).
    • Date - Date with calendar.
    • Checkbox - a checkbox
    • Drop-down list - a menu-like widget with drop-down select (also requires Options List).
  • Description - Description of the field. Will appear in interface as small tooltip.
  • Options list - Used only for fields with type drop-down list. Enter each value from the new line using the format:
    value1 | label1
    value2 | label2
  • Active - If this option is enabled, the custom field is active.
  • Sort Order - Displays the sequence of the fields.
  • Is required for staff - If this option is enabled, an agent is required to fill-in this field.
  • Is required for customers - If this option is enabled, a customer is required to fill-in this field.
  • Visible for customers in statuses - This option allows you to show the field to customers only in specified statuses of RMA.
  • Is show in confirm shipping dialog - If this option is enabled, this field will be shown in the confirm shipping dialog.
  • Is editable for customers - If this option is enabled, customers can enter a value to this field.

Example

To insert a custom field value inside an email template, you can use the variable {{var rma.custom_field_code}}.

Quick Responses

While communicating with your customers, you might encounter typical situations, which need typical answers.

This can be resolved by many ways. Some of them you may resolve by establishing a special Status or even Workflow Rule, with automated message. But some will require a semi-manual response, which should be changed a little - depending on particular customer (his name, for example).

In this case you can use Quick Response, to paste a predefined answer into the reply field, edit it if necessary and send the message to the client. It greatly speeds up your communication and RMA handling.

How to create a New Quick Response

Go to the Sales > RMA > Quick Responses. Press the button Add New. You'll see following edit page:

Responses Edit Page

  • Internal Title - Internal title of quick response. It will be shown only in backend, in section of submitting new message from the staff.
  • Is Active - Enables or disables current quick response.
  • Template - Text of quick response. This text will be inserted into reply fields. You can use following variables:
    • [rma_increment_id] - RMA ID
    • [rma_firstname] - Customer First Name
    • [rma_lastname] - Customer Last Name
    • [rma_email] - Customer Email
    • [store_name] - Store name
    • [store_phone] - Store phone
    • [store_address] - Store address
    • [user_firstname] - Agent name
    • [user_lastname] - Agent last name
    • [user_email] - Agent Email
  • Stores - Store views where you can use this quick response. If you have several languages, you need to have different quick responses for different store views.

Quick Responses, created in this section, will appear on RMA edit page, in Add Message block - where drop-down widget option Insert Quick Response will appear.

Just select proper title from the list, and it will be pasted to the message text area. All variables will be replaced with their corresponding values in this RMA.

Note: Quick Responses are store-dependent. So, if you do not see in RMA particular Quick Response, please, use Order field to open original order. Then check Purchased From field there. This store should be also set in desired Quick Responses.

Workflow Rules

Workflow Rules are powerful tool for automating standard situation, that can occur during RMA submission, or processing.

Each rule is binded to certain event, which will trigger their execution. When rule is triggered, it validates its conditions - and if they met by current RMA, action is executed. There's wide range of actions, that can be performed by our Workflow Rules.

For example, you can automatically assign RMA with different Resolutions to your responsive staff members, so they can provide the best service to your customers and to get the job done.

Also, you can auto-assign to RMA certain status after the first reply of a support team member, notify all the department members when a new RMA is created, send a reminder to the RMA owner if there is no reply during 3 days, and so on.

How to create Workflow Rule

Go to Sales -> RMA -> Workflow Rules and add a new rule. You will see a complex creation page, divided into several sections:

Rules Edit Page

General Information

This section contains basic options:

  • Rule Name - Name of this particular rule
  • Priority - Sorting order. Used, when multiple rules are binded to the same event, and triggered in order, determined by this field.
  • Active - Whether this rule is active.
  • Stop Further Rules Processing - Used, when multiple rule are binded to the same event. If this option is On, other rules with same or lower priority won't be triggered at all.

Conditions

This section breaks into two blocks.

At the Event block settings you can set the required RMA Event condition:

  • New RMA has been created
  • RMA has been changed
  • New reply from customer
  • New reply from staff

Next blocks allow to select conditions, which will be checked on rule triggering. Only if current RMA met them, actions will be executed. Here is the list of currently available conditions:

  • Last message body - Content of the last public message, left in particular RMA
  • Created at - Date of RMA creation
  • Updated at - Date of RMA's last update (e. q. new message appeared, or properties changed)
  • Store - Store from where the RMA was submitted (note: this condition can not detect backend-created RMAs, as they can be binded to any store.)
  • Status (before change) - Status which particular RMA has prior to event firing (used only for RMA has been changed event)
  • Status - Current RMA status
  • Owner (before change) - Owner which held particular RMA prior to event firing (used only for RMA has been changed event)
  • Owner - Current RMA owner
  • Last Reply By - Last replier in this RMA: Customer or Staff agent
  • Hours since Created - Time period from the creation of particular RMA (note: this condition is not precise, use equal or greater or equal or lesser comparators here)
  • Hours since Updated - Time period from the last update of a particular RMA (note: this condition is not precise, use equal or greater or equal or lesser comparators here)
  • Hours since Last Reply - Time period from last message appearance in a particular RMA (note: this condition is not precise, use equal or greater or equal or lesser comparators here)

Also, if you have RMA Custom Fields, they also can be used as a condition.

Each field will be listed in two forms: standard field value and "before changed", used especially for a RMA has been changed event. F. e., if the field is Telephone, then the conditions will be Telephone and Telephone (before change) respectively.

Actions

RMA Actions will be executed when conditions are met.

Currently only two Actions are supported:

  • Set Status - Sets new Status for the RMA
  • Set Owner - Sets new Owner for the RMA

Other actions are planned for adding in upcoming releases.

Notifications

The extension allows you to send Notification Emails after the Workflow Rule action was executed.

  • Send email to RMA owner - If option is enabled, the current email will be sent to RMA owner
  • Send email to customer - If option is enabled, thecurrent email will be sent to the customer
  • Send email to other email addresses - Allows you to send emails to additional addresses
  • Email subject - Email subject
  • Email body - Text of the email can be used to Email Template variables. For more information about variables, go to Email Notifications

This section is extremely useful, when you're creating your own email communication flow.

Return Adresses

RMA extension allows you to create a list of return addresses for RMA.

How to create a new return address

Go to the Sales > RMA > Return Addresses. Press the button Add New. You'll see following edit page:

Address Edit Page

General information

  • Title - Title of the new return address.
  • Address.
  • Sort Order
  • Is Active

Guide for store agents

In this article you will find:

Overview of RMA Workflow

Processing of a typical RMA is shown on chart below.

Workflow Chart

It's all started from RMA list.

List of RMAs

Go to the Sales > RMA. You'll see a list of all RMA requests. You can manage RMAs, create a new RMA.

RMA Grid

RMA grid has the following default columns (you can add your own - using Columns button):

  • RMA# - RMA ID.
  • Order# - Order ID.
  • Customer Name
  • Owner - An agent of the store, who works with the RMA.
  • Last Replier - Name of the person who added the message to the RMA last time.
  • Status - Status of the RMA request. See also RMA Statuses.
  • Created Date - Date of the RMA request creation.
  • Last Activity - Time from RMA last activity.
  • Items - RMA's items with statuses.

How to process a RMA

Each RMA divided into a several sections, each of them has its own purpose and its own fieldset.

Here is a general view of RMA Edit Page:

RMA Grid

General Information

  • RMA#
  • Order#
  • Customer#
  • RMA Owner - An agent of the store who works with the RMA.
  • Status - Status of the RMA.
  • Upload Return Label - Agent can upload a return label (image or PDF). If the RMA has a return label, the customer will be able to print it via their account.
    • External Link - Agent can open the current RMA request page on the frontend.
    • Return Address - Return address of the RMA. See Return Addresses.

Additional Information

The section contains set of custom fields. See Custom Fields.

Items

The section contains a list of the RMA's items.

  • Qty to Return - Quantity of the RMA's item.
  • Reason to Return - Reason why the customer would like to return the item. You can create your own Reason to Return.
  • Item Condition - Item's condition. You can create your own Condition.
  • Resolution - Resolution for the item. You can create your own Resolution. Click the button Create Exchange Order.

To add new items to the RMA, click the link Show all order items and change the Qty of the necessary items.

Contact Information

This section contains information regarding RMA's customer.

  • First Name - Customer First Name.
  • Last Name - Customer Last Name.
  • Company - Customer company.
  • Telephone - Customer telephone.
  • Email - Customer Email.

RMA History

This section contains a list of all RMA messages (status changes, replies of customer or agent).

Add Message

This section allows store agent to send a message to the customer or add an internal note to the RMA.

  • Message Type - Allows you to send one of these message types:
    • Message to Customer - Reply will be sent to the customer. Default message type.
    • Internal Note - Internal RMA message. Only agents will be able to see it. Customer will not see it and will not receive it by email.
  • Insert Quick Response - Allows to you select a predefined answer into the reply field. For more information about Quick Repsonses, go to Quick Responses

Possible Actions

To apply changes the agent should press the button Update.

To apply changes and send a message to the customer, the agent should press the button Update And Send Message.

If the RMA has items with the resolution Exchange, the agent can create an exchange order by pressing the button Create Exchange Order.

If the RMA has items with resolution Refund, the agent can create a credit memo by pressing the button Create Credit Memo.

Reports

Our extension allows you to observe your RMA flow, and gather statistics of returns, based on different parameters. Currently, we support the following types of Reports:

Report by Product

Report by Product displays return statistics from the product view. It is a table, that looks like shown on screenshot:

Report By Products

You can choose the following parameters of this report:

  • Time period
  • Step period (Day, Week, Month, Year)

Report by Attribute

Report by Attribute also displays return statistics from the product view, but unlike previous one - allows you to pick up a product's attribute, and thus - dynamically create report on-the-fly. For that there's additional parameter to choose - Attribute.

Report By Attribute

Unfortunately, this type of report does not allow to choose step period, only Time Period.

Report by Status

This type of report displays statistics, depending from status, that particular RMA have in selected period of time.

Report By Status

You can choose the following parameters of this report:

  • Time period
  • Step period (Day, Week, Month, Year)

Report by Reason

This type of report displays statistics, depending from reason, that customer had chosen for returning a product.

Report By Reason

You can choose the following parameters of this report:

  • Time period
  • Step period (Day, Week, Month, Year)

How-To

This section contains resolution advices for a most common problems, that you can notice.

How can I disable guest RMA

Currently, our extension does not allow disabling guest RMA form. However, you can do it using manual redirect. Here is what shall be done:

  • Go to Marketing -> SEO & Search -> URL Rewrites and create a new rewrite of Custom type;
  • In Request Path field should be placed Guest RMA request path: /returns/guest/new/
  • Target Path set to 404, and Redirect Type to Permanent (301)
  • Save Rewrite and purge cache.

How can I prevent product from being returned?

  • Go to Catalog -> Products and edit appropriate product.
  • Jump to the RMA subsection, and set option Return Allowed to No.

Note

For Bundled, Grouped and Configurable products, you need not only disable return for 'parent' product, but for associated simple products as well.

How shall I create auto-reply messages to customer

Auto-reply messages in our RMA extension can be implemented in two ways:

  • Using Statuses. In this case automated message will be sent, whenever this particular status is assigned to RMA. You just need to put it to the Email Notification for –°ustomer field.
  • Using Workflow Rule. In this case you need to pick up proper event, add some conditions and when RMA became applicable for that event and conditions - automated message, set in Notifications subsection, will be sent.

How shall I use "Template of Rule Notification" and the "Notification Email for Customer" settings?

Notification Email for Customer is the main template, which is used for sending notification to customer. It is used in following cases:

  • New RMA is created.
  • New staff message is posted to your RMA.
  • Your RMA had changed its status, and automatic message was added.

Template of Rule Notification is the wrapper template for all notifications, that are sent using Workflow Rules.

Note

To make the your custom template properly work as Template of Rule Notification, you shall include to its contents this special variable: {{var email_body | raw}}. It will be replaced with actual message, set in Workflow Rule, at Notifications tab.

How can I customize our notification emails so that they are different depending on the resolution type the customer requested (i.e store credit, refund, etc)?

Our RMA extension allows customer to have in the same RMA items with different return options. However, you can split your email template into parts, which will be included to the final email. Magento 2 provides a special condition block, called {{depend XXX}}, where XXX is boolean-like condition.

Our extension provides three variables, which allow to check presence in current RMA items with certain properties:

  • {{var rma.getHasItemsWithReason(XXX)}} - allows to check, whether RMA has items with Reason, which have ID=XXX.
  • {{var rma.getHasItemsWithConditions(XXX)}} - allows to check, whether RMA has items with Condition, which have ID=XXX.
  • {{var rma.getHasItemsWithResolution(XXX)}} - allows to check, whether RMA has items with Resolution, which have ID=XXX.

Include these variables to {{depend XXX}} block to have different messages for different return options.

Example

Task: have different messages for a different conditions Unopened (ID=1), Opened (ID=2) and Damaged(ID=3).
Solution: add to the email template (in Status, for example) the following code:

    {{depend rma.getHasItemsWithCondition(1)}}
    Your items are unopened, so you can have a replacement. Please, wait for a call from our staff.
    {{/depend}}

    {{depend rma.getHasItemsWithCondition(2)}}
    Your items are opened, so please, allow our specialist to check, whether issue existed before using.
    {{/depend}}

    {{depend rma.getHasItemsWithCondition(3)}}
    Your items are damaged, so we can not do a replacement for you at all.
    {{/depend}}

This approach will work both in auto-replies in Statuses, and in notifications, created by Workflow Rule.

Migration from Magento 1 to Magento 2

Below are examples of scripts, which may be used for transferring data from Mirasvit RMA for Magento 1 to Mirasvit RMA for Magento 2.

To use scripts you need a help of PHP developer. Scripts may contain bugs and may not transfer all necessary data. So you may need to fit them for your needs. Migration service is not a part of our support service. If you need a help of our team, you'll need to buy a migration service.

Click on the names of scripts below to download:

How to perform Migration

Follow these steps to correctly perform migration:

  1. Run standard Magento 2 migration, and make sure, that customers and orders were transferred from your M1 store to M2;
  2. Make sure, that RMA for Magento 2 is installed on your M2 store.
  3. Place mirasvit_rma_m1_export.php to the root of your M1 store, and run it either:
    • From browser by opening URL http://store_m1.com/mirasvit_rma_m1_export.php, or
    • From SSH/Console: navigate to your store's root and run command php -f mirasvit_rma_m1_export.php
  4. If script returned success, file rma_export.xml will be created at the root of the store, with all your data. Transfer it to the root of your M2 store;
  5. Place mirasvit_rma_m2_import.php to the root of your M2 store, and run it either:
    • From browser by opening URL http://store_m1.com/mirasvit_rma_m2_import.php, or
    • From SSH/Console: navigate to your store's root and run command php -f mirasvit_rma_m2_import.php
  6. Check migrated data. 7, If there was some RMA skipped due to missing customers, their emails will be listed in missing-rma-customers.log file, at the root of the store. Create (or transfer) that customers and repeat step 5.
  7. When migration is completed, remove both migration scripts.

Note

Our extension currently do not support Offline Orders migration. These RMA will be skipped and logged to missing-rma.log file, for your reference.

Troubleshooting


Crush on timeout or exceeding available memory.

This error appears due to large quantities of data.

Solution:

Just restart import script by reloading browser page. It will skip previously uploaded data, and proceed from the last unprocessed record.


Crush with PHP Fatal Error during export

Typically this issue can appear, when you migrate from very old RMA for Magento 2, which has different table structure, or your store has old version of offline RMA.

Solution:

Open mirasvit_rma_m1_export.php file, and remove code block, marked with // 0.6. Offline Orders. This should be enough for most cases.

If script crushed even after custom fix above, contact Mirasvit Support.

How to upgrade the extension

To upgrade the extension follow these steps:

  1. Backup your store's database and web directory.
  2. Login to the SSH console of your server and navigate to the root directory of the Magento 2 store.
  3. Run the command composer require mirasvit/module-rma:* --update-with-dependencies to update current extension with all dependencies.

    Note

    In some cases the command above is not applicable, it's not possible to update just current module, or you just need to upgrade all Mirasvit modules in a bundle. In this case command above will have no effect.

    Run instead composer update mirasvit/* command. It will update all Mirasvit modules, installed on your store.

  4. Run command php -f bin/magento setup:upgrade to install updates.
  5. Run command php -f bin/magento cache:clean to clean the cache.
  6. Deploy static view files

    rm -rf pub/static/*; rm -rf var/view_preprocessed/*; php -f bin/magento setup:static-content:deploy

Disabling Extension

Temporarily Disable

To temporarily disable the extension please follow these steps:

  1. Login to the SSH console on your server and navigate to the root directory of the Magento 2 store.
  2. Run command php -f bin/magento module:disable Mirasvit_Rma to disable the extension.
  3. Login in to the Magento back-end and refresh the store cache (if enabled).

Extension Removing

To uninstall extension please follow these steps:

  1. Login to the SSH console on your server and navigate to the root directory of the Magento 2 store.
  2. Run the command composer remove mirasvit/module-rma to remove the extension.
  3. Login to the Magento back-end and refresh the store cache (if enabled).

Change Log

2.0.20

(2018-06-19)

Features

  • Added Offline Orders

Fixed

  • Error "Undefined index: items"

2.0.19

(2018-05-22)

Fixed

  • Email's variables
  • Translation
  • Duplicated styles

2.0.18

(2018-04-13)

Fixed

  • Issue when customer is able to create two custom field with the same code
  • Event "New reply from customer" does not work

Improvements

  • Improved RMA guest page layout

2.0.17

(2018-04-03)

Fixed

  • RMA frontend menu is not recognized as active
  • Search in RMA select order grid

2.0.16

(2018-03-26)

Fixed

  • Issue when removed exchange order cause fatal error

Improvements

  • Added option that adds Rma style to pages if theme ignore it

2.0.15

(2018-03-09)

Fixed

  • Support of new reports module

2.0.14

(2018-03-05)

Fixed

  • Status changed by workflow rule does not send email notification

Improvements

  • Added option "Show RMA for guest customer by order" displays only RMAs either for order, or for customer

2.0.13

(2018-01-18)

Improvements

  • Added new variables(rma.getHasItemsWithReason(XXX), rma.getHasItemsWithConditions(XXX), rma.getHasItemsWithResolution(XXX)) for transactional emails, which allow to check existence of items with certain Reason, Resolution and Condition.

Fixed

  • Added compatibility with Emizentech_CustomSmtp. Before this fix, if store had Emizentech_CustomSmtp, the option "Send blind carbon copy (BCC) of all emails to" was not working correctly.
  • Fixed an issue with incorrect RMA URL. If a magento installation has stores with URL prefixes (e.g. "/usa/..", "/fr/.."), extension were not including those prefixes into RMA URLs.

2.0.12

(2017-12-20)

Fixed

  • Extension registration fix
  • Compilation crush fix

2.0.11

(2017-11-15)

Fixed

  • Reports
  • Compatibility with Magento 2.2.x

2.0.10

(2017-11-13)

Fixed

  • Fixed images in backend

2.0.9

(2017-11-08)

Improvements

  • RMA can be created for orders with deleted products

Fixed

  • Report by Attribute
  • Report by Product
  • Product images in RMA creation form
  • Exchange order filter in backend rma grid
  • RMA urls
  • Double emails on RMA creation

2.0.8

(2017-10-06)

Improvements

  • Added reasons to print template

2.0.7

(2017-10-04)

Improvements

  • Added "Resolved" to Workflow Rules actions

Fixed

  • Email templates for multi store
  • Customer notifications on status changes

2.0.6

(2017-09-27)

Fixed

  • Compatibility with Magento 2.2.0

2.0.5

(2017-09-26)

Improvements

  • Added ability to forbid products for return

2.0.4

(2017-09-19)

Fixed

  • Bugs

2.0.3

(2017-09-11)

Improvements

  • Reworked module documentation

2.0.2

(2017-09-07)

Improvements

  • Improved admin UI

2.0.1

(2017-09-07)

Fixed

  • Compatibility with Magento 2.2.0rc
  • Displaying variations for configurable products

2.0.0

Improvements

  • Interface refactored using XML UI Components
  • Added mass action for change statuses in RMA Grid

1.1.26

(2017-08-17)

Improvements

  • Added price column to items' grid in RMA form in backend
  • Added mass action "Change Status" on RMA grid in backend

1.1.25

(2017-07-11)

Fixed

  • Styles, misspelling and report filters

1.1.24

(2017-06-09)

Fixed

  • RMA's reasons validation
  • Dispaying status's messages

Improvements

  • Added reports by product and by attribute

1.1.23

(2017-05-31)

Fixed

  • RMA validation

Improvements

  • Added return address on frontend

1.1.22

(2017-05-10)

Improvements

  • Added option "Reset Counter For Order"
  • Added "Ticket was converted to RMA" event

1.1.21

(2017-04-26)

Fixed

  • Notifications for guest

1.1.20

(2017-04-10)

Fixed

  • Configuration for multistore

Features

  • Added new conditions to workflow rules

1.1.19

(2017-04-05)

Features

  • Added reports by reasons

1.1.16

(2017-04-04)

Features

  • Added option that allows request to return only shipped items

1.1.14

(2017-03-31)

Fixed

  • Fixed RMA for partial shipment
  • Fixed issue when admin does not get notification about new RMA

1.1.13

(2017-03-30)

Features

  • Added Helpdesk integration

Fixed

  • Fixed RMA for orders migrated from Magento 1

1.1.12

(2017-03-13)

Fixed

  • Fixed auto selecting items

1.1.11

(2017-03-09)

Fixed

  • Fixed styles for confirm shipping dialog

1.1.10

(2017-03-07)

Fixed

  • Fixed a possible issue with store id

1.1.9

(2017-03-03)

Fixes

  • Fixed translations for Resolutions, Conditions, Reasons
  • Fixed option "Allow to request RMA after order completion"
  • Fixed issues with ability to delete reserved Resolutions

1.1.8

(2017-02-28)

Fixes

  • Fixed compilation crush due to incomplete aggregation in reports

1.1.7

(2017-02-27)

Fixes

  • Fixed compilation crush due to Reports requirement missing

1.1.6

(2017-02-24)

Features

  • Added Report by RMA Status

1.1.5

(2017-02-24)

Improvements

  • Added option to hide Condition, Resolution, Reason for customer

1.1.4

(2017-02-15)

Fixed

  • Saving of translated dictionary (reasons, resolutions, conditions) titles for storeviews.

1.1.3

(2017-01-13)

Improvements

  • Added ability to set different Return Addresses for each RMA

1.1.2

(2017-01-11)


1.1.1

(2016-12-21)

Fixed

  • Quick Response in RMA edit form
  • Issue with merged js in production mode

1.1.0

(2016-12-08)

Fixed

  • "Items" column in Rma grid

1.0.8

(2016-06-24)

Improvements

  • Support of Magento 2.1.0

1.0.7

(2016-05-06)

Fixed

  • Issue with sending emails via office.com smtp

1.0.6

(2016-04-11)

Fixed

  • Issue with menu
  • Fixed an issue with generation RMA increment ID

1.0.5

(2016-03-24)

Fixed

  • hide button "Print RMA Shipping Label"

1.0.4

(2016-03-21)

Improvements

  • Email styles

Fixed

  • Compatibility with PHP7
  • Compatibility of print templates with Proto theme

1.0.3

(2016-03-07)

Fixed

  • Problem with shipping block on the RMA page in frontend

1.0.2

(2016-03-03)

Fixed

  • RMA2-23 - Visible HTML tags in emails

1.0.1

(2016-03-01)

Improvements

  • Backend and Frontend styles

Fixed

  • RMA2-22 - Issues with PHP 7

1.0.0

(2016-02-01)

  • initial stable release