Next-generation platform

Implementing inventory move on ad hoc basis

A store associate can move inventory from a source location and to a destination location without an existing move request.

Solution

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

Portlet scan

To start ad hoc move, in the Move inventory portlet click the Start ad hoc move button. The Start ad hoc move button is resource permission controlled and visible only if the Execute Move Request resource permission is assigned. When you click Start ad hoc move, and if an ad hoc move is already in progress, the message, An adhoc move is currently in progress. Do you want to continue with that? is displayed. When you continue to work on the in-progress move request, the GET on SIM API {tenantId}/v1/stores/{storeId}/move-requests?type=ADHOC&assignedToUserId={currentUserId}&status=NOT_STARTED,IN_PROGRESS API is called to fetch the open move requests. If multiple in-progress ad hoc move requests exist, then the most recently created move request is displayed. If you choose to create a new ad hoc move, scan the products to pick from the source location and move them to the destination location. The products are added to ad hoc move and marked as picked. You can move the picked products to the destination location and the products are marked as deposited. When products are picked, inventory moves from the source location to PICK-VIRTUAL location. Similarly, when product are deposited, inventory is moved from PICK-VIRTUAL to the deposit location. Therefore, inventory move is a two-step process. Inventory is first moved from a source location to a virtual location, and then moved from the virtual location to a destination location.

For ad hoc move, 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, directly scan the products to move without scanning the 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.
When you scan a bar code, the translateBarcode API is called with the type, StoreScanItemOrLocation. If a location is scanned, the scanned location is defaulted as the current location. If a product is scanned, and location scan is mandated, a validation is performed to ensure that the location is scanned earlier. A validation is performed to verify if inventory is present for the scanned product in the scanned location.
  • If a single type inventory is present, a move task is created for that inventory and marked as picked.
  • If inventory is present in multiple inventory statuses, you are prompted to select the appropriate inventory status and product class to add to the ad hoc move request. Inventory is validated by calling the GET on SIM API {tenantId}/v1/stores/{storeId}/inventory?productId={scannedProductId}&locationId={scannedLocation}. To create a move task, POST on SIM API {tenantId}/v1/stores/move-requests/{moveRequestId}/moveTasks is called. When you scan the first product, an ad hoc move request is also created by calling POST on SIM API {tenantId}/v1/stores/move-requests.
  • If inventory is not present, an appropriate error message is shown.

When location scan is not mandated, and if the product is present in multiple locations you are prompted to select the location. If inventory is present in multiple inventory statuses, you must the inventory status as well. To get different locations, inventory statuses, and product class, the GET on SIM API {tenantId}/v1/stores/{storeId}/inventory?productId={scannedProductId} is called.

If you scan a serial-tracked item, the application validates that the item scanned is a valid serial and then adds to ad hoc move. Otherwise, an appropriate error message is shown.

The remove link removes the move task from the ad hoc move request by calling the POST on SIM API - {tenantId}/v1/stores/{storeId}/move-requests/{moveRequestId}/move-tasks/{moveTaskId}/undo-pick. When you pick another inventory, a window opens that displays the same product in different source locations, inventory status, and product class, wherever the product is available. When you scan a product, it is assumed that the product with same inventory status and product class that you selected earlier is being picked.

When you click the plus widget, the POST on SIM API - {tenantId}/v1/stores/{storeId}/move-requests/{moveRequestId}/move-tasks/{moveTaskId}/pick is called, and the picked or deposited quantity is increased by one unit. When you click the minus widget, the POST on SIM API - {tenantId}/v1/stores/{storeId}/move-requests/{moveRequestId}/move-tasks/{moveTaskId}/undo-pick is called, and the picked quantity is reduced by one unit. You can modify the picked or deposited quantity. Depending on whether you increase or decrease the quantity, the appropriate SIM pick or undo pick API is called.

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

After you pick all the products you can deposit them. In the deposit flow, the destination locations are not pre-assigned. You must scan or select a location, and then scan a product to deposit. After depositing all the product, you can view the move summary. For more information about the APIs that are called for deposit and move summary page, see Implementing inventory move with move requests.

You can cancel all the products of ad hoc move requests that are in in-progress status by calling the Cancel Move Request API. For more information about canceling ad hoc move requests, see the Cancel Move Request API.