Pack orders
A store associate should be able to pack the products that are backroom picked and are ready for packing or partially packed.
Solution
The following section describes APIs, user exits, services, and other components.
- Pack Orders Portlet
- On the Pack Orders portlet, a store associate can start the packing process
in the following ways:
- The store associate can click the In Progress count to view shipments
that are in the
Packing in Progress
status. Similarly, clicking theNot Started
count displays the shipments that are in theReady for Packing
status. Alternatively, the store associate can click the count displayed at the center of the portlet to view the complete list of shipments to be packed. In all the scenarios, the Pack order list screen is displayed. - A store associate can also scan or enter the product ID to start the packing process. The
translatebar code
API is called to translate the product bar code to product ID. Alternatively, a store associate can use the Advanced Search option to search for orders or shipments by using order number, shipment number or user ID for shipments assigned to a particular store associate. If the search results in a single shipment, the store associate is taken directly to the Pack Order screen. If the search results in multiple orders, the Pack order list screen is displayed with a list of orders that match the search criteria.
Packing can be performed only for shipments in the
Ready for Packing
orPacking in Progress
status. If a shipment does not meet these criteria, an appropriate message is displayed before proceeding to the task. ThegetShipmentList
API is called to validate and retrieve shipments for packing.A store associate can also choose to filter the shipments based on Carrier and Status. Additionally, the store associate can also sort the shipments based on the Expected Ship date. The
getShipmentList
API is called to sort and filter the shipments based on the selected options.From the Pack order list screen, the store associate can select a shipment and click Pack Order or Continue Pack.
- The store associate can click the In Progress count to view shipments
that are in the
- Pack Order or Continue Pack
- When the store associate clicks Pack Order, the
changeShipmentStatus
API is called to change the status of the shipment fromReady for Packing
toPacking in Progress
. ThechangeShipment
API is called to assign the shipment to the logged-in user. ThegetShipmentDetails
API fetches the shipment details such as the shipment number, status, staging location, allowed transactions, and so on.If the store associate clicks Continue Pack, the shipment is assigned to the logged-in user.
If the shipment is already assigned to a different store associate and the status of the shipment is
Packing in Progress
, the current store associate is prompted to start over, continue, or cancel. If the store associate chooses to start over, then theunpackShipment
API is called to remove each of the existing packages associated with the order. ThechangeShipment
API is called to assign the shipment to the logged-in user.
- Pack Order screen: Products panel
-
- On the Pack Order screen, the
getShipmentLineList
API is called to list the products that are yet to be packed for a shipment. The panel displays the count of the products and each product displays the product ID, packable quantity, Pack and Record Shortage options. ThegetCompleteItemList
API is called internally to display variation products. - If there is a shortage for a product, the store associate can click
Record Shortage
and select an appropriate shortage reason for the shorted quantity. ThegetCommonCodeList
API is called with theCodeType
asYCD_PACK_SHORT_RESOL
to retrieve the shortage reasons. By default, onlyInventory Shortage
is provided as the shortage reason. When the store associate clicks OK, therecordShortageForPack
API is called to record the shortage for the product. - The store associate can click the information icon on a product to view the packing instructions.
- On the Pack Order screen, the
- Pack Order screen: Packages panel
-
- The
getShipmentContainerList
API is called to display the package count, the list of packages for the shipment and the current package. If the shipment does not have any packages, thegenerateSCM
API is called to generateSCM
and create a draft container. - After adding products to the draft container, a store associate can choose to add remaining
products to new packages. When the store associate clicks Add Package, the
generateSCM
API is called to generateSCM
and the new package is considered as the current package. -
This API is used to paint the list of packages / containers in the shipment. This API is called in multiple places to get the updated list of containers after a specific action is done in the screen
- The store associate can either scan the products or enter the product ID manually to add the
products to a package. If the product scanned does not belong to the shipment or the bar code is
invalid, an appropriate error message is displayed. The
registerbar codeForPacking
API validates whether the scanned product is part of the shipment and has packable quantity or not. If yes, the product is added to the currently selected container. Theregisterbar codeForPacking
API internally calls thetranslatebar code
andchangeShipment
APIs. Thetranslatebar code
API translates the bar code to product details. ThechangeShipment
API updates the package details by usingSCM
for a new package andShipmentContainerKey
for an existing package. - During packing, the store associate can scan a product once and may choose to update the
remaining quantity manually either by entering the quantity or by using the -
and + buttons. If an invalid quantity is entered in the quantity field, an
appropriate error message is displayed. The Update button is displayed only
when a valid quantity is entered or modified manually. When the store associate clicks
Update, the
changeShipment
API is called to update the quantity of the product in the package. Similarly, the store associate can repeat the procedure to pack products one at a time. - The store associate can click Pack All to pack all products into the
package at once. The
changeShipment
API is called to pack all the products to the current package. However, a store associate with appropriate resource permissions can only perform this action. - For a given package, the Weight field is displayed with the default
weight UOM of the store locale. The store associate can enter the weight of each package. When the
weight is entered or modified, the store associate must click Update. The
changeShipment
API is called to save the weight of the package.Note: When a new product is added or removed or the quantity of a product is changed in a package, the package weight is reset. - Tracking Number and Generating Labels
-
The Generate Label button is displayed for a package, only when a carrier is integrated with the application. After entering the weight of the package and updating, the store associate can click Generate Label. The
StoreContainerLabel_94
service is called, which in turn calls thegetTrackingNoAndPrintLabel
API that communicates with the carrier server to retrieve the tracking number and labels for the package. If thegetTrackingNoAndPrintLabel
API returns theFailedContainers
element, then the tracking number is not generated for the package and an appropriate message is displayed.Whenever there is a change made to a container like adding a new product, changing the quantity of a product in the container, deleting the container, updating weight, and so on, the
voidTrackingNumber
API is called to void the previously generated tracking number. ThechangeShipment
API is called to update the shipment to indicate that the pack process in not complete.When the store associate clicks Finish Pack, thegetShipmentContainerList
API is called to retrieve a list of packages to ensure packing is complete and the output of the API is used to perform 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 carrier that is integrated with the application or not.
- If the total number of packages returned by the API is zero, the
changeShipmentStatus
API is called to change the status of the shipment toPacked
and thechangeShipment
API is called to update the shipment attributes and mark the packing process as complete.
- The Generate Label button is not displayed for a package when the carrier
is not integrated. When the store associate enters the weight for a package and saves the changes,
the
changeShipment
API is called to save the weight for the package. When the store associate clicks Finish Pack, thegetShipmentContainerList
API is called to retrieve a list of packages to ensure packing is complete and the output of the API is used to perform the following validations:- Determine whether the shipment is packed, not packed, or partially packed and display an appropriate message.
- If the total number of packages returned by the API is zero, the
changeShipmentStatus
API is called to change the status of the shipment toPacked
and thechangeShipment
API is called to update the shipment attributes and mark the packing process as complete.
- Re-print Label: If the tracking number is generated and shipping labels are printed
successfully, the Generate Label button is not displayed. Instead, a
Re-print Label button is displayed. When the store associate clicks
Re-print Label, the
StoreLabelReprint_94
service is called, which in turn calls thereprintCarrierLabel
API to reprint the labels. - Print Packing Slip: When the store associate clicks Print Packing
Slip, the
StorePackSlip_173
service is called to print the contents of the current container. - Unpack: When the store associate clicks the Update button, a
prompt is displayed to confirm unpacking. If the store associate clicks Yes,
the
unpackShipment
API is called to delete the package. The most recently created package is considered as the current package. If there are no packages, a new package is considered as the current package.
The
getShipmentContainerList
API is called whenever a store associate performs actions such as adding and deleting packages. Additionally, before packing is completed, the API is called to retrieve packages that do not have weight and tracking number, if carrier integration is enabled.Note: Starting with Release 9.4 of the application, weighing scales that are connected through USB and pass the weight information identical to the data entered using a keyboard are supported. The store associate must set the focus on the weight field before the weight information is sent over. Refer your specific scale documentation to configure the output of the weight data from the scale. -
- The
Implementation
- The store associate must have the following resource permissions:
- Pack Order: Enables a store associate to perform the packing process.
- Unpack products: Enables a store associate to unpack a shipment.
- Print Pack slip: Enables a store associate to print the packing slip for the current package.
- Pack All: Enables a store associate pack all the remaining products in a shipment at once.
- Manually update quantity while packing: Enables a store associate to manually enter the package quantity and use the - and + buttons to edit the package quantity.
- You must enable the following modification types for shipments in the
Packing in Progress
andPacked
status.- Add/Remove Container
- Pack Shipment
- Delete Shipment
- Unpack Shipment
- Remove Line
- Change Other Attributes
- Configure
Parcel Carrier Preferences
appropriately. For more information, see Manage parcel carrier preferences. - You must configure the service level indicators for shipping orders. For more information, see Configure service level indicators.
- You must enable
Package Level Integration
for a carrier service. For more information, see Defining carrier services for parcel shipments. You must not toggle betweenShipment Level Integration
andPackage Level Integration
as the behavior of the feature changes entirely and you cannot ship packages successfully. - You can configure the packing instructions at the product level or shipment line level. Shipment line packing instruction takes precedence over product instruction. The Instruction Type must to be Pack. If there are multiple instructions, then the last packing instruction is displayed. For more information about managing instructions, see IBM Sterling Business Center item administration overview.
- Configure
Pack Shipment Shortage Resolutions
appropriately. By default,Inventory Shortage
is available as the shortage resolution for the default organization. If you want to use the same shortage resolution for a new enterprise, you must either inherit the default organization's properties or use the following values to create shortage resolutions by using the Sterling Business Center.- Inventory Shortage
- Shortage Resolution: inventoryShortage
- Shortage Resolution Name: Inventory Shortage
- Inventory Shortage
- The following print services are provided by default:
- The
StorePackSlip_173
service usesStorePackSlip_173_multiApi.xsl.sample
andStorePackSlip_173_output.xsl.sample
templates to print pack slips. - The
StoreContainerLabel_94
service usesStoreContainerLabel_94_input.xsl.sample
andStoreContainerLabel_94_output.xsl.sample
templates to print shipping labels. - The
StoreLabelReprint_94
service usesStoreLabelReprint_94_input.xsl.sample
andStoreLabelReprint_94_output.xsl.sample
templates to reprint shipping labels.
The input or multi API XSLs are used to call multiple APIs that retrieve the information to be printed, while the output XSLs are used to format the API output as HTML content. The templates are present in the
/template/prints/ycd/xsl/
directory. The templates are provided as sample implementation and suffixed with.sample
. You can continue to use the sample templates or rename them to remove.sample
from the file names and customize as required. - The
- For information about carrier integration, see Defining carrier services for parcel shipments.
To implement carrier integration, see Carrier server integration.
Configuring bar code types
Item
to translate product bar code to product ID.Store Outbound Shipment.
Used in the pack orders portlet to find the matching shipment or order. The bar code should have following sources configured:Shipment
: External service. The bar code validation source isYCD_Translate_bar code_InboundShipment
.Order
: External service. The bar code validation source isYCD_Translate_bar code_OrderNo
.
For more information about the APIs, see IBM® Sterling Order Management System: Javadoc.