View fulfillment summary

During order creation or modification, users must be able to capture the requirements of the customer from an order fulfillment perspective.

Solution

This section describes APIs, user exits, services, and other components.

Capturing the fulfillment details is one of the stages in order creation. The user can view the Fulfillment Summary screen as part of the order creation wizard.

Pick Up and Shipping groups

When the Fulfillment Summary screen loads, the getFulfillmentSummaryDetails API is called to retrieve the fulfillment details for an order and display the available order lines, unavailable order lines, or both. This API obtains the order details from the getCompleteOrderDetails API and availability details from getPossibleSchedules API.

Users can view the summary of the entire order from the fulfillment perspective:

  • Shipping order lines are grouped and displayed based on the number of interactions between the seller organization and customers. An interaction is an activity that involves the movement of products from the seller organization to the customer. These interactions are determined based on sourcing and scheduling rules that are configured for the enterprise. The getFulfillmentSummaryDetails API returns a NoOfInteractions attribute, which determines the number of shipping groups an order line is spread across. The shipping address is displayed for each group of shipping order lines.
  • Pick Up order lines are grouped and displayed based on the store address from where the customer can pick up the products. All order lines that can be picked up from a particular store are grouped and displayed together. The store name is displayed at the group level.
  • The unavailable Pick Up and Shipping order lines are displayed separately.
Gift options
When the Fulfillment Summary screen loads, the getRuleDetails API is called to verify whether the following rules are enabled:
  • YCD_ENABLE_GIFT_SHIPMENT
  • YCD_ENABLE_GIFT_PICKUP
Only if both the rules are enabled, the "Go to Gift Options" button is enabled. For more information about the implementation of gift options, see Select gift options.
Fulfillment options
  • Change to Pick Up: When the user chooses to change the delivery method of order lines from Shipping or Delivery to Pick Up, the store selection window is displayed. For more information about the implementation of store selection, see Search for stores. After the user selects a store and applies the changes, the modifyFulfillmentOptions API is called to apply the changes to the order lines. When the user selects some order lines in a group and chooses to change the delivery method to "Pick Up", the Alternate Stores window displays all the stores in which the selected products are present. If any of the selected products are not present in a store, the stores are listed but marked as "Not Available". In such situations, the user cannot select a store. The delivery method can be changed from Pick Up to Shipping only if CHANGE_DELIVERY_METHOD modification type is allowed for the order lines.
  • Change Pick Up Recipient: The user can enter the details of the Pick Up recipient for Pick Up order lines. Once the Pick Up recipient information is updated, the details are displayed in the "Pick up By" column of the order line. The user can enter the Pick Up Recipient details for a Pick Up order line only if the MARKFOR modification type is allowed for the order line.
  • Change Pick Up Date: The user can select a Pick Up date for a group of Pick Up order lines or change the Pick Up date of individual order lines. When the user chooses to apply a Pick Up date at the group level, the date when all the order lines are available is applicable. However, when the user modifies individual Pick Up dates, it does not affect other order lines. The user can change the Pick Up date for individual order lines, if the REQ_SHIP_DATE modification type is allowed at the line level. However, the user can change the Pick Up date for the entire group of Pick Up order lines, if the REQ_SHIP_DATE modification type is allowed at the order level.
  • Change Store: This option is applicable to Pick Up order lines only. When the user chooses to change the store for a set of Pick Up order lines, the Alternate Stores window displays all the stores in which the selected products are present. For more information about the implementation of store selection, see Search for stores. The user can change the store for individual order lines, if the SHIP_NODE modification type is allowed at the line level. However, the user can change the store for the entire group of Pick Up order lines, if the SHIP_NODE modification type is allowed at the order level.
  • Change to Shipping: When the user chooses to change the delivery method of order lines from Pick Up or Delivery to Shipping, the address capture window is displayed. For more information about the implementation of the address capture feature, see Capture Address. The delivery method can be changed from Pick Up to Shipping only if CHANGE_DELIVERY_METHOD modification type is allowed for the order lines.

  • A user can change the delivery method from Pick Up or Shipping to Delivery. The modifyFulfillmentOptions API is called to update the delivery method. After the delivery method is updated, a message prompts the CSR to click Next to schedule appointments in the Work Order Appointment screen. Delivery products are not displayed in the View Fulfillment Summary screen. For more information, see Work Order Appointments.

  • Change Address: When the user chooses to change the shipping address of order lines, the address capture window is displayed. For more information about the implementation of the address capture feature, see Capture Address. When the user applies an address, a window is displayed to show only the order lines that are completely or partially unavailable. The available order lines are not displayed. The getFulfillmentOptionsForLines API is called to check the availability of the order lines. When the user chooses to apply the address to available lines, the modifyFulfillmentOptions API is called to apply the selected address to the order lines. If all order lines are available, then the modifyFulfillmentOptions API is called directly to apply the selected address.

    The same logic is applicable to apply an address to available lines, when the user changes the delivery method of order lines from Pick Up to Shipping.

    The shipping address can be changed only if the SHIPTO modification type is allowed for the order lines.

  • Optimization Type: When the Fulfillment Summary screen loads, one of the optimization types is defaulted on the order. The OptimizationType attribute that is returned by the getFulfillmentSummaryDetails API determines the optimization type. Users can select an optimization type to optimize an order during sourcing, scheduling, or both. By default, three optimization types are displayed. The description for the optimization types is derived from the isccs_bundle.js file in the <install_dir>/isccs/resources/bundle/nls/ directory.
    • Group into as few shipments as possible.
    • Fastest. Ship products as they become available, could cause additional charges.
    • Group items available within <number of days>: ThegetAllocationRuleList API is called to retrieve the description of the scheduling rule that is configured for the enterprise.

    The optimization types are displayed only if the RULE_ID modification type is allowed for the order. If this rule is not enabled, the default optimization type for the enterprise is displayed as text.

    The optimization type that is selected in the Shipping Preferences while creating a Business Customer overrides the optimization type configured at the enterprise level.

  • Change Level of Service: When the user selects a level of service for Shipping order lines, the level of service and the expected date that consists of minimum and maximum delivery dates are updated. The user can change the level of service only if the CARRIER_SERVICE_CODE modification type is allowed for the order. When the user saves the changes, the CarrierServiceCode attribute, the CommittedDate attribute of type MIN_DELIVERY, and CommittedDate attribute of type MAX_DELIVERY are set for the selected service and passed in the input to the modifyFulfillmentOptions API. The level of service is applied to all Shipping order lines. The user can change the level of service for each order line or a group of Shipping lines. If the level of service is changed for a bundle parent product of type "ship independent" or "deliver together", the level of service is automatically applied to the component products. However, when the user applies a level of service to a product, it is not automatically applied to the related product, unless the related products are selected.
Note: Availability for order lines is displayed in the Fulfillment Summary screen only when the number of order lines in the order is less than the value configured for the “Show availability if number of order lines in the order is less than” rule in the Sterling Business Center.
Handling bundle components
The getFulfillmentSummaryDetails API returns the IsBundleParent attribute. If the value of this attribute is Y, the product is a bundle parent. The API also returns the BundleFulfillmentMode attribute, which indicates whether the components in the bundle parent are shipped together, shipped independently, or delivered together.
  • For a bundle parent of type "ship-together", the components are not displayed upfront. The user can click the unit price link to view the components.
  • For a bundle parent of type "ship-independent", all the components are displayed.
The getCompleteOrderDetails API is called to display the component products for the bundle parent. If the user selects a bundle parent, the components are not selected automatically.
Handling large orders

When the Fulfillment Summary screen loads, the getCompleteOrderDetails API is called to retrieve the total number of records. The IsLargeOrder attribute is set to "Y" based on the total no of records and value set for the "Show availability if number of order lines in the order is less than" rule. The IsLargeOrder attribute is passed in the getFulfillmentSummaryDetails API. If the IsLargeOrder flag is Y, then availability for the order lines is not calculated, and hence the user does not get to know whether the order lines are available or not. The behavior of the getFulfillmentSummaryDetails API changes based on the IsLargeOrder flag value. If IsLargeOrder is "Y", then the API calls getCompleteOrderLineList to fetch different shipToKeys for order lines with delivery method "SHP" and different ship nodes for order with delivery method "PICK".

If any pickup order lines exist and node is not stamped, then such order lines are displayed as error lines. The user must select the store for such order lines to resolve the errors.

As availability is not calculated for large orders, the user must know the order lines that are backordered. Therefore, after scheduling, if there are any backordered lines, a backordered lines panel is displayed. The panel displays both shipping and pickup order lines.

On the Fulfillment Summary screen, the getCompleteOrderLineList API is called with GetDistinctOrderLineList="Y", OrderHeaderKey, and DeliveryMethod = "PICK/SHP" attributes in the input to retrieve the unique addresses and ship nodes for the order. The getCompleteOrderLineList API retrieves the list of shipToKeys and ShipNodes that are unique. These keys are used to fetch the personInfoDesc and shipNodeDesc using data providers that invoke getShipNodeList and getPersonInfoList APIs to fetch the details.

The panel titles are displayed using ShipNodeDescription for pickup panel and shipping address for shipping panel. When the user expands a shipping panel, the getCompleteOrderLineList API is called again to get the first page of the shipping order lines that are being shipped to that address.

