Next-generation platform

Implementing putaway inventory

Putaway is the process of moving received inventory from a dock location to dedicated shelves for future store operations.

Solution

Understand APIs, services, and other components that are used to implement the putaway inventory flow.

Portlet scan

Putaway is essentially an inventory movement from source to the dedicated location in a store. Putaway tasks are generated when you call the closeReceipt API in the receiving flow. One putaway task is generated for the product or inventory status combination from the source location (DOCK-LOCATION) to the dedicated location, for the product or inventory status.

You can view the Putaway portlet only if you have permission to 'Execute Putaway' resource. When you call the GET on SIM API - {tenantId}/v1/stores/{storeId}/putaway-tasks:summary?groupBy=status, the count of putaway tasks that are not started, in progress, and total count of these two statuses are displayed in the Putaway portlet. When you click any of the numbers, the Putaway task list page opens. To view the list of putaway tasks that are in not started status, click Not started. Similarly, if you want to view the list of putaway tasks that are in in-progress status, click In Progress. When you click the total count, putaway tasks that are in both not started and in-progress statuses are displayed.

In the Putaway portlet, when you to scan the shipment or container number of the received shipments, the translateBarcode API with BarcodeType=StorePutaway is called that displays the open putaway tasks that are created for the scanned shipment or container number (mapped to ContainerScm field). The translated data could be either a shipment or container. Depending on the data that is obtained from translation, the SIM API GET on {tenantId}/v1/stores/{storeId}/putaway-tasks?status=NOT_STARTED,IN_PROGRESS,PICKED is called with the query parameter either containerNo or shipmentNo. If one or more putaway tasks are found, the picking page in the putaway task execution flow is displayed. If putaway tasks are not found, an appropriate error message is displayed. The application provides you the flexibility to putaway each product, or an entire container or shipment.

Putaway task list page

The Putaway task list page displays open putaway tasks that are not started or in-progress status in the store. You can choose to putaway products based on the putaway type. In the putaway-preferences API, you can configure the type and putawayRequired attributes at the tenant or store level to putaway tasks based on the these attributes.

Depending on how you go from the portlet, putaway tasks that are not started, in-progress, or both are listed. To fetch the putaway tasks, the GET on SIM API - {tenantId}/v1/stores/{storeId}/move-requests?status={statuses}&fields=totalRequestedQuantity is called. By default, putaway tasks are sorted in the order of oldest to newest. The call to SIM API is paginated with page size 10. On scroll, another call is made to SIM API to fetch the next 10 records. Sorting putaway tasks from newest to oldest triggers the same SIM API call with an additional query parameter order_by=createdTimestamp desc.

On applying a filter, the GET on SIM API - {tenantId}/v1/stores/{storeId}/putaway-tasks?assignedToUserId={userId}&status={statuses}&targetLocationId={selectedLocation} is called to retrieve the list of filtered putaway tasks.

Click the product ID link to go to the summary page. For a putaway task that is not started, the Putaway button is displayed. When you click this button, you are taken to the putaway execution flow. For a putaway task that is in in-progress status, the Continue button is displayed.

Putaway process flow

You can accomplish putaway either for a single product or for all the products of a container or shipment. In the Putaway list, when you click the Putaway button to putaway a single product, the PATCH on SIM-API {tenantId}/v1/stores/{storeId}/putaway-tasks/{putawayTaskId} is called to update the Assigned to user ID field as the current logged in user.

If a putaway task is already in progress by another store associate, a message is displayed prompting whether you want to continue with task and assign it to yourself, or not continue. If you click Yes, the putaway task is assigned to you. Otherwise, you remain in the Putaway task list page.

When you scan a carton or shipment number, the putaway tasks corresponding to the shipment or carton are not assigned to you (current logged-in user). Instead, the putaway task is assigned only when you take any action on that particular putaway task. At the same time, the application validates whether another store associate is continuing with the task. This ensures that multiple store associates can work on putaway tasks for the same carton or shipment.

To fetch a single putaway task, the GET on SIM API {tenantId}/v1/stores/{storeId}/putaway-tasks/{putawayTaskId} is called. To fetch putaway tasks for a carton or shipment, the GET on SIM API {tenantId}/v1/stores/{storeId}/putaway-tasks is called with shipmentNo or containerNo as the query parameter. These SIM API calls are part of the custom mashup, which also appends the product information to the putaway tasks object by calling the getCompleteItemList API.

Putaway task involves picking of products from the source location and depositing them in the target location. The picking page displays putaway tasks that are grouped by the source location. Whereas the deposit page displays putaway tasks that are grouped by the destination or target location. In the Putaway task list page, when you click the Putaway or Continue button, and if picking is not yet started or in progress, the picking page is displayed. If picking is completed, a message that all products are picked is displayed. You can go to the deposit page and deposit the picked products.

For putaway tasks, the following rules are configured:
  • Is location scan mandatory before scanning any product rule enabled. For more information about this rule, see stores-rule API in Configuring move inventory.
    • If location scan is mandatory, before marking the product as picked or deposited, first scan the source or deposit location. Then, scan the product.
    • If location scan is not mandatory, you can directly scan the products to without scanning any location.
  • Is manual movement rule enabled to mark inventory as picked or deposited without scanning the product. This rule is based driven through Manually update quantity while picking or depositing in Move inventory resource permission. If this resource permission is allowed, you can view the minus and plus buttons. Also, the quantity text box is editable. You can edit the picked or deposited quantity by using these widgets instead of scanning the product.

