AUTOMATING CUSTOMER RETURNS
BUYING INVENTORY & RETURN MATERIAL AUTHORIZATION (RMA)
RMA support inside SendSafe can be used to enable automated returns of orders and / or purchasing of items from customers for resale. RMA Orders are negative dollar values which are tallied against positive dollar value product orders. The result is an accurate cash balance is maintained in the database.
This RMA function does not currently automatically issue credit card credits. This functionality can be added.
RMA Return items and items for purchase are mutually exclusive and cannot be placed in the same shopping cart.
See also: RMA Orders Admin page for more information on using the RMA admin page.
Sections:
Steps to process an rma order
RMA order structure
RMA line item structure
RMA special db items
RMA lineitem disposition flags
RMA Event Date Stamping
RMA System Configuration
Stages of an RMA
Automation of RMA Process
RMA shipper / packaging material job
I-CRM RMA nag job
RMA items checkin job
Disposition handling job
Adjusted Trade Offer Price Calculation
Zero Cost Limiting of Adjusted Trade Offer Price Calculation
Automatic ATO acceptance
RMA reinventory job
Inventory Tracking
*RMA Request chart can be clicked on to open an enlarged view

*RMA Fulfillment chart can be clicked on to open an enlarged view

The three steps outlined below is the general process that is followed for handling an RMA order.
There are four key RMA Admin pages which will be used for processing RMA Orders. These pages are:
RMA Order
RMA Order Report
RMA Receiving
RMA Inspection
*All these admin pages can be found in the main Navigation links on any admin page.
To open your admin pages type the appropriate URL into your web browser
i.e. https://www.yourdomain.com/SendSafeAdm/v2.RMAOrder.asp
RMA Step 1 Send a shipping container to the customer (optional). The RMA Order Report page can be used to print shipping container labels and advance an RMA order to the next step (this is called activating the next step).
If you print labels for an order an automated e-mail will be sent to the customer informing them that packing material has been sent to them: i.e. "Your shipping container has shipped"
If you are sending a shipping container to the customer, open the RMA Order Report Admin page and enter an appropriate date
range AND set the Process Step to 10. From the report results, select the orders you wish to
send shipping containers by placing a checkmark to the left of them and then press the [ Print Label / Activate ] button.
Once the button is pressed you will be presented with a printable list of shipping labels for the shippers.
You should never process more than a few dozen orders at a time because the pages of barcoded shipping labels can grow very large.
Batched label printing solutions can be implemented. Typically the shipping label is printed by the customer and not e-commerce
business and therefore, this limitation in printing shipping labels is seldom a factor.
https://www.yourdomain.com/SendSafeAdm/vao.RMAOrderReport.asp
The size of the RMA report is limited to 100 entries. This means you can print up to 100 labels per report. If you have more than 100 RMA order to process, you will need to do them in groups of 100 labels. To do this follow these steps:Notes:
- Select a date range
- Select "Process Step" = 10 from the dropdown box
- Press the [ Create Report ] button
- Select all the orders (checkbox)
- Press the [ Print Label / Activate ] button
- Print the labels
- Go back to step#3 and press the [ Create Report ] button - The report will list the next 100 orders for printing.
RMA Step 2 Check in the RMA returns as they are received. The RMA Receiving page is used when the returned items are received at your shipping dock. This page activates the next RMA step and will cause an e-mail be sent to the customer “We received your returned item.”
This page also sets the RequiredShipDate in each lineitem of the order. This setting of the RequiredShipDate established the date and time that the RMA return hit your recieving dock. This date is critical because it controls the order in which RMA Orders are processed for final disposition and it effects how items appear in RMA related reports such as the accounting report.
When receiving an RMA order at your shipping/receiving dock, you must start the item check-in process with the RMA Receiving Admin page.
https://www.yourdomain.com/SendSafeAdm/vao.RMAReceiving.asp
To receive items follow these steps:Once this order step is activated on the RMA Receiving admin page, the page will remain open for the next order to be entered. This is useful if you are using a hand scanner to read in each package's RMA# by scanning the barcode on the label.
- Open the RMA Receiving Admin page
- Enter the RMA Order Number or Serializer Number into the webpage.
- Press the [ RECEIVING STEP ACTIVATION ] button.
- The customer's name and address will be displayed (you should double check that the correct RMA# or Serializer# was entered by comparing the name and address displayed with that on the packages return address label.
- Repeat steps #2 and #3 for all RMA packages being recieved.
RMA Step 3 Inspect the returned items for completeness and defects. The RMA Inspection page is used for this step in the RMA Process. Open the RMA Inspection page and enter or scan either the RMA Order number or Serialzer number into the form then press the [ Inspection Step Activation ] button. Pressing the button will advance the RMA Order to the Inspection step, open the RMA Order Admin page, and load the order into the page. The RMA order is flagged with the customerId of the employee who is doing the inspection (i.e. the customerId logged into the admin page). This information is saved in the InspectedBy column.
On the multi-line-item admin page you can enter final disposition of the returned items. The drops downs for each line item are used to:
You can manually unlock a record, but this can result in unpredictable processing of that order. To unlock an order, load it into the normal Order admin page (not the RMA order page). In the normal order admin page, set the processStep 15 and delete any date in the AcklFulFillmentCompleted field. Save the order once these changes have been made. The order is now unlocked and the process step has been set back to the RMA inspection step. You can set the step all the way back to 10 (which result in the order being completely reworked and the customer receiving additional duplicate e-mails).
Important! You may lose disposition flag settings, if you unlock an order and attempted to save it when any of the Disposition flags are set to values automatically assigned by the RMA system (i.e. values not available in the dropdown – for additional information: see Disposition flags automatically set by the system).
The drop down boxes for price-adjustment codes can be selected for each line item in an RMA order. You can also print a traveler AND go to the OrderLineItem admin page where you can manually adjust the price of each returned item in addition to any price adjustments automatically entered by selecting adjustment codes.
Important! If you change a price in the LineItem page you must reload the order in the RMA order page so that the RMA order page can re-adjust the order totals (if so desired). Some companies chose to leave the price discrepancy in place to flag the order as price adjusted.
If an item is flagged as needing repair, the system will automatically issue an Adjusted Trade Offer (ATO) e-mail to the customer (as part of automated procssing). The ATO will not be issued until all items in an RMA order have had RMA disposition flags entered.
When inspecting an RMA order for defects and completeness, you should start with the RMA Inspection Admin page.
https://www.yourdomain.com/SendSafeAdm/vao.RMAInspection.asp
Notes:
- RMA Disposition Flags appearing inside [ braces ] in the dropdown list are values set by the system, not the user. The user cannot set disposition flags within [braces] on the RMA Order page and should not manually do so using the Admin LineItem page.
- Flags and other information entered into the form is not saved until the [ Save Information ] button has been pressed
- By default, the "Display All Fields" option is set to hide. If you need access to all the fields in the RMA Order you can set this dropdown box to "show all" which will reveal all the fields.
- Printing travelers from some browser will print a header and footer on the page. This printing is not under the control of the RMA System. To disable printing headers and footers either: (a) change the printing preferences in the browser OR (b) make the registry changes listed below for Mircosoft I.E.
Setting these two registry keys to empty values will disable header and footer printing in IE:
- HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\PageSetup\header
- HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\PageSetup\footer
RMA Step 4 Accept or Reject Adjusted trade offers (ATO). This optional Step is for orders which received Adjusted Trade Offers. If a customer receives an ATO they will be sent an e-mail with a link to a webpage which displays the ATO. The custonmer can either accept or reject the offer by pressing a button on this webpage. The RMA system can be optionally configured to automatically accept an ATO if the customer does not rejected it in a specified number of hours (see: RMA AUTOTRADEADJ). You can check on the status of an ATO by opening the RMA Order page and looking at the RMA Disposition Flags. The flags can be any listed value:
ATOs can only be accepted or rejected in their entirety. The is no provision in the system to accept only part of an ATO.
When an ATO is sent the AckRMACheckIssued DB column is date stamped. This date stamp is used by automatic ATO acceptance logic, to later automatically accept the ATO if the custom does not respond in the required time.
RMA order records differ from sales orders in some ways and are the same in other ways.
RMA number is the transactionid of the order.
RMA orders have an ApprovalCode entry same a sales order.
RMA orders which are pending completion have a status {REQUEST ACCEPTED} and will include a semicolon delimited flag of: ";RMA" (see: order status)
RMA orders which are complete have a status {COMPLETE} code the same a sales order but will include a semicolon delimited flag of: ";RMA" (see: order status)
RMA orders have a negative dollar amount unlike sales order. This negative amount can be directly tallied against sales orders so that net true sales dollars can be reported.
For a normal RMA, the item is added to the basket is a special case DB Items that has been set up as an RMA return item. This item is identified by the SKU = Application("RMAGenricReturnItemSKU") and can NOT contain the substring Application("RMAItemTag") in it. This item must have the ProductType set to (or prefaced by) Application("RMAItemTag").
RMA orderlineitem records differ from sales orderlieitem in some ways and are the same in other ways. RMA OrderLineItems are added to the cart from either orders OR a special type of Item which is used only to issue credits to customers (for example purchasing items from a customer for resale).
RMA ItemParameter field contains a coding which indicates the details of the returned item:
[RMAITEMTAG]-[ORIGINALSKU]-[ORIGINALTRANSACTIONID]
| [RMAITEMTAG] | A keyword/flag which can be used to differentiate types of RMA returns. (see also: Application("RMAItemTag") |
| [ORIGINALSKU] | This is the SKU of the product being returned. |
| [ORIGINALTRANSACTIONID] | (Optional) This is the order# (transactionid) of the order from which this product being returned. This field may not be used (for example) if items are being purchased by the store from a customer for resale. |
RMA AltItemDescription field contains keywords which indicate the disposition of the item (see RMA LineItem Disposition).
Special purpose items can be entered into the database as RMA items. An RMA item is used to allow the customer to select a product to be returned whether they have previously placed an order for the product or not. RMA Items are useful for businesses which buy equipment from customers and / or allow a customer to return an item without identifying the original order it came from.
RMA Items are identified in two ways: (1) The ProductType of an RMA item must EQUAL the reserved keyword: "I-RMA" defined by Application("RMAItemTag") (2) The SKU must be set to the same keyword + the SKU of the original DB Item or type of item being returned. (see also: Application("RMAItemTag")
Example of SKU:
| [SKUPREFIX] | Application("RMAItemTag") default value = "I-RMA" |
| [ORIGINALSKU] | This is the SKU of the product being purchased by the store or returned. |
RMA LINEITEM DISPOSITION FLAGS
RMA AltItemDescription field contains keywords which indicate the disposition of the item. This field can contain any of the keywords (flags) listed below. The keywords listed in RED are manually set by the store (employees). The keywords listed in BLACK are automatically set by the system.
These flags are set using the RMA Order page. The flags displayed on the RMA page after an order has been released for
processing and completed processing (i.e. ProcessStep > 16) can be used to determine which flag was originally selected
before the order was released for processing. For example: if you see the flag RMA-FINALIZED-ACCEPTED this means that RMA ACCEPTED
was the disposition flag that was set when this order was released for processing.

| RMA-ACCEPTED | This flag is set by the store manually after inspection of the product. The return has been accepted and a full credit will be issued. |
| RMA-FINALIZED-ACCEPTED | This flag is set by the system and indicates the disposition of this item has been processed by the system. |
| RMA-REPAIR | This flag is set by the store manually after inspection of the product. The return can be accepted for less money; an "adjusted trade offer" is issued. |
| RMA-PENDING-REPAIR | This flag is set by the system and indicates the disposition of this item has been processed by the system and that an "adjusted trade offer" has been issued. |
| RMA-PENDING-REPAIR-ACCEPTED | This flag is set by the store manually if an adjusted trade off has been accepted, by the customer when responding to an ATO via an offer-webpage generated by the system or (optionally) automatically if the acceptance period has expired. |
| RMA-FINALIZED-REPAIR-ACCEPTED | This flag is set by the system and indicates the disposition of this item has been processed by the system and that an "ATO" has been accepted. |
| RMA-PENDING-REPAIR-REJECTED | This flag is set by the store manually if an adjusted trade off has been rejected. This flag can be set either using the RMA Order Admin page OR by the customer when responding to an ATO via an offer-webpage generated by the system. |
| RMA-FINALIZED-REPAIR-REJECTED | This flag is set by the system and indicates the disposition of this item has been processed by the system and that an "adjusted trade offer" has been rejected. |
| RMA-REJECTED | This flag is set by the store manually after inspection of the product. The return is rejected. The rejected flag is all or nothing for an order. If any item in an order is flagged as rejected then the entire order is rejected. Rejected orders should be voided after the order has completed processing and is set to ProcessStep code = 18. |
| RMA-FINALIZED-REJECTED | This flag is set by the system and indicates the disposition of this item has been processed by the system. |
Certain events are date stamped in the database:
| DB Column | Description |
| AcklFulFillmentCompleted | The date on which the order was finalized. |
| AckRMACheckIssued | The date on which a "check your order" e-mail was sent the customer (i.e. an ATO was sent). |
| NagIssued | The last date on which a Nag e-mail was sent to the customer. |
SendSafe global.inc.asa file:
| Keyword | Description |
| Application("RMAEnabled") = false | Set true / false to enable and disable the optional RMA functions. |
| Application("RMAReturnPackagingUsed") = false | Set true if the store sends out return packaging to the customer. This is a global flag and effects all RMA orders, not individual orders. |
| Application("RMAItemTag") = "I-RMA" | The reserved keyword used identify RMA items in the ProductType DB column; and used as a SKU PRefix. |
| Application("RMABlockbrowsing") = true | (Special hook control) Set to true will prevent RMA items from being displayed in optional CPrompt product browsing and search pages. Any item matching: Select * from xxx where producttype like 'Application("RMABlockbrowsing")%' |
| Application("RMAGenricReturnItemSKU") = "RETURN" | Set the SKU value of the generic return item in the DB. This value is used to locate the Item record which will be used as a template for all returns from an order. |
| Application("RMAReturnDefectFlags") = "AAA,BBB,CCC" | Flags used to assign automatic price adjustments for missing parts or damaged items found in an RMA (see Special Pricing Flags). |
| Application("RMAReturnDefectFlagsEnglish") = "Broken Case,Will Not Power On,Incomplete Housing | These english discriptions are used for the Application("RMAReturnDefectFlags") in the ATO. There must be a 1:1 corrispondance between english text and the RMAReturnDefaultFlags. |
| Application("RMADisposition") = "RMA-ACCEPTED,RMA-REPAIR,RMA-PENDING-REPAIR-ACCEPTED,RMA-PENDING-REPAIR-REJECTED,RMA-REJECTED" | Defines the product disposition flags which are settable by the user via the RMA Order Admin page. |
| Application("RMAServiceContracts") = "Contract1,Contract2,Contract3,Contract4" | Defines a dropdown list of service contract options. Leave empty to disable list. This value is used to update the servicecontract field in the database. |
| Application("RMAServiceContracts") = "Contract1,Contract2,Contract3,Contract4" | Defines a dropdown list of service contract options. Leave empty to disable list. This value is used to update the servicecontract field in the database. |
| Application("RMAHideTransactionId") = false | Yes/No hides the transactionid in the RMA Order Admin page when the hide fields option is selected. |
| Application("RMASerialNumLabel") = "S/N: " | Configures the serial number entry field label on the RMA Order Admin page and elsewhere. |
| Application("RMADispositionOptions") = "Bin1,Bin2,Bin3,EmptyBin" | Configures the options for final disposition inventory for a given line number. This value is used to update the RMADisposition field in the database (see also inventory tracking |
| Application("RMASoldInventoryBid") = "Sold" | Defines the inventory bin into which sold products are moved; applies to both RMA and sales (see also inventory tracking |
| Application("RMAContractLabel") = "Service Contract:" | Configures the service contract entry field label on the RMA Order Admin page and elsewhere. |
| Application("RMABrandLabel") = "Brand:" | Configures the BRand entry field label on the RMA traveler. |
| Application("RMASKULabel") = "SKU:" | Configures the SKU entry field label on the RMA traveler. |
| Application("RMATravelerWidth") = 4 | Printed width of traveler in inches. |
| Application("RMATravelersPerPage") = 2 | Number of travelers printed per page |
| Application("RMATravelerSNBarCodePrefix") = "<img height=100 width=300 src='../CreateBarcode.asp?BackColor=White& BarColor=Black& CheckDigit=& CheckDigitToText=& NarrowBarWidth=0.04& Orientation=0& Symbology=2& ShowText=ON& Wide2NarrowRatio=2.0& Width=300& Height=100& Data=" | Serial number barcode control. Set to empty to disable barcode. Prefix HTML used for barcode printing. Appended at the end of this prefix will be ascii text which is to be encoded in the barcode. |
| Application("RMATravelerSNBarCodePostFix") = "'>" | This is post fixe HTML which appended to the barcode string after the ascii text which is to be encoded in the barcode is appended. |
| Application("RMAAdjustedTradeOfferAboveButtonText") = "Please select whether you accept or reject this offer" | Text displayed above ACCEPTANCE button for ATO.. |
| Application("RMAtravelerHideTransactionId") = false | If true the RMA@# number will not be printed on the traveler (only reference number will be serializer). |
| Application("RMAShipAdrLabelArea1") = "position: relative; top: 1in; left: 0.5in; WIDTH: 4in;" | Controls the position of the first instanace of shipping address. If Empty THEN no address is printed. |
| Application("RMAShipAdrBarcodeArea") = "position: relative; top: 3in; left: 0.5in; WIDTH: 4in;" | Control the position of the RMA & Serializer + barcode. If empty THEN nothing is printed |
| Application("RMAShipAdrLabelArea2") = "position: relative; top: 4in; left: 0.5in; WIDTH: 4in;" | Controls the position of the first instanace of shipping address. If Empty THEN no address is printed. |
| Application("RMAShipAdrBarCodePrefix") = "<img height = 200 width = 300 src = '../CreateBarcode.asp?BackColor = White&BarColor = Black&CheckDigit = &CheckDigitToText = &NarrowBarWidth = 0.07&Orientation = 0&Symbology = 2&ShowText = ON&Wide2NarrowRatio = 2.0&Width = 300&Height = 200&Data = " | RMA# or Serializer barcode control. Set to empty to disable barcode. Prefix HTML used for barcode printing. Appended at the end of this prefix will be ascii text which is to be encoded in the barcode. |
| Application("RMAShipAdrBarCodePostFix") = "'>" | This is post fixe HTML which appended to the barcode string after the ascii text which is to be encoded in the barcode is appended. |
| Application("RMAShipAdrBarCodeTransactionId") = false | Enabled creation of a transactionid barcode. |
| Application("RMAShipAdrBarCodeSerializer") = true | Enabled creation of a serializer barcode. |
| Application("RMAShipAdrLabelUnitsPerBox") = 0 | Set to the number of units per box. The label printing function will print one label for every N units. Set to zero to only print one label per RMA. |
| Application("RMAUnitsReportWithDisAssignSQLSelect") = "'Disposition'=RMADisposition, 'OrderLineItem#'=orderlineitem.LineItemId, 'FullName'=FullName, 'Serial#'=SerialNumber, 'C/N'=Serializer" | Selection string used for Inventory Disposition on the Units Admin page. |
| Application("RMAUnitsReportWithDisAssignSelBy") = "OrderLineItem#" | Selection column used for Inventory Disposition on the Units Admin page. This control which column works with the checkbox. |
| Application("RMAUnitsReportWithDisAssignOrderBy") = "order by orderlineitem.LineItemId" | String assigned sort order for Inventory Disposition on the Units Admin page. |
| Application("RMAUnitsReportWithDisAssignEmptyBin") = "EmptyBin" | This is the empty bid. Any items placed in this bid will not show up on the units report. Leave this string empty to disable. |
| Application("RMAOrdersReportCustomPrinter") = "" | The name of a page to open in addition to labels when activation is performed. This page will be passed the same parameter list as the label printing page (a list of transactionId's). Leave empty to disable. |
| Application("RMAAdjustedTradeOfferAlternateButton") = "" | Setting this variable to anything other than zero will cause the HTML contents of this variable to be displayed instead of the Accept/decline dropdown and SUBMIT button on the ATO. |
| Application("RMAReversePricingDisplayATO") = 1 | This variable is mltipled by all price amounts displayed in the ATO. So setting this value to -1 will cause all (negative) RMA Order values to display as positive values in the ATO. Setting this value to 1 will cause all (negative) RMA Order values to display as negative values in the ATO. |
SendSafe storefront.config file:
There are several stages in the RMA Process. Each stage is defined by "ProcessStep" in the OrderPostProc record.
| Stage / ProcessStep Code | Description |
| #10 | RMA Order received and accepted by the system for processing. An acknowledgement e-mail with instructions and RMA# has been sent to the customer. The RMA Number = Transactionid. This is an idle state in which the system will pause until advanced to step#11 or RMAReturnPackagingUsed = false and the items being returned have come in and this Step is advanced to step#13. |
| #11 | (Optional Step) Return Packaging and instructions has been shipped to the customer. This step code is set/changed by either: (a) Return material label printing page or (b) Manually via the RMA Order Admin page. |
| #12 | (Optional) Idle state. The system is waiting for items to be returned IF RMAReturnPackagingUsed = true. This idle state is automatically set by the system. This idle state is logically equivalent to Process Step #10 (above). |
| #13 | Returned items received by the store from the customer. This step code is set/changed by either (a) RMA Order Received by shipping/recievinig department STEP ACTIVATION page or (b) Manually via the RMA Order Admin page. At this stage the items have not been inspected for defects or completeness at this stage. Travelers can be printed. |
| #14 | Idle state. Returned RMA items received from the customer confirmation e-mail has been sent. The items have not been inspected for defects or completeness at this stage. |
| #15 | Returned RMA items are in the process of being inspected for completeness and damage. This step code is set/changed by either: (a) RMA Items Inspection STEP ACTIVATION page or (b) Manually via the RMA Order Admin page. During this stage each LineItem in the order will be flagged with disposition and adjustment codes. Travelers can be printed. |
| #16 | Returned RMA Order has been released for processing. All adjustments and other information is being processed and final disposition assigned. The order will stay in this state (unless and) until all lineitems are accepted OR an ATO has been responded to by the customer. In step 16 the order can no longer be modified in the RMA Admin page. E-Mails on this order including ATO will go out to the customer at this time. |
| #18 | RMA Fully processed. |
| #19 | RMA items set for resale. |
MANUAL STAGES FOR HANDLING OF RETURNED ITEMS
When an item is received for return a number of steps should be followed. Some of these steps will result in automated actions being taken by the system.
OPTIONAL STAGE #11: If a return container (and /or physical shipping instructions) has been sent to a customer the ProcessStep for the order is advanced to #11 (see stages above for more info).
STAGE #13: Once a returned item has been received by the shipping/recieving department (but not yet inspected), the ProcessStep for the order is advanced to #13 (see stages above for more info). This step advancement would typically be done by a STEP ACTIVATION page.
STAGE #15: When ready to inspect RMA items for defects and completeness, the processStep is advanced to #15 (see stages above for more info). This step advancement would typically be done by a STEP ACTIVATION page. The disposition of the item must have been previously entered into the OrderLineItem record. An optional comment can also be added/appended to the comment field for the item. For "adjusted trade offers" - the flag on the lineitem is changed manually by the store to RMA-PENDING-REPAIR-ACCEPTED or RMA-PENDING-REPAIR-REJECTED depending upon the decision of the customer. These changes are made in the RMA Order Admin page.
STAGE #16: The order is released for processing by pressing the Process Order button on the RMA admin page.
RMA Return Packaging material has been sent to the customer. A confirmation E-Mail is automatically sent by the system when it finds a step code of #11 for an order. The system checks for RMA orders (i.e. orders with a step code of #11. The rate of checking is determined by the scheduling of the RMA Packaging Material job. When the system finds orders with a status code of #11, it automatically sends out confirmation e-mail and then bumps the step code #12 (an idle state).
This job sends e-mail notices to customers that RMA Return (container) Packaging material has been sent to them.
This function is run by a JobQueue job which looks like the example below:
| Parameter | value |
| param1 | This is the from address and subject line for the message (note the RMA number will be appended to the subject line): [from address];[subject line] EXAMPLE: sales@mybiz.com;RMA#[ORDERNUMBER] Return Container Shipped |
| param2 | This is the message body for the e-mail: The following varables are replaced with the correct values: EXAMPLE: A shipping container for you return order [ORDERNUMBER] has been shipped. |
| param3 | max number of orders to process each pass (max value = 500) |
Notes:
I-CRM Nag E-Mail is sent by the system to the customer when the return has not been received for N number of days. The system checks for RMA orders pending returns (i.e. orders with a step code of #10 or #12 depending upon whether you are using the optional Shipping Material Step#11). The rate of checking is determined by the scheduling of the RMA NAG job. When the system finds "old dated" orders with a status code of #10 or #12, it automatically sends out confirmation e-mail and sets the NagIssued date. The SQL Select logic used to pick orders for this NAG E-Mail is configurable; as a result, this means that several Nag jobs can be run concurrently, which each looking for different conditions to send a NAG e-mail.
For example: A NAG job could be looking for Step #10 and NO NagIssued date and a difference of greater than 10 days and less than 15 days between NOW and the OrderDate.
For example: A NAG job could be looking for Step#12 and A NagIssued date with a difference of great than 20 days and less than 22 between NOW and the NagIssued date.
This job sends e-mail notices to customers that their return has not been recieved yet.
This function is run by a JobQueue job which looks like the example below:
| Parameter | value |
| param1 | This is the from address and subject line for the message (note the RMA number will be appended to the subject line): The following varables are replaced with the correct values: EXAMPLE: sales@mybiz.com;We have not received your return order RMA# [ORDERNUMBER];Time is running out. We have not received your return. |
| param2 |
This is the SQL selection statement (all select statements MUST include a TOP clause): [SQL SELECT STATEMENT] EXAMPLE: Select TOP 50 Orders.Transactionid, email from .... |
| param3 | n/a |
Notes:
Items Received Confirmation E-Mail is sent by the system once the returned items are checked in as received (but not yet inspected). The system checks for RMA orders (i.e. orders with a step code of #13. The rate of checking is determined by the scheduling of the RMA Checkin job. When the system finds orders with a status code of #13, it automatically sends out confirmation e-mail and then bumps the step code #14.
This job sends e-mail notices to customers that the returned products has been received (but not checked yet.
This function is run by a JobQueue job which looks like the example below:
| Parameter | value |
| param1 | This is the from address and subject line for the message (note the RMA number will be appended to the subject line): [from address];[subject line] EXAMPLE: sales@mybiz.com;Your returns been recieved for RMA#[ORDERNUMBER] |
| param2 | This is the message body for the e-mail: The following varables are replaced with the correct values: EXAMPLE: Your returned products for [ORDERNJUMBER] have been received.. |
| param3 | max number of orders to process each pass (max value = 500) |
Notes:
Return Disposition handling is performed on items once the disposition is flagged. The system checks for RMA orders (i.e. orders with a step code of #16. The rate of checking is determined by the scheduling of the RMA Disposition job. Once all items in an order have been flagged and disposition processed, the system will automatically bump the order to Step#18 (complete). See disposition handling job for more details.
Disposition handling includes:
This job will continue to check all orders with a step#16 and items disposition set to null or any other value other than a flag which contains the phrase "RMA-FINALIZED" ...
Once an order is found to contain step#16 and all items are flagged with a disposition of "RMA-FINALIZED" then this job will bump the order to step#18 (completed) after processing has be completed.
This job will sort orders for processing based on the RequiredShipDate. The sort is descending so the first order to be handled by this function will the order most recently recieved at your shipping dock and then orders working backward in time. This sorting is done to prioritize processing older orders which have not been recieved by your shipping department. Make sure you set param3 (max order processed at a time) to a value that is equal to or larger than the number of orders which are handled by your company in any 24 hour period divided by the number of minutes between each run of this job. Setting this value too low can result in RMA orders being ignored by the system for final disposition for a period of days. A good starting point for this value is 50.
This function is run by a JobQueue job which looks like the example below:
| Parameter | value |
| param1 | This is the from address and possible subject lines for the message (note the RMA number will be appended to the subject line): [from address];[subject line rejected];[subject line accepted];[subject line trade offer];[subject line accepted trade offer] EXAMPLE: sales@mybiz.com;Your return has been rejected;Your return has been accepted;Adjusted trade offer;The adjusted trade offer has been accepted |
| param2 | This is the possible message bodies for the e-mail (note the RMA number will be appended to the message text): The following varables are replaced with the correct values: EXAMPLE: Your return has been processed and cannot be accepted. Your items are being returned to you;Your return has been processed and a check issued.;Your return is not in factory fresh condition. We can offer you the following refund or return the items to you.;The adjusted trade offer for your return has been processed and a check issued. |
| param3 | max number of orders to process each pass (max value = 500) |
Here is a list of disposition codes and actions taken by the system:
| RMA-ACCEPTED | The job will send out an accepted e-mail and flag the item RMA-FINALIZED-ACCEPTED. |
| RMA-REPAIR | The job will generate an "adjusted trade offer" and flag the item RMA-PENDING-REPAIR. |
| RMA-PENDING-REPAIR-ACCEPTED | The job will send out an accepted e-mail for the "adjusted trade offer" and flag the item RMA-FINALIZED-REPAIR-ACCEPTED. |
| RMA-PENDING-REPAIR-REJECTED | The job will send out a rejected e-mail for the "adjusted trade offer" and flag the item RMA-FINALIZED-REPAIR-REJECTED. |
| RMA-REJECTED | The job will send out a rejected e-mail for the entire "RMA order" and flag the specific item as RMA-FINALIZED-REJECTED. |
Notes:
ADJUSTED TRADE OFFER PRICE CALCULATION
An ATO is automatically generated by the system. The adjustment of the order can be done in any combination of the two ways listed below. Any adjustments to the order must be completed before the ProcessStep is set to #16 (order released for processing).
Special Price adjustment flags are entered into OrderFlag column of each effected OrderLineItem. The flags are SKU# PostFixes which identify "Adjustment Items." Each postfix flag is enclosed in "{}". There is a maximum of four flags allowed per lineitem. "Adjustment Items" control values which will be used to adjust the offer. For example:
- If a lineitem with a SKU = "VX100" has a ordersflag = "{BXD}."
- This would instruct the system to look for an item in the database with a sku of: VX100-BXD.
- If the item is found, the lineitem has it's price decreased by the PriceEA of the VX100-BXD item.
If adjustment flags are present, they must be contiguous and they must be delimited from other order flags by a comma. Allowable flags are defined using the Application("RMAReturnDefectFlags") and by adding Adjustment items to the DB. Example of flags in an orderlineitem:
If a lineitem has a ordersflag = "{BXD}{TTX}{VVX}." These flags mixed with other flags would look like this:
NOPT,PLSTINSZERO,{BXD}{TTX}{VVX},MULTIADDR
The "Adjustment Item" is defined by its special composite SKU#. The ProductType for Adjustment Items can be anything you want; though we recommend that you set the productType to something like: Application("RMAItemTag")+PRICE ADJ i.e. I-RMAPRICEADJ. This will make it easier to block these items from product browsing (which is typically required).
Zero Cost Limiting of orders will prevent any RMA order from going above $0.00 (i.e. the customer would owes the business money). RMA Orders are negative dollar values which are tallied against positive dollar value product orders. The result is an accurate cash balance is maintained in the database. If sufficient problems / damage are found on a RMA, the refund price can be adjusted all the way to zero. For orders with more than one item, an individual line item can go above zero, however the entire order amount will be limited to $0.00. Zero cost limiting is in effect both during automatic and manual ATO calculations.
Specific "Adjustment Items" can be configured to limit their effect on the price of a returned item. If an "Adjustment Item" contains a SpecialPrice in its record then this SpecialPrice will set a limit as to how low the dollar value of the refund can be reduced by this special "Adjustment Item." For example if an "Adjustment Item" has a SpecialPrice = -1.00 then the value of the returned item (i.e. its refund) will be capped at a minium of one dollar. The use of SpecialPrice insures that a customer will recieve this miniumum about for the product when adjusted by the "Adjustment Item."
Examples:
*Please note that RMA orders contain negative dollar amounts for each lineitem and the total amount of an order. Because of this intrisict negative value, price adjustements are positive values. Adding the positive price adjustment to a negative order balance will reduce the negative balance (i.e. reduce the amount of the refund).
The default import value for SpecialPrice is $0.00
A special import tool is provided to import item records which are to be used as "Adjustment Items" - click here for information on this import tool.
Example of Adjustment Item SKU = [PARENTSKU]-[POSTFIX]
| [PARENTSKU] | This is the SKU of the OrderLineItem which can be acted on by this "Adjustment Item." |
| [POSTFIX] | This is the PostFix flag which completes the identification of this Adjustment Item - via flags like "{POSTFIX}" in the OrderFlags entry field. |
Notes:
RMA Items Reinventory is performed on items once all items are finalized disposition flagged and an order is in step#18 (completed). The system checks for RMA orders (i.e. orders with a step code of #18). The rate of checking is determined by the scheduling of the RMA Reinventory job. This job will adjust quantities of items in inventory for all the items in an RMA orders which have been flagged as salable.
This optional job moves items back into inventory (see also inventory tracking)
This function is run by a JobQueue job which looks like the example below:
| Parameter | value |
| param1 | This is the from address and subject line for the message (note the RMA number will be appended to the subject line): [from address];[subject line] EXAMPLE: sales@mybiz.com;Return Container Shipped |
| param2 | This is the message body for the e-mail (note the RMA number will be appended to the message text): [message body] EXAMPLE: A shipping container for you return order has been shipped. |
| param3 | max number of orders to process each pass (max value = 500) |
Notes: