Release Features    

Date: JFM, 2021

New Releases and enhancements

The following are the new releases and enhancements.

  1. Compute order delivery ETA - home delivery
  2. ETA missed order flow
  3. Transfer order within parent location
  4. Transfer order with a reason

Compute order delivery ETA - home delivery

Problem Statement 

When a customer places an order from the website/mobile application, the customer does not receive any expected delivery time information, only communication of information is sent by the subsequent fulfillment process. 

Most of the logistics provide the ETA details but it starts only after the logistic picks up the package from the dispatch center. This means that the time taken by the store to pick-pack the order is not attributed. There are merchants who have to build the ordered products and the duration taken to build these products should also be part of delivery ETA.

Solution

The order ETA is derived from the logistics, product, and location ETA.

  • Logistic ETA: Our system is using the Logistics serviceability upload sheet that has ETA defined at the Pincode level. The ETA can be defined as a single value or a range. There are two ways to update logistic ETA.
    Navigate to Settings > Logistics > Bulk Upload or Settings > Logistics > Edit Pincodes
  • Product ETA: The product has an attribute - Delivery Time defined as a single value or a range.

    Navigate to Products > Product list > “Search for the SKU” > Edit > Basic Information or you can upload using the bulk product upload sheet by updating the column value of “Delivery Time”.

  • Location ETA: The ETA is defined in the location configuration which is the duration to pick-pack the product before handing it over to the logistics team. The value can be a single value or a range.

If there is a range defined (5-7 days, 4-6 hours, and more. ) then the maximum value will be considered for the overall ETA.
If the values defined (Single/Range) are just numeric then the calculation will not be processed. We need to define the values with the units - days or hours or mins.
Example:
Single value - 2 days, 12 hours, 30 mins, and more.
Range - 2-4 days, 12-24 hours, 30-90 mins, and more.

The total ETA appears at the product level and the calculation is,

Delivery ETA = Logistics ETA + Product ETA + Location ETA

If the ETA value is not defined then the default value will be zero.

Get the delivery details at the product level using API

Request URL

https://sg-gateway.ecom.capillary.in/oms/v1/order/getOrderDeliveryEta/{{merchantid}}/{{OrderId}}

Sample Response
{


    "entity": {


        "orderId": 15300563,


        "orderItemDeliveryEtaList": [


            {


                "orderItemId": 51866205,


                "deliveryEtaDays": 10,


                "deliveryEtaHours": 0,


                "deliveryEtaMins": 0,


                "sku": "154560",


                "variantSku": "154560.100.M",


                "etaDateTime": "2021-03-22T21:15:02",


                "warnings": [


                    {


                        "code": 1219,


                        "status": false,


                        "message": "Location Delivery ETA unavailable."


                    }


                ]


            },


            {


                "orderItemId": 51866207,


                "deliveryEtaDays": 10,


                "deliveryEtaHours": 0,


                "deliveryEtaMins": 0,


                "sku": "154584",


                "variantSku": "154584.600.L",


                "etaDateTime": "2021-03-22T21:15:02",


                "warnings": [


                    {


                        "code": 1219,


                        "status": false,


                        "message": "Location Delivery ETA unavailable."


                    }


                ]


            }


        ]


    },


    "uniqueId": null,


    "warnings": [],


    "errors": []


}

Postman collection: Try it.


For Storefront

To use this in any template (_Default_TrackOrder, _default_MyAccount_OrderDetails) initialize a variable with the property like:

var OrderDeliveryETA = Martjack.User.CurrentOrderCollection[0].OrderDeliveryETA;

The OrderDeliveryETA has the following properties exposed.

  • Errors: List of MJErrors for errors from OMS Java that occurred when fetching the order delivery ETA.
  • Warnings: List of MJErrors for Warnings from OMS Java that occurred when fetching the order delivery ETA.
  • OrderDeliveryETADict: This is the dictionary containing each item and their delivery ETAs. The structure is as follows: {orderitmeId: OrderItemDeliveryEtaobj} 
  • OrderDeliveryETADate: The Order level Delivery ETA date which is the maximum of its items Delivery ETA dates. This can be accessed by using the below code after initializing the variable.@OrderDeliveryETA.OrderDeliveryETADate.ToString()

The following properties are exposed for each item-level Delivery ETA.

  • DeliveryETADays, DeliveryETAHours, DeliveryETAMins representing the delivery Days, hours, and minutes respectively from the time it was authorized.
  • DeliveryETADate represents the ETA date.
  • Sku, VariantSku represents the order items SKU and variant SKU respectively.


To display item-level ETA in any grid to be shipped items grid, pending, shipping grid just use the ItemID as key for the above-mentioned dictionary. 

The following is an example code snippet.

@if(OrderDeliveryETA.OrderDeliveryETADict.ContainsKey(item.OrderItemId)){


  <div class="seller">


      <label>ETA:</label> <span>@OrderDeliveryETA.OrderDeliveryETADict[item.OrderItemId].DeliveryETADate.ToString()</span>


  </div>


  <div class="seller">


      <label>ETA days/hrs/mins:</label> <span>@OrderDeliveryETA.OrderDeliveryETADict[item.OrderItemId].DeliveryETADays / @OrderDeliveryETA.OrderDeliveryETADict[item.OrderItemId].DeliveryETAHours / @OrderDeliveryETA.OrderDeliveryETADict[item.OrderItemId].DeliveryETAMins</span>


  </div>


}
The above code is an example implemented in one of the test sites and the following is a web view generated with this code snippet.


ETA missed order flow

Problem statement

Notify the end consumer about the delayed shipment due to product non-availability at the store or logistics delay for various reasons. This also covers the delays due to various pre-RTO scenarios. 

Solution

  • The order or items with missed  ETA starts appearing on a dedicated screen ETA Missed Orders.
  • We can define the new ETA and provide a reason why the ETA was missed earlier.
  • The ETA Missed orders support the ETA update and reasons at the item level.
  • Bulk operations by uploading an ms excel file are supported.
  • There is a dedicated communication event - ETA Delayed that notifies customers through emails and SMS.

Transfer order within parent location

Problem Statement

Merchants who have multiple locations or stores distributed across multiple clusters or a geographical area were facing difficulty transferring an order or an item within the cluster. These merchants eventually end up transferring orders to another cluster which potentially increased the fulfillment cost and time taken to fulfill the orders. 

Solution

We have added a new configuration at the merchant level which will display the locations or stores that are defined under the parent location.

To access the above configuration, navigate to Settings > Application Settings > Order Settings > Filter available transfer locations by parent location

The locations displayed in the transfer order screen are sorted based on the distance when the latitude and longitude of store and delivery address are defined, else it is based on the highest stock available.

Transfer order with a reason

Problem statement

Merchants with multiple fulfillment locations where the order or item transfer was a regular activity, there was no trace of why an order was being transferred from one location to another. There were no details that can capture or extract for any item/order transfered from one location to another. 

Solution

We have provided an option now to select a predefined transfer reason while a transfer is initiated from one store to another.

The transfer reason selection is optional.
The order reports will start showing the transfer reasons.
The latest transfer reason will be reflecting on the order summary page.

We have also added a transfer history button that displays the transfer item details complete transfer history along with the transfer reason.