In the picking or deposit page, when you scan a bar code, the translateBarcode API is called. If a location is scanned, the scanned location is defaulted as the current location. If a product is scanned, and location scan is mandated, the matching move task is identified by using the location and product. If found, the move task is marked as picked by calling the POST on SIM API - {tenantId}/v1/stores/{storeId}/move-requests/{moveRequestId}/move-tasks/{moveTaskId}/pick. Otherwise, an error message is displayed. If location scanned is not mandatory, you can scan the product without scanning the source location. In the pick page, on scanning the product, the product is marked as picked. In the deposit page, on scanning the product, it is marked as deposited.

When you click the minus widget, the picked or deposited quantity is reduced by one unit. POST on SIM API - {tenantId}/v1/stores/{storeId}/putaway-tasks/{moveTaskId}/undo-pick or {tenantId}/v1/stores/{storeId}/putaway-tasks/{putawayTaskId}/undo-deposit is called on this action. On click of plus widget, the picked or deposited quantity is increased by one unit. The POST on SIM API - {tenantId}/v1/stores/{storeId}/putaway-tasks/{putawayTaskId}/pick or {tenantId}/v1/stores/{storeId}/putaway-tasks/{putawayTaskId}/deposit is called on this action. You can manually modify the picked or deposited quantity as well. In this case, depending on whether the quantity is increased or decreased, the SIM pick or undo-pick API is called. On pick-all, the Pick-all POST on SIM API - {tenantId}/v1/stores/{storeId}/putaway-tasks/{putawayTaskId}/pick is called with quantity as remaining units or serials to be picked. This link is enabled only if you have the resource permission to pick all the products without scanning.

For a serial tracked item, the plus and quantity text box widgets are disabled. To mark a product as picked or deposited, scan the serial number. To undo-pick or undo-deposit, click the minus widget. A window opens where you can scan the serial number to remove the picked or deposited serials. On scan, the translateBarcode API is called with BarcodeType=Serial and then POST on {tenantId}/v1/stores/{storeId}/putaway-tasks/{moveTaskId}/undo-pick or {tenantId}/v1/stores/{storeId}/putaway-tasks/{putawayTaskId}/undo-deposit API is called.

You can record shortage only in the pick flow and not in the deposit flow. Record shortage opens window where reasons are listed and the unpicked quantities are marked as shorted. The shortage reasons are fetched by calling SIM API - {tenantId}/v1/exception-codes?activity=PUTAWAY&storeId={storeId} and shortage is marked by calling POST on SIM API - {tenantId}/v1/stores/{storeId}/putaway-tasks/{putawayTaskId}/exceptions.
  • If you mark all the products as shorted, the putaway task is automatically canceled.
  • If you pick all the products, an appropriate message is displayed. You can go to the deposit page where you can initiate another putaway task. This helps you to be more efficient by first picking all the products of the putaway tasks, process them, and then deposit the products instead of picking and depositing each product one by one. When you click View tasks the Putaway task list page is displayed. When you click Go back to picking the picking page is displayed. You can edit the picked quantity while depositing the units. In the deposit page, the API call on bar code scan, minus widget, plus widget and edit of quantity text box are same as explained earlier in this section.

If a destination, deposit, or target location is not stamped on the putaway task, you can select a destination location. The GET on SIM API - {tenantId}/v1/stores/{storeId}/putaway-tasks/{putawayTaskId}/alternate-target-locations is called to fetch dedicated locations for the product. You can select any dedicated location. If dedicated locations are not available, you can scan or select any other location. If the selected location is full or not reachable, you can select an alternate location by clicking the alternate location link. The GET on SIM API - {tenantId}/v1/stores/{storeId}/putaway-tasks/{putawayTaskId}/alternate-target-locations is called, and a window opens that displays the list of dedicated locations for the selected product. You can also select any other location to deposit the product. To display other locations other than the dedicated locations, the GET on {tenantId}/v1/stores/{storeId}/locations is called.

Before you select an alternate deposit location for the putaway task, you must select a reason. The reasons are fetched by calling GET on SIM API - {tenantId}/v1/exception-codes?activity=PUTAWAY&storeId={storeId}. Another putaway task with a new alternate location is created by calling POST on SIM API - {tenantId}/v1/stores/{storeId}/putaway-tasks/{putawayTaskId}/exceptions. The new putaway task displays the quantity that is not yet deposited.

Putaway summary page

After you deposit all the products, the putaway task is marked as completed and the Move summary page is displayed. After you complete a putaway task, you cannot make further changes. To fetch the putaway task details, the GET on SIM API {tenantId}/v1/stores/{storeId}/putaway-tasks/{putawayTaskId} is called. If putaway tasks are displayed for a carton or a shipment, the GET on SIM API {tenantId}/v1/stores/{storeId}/putaway-tasks is called with shipmentNo or containerNo as the query parameter. The getCompleteItemList API is also called within the same custom mashup to fetch the putaway task details.