Supplier Data Readiness
A pre-go-live checklist that flags suppliers whose price-and-stock data has gone stale, so purchasing decisions are not made on out-of-date supplier feeds.
Purpose
- Used by the purchasing team before relying on supplier pricing/stock for sourcing.
- Answers "which suppliers have stale price/stock data, and how stale?"
- Shows item coverage and how many of those items are in stock per supplier.
- Sorted worst-first (most days stale at the top) so the freshness backlog is obvious.
How to Access
Desk > Reports > Supplier Data Readiness, or /app/query-report/Supplier Data Readiness.
Report type: Script Report. Reference DocType: Supplier Item Price and Stock.
Filters
| Filter | Type | Required | Description |
|---|---|---|---|
| Staleness Days | Int | No | Default 7. A supplier is marked stale when its newest price/stock record is older than this many days. |
Columns
| Column | Type | Description |
|---|---|---|
| Supplier | Link (Supplier) | The non-disabled supplier being checked. |
| Items | Int | Count of Supplier Item Price and Stock rows for the supplier. |
| Items In Stock | Int | How many of those rows have stock_qty > 0. |
| Last Updated | Datetime | Most recent modified timestamp across the supplier's price/stock rows. |
| Days Stale | Int | Whole days between now and Last Updated. Rendered red when the row is stale. |
| Stale | Check | 1 if Days Stale exceeds Staleness Days, else 0. |
How It Works
The report runs a single grouped query-builder aggregate over Supplier Item Price and Stock joined to Supplier, restricted to non-disabled suppliers (supplier.disabled = 0). Per supplier it computes the item count, an in-stock count via a Case summing rows where stock_qty > 0, and the latest modified timestamp via Max.
In Python, each row's days_stale is date_diff(now, last_updated) and is_stale is set when days_stale > staleness_days (default 7). Rows are then sorted by days_stale descending so the stalest suppliers surface first.
flowchart TD
A[Supplier Item Price and Stock] --> J[join Supplier where disabled = 0]
J --> G[group by supplier]
G --> C1[Count rows = Items]
G --> C2[Sum stock_qty > 0 = Items In Stock]
G --> C3[Max modified = Last Updated]
C3 --> D[days_stale = date_diff now, Last Updated]
D --> S{days_stale > staleness_days?}
S -- yes --> ST[Stale = 1 - days red]
S -- no --> OK[Stale = 0]
ST & OK --> SORT[sort by days_stale desc]
Conditional formatting
The JS formatter colors only the Days Stale cell red (var(--red-600)) when is_stale is truthy. There is no multi-level severity — a supplier is either stale or fresh against the single threshold.
Notes
- Suppliers with
disabled = 1are excluded entirely. - Suppliers with zero Supplier Item Price and Stock rows do not appear (the join produces no group).
Items In Stockcounts rows with positivestock_qty; it is not a sum of quantities.- Lower the Staleness Days filter to tighten the freshness bar before go-live.
- Companion pre-go-live report: Amazon Go-Live Data Readiness.