v1.17.0: admin at scale
"Admin at scale" release. Three threads. The admin pages are reworked to hold up at production catalogue size: server-side search across Inventory, Items, Adjustments, Inventory Transfers, and the Create PO/SO modal, plus a warehouse/bin filter on Inventory, Bins pagination + CSV, and a Put-Away staging dashboard. A POS Activity dashboard surfaces point-of-sale order activity and daily KPIs, gated behind a settings toggle so non-POS deployments never see it. And an Outbound Fraud queue can hold an order at FRAUD_REVIEW until a CSR clears it, with the billing/shipping auto-flag heuristic opt-in (off by default). Migration 066 documents the new status value; no DDL.
Mobile. Zero mobile/ diffs on this release. The v1.14.0 mobile build (versionCode 8) remains current; no new APK for v1.17.0.
Added
- Admin search + scale (#379): Inventory gains warehouse + dependent bin filter dropdowns, the endpoint honors
bin_id(was a silent no-op), andqmatches UPC + bin_code beyond SKU / item name. Bins gets pagination, a total counter, and CSV export. Items search extends to thebarcode_aliasesarray, debounces typed input with stale-response cancellation, and returns one row per item (a duplicate priority-1 preferred bin no longer fans it out). Adjustments and Inventory Transfers move their bin/item pickers to debounced server-side search. Put-Away becomes a staging dashboard backed by a new/putaway/staging-summaryendpoint that lists every staging bin (including empty ones) with per-item detail and CSV export. The Create PO/SO modal resolves a typed SKU server-side on a cache miss. - POS Activity dashboard (#380): a paginated POS sales-order list (order-type / terminal / cashier / date filters) and a daily KPI strip (sales, revenue, refunds, active terminals), from two read-only endpoints that LEFT JOIN audit_log for the POS_CHECKOUT metadata. Opt-in via the
pos_activity_enabledsetting (default off, Settings > POS); the Outbound nav entry is hidden until enabled. - Outbound Fraud queue (#381): an order can be held at
status=FRAUD_REVIEW, out of the picking queue, until a CSR clears it. The billing != shipping auto-flag heuristic is opt-in (fraud_review_billing_shipping, default off, Settings > Fraud Review): when on, an inbound order whose billing/shipping addresses diverge (line1/line2/city/state/postal, normalised, both sides populated) lands in FRAUD_REVIEW on first receipt only. A/fraudpage shows billing/shipping side by side with inline memo edit and a push-to-queue action;PATCH .../memoandPOST .../push-to-queueare gated by a newfraudpage permission and each write an audit row.
Migrations
- 066 (#381) -- refreshes the
sales_orders.statuscolumn comment to document the newFRAUD_REVIEWvalue. No DDL: the status column has no DB CHECK (the application layer is the source of truth) and thememocolumn shipped in 055.
See CHANGELOG.md for the full notes.