Current stock snapshot
The native Inventory Overview shows confirmed server counts from the authorizedinventory/analytics/summary API. This is a current stock snapshot of active
(nonarchived) workspace products, independent of the API’s sales date range.
It includes their stock rows in archived warehouses because the aggregate does
not filter warehouses. Every successful snapshot shows its server generation
time explicitly in UTC; the device fetch time never substitutes for it.
Product setup counts are separate from stock-row counts. A stock row identifies
a product, unit and warehouse; units and quantities are not summed. Independent
bars compare low, out-of-stock and unlimited row counts. Low and out-of-stock
may overlap; unlimited quantity is null and belongs to neither finite check.
These bars are not percentages or disjoint segments.
Missing or invalid fields show unavailable values and a partial-snapshot warning;
confirmed zero remains zero. Complete means all selected stock-summary fields
and the server timestamp are available, not full Inventory feature parity.
The aggregate includes all active products rather than just the loaded catalog
page. No warehouse, season or date filter is implied by this panel.
Access and refresh
The server resolves canonical membership and analytics permissions through the same Bearer-authenticated API as web. Hidden discovery preferences are not membership or authorization. The panel reads the server on entry and awaited pull-to-refresh, including short content that fits in the viewport. It retains an encrypted, account/workspace-scoped last-confirmed aggregate snapshot for offline reads and never overlays pending local stock edits. The saved server timestamp continues to identify its age. Actor/workspace changes clear the panel and revalidate. A denied read removes its cached resource. Transport failures retain the last confirmed snapshot when one is available; a cold failure shows unavailable state. See offline preparation for download and synchronization limits.Financial and pricing boundaries
Overview’s legacy income/expense/revenue tiles and owner/category revenue bars are withheld until the API guarantees currency isolation, linked-checkout handling, gross/net/refund definitions and reporting timezone. Overview recent-sale amounts are also withheld because that payload lacks currency; missing historical dates are not replaced with the current time. Sale details and recorded prices are not modified. Costing-scenario estimates are not realized profit. Season-price integration is a separate slice. Scheduled checkout must consume serveras_of, exact product/unit/warehouse/currency price keys, half-open
validity intervals and immutable price IDs, then use atomic period invoice
creation. A current catalog price or post-create period assignment cannot replace
this contract. Missing production pricing schema/RPC must fail closed (503).
This panel neither authors prices nor recomputes historical sales.
Stock quantity display
Inventory product rows and Overview low-stock rows preserve the parsed quantity’s shortest round-trippable decimal representation. There is no one-decimal rounding:0.04 remains 0.04, whole quantities omit .0, and null remains Unlimited.
Very small quantities may use scientific notation. This display rule does not
change stored quantities, unit comparisons, price formatting, or financial totals.
Precision is bounded by the existing double model; source precision already lost
during parsing is not recovered. Overview quantities wrap within narrow layouts.
Regressions live in inventory_ui_test.dart and the mounted
inventory_fractional_stock_test.dart 320px/2x text case.
Native Inventory navigation and analytics
Native Overview defaults to the current confirmed stock snapshot. Its scope and possible overlap are available through the info control; there are no duplicate Sell or Create product actions. Products and Sales own their primary floating create action. While data refreshes, that action uses only a previously verified permission hint for the same signed-in actor and workspace. Unknown permissions never grant an action; fresh permission denial revokes it, and API authorization continues to govern writes and replay. Account/workspace switches clear visible records, grants and pending-response ownership before loading the new scope. The receipt activity chart defaults to seven days, with a thirty-day option. It groups the bounded recent Overview receipts by their recorded creation date in the device’s local timezone, deduplicating IDs. It explicitly shows sample coverage and missing dates; absent days are unknown rather than fabricated zeros. This filter does not change the current stock snapshot. Financial totals in Sales are labeled as loaded receipts, separated by explicit receipt currency, and exclude receipts with unknown currency and locally pending edits. Quantities remain beside their original unit and warehouse; unlike units are never summed. Manage is a catalog hub with dedicated Owners, Categories, Manufacturers, Units, Warehouses, Finance categories and Sales periods screens. Finance categories remain a reference list with the existing Finance management contract; no new Inventory mutation capability is implied. Sales period editing preserves the existing API and immutable historical receipts. Creating a period requires the same create-sales permission as POST; editing or archiving requires the update-sales permission used by PATCH. Each action remains independently gated when using verified offline hints, and fresh denials revoke it. Audits has its own navigation entry and uses the existing audit source. Search in Sales and Audits filters available records and states that limited coverage; Products retains its existing server/local pagination search contract. Catalog pages use the shell navbar search and floating create action. Product editor and Checkout use one content scroll with a stable form action area and show prerequisite/read failures with retry. The native form navbar owns checkout search; category filters wrap instead of clipping at large text sizes. A provider read failure retains the last authorized scoped snapshot and displays limited-data feedback. Queued product deletion removes the catalog row optimistically while retaining a visible pending deletion entry linked to the existing offline retry/manual-conflict controls. Deletion confirmation and server history/destructive policies are unchanged. Regression evidence:inventory_product_action_stability_test.dart,
inventory_analytics_redesign_test.dart, workspace_permissions_offline_test.dart,
inventory_access_cubit_test.dart, the mounted stock-health/compact/fractional
stock tests, and existing editor/checkout/season/offline replay tests. Source and
widget checks do not establish physical-device, airplane-mode, or release proof;
exact-commit native CI builds and device verification are separate delivery gates.