Global search

A store associate should be able to search for orders directly or orders created for a particular customer. Additionally, the store associate should be able search for products and shipments to provide relevant information to the customer.

Solution

The following section describes APIs, user exits, services, and other components.

A store associate can select Order, Customer, Product, or Shipment as the entry point and perform the appropriate search tasks. By default, Order is the entry point.
  • Order search
    The store associate can click the Global Search icon on the menu bar to search for an order. If the customer has a receipt, the store associate can search by the order number or scan a barcode on the receipt.
    • When the store associate scans the barcode on the receipt, the translateBarCode API is called to retrieve the order number. The getOrderList API is called with the order number to retrieve the details of the order.
      • If no translation is returned by the translateBarCode API, then the getOrderList API is called with the original input to the translateBarCode API, or the store associate can manually input the order number.
      • If multiple translations are returned by the translateBarCode API, an appropriate error message is displayed.
    • When the store associate manually enters the order number, the getOrderList API is called to retrieve the order.
      • If a single order is found and if the order is confirmed, the Order Summary screen is displayed. If the order is a draft order, the View Cart screen is displayed.
      • If multiple orders are found, they are listed and the store associate can select the appropriate order to view or modify.
      • If no orders are returned by the getOrderList API, an appropriate error message is displayed.
    • The order search also retrieves sales orders created through multiple channels. The order list displays a fixed number of records and the list is sorted by most recent orders first. Sometimes, a customer may not have the order number or the order receipt. In such cases, the store associate can click the Advanced Search link to search for the order using other criteria like customer's first name, last name, email id, phone number, zip code and payment method. For example, if store associate chooses payment method as one of the criteria, the getPaymentTypeList API is called to retrieve all payment types using the CallingEnterpriseCode attribute for the store. The payment type selected by the store associate is passed as input along with other search criteria to the getOrderList API to retrieve the matching orders.
    • The search displays a fixed number of orders. If there are more orders to load, a message is displayed indicating the store associate to refine the search. The store associate can use the filter option to narrow down the search result.
    • The search lists the orders placed by registered and unregistered customers. The order list provides details like order number, number of products, order channel, store name (in case of store purchase), date, order amount, status, customer name, and so on.
    • The getCompleteOrderLineList API returns images for a maximum of two products along with a count of remaining products in the order.
  • Customer Search
    • A store associate can click the Global Search icon on the menu bar and select Customer as the entry point from the adjacent menu. The store associate can type in the complete phone number of customer to search the customer. The getCompleteCustomerList API is called to retrieve the matching customers. The API does an exact match on customer phone numbers and returns the results. Alternatively, the store associate can click Advance Search link to narrow customer search using name, email, phone number, zip code and last digits of credit card.
      • If a single customer is retrieved, the customer details screen is displayed with the customer' order history.
      • If multiple customers are retrieved, the Customer List screen is displayed. After the correct customer is identified, the store associate can click View Orders for that customer.
      The getOrderList API is then called to retrieve the orders associated with that customer. Orders are sorted by most recent first and each order has details such as order number, count of products (order lines), order channel, status, order created date, order amount and so on. Draft orders are also displayed along with confirmed orders.
    • The getCompleteOrderLineList API returns images for a maximum of two products along with a count of remaining products in the order.
    Filter

    The store associate can filter orders using criteria like order date range, status and order channel. When the store associate clicks the Refine Order List option, the getCommonCodeList API is called to populate the entry type check boxes. The Order Statuses are picked from a pre-defined list in the OrderStatusList.json file, present in the <WAR>\ngstore\shared\order\ folder. The file is configurable, so you can customize the statuses as required. The store associate can select Search within store to look for orders created only by the current store.

    When the store associate selects the appropriate filter criteria and applies the filter, the filter criteria is passed to the getOrderList API to retrieve the orders matching the input criteria. Order status, date range, seller organization code, and a complex query with the appropriate EntryType attribute is passed as input to the getOrderList API to retrieve orders. For store channel, the EntryType is Store and for call center channel, the EntryType is CallCenter.

  • Product Search
    • A store associate can click the Global Search icon on the menu bar and select Product as the entry point from the adjacent menu. The store associate can search for a product using Product ID, Barcode or Keywords.
    • When the store associate enters the keywords and clicks the Search icon, the products that match the search are displayed on the Find Products screen. The searchCatalogIndex API is called with the ItemGroupCode attribute set to PROD, to fetch a list of products that match the keywords. When a product is selected from the list of matching products, the getCompleteItemList API is called to get details of the product.
    • Alternatively, if the store associate scans a product or enters a product ID and clicks the Scan button, the getCompleteItemList API is called to get the details of the scanned product.
    • When the product details are displayed, the store associate remains on the Find Products screen of the wizard.
  • Shipment Search
    A store associate can click the Global Search icon on the menu bar and select Shipment as the entry point from the adjacent menu. The store associate can either scan the shipment or order or search for a shipment using order or shipment number. Alternatively, the store associate can perform an advanced search for shipments using several criteria, which include order number or shipment number, fulfillment type, shipment status, carrier, and so on.
    • In the Fulfillment Type list, the store associate can select the appropriate fulfillment method. By default, All, Pickup, and Ship from Store are displayed.
    • The store associate can select an appropriate status from the Shipment Status list. You can register shipment statuses in the shipment-status.config.js file, present in the <WAR>\ngstore\store\config\ directory. To fetch the list of applicable statuses, a call such as iscShipmentStatus.getShipmentStatusConfig(All) is made, which returns all applicable shipment status for flow name All (default flow name for global shipment search). The iscShipmentStatusProvider is used to register the status for shipments against a flow name. Flow names can be Pick, Pack or All. It is customizable and if you want to add your own statuses, you can make a call to the iscShipmentStatusProvider to register new statuses for different flows. For example, iscShipmentStatusProvider.addShipmentStatusConfig(All,9000,shipmentList.LABEL_9000); Only statuses added against the flow All are listed here in the status list for shipment search.
    • The getScacList API is called to populate the carriers in the Carrier list.
    • To further narrow down the search, a store associate can choose to exclude shipments associated with transfer orders and orders being fulfilled by other stores. You can also search for shipments assigned to a particular store associate.
    • The store associate can also enter customer details such as first name, last name, phone number and email address as the search criteria and specify whether the customer is a pickup recipient or not.

    When the store associate performs a search, the getShipmentList API is called to retrieve the shipments that match the input criteria.

    The store associate can choose to sort the search results based on the Expected Ship or Pickup date. The CallingOrganizationCode and Entity = Shipment are passed to the getOrderByList service to populate the sorting options.

    The store associate can choose to filter the shipment search results based on shipment statuses. The statuses are fetched in the same manner as in search criteria. Based on the status of a shipment, a store associate with appropriate resource permissions can perform certain tasks on the shipment.

    • If the status is “Ready for Backroom Pick”, the store associate can print a pick ticket and perform backroom pick.
    • If the status is “Backroom Pick in Progress”, the store associate can choose to continue backroom pick initiated by another user. The store associate is prompted appropriately before proceeding. On confirmation, the shipment is assigned to the currently logged-in store associate who can proceed with the specific wizard flow.
    • If the status is “Ready for Packing”, the store associate can choose to pack the shipment.
    • If the status is “Packing in Progress”, the store associate can choose to continue with packing process already initiated by another user. The user is prompted appropriately before proceeding. On confirmation, the shipment is assigned to the currently logged-in store associate who can proceed with the specific wizard flow.
    • If the status is “Ready for Customer”, the store associate can start the customer pickup task.

Implementation

The following section describes the rules that you must configure.
  • The store associate must have the Order Search resource permission to search for orders.
  • The store associate must have the Customer Search resource permission to search for customers.
  • The store associate must have the Order Capture resource permission to search for products.
  • The store associate must have the Global Shipment Search resource permission to search for shipments.
For more information, see Administering user group permissions.