Skip to main content

What it is

How fast each variant sells, and how long the stock lasts. Sold 30/90/180d are raw units. Sales/day (weighted) blends those windows — recent weeks count more. Sales/day (season removed) is the same rate with the seasonal swing taken out, so periods are comparable. Planned demand/day is what procurement actually plans with: the weighted rate times the season factor of the period a purchase placed today would cover, times lifecycle and any manual factor. Days of Stock is stock divided by planned demand. Every factor is exposed as its own column, so an agent can cite the exact calculation path for any number it reports. demand_status (READY / LOW_HISTORY / NO_SALES_HISTORY / MANUAL_FORECAST / INSUFFICIENT_DATA) and demand_confidence (high / medium / low) say how much history backs the rate: under 180 days of history the windows shrink and the weights renormalize (READY); under 30 days the rate is measured since launch (LOW_HISTORY); no sales plus a manual target becomes MANUAL_FORECAST.

How it gets data

Computed view — derived automatically from Orders / Order Line Items, Products, and Procurement Config. Read-only; no ingest endpoint. To change the numbers, change the inputs (sales data, product master data, config). Sales are counted per variant on orders.placed_at, with refunded/expired/voided orders excluded via financial_status. Both shops are summed when several feed one workspace.

Fields

Identity & stock

Raw sales windows

Demand rates & blend weights

Seasonality & coverage window

Planned demand & its factors

Family trend (joined in)

All columns are read-only. The view also carries tenant_id / workspace_id for tenant isolation — filtered automatically, never selected.

Query it