Inventory
Stock by location
Stock by location
Quantity on hand per item at this location
Río Piedras
Active SKUs
1,184
63 inactive
Total qty on hand
24,810
units across all items
Below reorder point
42
7 out of stock
Inventory value (at cost)
$182,340
retail $329,180
| Item | Category | Qty on hand | Committed | Available | Reorder pt. | Restock lvl. | Price | Cost | Last received | Status |
|---|---|---|---|---|---|---|---|---|---|---|
|
USB-C Cable 2m / Black
SKU: USB-C-2M-BLK · 7500435330025
|
Electronics | 0 | 0 | 0 | 10 | 30 | $19.99 | $7.20 | Mar 30, 2026 | Out of stock |
|
Wireless Mouse
SKU: MSE-WL01 · 7500435330018
|
Electronics | 18 | 2 | 16 | 25 | 50 | $34.99 | $18.40 | Apr 14, 2026 | Low stock |
|
Coffee Beans 1lb · Dark Roast
SKU: COFFEE-DK-1LB · 7500435550036
|
Food & Beverage | 8 | 0 | 8 | 15 | 40 | $12.99 | $6.40 | Apr 10, 2026 | Low stock |
|
AA Batteries 8-pack
SKU: BAT-AA8 · 7500435110014
|
Electronics | 248 | 12 | 236 | 50 | 200 | $9.99 | $4.10 | Apr 28, 2026 | Healthy |
|
Dish Soap 32oz
SKU: DSH-32OZ · 7500435440025
|
Cleaning | 412 | 8 | 404 | 100 | 300 | $4.99 | $1.85 | Apr 22, 2026 | Healthy |
|
Ibuprofen 200mg · 100ct
SKU: IBU-200-100 · 7500435660047
|
Health | 94 | 3 | 91 | 20 | 80 | $8.49 | $3.10 | Apr 19, 2026 | Healthy |
Show
per page · showing 1–6 of 1,184
…
Row click behavior: opens the parent product at
/products/$id. The product detail page's existing Inventory tab (currently a "Coming soon" placeholder, see ProductDetailPage.tsx) is where per-location stock detail will surface. This avoids inventing a parallel /inventory/$id route for the same data.
▸ Reference: Loading / Empty / Error states
Loading skeleton
No items match your filters
Try widening the search or clearing filters.
Couldn't load inventory
Something went wrong loading the stock list.
▸ Mockup notes (design decisions)
- Scope (validated): only Stock snapshot + Low Stock. Adjustments, Stock Counts, and Movements are not surfaced here — pending a separate architecture decision (their UI location was never documented).
- Layout: reuses the live portal's list-page composition (PageHeader → StatCardGrid(4) → FilterBar → DataTable → built-in pager). No navy hero banner — those are reserved for detail pages per the established pattern (PurchaseReceiptDetailPage / SupplierDetailPage).
- Active location: the LocationProduct list is scoped to the location active on the TopNav switcher. The chip in the subtitle echoes it so it's visible at a glance.
- "Low stock" stat card: styled with a warning surface and clickable — sets the stock-status filter to Below reorder point. Same trick the Dashboard low-stock card uses today.
- Available column: shown alongside Qty on hand and Committed (= QtyOnHand − QtyCommitted). The backend doesn't return it directly; computed client-side.
- Severity tints on Available: warning amber when below reorder point, error red when 0. Status badge gives the categorical version (Healthy / Low stock / Out of stock).
- Row click → /products/$id: avoids inventing a parallel detail route. The Product detail page's existing Inventory tab will host per-location stock detail when implemented.
- Sortable columns: all columns marked sortable. Each needs a matching
SortBy+SortDirectionswitch onListLocationProductsEndpoint. If the backend doesn't support a given sort yet, remove the arrow rather than ship a silent no-op (CLAUDE.md DataTable rule #21). - Out of scope (explicit): Adjustment CRUD, Stock Count CRUD, Movement log, Cost history, multi-location aggregated view, CSV export beyond the visual button.