Next-generation platform

Implementing pack orders

As a store associate you can pick products from backroom that are ready for packing or partially packed. You can pack shipments for both sales orders and transfer orders. You can start the packing process from the Pack Order portlet in the Order Fulfillment view.

Solution

Understand APIs, services, and other components that are used to implement the pack order flow.

Portlet scan

To display the scan portlet, ensure that the resource permission is provided for PackShipment or PackTo. To start packing, scan the order number, shipment number, item ID, or serial number.

  • If the WSC_ENABLE_ITEM_PACKING rule is set to Y, you can initiate the pack process by scanning item or order number. In the user interface, both Product search and Order search are displayed. By default, Product search is selected. If you go with the default option, which is Product search and scan a product, the translateBarCode API with BarCodeType=Item is called.
    • If the translateBarCode API returns an item and on getShipmentList API call, shipments that are in Ready for packing or Packing in progress status are displayed. The shipment list is sorted by the expected shipment date in ascending order and the first shipment that is retrieved is displayed. If shipments are not found, an appropriate error message is displayed.
    • If the translateBarCode API returns a serial, the API searches for shipment with that serial. If a shipment is found, the shipment is validated and either the shipment summary is displayed or the pack flow is initiated.
      Note: It is assumed that item and SIM serial are the source for bar code translation.
  • If the WSC_ENABLE_ITEM_PACKING rule is set to N, and when you scan, a custom mashup on the translateBarCode API is called. The bar code type stores outbound shipments.
    • If the scan returns a valid shipment, the shipment status is validated and shipments that are in Ready for packing or Packing in progress status are considered for packing. For shipments that are in different status, document types or shipping nodes are displayed in the Shipment summary page.
    • When you scan an order number, the corresponding shipment is retrieved and sorted by the expected shipment date in ascending order and the first shipment that is retrieved is displayed.
      Note: If an order contains multiple shipments, the shipment list is not displayed.

Portlet count

The getShipmentList API is called to count shipments that are in Ready for packing (1100.70.06.50) or Packing in progress (1100.70.06.70) status. If you have permission to pack transfer orders, they are included in the count. Otherwise, the shipment list displays only sales orders.

User assignment on scan

When you initiate the pack process by using the Pack orders portlet or by clicking Pack order, on scanning a shipment, order, item, or serial the shipment gets assigned to the logged in user. If a pack order process is assigned to another user, and if the logged in user begins packing or continue packing that is in progress status, a confirmation message, "This order is already being packed by <assigned user name>. Do you want to continue packing this order?" is displayed. On clicking Yes, the shipment gets assigned to the logged in user. Otherwise, the shipment list or Pack orders portlet is displayed. The changeShipment API is called to update the assigned to user ID field for the shipment.

Note: You cannot start over the packing process for shipments that are in Packing in progress status.

Shipment status change

The shipment status changes to Packing in progress when you scan the first item, pack manually, or click Pack all. This is different from the old store behavior where the shipment status changed along with the assignment whenever the pack process is initiated. This behavior is consistent with picking and other inventory scenarios where the shipment status changes whenever the first item is picked or moved. In these scenarios, the status rolls back to Not started when the first item is unpicked. This is not applicable for packing. Once the status moves to Packing in progress it remains in the same status. The changeShipmentStatus API is called to update the shipment status to Packing in progress.

Pack order list
The paginated getShipmentList API is called to retrieve the list of shipments to pack. You can view two tabs, Ship and TO. The TO tab is displayed only if you have permission to Pack TO an order. The DocumentType=0001 is passed to the getShipmentList API for the Ship tab and DocumentType=0006 for the TO tab.

Sorting is available on ExpectedShipmentDate. The filter criteria includes assigned to user ID, status, and carrier (SCAC).

Packing initiation
  • When you load the Pack screen, the getShipmentDetails API is called that displays the shipment details. You can view the list of packages and products. The getShipmentContainerList API is called to display the package list. The getShipmentLineList is called to display the product list.
  • When you scan an item, the registerBarcodeForPacking API is called to create a container, add the scanned items to the container, update the container, and display the container information.
  • When you click the Add button to add a package, the generateSCM API is called to generate a unique SCM for the package.
  • When you click the Pack all button to pack the remaining products for the selected package, the following APIs are called:
    1. The getShipmentLineList API is called to obtain the unpacked shipment lines.
    2. The changeShipment API is called to update the packed quantity for the container.
    3. The getShipmentContainerDetails API is called to fetch the details of the current container.
  • When you click the Pack link or change the quantity in a package, the changeShipment API is called to update the packed quantity for the container.
  • When you click Upack to remove all products in the package and remove the package, the unpackShipment API is called to delete the package and marks all the products of the package as unpacked.
  • When you click Record shortage, the getCommonCodeList API with CodeType=YCD_PACK_SHORT_RESOL is called to display the shortage reasons. By default, all reason codes mark inventory as short, which means cancels the quantity on the shipment and backorder the quantity on the order line. If you want to change this behavior for any shortage reason, you must customize the screen. The recordShortageForPack API is called to update the shortage reason and quantity. If you mark all quantities as shortage, the shipment gets canceled.
  • The Generate label to print the tracking label is enabled only for shipments with SCAC integrated (ScacIntegrationRequired=Y). When you click Generate label, the StoreContainerLabel_94 service is invoked. This service calls the getTrackingNoAndPrintLabel API that connects to an external carrier server and returns the tracking label print.
  • When you modify a package by adding or removing products, or by changing the weight of the package, the voidTrackingNo API is called. Only if SCAC is enabled (ScacIntegrationRequired=Y), the tracking number for the package is removed.
  • When labels are generated, Generate label is renamed to Reprint label. The StoreLabelReprint_94 service is invoked, which calls the reprintCarrierLabel API to reprint the labels.
  • When you print a pack slip, the StorePackSlip_173 service is invoked, which calls the getShipmentLineList API to retrieve products and quantity that are packed.
  • When you want to update the container weight, the changeShipment API is called that updates the container weight.
  • When you click Done, the getShipmentContainerList API is called to retrieve the list of packages to verify that packing is complete. The API output is used to complete the following validations:
    • Determine whether the shipment is packed, not packed, or partially packed and display an appropriate message.
    • Determine whether the shipment is stamped with a tracking number when a carrier integration is implemented.
    • Determine if all containers are weighed.
    • If the total number of packages returned by the API is zero, packing is completed by calling the changeShipment API, which updates IsPackProcessComplete="Y" and Containerized Quantity for the shipment. The changeShipmentStatus API is called to change the shipment status to Packed. The Shipment summary page is displayed,
    • You can configure packing instructions at the product level or shipment line level. The shipment line packing instruction takes precedence over product instruction. Ensure that the Instruction Type is set to Pack. If there are multiple pack instructions, the last pack instruction is displayed. For more information about managing instructions, see IBM Sterling Business Center item administration overview.

Extending print services

To print pack slips, the StorePackSlip_173 service uses StorePackSlip_173_multiApi.xsl.sample and StorePackSlip_173_output.xsl.sample templates. By default, the following print services are provided:

  • To print shipping labels, the StoreContainerLabel_94 service uses StoreContainerLabel_94_input.xsl.sample and StoreContainerLabel_94_output.xsl.sample templates.
  • To reprint shipping labels, the StoreLabelReprint_94 service uses StoreLabelReprint_94_input.xsl.sample and StoreLabelReprint_94_output.xsl.sample templates

To call multiple APIs to retrieve the information to print, the input or multi-API XSLs is used. The output XSLs are used to format the API output as HTML content. Templates are provided as sample implementation and suffixed with .sample. These templates are present in the /template/prints/ycd/xsl/ directory. You can either use the sample templates or customize them by renaming the templates to remove .sample from the file names.

Carrier integration

You can implement carrier integration by extending the UI and invoking carrier integration rest end points from the UI itself or by implementing parcel carrier adapter user exits. For more information about parcel carrier user exits, see Using user exits.

For a carrier service, ensure that you enable Package Level Integration. For more information about defining carrier services for parcel shipments, see Defining carrier services for parcel shipments. Ensure that you do not toggle between Shipment Level Integration and Package Level Integration as the behavior of the feature changes entirely, and you cannot ship packages successfully.

You can configure packing instructions at the product level or shipment line level. The shipment line packing instruction takes precedence over product instruction. Ensure that the Instruction Type is set to Pack. If there are multiple instructions, the last pack instruction is displayed. For more information about managing instructions, see IBM Sterling Business Center item administration overview.