The defaulting of the optimization type is not based on getPossibleSchedules API output, as this API is not called for large orders. If the order is created for a business customer, then the optimization type is defaulted based on the default shipping preferences of the customer. Otherwise, the default shipping options of the Enterprise are considered.

In case of large orders, order line reservations are not done and FTC dates are not stamped on order lines.

Deleting order lines

The getFulfillmentSummaryDetails API returns the modification permissions that are required to delete order lines. The delete button is enabled for draft order lines, only if the REMOVE modification type is allowed. Similarly, the deleted button is enabled for confirmed order lines, only if the CANCEL modification type is allowed.

When the user attempts to delete the bundle parent, a confirmation message is displayed, stating that the lines will be deleted. If the bundle parent is deleted, all the components are deleted. To modify the component products, the user must select them separately.

When the user selects a parent product that contains related products for deletion, the user can choose to delete the parent and related products or only the parent product. If the user chooses to remove related products, an additional flag, CancelRelatedLines="Y" is passed in the input to the modifyFulfillmentOptions API.

If order lines are deleted from an order and the small order condition is met, the order lines are reserved. However, if products are added to a small order that already has reserved order lines and the large order condition is met, reservation does not happen for newly added order lines and the order remains partially reserved.

Updating changes

When the user applies the changes and goes to the next screen, the modifyFulfillmentOptions API is called. This API in turn calls the validateItemForOrdering API to ensure that the changes comply with the minimum and maximum ordered quantity that is defined for the products in the catalog. If the quantity of a product is less than the minimum quantity, the user is directed to the Add Products screen, where the user must make the appropriate changes before proceeding further.

When the user chooses to go to the next screen in the wizard, the information about the order lines is passed in the input to the reserveOrder API. This API first calls the changeOrder API passing all the order lines in the input, to reserve the inventory. However, the reserveOrder API is called only when the "Reserve Items During Order Entry And Order Modification" rule is enabled.

Implementation

The following section describes the rules that you must configure.
  • You must configure the sourcing and scheduling rules appropriately. For more information, see the Configuring Distributed Order Management.
  • Shipment optimization is based on the scheduling rule configured. You must configure the Scheduling Rule For Additional Shipping Option rule. For more information, see theSterling Business Center System Configuration.
  • The user can change the delivery method for an order line only if the "Change Delivery Method" status modification rule is allowed for a specific status at the line level. For more information, see theConfiguring Distributed Order Management.
  • The user can change the address for an order line only if the "Change Ship To" status modification rule is allowed for a specific status at the line level. For more information, see the Configuring Distributed Order Management.
  • The user can change the level of service for a Shipping order line only if the "Change Carrier Service Code" status modification rule is allowed for a specific status at the line level. For more information, see theConfiguring Distributed Order Management.
  • The user can change the Pick Up date for a Pick Up order line only if the "Change Requested Ship Date" status modification rule is allowed for a specific status at the line level. For more information, see theConfiguring Distributed Order Management.
  • The user can change the Pick Up recipient information for a Pick Up order line only if the "Change Mark For" status modification rule is allowed for a specific status at the line level. For more information, see theConfiguring Distributed Order Management.
  • The user can change the optimization type only if the "Change Schedule Rule Id" status modification rule is allowed for a specific status at the order level. For more information, see the Configuring Distributed Order Management.
  • You must configure the standard unit of measure display rules for a product. To define the unit of measure for quantity, see Defining unit of measure.

  • To display the bundle components immediately after the bundle parent product, you must select the Assign Group Sequence Number to Order Lines option in the Applications Manager. For more information, see the Configuring Distributed Order Management.
  • The "Allow Pick Up" store rule governs the display of Pick Up options. When the Fulfillment Summary screen loads, the getRuleDetails API is called to verify whether the YCD_STORE_ENABLED rule is enabled. Only if this rule is enabled, the Pick Up options are available. For more information, see the Sterling Business Center System Configuration.
  • You must configure the store rules appropriately. For more information, see the Sterling Business Center System Configuration.
  • To set up the gift options for products that are either shipped or picked up, enable the following rules.
    • Allow Gift Information For Product Being Shipped
    • Allow Gift Information For Product Being Picked
    • Allow Gift Wrapping
    For more information, see the Sterling Business Center System Configuration.
  • You must enable the "Reserve Items During Order Entry And Order Modification" rule. For more information, see the Sterling Business Center System Configuration.
  • In "Fulfillment Options" screen, configure the Show Availability Information In Fulfillment Summary If Number Of Orderlines Is Less Than rule appropriately. For more information, see the Sterling Business Center System Configuration topic.

End-user impact

Users can view fulfillment summary and take appropriate actions to fulfill an order efficiently.