Legacy platform

View or modify cart details

A store associate can view the cart and modify the details of the order or individual products in the order.

View cart details

After adding products to the cart from the Find Products page or the products are scanned, the store associate clicks Checkout. The View Cart screen is displayed by using the information that is retrieved from the getCompleteOrderLineList and getCompleteOrderDetails APIs. The getCompleteOrderLineList API is called to retrieve the order line details. The getCompleteOrderDetails API is called to retrieve order details, including order totals and any coupons that are applied. The API also retrieves customer details, including the customer's first and last names. On the View Cart screen, the store associate can view the following information:
  • A list of all products added to the cart.
  • Details for each product, including size, color, fulfillment method, quantity, and so on.
  • Options to perform additional tasks such as identifying the customer, overriding the price, applying gift options, coupons, adding shipping addresses for individual products, and so on.
  • The store associate can scan carry-out products on the View Cart screen.
    • When the store associate scans a product, the getCompleteItemList API is called to fetch product details.
    • The default quantity when a product is scanned is 1.
    • The modifyFulfillmentOptions API is called to add the product to the cart.
    • If the same product is scanned twice, two order lines are added with quantity as 1 for each order line.
    • The getCompleteOrderDetails API is called to retrieve the updated order details and refresh the screen on update of order or any orderline. For example, when a new product is scanned.

Add or modify cart products

When the store associate attempts to modify a certain quantity of a product, the getItemAvailabilityForStore API is called with the ComputeRealTimeAvailability attribute set to "Y" to retrieve real-time product availability. The quantity cannot be changed, if it is not available.

If the getItemAvailabilityForStore API returns availability for the product, the quantity can be changed, in which case, the modifyFulfillmentOptions API is called to update the quantity. However, modifying the quantity of a product can affect other order lines or the order at header level. The modifyFulfillmentOptions API is called to update the quantity of an order line and the API returns all the order lines that are modified.

The modifyFulfillmentOptions API can return the updated quantity but certain additional attributes that are required by the UI are not returned. Therefore, the getCompleteOrderDetails API is called to retrieve the additional attributes. After all the details are obtained, the View Cart screen is updated with the information.

Add or modify shipping address

  • From the View Cart screen, a store associate can add a shipping address for products that are being shipped. If the delivery method is ship to the customer, the store associate can click Add Shipping Address. The Add Shipping Address window opens and the store associate can add the information in the appropriate fields. When the store associate enters any of the address details, the following logic is executed:
    • If the region schema is defined for an organization, the city and state fields are automatically populated on entering zip code.
    • When the store associate clicks OK, the verifyAddress API is called. If the YCDVerifyAddressWithAVSUE user exit is configured, then the address is validated.
    • If the address is not valid, or there are multiple addresses found that match the input address, then the user is prompted to either modify the invalid address or select the correct address from the list of matching addresses.
    • If the address is valid, then the modifyFulfillmentOptions API is called to update the order with the address. If an address is updated on an orderline and there is no shipping address associated with the order, the address of the orderline becomes the shipping address for the entire order.
  • If the address exists, then the Name, City, and State from shipping address are shown and the address is displayed as a link. The store associate can modify the address by clicking the link. When there is no header level address defined and this is the first address that is added to any of the order lines, then it is stamped as default ShipTo address for the order. When an address is modified, the getItemAvailabilityForStore API is called to check the availability of the product for the new address. If the product is available, only then the modifyFulfillmentOptions API is called to update the orderline with the new shipping address.

Change delivery method

A store associate can modify the delivery method of a product by clicking the Edit icon next to the current delivery method. The Edit Delivery Method window is displayed with three tabs, one for each delivery method and its details. The getItemAvailabilityForStore API is called to fetch the product availability for all the three delivery methods. If a delivery method is not available for a product, then the delivery method tab displays a "Not Available" message and the OK button is disabled. The delivery method that was set initially on the order line is displayed.
  • If the delivery method is SHP and if a shipping address is not associated with the order, the store associate must enter the shipping address. The getCarrierServiceOptionsForOrdering API is called to retrieve the list of carrier services in the Ship tab. When a delivery method is ship, the current region is not taken into consideration for product availability.
  • If the delivery method is PICK, then the same logic as store selection window is applicable for the Pickup tab. See Alternate store selection.
When the store associate selects a particular tab to change the delivery method, the following logic is executed:
  • When the delivery method of a product is changed to In-Store, the modifyFulfillmentOptions API is called to change the DeliveryMethod attribute to CARRY and ShipNode attribute to the current store.
  • When the delivery method of a product is changed to Ship, the modifyFulfillmentOptions API is called to add the shipping address to the order, if the order does not already have a shipping address, the DeliveryMethod attribute is changed to SHP, and the CarrierServiceCode attribute is changed based on the selected carrier service option, if applicable.
  • When the delivery method of a product is changed to Pickup, the modifyFulfillmentOptions API is called to change the DeliveryMethod attribute to PICK and ShipNode attribute to the selected store.
    • A pickup recipient cannot be provided if the delivery method is changed to pickup. The name on the order is the customer who is purchasing the products.

Add carry-out products to a cart

A store associate can add carry-out products to a cart for a customer. When the store associate scans a product, the getCompleteItemList API is called to get the product details. The modifyFulfillmentOptions API is called to add the product to the cart with the delivery method as "CARRY". The default quantity for a scanned product is 1. If the same product is scanned twice, two order lines are added with quantity as 1 for each order line.

Identify customer

