Skip to content

OBLS-837 Fix discrete picking QA findings - #441

Open
olewandowski1 wants to merge 1 commit into
developfrom
OBLS-837-qa-fixes
Open

OBLS-837 Fix discrete picking QA findings#441
olewandowski1 wants to merge 1 commit into
developfrom
OBLS-837-qa-fixes

Conversation

@olewandowski1

@olewandowski1 olewandowski1 commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator

https://openboxes.atlassian.net/browse/OBLS-837

Summary

  • Search by product code works. The code was already returned by the API but never indexed, so the placeholder was accurate for names only.
  • Completing a pick returns the picker to the Discrete Picking list instead of the batch "Select Pick Type and Grouping" screen. The session now records which screen it started from.
  • Short picking without a reason code resets the navigation stack instead of pushing, so the finished task is no longer reachable with the back arrow. That path was pushing a screen that is not on the discrete stack, which is why the finished task stayed underneath.
  • One loading indicator per state: skeleton on first load, pull to refresh control for a pull, search bar spinner for background refreshes, and no overlap with the full screen loader when an order is tapped.
  • A partially picked order reads In progress with Lines: 4 / 5 Left, using the order level progress added in the backend PR.
  • "Show assigned orders" is now title cased and sits closer to the queue type chips.
image

Index product codes so search by code works, return the picker to the
screen the session started from instead of the batch pick type screen,
reset the stack on completion so the finished task is no longer reachable
with the back arrow, and show a single loading indicator per state.

Consume the order level pick progress from the pick task API so a
partially picked order reads In progress with the lines left to pick.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR addresses QA findings in the mobile discrete picking flow by improving discrete order search/indexing, fixing end-of-session navigation so pickers return to the correct “home” screen, and refining loading/progress UI on the discrete picking list.

Changes:

  • Added order-level progress fields and status codes to picking types, and used them to show per-order progress (e.g., “Lines: 4 / 5 Left”) and “In progress” status.
  • Introduced a session entry-point concept (BATCH vs DISCRETE) to consistently navigate back to the correct screen when a picking session ends.
  • Improved discrete picking list loading UX (separate first-load skeleton, pull-to-refresh spinner, search refresh spinner suppression when starting an order) and expanded search indexing to include product codes.

Reviewed changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src/types/picking.ts Adds order-level progress fields and status codes; updates discrete order shape to include open line counts and improved search index semantics.
src/screens/Picking/PickingPickStagingLocationScreen.tsx Resets navigation to the correct session home route when staging completes or no tasks remain.
src/screens/Picking/PickingPickQuantityScreen.tsx Updates flow helper invocation to include homeRoute for correct end-of-session navigation reset.
src/screens/Picking/PickingPickOutboundContainerScreen.tsx Updates post-pick flow navigation to include homeRoute, aligning end-of-session behavior across entry points.
src/screens/Picking/PickingPickLocationScreen.tsx Resets navigation stack on reallocation to avoid leaving completed task screens reachable via back navigation.
src/screens/Picking/PickingContext.tsx Tracks picking session entry point and derives a homeRoute used to return pickers to the correct screen.
src/screens/Picking/lib.ts Refactors flow helpers to reset to homeRoute (vs hardcoding Pick Type) and centralizes short-pick-without-reason navigation behavior.
src/screens/Picking/discretePickingStyles.ts Adjusts layout spacing for the “Show Assigned Orders” toggle positioning.
src/screens/Picking/DiscretePickingOrderCard.tsx Updates order status chip rendering, makes assignee display optional, and shows “Lines left” progress.
src/screens/Picking/DiscretePickingListScreen.tsx Refines loading indicators (first-load skeleton vs pull refresh vs background refresh) and title-cases “Show Assigned Orders”.
src/screens/Picking/discretePickingLib.ts Expands search tokens to include product codes and uses order-level counts/status to compute order progress and “In progress” state.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines 80 to +84
return Array.from(ordersById.values()).map((order) => {
const productNames = Array.from(productNamesById.get(order.requisitionId) ?? []);
order.searchIndex = [order.requisitionNumber, order.destination, ...productNames]
const returnedTaskCount = returnedTaskCountById.get(order.requisitionId) ?? 0;
order.taskCount = order.taskCount || returnedTaskCount;
order.openTaskCount = order.openTaskCount || returnedTaskCount;

@awalkowiak awalkowiak left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, waiting for final approval of backend before merging

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants