Sort while pick
A store associate must be able to sort products in a batch while picking them.
A store associate can put products from a batch into separate totes for each order while picking the products. After all the products are picked, the store associate can assign each tote to a staging location.
Solution
The following section describes APIs, user exits, services, and other components.
Pick a new batch or Continue to pick an in-progress batch.
- Pick new batch
- On the Batches screen, when the store associate clicks Pick to pick products in a new batch, the
createStoreBatchAPI is called to create a batch record, the batch status changes to 1100, which indicatesopen batch
and the batch is assigned to the current store associate. All the shipment lines that were returned by thegetStoreBatchListAPI for that batch are passed to thecreateStoreBatchAPI, which returns theBatchNoandStoreBatchKeyattributes. If a shipment line is already being picked as part of another batch or being picked via single order picking, an appropriate error message is displayed.
- Pick in-progress batch
-
On the Batches screen, a store associate can click Continue to pick products for an in-progress batch. If the store associate is not the person who began picking the batch, a confirmation window prompts the store associate to confirm whether to continue picking or not. If the store associate chooses to continue, then the
manageStoreBatchAPI is called, which updates theAssignedToUserIDof the batch to the current store associate.For more information about the APIs and validations, see the Javadoc.
- Products in the batch
-
TheThe store associate can either scan a product bar code to pick a product or manually pick the product.
getStoreBatchDetailsAPI is called to fetch the batch and products in the batch. The batch is fetched by using either the mandatoryStoreBatchKeyorBatchNoandOrganizationCodeattributes. If these attributes are not passed, the API throws an error. If there is no record corresponding to theStoreBatchKey, the API throws an error.- The
getStoreBatchDetailsAPI internally calls thegetShipmentLineListAPI to retrieve the shipment lines forStoreBatchKeyattribute that is passed in the input. Therefore, the bundle parents are not fetched to form the batch line. - Once the shipment lines are fetched, the batch lines are formed for every unique product. If the
ItemIDandUnitOfMeasureare common for two shipment lines, then a single batch line is formed for the product. - If the
PickLocationSeqattribute is set at theShipmentLinelevel, then the API displays the products in the order in which they must be picked up. The sequence in which the products are displayed can be customized by implementing theYCDGetBatchPickPriorityUEuser exit. - The store associate can refine the batch lines to display all the products in the batch or only the products to be picked. The
BackroomPickComplete=Nattribute is used to filter and display only the unpicked batch lines. - The product details, such as product image, pick location, department and the quantity to be picked are returned by the API in the output. The Pick and Record Shortage links are also displayed.
- Pick products in the
SCANmode: When the store associate scans a product, the tote assignment screen is displayed. TheregisterBatchPickAPI is called with theModeattribute set toSCANand the API uses theStoreBatchKeyattribute to determine theBatchTypeattribute, which isSORT_WHILE_PICKING. The following logic is executed internally:- The
translatebar codeAPI is called with thebar codeDataandbar codeTypeattribute set toItemto fetch the product information. - Shipment lines with the same
ItemIDandUnitOfMeasureand having the sameBatchKeyas that passed in the input are retrieved. - Only those shipment lines with the attributes
BackroomPickComplete="N"andIsPickable="Y"are considered and the shipment line with the leastBatchPickPriorityis updated with the pick quantity.
- The
- Pick products in the
MANUALmode: When the store associate selects a product and then clicks Pick, the tote assignment screen is displayed. TheregisterBatchPickAPI is called with theModeattribute set toMANUALPICKand the API uses theStoreBatchKeyattribute to determine theBatchTypeattribute, which isSORT_WHILE_PICKING. The following logic is executed internally:- The
registerBatchPickAPI reads the mandatoryItemelement from the input to get the product information. - Shipment lines with the same
ItemIDandUnitOfMeasureand having the sameBatchKeyas that passed in the input are retrieved. - Only those shipment lines with the attributes
BackroomPickComplete="N"andIsPickable="Y"are considered and the shipment line with the lowest value forBatchPickPriorityis updated with the pick quantity.
When the store associate picks a product, the tote assignment screen is displayed where the store associate can proceed to place the product in a tote. If there is a shortage of products during pick, the store associate can record shortage before placing the picked products in a tote.
- The
- Record Shortage: The store associate can select a product and choose to record shortage if there are insufficient quantities to fulfill the batch. The quantity of the product that the store associate marks short is displayed.
When a store associate clicks Record Shortage for a product in a batch, the following logic is executed:
- The
getCommonCodeListAPI is called with theCodeTypeasYCD_PICK_SHORT_RESOLto fetch shortage reasons. By default, the only shortage reason isInventory Shortage
. When a store associate appliesInventory Shortage
as the shortage reason, products are back-ordered based on default implementation. However, if you want to implement a custom logic and handle custom shortage reasons, you can use thehandleShortageForBatchLineUEuser exit.TherecordShortageForBatchPickAPI is called to determine the shipment and shipment line that need to be marked as short. The store associate picks the available products, and the remaining value is marked as short. The default shortage reason,Inventory Shortage
, is used.- When the store associate chooses to save the shortage, the shortage quantity is updated on the shipment line.
- The API cancels the batch if all of the products in a batch are marked as short. In addition to canceling the batch, the shipment is also canceled if all of the products in the shipment are marked short.
The following validations are performed by therecordShortageForBatchPickAPI:- The
StoreBatchKeyandShortageReasonattributes, along with theItemelement are mandatory inputs to the API. If the mandatory inputs are not passed, then the appropriate error messages are displayed. - If the shortage reason is not valid, the appropriate error message is displayed. Once the store associate clicks OK, the shortage is applied and the user is taken to the original screen.
- The
- The
- Adding products to totes
- After scanning or manually picking the products, the store associate can add the products to totes. In the tote assignment screen, you can either scan a tote or manually enter the tote number in the Place in Tote # field. For both manual picks and scanned picks, the output of the
registerBatchPickAPI is used to retrieve the tote information. For a given shipment line, theYFS_STORE_BATCH_LOCATIONtable is queried with theShipmentKeyand theBatchKeyattributes. If a record is retrieved, the Tote ID is populated in thePlace in the Tote #
field.- If a tote ID is not already populated in the
Place in Tote #
field, the store associate can scan a tote, or manually enter the tote ID. Once a tote is scanned, thetranslatebar codeAPI is called with thebar codeDataattribute andbar codeTypeasStoreToteIdto return theToteID. However, if theTote translation required
rule is disabled, thetranslatebar codeAPI call is skipped and the value in the Place in Tote # field is directly updated in the database without any translation. Once a tote is scanned or entered, the product is added to the tote. - If a tote ID is already populated in the
Place in Tote #
field, the store associate must click Save to add a product to the tote. TheregisterBatchPickAPI is called in theUPDATEmode with theBackroomPickedQuantityandToteIDattributes to update the shipment line and display the information on the UI. - If there are other totes associated with the product, they are displayed with the associated quantity of the product. The - button is enabled and + button is hidden, so the quantity is not editable.
Notes:
- The store associate cannot save the pick until a tote is scanned or entered.
- If the tote field is left blank or a store associate manually enters a tote ID that is already associated with another order, the appropriate error messages are displayed.
- If the store associate clicks Save, either unpicked or all products are displayed, where the store associate can click Edit corresponding to a product to modify totes in the tote assignment screen. The store associate can reduce the quantity of a product from a tote with the lowest SLA and add the product to a tote with higher SLA thus allowing higher SLA orders to be fulfilled first.
-
The
getStoreBatchDetailsAPI is called to refresh the screen and display all the products or only the products to be picked based on the filter selected.
- If a tote ID is not already populated in the
- Modifying totes
- After the store associate adds at least one unit of a product to a tote, the Products screen is refreshed and the Edit link is enabled for that product in the batch. The store associate can click Edit to go to the tote assignment screen where totes are listed in the ascending order of SLA.
Note: In the Edit mode, the
Place in Tote #
field is not displayed. Therefore, the store associate cannot add products to a new tote or remove an existing tote.When the store associate clicks Edit for a product that is partially picked, the
registerBatchPickAPI is called with theModeattribute set toMANUALto retrieve the tote information for the product. When the store associate clicks Edit for a product that is completely picked, thegetStoreBatchDetailsAPI is called by passing theStoreBatchKey,ItemID, andUnitOfMeasureattributes in the input, to retrieve the tote information for the product.To reduce the quantity of the product in a tote, the store associate can click the - button as required. TheregisterBatchPickAPI is called with theModeattribute set toUPDATE. In theUPDATEmode, the following API actions take place:- The
StoreBatchKeyand theBackroomPickedQtyare passed in the input to theregisterBatchPickAPI to update the shipment line. - The
changeShipmentAPI is called to update theBackroomPickedQtyattribute of the shipment line.
Once the quantity is reduced as required, the store associate clicks Done in the tote assignment screen and a tote rearrangement check is performed. If the quantity of product being reduced belongs to an order with higher SLA than another order containing the same product, a tote rearrangement is required and consequently an appropriate warning message is displayed. This warning message informs the store associate to fulfill higher SLA orders first. On the message window, the store associate can click either Yes or No. However, if the order has the lowest SLA, then tote rearrangement is not required and the store associate returns to the Batches screen.Note: To pick the quantity of the product reduced from a tote, the store associate has to use the Pick flow again.Once a batch is completely picked, only then thechangeShipmentStatusAPI is called. Multiple validations are performed to change the status of shipments, some of them are as follows:- If the shipment corresponding to a given shipment line is not already in
Backroom Pick in Progress
status, thechangeShipmentStatusAPI is called to change the shipment status fromReady For Backroom Pick
toBackroom Pick in Progress
. - If the shipment is completely picked, then the
changeShipmentStatusis additionally called to update the status toReady for Customer Pickup
in case ofPickup in Store
orders andReady for Packing
in case ofShip from Store
orders.
After the shipment is updated, the
registerBatchPickAPI determines whether the picking process is complete and updates the status of the batch to either 2000 or 3000 where 2000 indicates that 'picking is complete and not staged' whereas 3000 indicates that 'batch picking is complete'. - The
- Assigning a staging location
- Once all the products are completely picked, an appropriate confirmation message is displayed and the store associate can choose to either assign a staging location or finish the batch pick process. If the store associate clicks Assign Staging Location, the totes are displayed with an Assign action for each tote.
Note: Assigning a staging location to totes is based on the
Staging location requiredrule. If the rule is enabled, only then the store associate can perform this task.- When the store associate proceeds to assign a staging location, the
getStoreBatchLocationListAPI is called with theStoreBatchKeyattribute to return the list of totes for a batch. The totes are sorted by delivery method; thepickup in store
totes are listed first, followed by theship from store
totes. - The store associate then scans or manually enters a tote. If the store associate scans the tote, the
translatebar codeAPI is called with thebar codeTypeset toStoreToteId. The Current Tote screen is displayed with the details of the tote that include tote ID and number of products in the tote. A staging location field is displayed where the store associate can scan the bar code of the staging location or enter the location ID manually. - When the store associate scans a staging location, the
translatebar codeAPI is called with thebar codeTypeasHoldLocationto return the staging location ID. However, if theStaging location translation required
rule is disabled, thetranslatebar codeAPI call is skipped and the value in the Place in Staging Location field is directly updated in the database without any translation.When the staging location is either scanned or entered manually and the store associate clicks Save, the
changeShipmentAPI is called to update the staging location for the order. The store associate is then taken back to the tote list and can continue assigning staging locations for each tote in the batch. The updated tote is highlighted and the staging location is displayed. After a staging location is assigned to every tote, then themanageStoreBatchAPI is called to update the status of the batch to 3000 (completed batch). TheStagedQuantityattribute and theIsStagingCompleteattribute set toYare passed in the input to thechangeShipmentAPI to update the shipment line appropriately.
User exits:- Custom logic can be implemented by using the
com.yantra.pca.ycd.japi.ue.YCDSortBatchLinesUEuser exit for thegetStoreBatchDetailsAPI to sort the products with a custom implementation. - Custom logic can be implemented by using the
com.yantra.pca.ycd.japi.ue.YCDGetBatchPickPriorityUEuser exit for thecreateStoreBatchAPI to calculate the batch pick priority. - Custom logic can be implemented to update the inventory by using the
com.yantra.pca.ycd.japi.ue.YCDInvokeUpdateInventoryUEuser exit, which is called by theregisterBatchPickAPI after each update of theBackroomPickedQuantityattribute on the shipment line. - The application behavior on selecting a custom shortage reason can be implemented by using the
YCDhandleShortageForBatchLineUEuser exit, which is invoked by therecordShortageForBatchPickAPI.
For more information about the APIs, see the Javadoc.
- When the store associate proceeds to assign a staging location, the
Device-specific details
None.
Implementation
The following information describes the rules that must be configured for the feature:
- A store associate must have the following resource permissions to perform batch picking:
- Batch Pick Orders
- Manually update quantity while picking
- Configure the
Backroom Pick Shortage Resolutions
appropriately. By default, a shortage resolution namedAll Inventory Shortage
is available 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 the shortage resolution by using the Sterling Business Center.- Shortage Resolution: AllInventoryShortage
- Shortage Resolution Name: Inventory Shortage
For more information, see Manage backroom pick shortage resolutions. To inherit default organization's properties, see Defining an enterprise's primary information. If you create custom shortage resolutions, then you must have corresponding implementation as well. For more information, see Implementing custom shortage reasons.
- The Assign Staging Location button is visible only if the
Staging location requiredrule is enabled at the store level in the Sterling Business Center. - If you need to support staging location and tote bar code translations, configure the bar code translation preferences appropriately. For more information, see Setting up bar code translation preferences.
- You must configure bar code types for your enterprise. The following bar code types are used in the application:
Itemfor product translationsTote Idfor tote translations. By default, two variations of the bar code type are provided:New ToteandExisting Tote.Hold Locationfor staging location translations
YCD_Translate_Bar_Code_ExistingToteYCD_Translate_Bar_Code_NewToteYCD_Translate_Bar_Code_HoldLocation