A store associate must be able to identify a customer by searching the existing records or creating a new customer, if required. When the store associate clicks Identify Customer from the View Cart screen, the Identify Customer window is displayed with two tabs:
  • Existing Customer
    • Existing consumer customers can be searched by first or last name, email, or phone number. The getCompleteCustomerList API is called to search for all existing customers.
    • For existing customers, if there are any associated addresses such as "Bill to" and "Sold to" created through channels other than Order Capture, such addresses are displayed when the store associate searches the customer. However, a customer created through Order Capture can only have a shipping address, which can also be used as billing address.
    • After the store associate finds the correct customer and clicks OK, the modifyFulfillmentOptions API is called to add the customer details to the order. If an address is associated with the customer account, that address is automatically made the shipping address for the order. If the store associate edits the address, the change is made only to the order and not saved to the customer account.
  • New Customer
    • If no record is found for a customer or if a customer is new, the store associate can select the New Customer tab to create a consumer customer.
    • When the store associate enters any of the address details for the customer and tabs out, the following logic is executed:
      • If the region schema is defined for an organization, the city and state fields are automatically populated on entering zip code.
      • Once the store associate clicks OK, the verifyAddress API is called. If the YCDVerifyAddressWithAVSUE user exit is configured, then the address is validated. If the address is not valid, or there are multiple addresses found that match the input address, then the user is prompted to either modify the invalid address or select the correct address from the list of matching addresses.
      • Once a valid address is selected, the manageCustomer API is called to create the customer.
      • The modifyFulfillmentOptions API is called to add the customer details to the order.

To change the customer information, the store associate can click the Change Customer in the customer panel, and the API calls are similar to that of creating a new customer. The store associate can also modify the address that is selected for the order by clicking the Edit icon. The Edit Shipping Address pop-up is displayed, the store associate enters the address, and clicks OK. The modifyFulfillmentOptions API is called to update the address on the order.

Apply or modify gift options

After all products are added to the cart, a store associate can make a single product as a gift or an entire order as a gift.
  • Apply gift at the line level: If a customer wants a product in an order to be a gift, the store associate can click Make this product a gift on the View Cart screen. The Gift Options window is displayed. In the window, the store associate can enter the gift recipient's name and a personalized gift message. If gift wrapping is allowed, a checkbox is displayed. Otherwise, checkbox is not displayed. When the store associate clicks OK to save the changes, the GiftFlag and GiftWrap attributes are set to the appropriate values, gift messages is added in the Instruction element with InstructionType as Gift, and passed at the order line level to the changeOrder API to save the changes.
  • Apply gift at header level: If a customer needs an entire order as a gift, the store associate clicks Gift Options on the View Cart screen, the Gift Options window is displayed. In the window, the store associate can enter the gift recipient's name and a personalized gift message. If gift wrapping is allowed, a checkbox is displayed. When the store associate clicks OK, the changeOrder API is called to apply the gift options to each product in the order with the GiftWrap and GiftFlag attributes set to the appropriate values.
  • The gift options for an individual product are overridden when the store associate makes the entire order as a gift.
  • To delete the gift options at the line level, the store associate can click the This product is a gift link and then Remove Gift. Alternatively to remove gift options at the header level, the store associate can click Remove in the Gift options panel. When the store associate clicks Remove, a message tells the store associate that the gift will be removed for all lines and asks whether to continue or not. Once the store associate confirms, the changeOrder API is called to set the GiftFlag and GiftWrap attributes to N.

Apply coupons

A store associate must be able to apply coupons to individual products or the entire order while completing the order capture flow. A store associate can either scan a coupon or enter the coupon code and then press the Enter key to apply the coupon to the order. The translateBarCode API is called to identify the coupon. Once the coupon is identified, the changeOrder API is called to apply the coupon to the order.
  • If the coupon is successfully applied to the order, the getCompleteOrderDetails API is called to refresh the order panel with the updated price. If the coupon is not successfully applied, an error message is displayed.
  • A store associate can delete a coupon by clicking the X icon next to the coupon. To remove a coupon, the changeOrder API is called with the ACTION attribute set to REMOVE in the Promotion element. The getCompleteOrderDetails API is called to refresh the page with the updated information.

Remove products from the cart

The store associate can remove a product from the cart by clicking the X icon next to each product. The modifyFulfillmentOptions API is called to delete the order lines. The modifyFulfillmentOptions API is called to update the order with deleted order lines. The getCompleteOrderDetails API is called to retrieve the additional attributes at line level and header level. After all the details are obtained, the View Cart screen is updated with the information.

Reserve availability

When the store associate clicks Continue to Payment after all of the products are added to the cart, the availability check and reservation of inventory are done based on the following rules:
  • The Reserve Product During Order Entry and Order Modification rule is used to determine whether reservation is required for an order.
  • The Check availability on cart details if number of order lines is less than rule provides the threshold number of order lines to identify an order as a large order and skip the availability check and reservation.
Based on the rules, if it is determined that reservation is required for the order, the reserveOrder API is called to check availability and reserve inventory for the order. Otherwise, if reservation is not required and the order is not a large order, then availability check is done for shipping and pickup order lines as real-time inventory information is available for pickup and ship products by calling the getOrderFulfillmentDetails API. If inventory is not available for the order lines, then the store associate cannot proceed to the payment page. If products are deleted from an order and the order is no more a large order, the products are reserved. However, if products are added to an order that already has reserved products and then the large order condition is met, reservations are not made for newly added products and the order remains partially reserved.