KPIs and queue filters
Context bar KPIs
| KPI | Meaning | Source |
|---|---|---|
| In queue | Pending unassigned lines with qty > 0 | Unassigned inventory in selected warehouse |
| Put away today | Assignments confirmed this session (+ persisted assigns when available) | Session counter after each Confirm & Put Away |
| Expiring < 90d | Pending lines with expiry within 90 days | Expiry date on queue rows |
Put-Away Queue tabs
| Tab | Filter | Sort |
|---|---|---|
| Pending | location_id is null | FEFO — earliest expiry first |
| All | All lines with available qty > 0 | FEFO |
| Done | location_id is set | FEFO |
Queue row fields
| Element | Description |
|---|---|
| Product name | products.name |
| SKU · Batch | Monospace meta row |
| Qty | available_quantity (units) |
| Expiry pill | Color: red <90d, amber <180d, green otherwise |
| Left stripe | Blue = active row; color = expiry severity |
Progress footer
| Field | Rule |
|---|---|
| Today’s progress | putAwayToday / dailyTarget (default target 47) |
| Bar width | Capped at 100% |
| Remaining note | Items left for daily target + pending count |
Active item stats grid
| Column | Field |
|---|---|
| SKU | product_sku |
| Batch | batch_number |
| Qty to put away | available_quantity |
| Expiry | Formatted expiry_date |
Toasts (verbatim)
| Message | When |
|---|---|
Please select a warehouse first | Scan without warehouse |
Put away to <bin code> | Successful assign |
Failed to assign location to item | Assign error |
Location with code <code> not found | Bad bin override scan |
Bin selected: <code> | Override scan matched |