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 toY
, 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, thetranslateBarCode
API withBarCodeType=Item
is called.- If the
translateBarCode
API returns an item and ongetShipmentList
API call, shipments that are inReady for packing
orPacking 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
- If the
WSC_ENABLE_ITEM_PACKING
rule is set toN
, and when you scan, a custom mashup on thetranslateBarCode
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
orPacking 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.
- If the scan returns a valid shipment, the shipment status is validated and shipments that are in
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.
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. TheDocumentType=0001
is passed to thegetShipmentList
API for the Ship tab andDocumentType=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. ThegetShipmentContainerList
API is called to display the package list. ThegetShipmentLineList
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:
- The
getShipmentLineList
API is called to obtain the unpacked shipment lines. - The
changeShipment
API is called to update the packed quantity for the container. - The
getShipmentContainerDetails
API is called to fetch the details of the current container.
- The
- 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 withCodeType=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. TherecordShortageForPack
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, theStoreContainerLabel_94
service is invoked. This service calls thegetTrackingNoAndPrintLabel
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 thereprintCarrierLabel
API to reprint the labels. - When you print a pack slip, the
StorePackSlip_173
service is invoked, which calls thegetShipmentLineList
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 updatesIsPackProcessComplete="Y"
andContainerized Quantity
for the shipment. ThechangeShipmentStatus
API is called to change the shipment status toPacked
. 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.
- When you load the Pack screen, the
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 usesStoreContainerLabel_94_input.xsl.sample
andStoreContainerLabel_94_output.xsl.sample templates
. - To reprint shipping labels, the
StoreLabelReprint_94 service
usesStoreLabelReprint_94_input.xsl.sample
andStoreLabelReprint_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.