WC Inventory Overview 1.29.0
WC Inventory Overview 1.29.0
Canonical bundled release from magpern/wc-inventory-overview.
This release publishes the complete M9–M12 Supplier Performance feature train as a single version. Intermediate development bumps 1.26.0 / 1.27.0 / 1.28.0 were never tagged and are not published as separate GitHub Releases.
Prerequisite
Upgrade from 1.25.0 (M8 Hardening & GA, schema v10).
Overview
v1.29.0 ships four post-GA milestones that improve supplier performance visibility and purchase-order planning, plus the CI recovery work that restored a genuinely green GitHub Actions baseline:
| Milestone | Capability |
|---|---|
| M9 | Supplier Observed Lead-Time Statistics |
| M10 | Purchase Order Expected-Date Suggestion |
| M11 | Supplier On-Time Delivery Rate |
| M12 | Supplier List Performance Surface |
Zero schema change across the entire train (DB_VERSION stays 10). No new public API, no new settings UI, no inventory/cost mutation, no storefront Expected Delivery semantic change.
M9 — Supplier Observed Lead-Time Statistics
Read-only supplier delivery history computed from posted Goods Receipts linked to fully-received Purchase Orders:
- Average, fastest, and slowest observed lead time (calendar days)
- Completed-order sample count
- Displayed on the Supplier admin edit screen alongside the merchant-editable configured lead time
- Below 2 completed orders: “not enough data yet”
- Partial shipments measure lead time to the shipment that completed the order, not the first partial
- Internal sole-owner service (
Supplier_Lead_Time_Service) — not a public API; one bulk aggregate query, no persistence, no N+1
M10 — Purchase Order Expected-Date Suggestion
When creating a new Purchase Order and selecting a supplier, Expected Date / Confidence are pre-filled:
- Observed average lead time when usable (≥ 2 completed orders)
- Else configured default lead time
- Else no suggestion
- Confidence is suggested as Estimated (never Exact)
- Advisory only — always editable; once the operator edits, the suggestion never overwrites again for that form (INV-M10-1)
- Does not run on the edit-PO screen
- Uses calendar days only; never writes its own persistence (ordinary form submit path only)
M11 — Supplier On-Time Delivery Rate
Read-only reliability figure on the Supplier detail screen:
- Of completed orders with a known expected date (Exact or Estimated), what fraction were fully received on or before the deadline?
- UNKNOWN confidence (and missing dates) are excluded from both numerator and denominator — never assumed late or on-time
- Deadline = expected date + grace days (same option already used for live “Delayed” flagging)
- Shared policy primitive:
Expected_Deadline(consumed by both historical on-time rate and livePO_Delay) - Below 2 rated orders: “not enough data yet” (independent of observed-lead-time sample size)
- Still exactly one bulk statistics query (zero additional queries vs M9)
M12 — Supplier List Performance Surface
Purchasing → Suppliers list gains two read-only columns after configured Lead Time:
-
Observed Lead Time
-
On-Time Rate
-
Same usability thresholds as the detail panel; insufficient data shows an em dash (—)
-
One
get_stats_bulk()call per list page (no per-row statistics / no N+1) -
Configured Lead Time column unchanged; new columns not sortable
CI recovery included
This release also includes the CI recovery work required for a trustworthy green GitHub Actions baseline:
- Deterministic MariaDB
DROP/CREATEbefore each PHPUnit suite - Fixed
Test_DB_Transactiontemporary-table leakage (0 risky tests) release-audit.sh --development/--releasemodes (feature-train compatible)- Actions
checkout/cacheupgraded off Node 20 deprecation path
Explicitly not included
- Spend analysis / order-history reporting
- Supplier merge tool
- Forecasting / coverage
- Warehouse locations
- Storefront Expected Delivery confidence changes
- Printable PO
- Grace-days Settings UI redesign
- Expected-date suggestion source UI
- Inventory Position supplier column
- Any other deferred roadmap work outside M9–M12
Schema / data
DB_VERSIONremains10- No migrations, no new tables/columns/indexes
- No persisted derived statistics — every M9/M11 figure is recomputed from operational PO/GR history
- No stock, cost, Goods Receipt lifecycle, or Inventory Position mutation from this train
Install / upgrade
- Download
wc-inventory-overview-1.29.0.zipfrom this release. - Upload via Plugins → Add New → Upload, or use Dashboard → Updates where the GitHub updater is configured.
- No schema step —
DB_VERSIONstays10; noALTERruns; no upgrade routine fires for this release. - Merchant-visible additions: Observed Lead Time + On-Time Rate on supplier detail; list columns; new-PO expected-date suggestion. Everything else continues as in 1.25.0.
Validation checklist
Per docs/release-runbook.md and docs/checklists/feature-train-m9-m12-release-readiness.md:
- Confirm
DB_VERSIONis still10and schema assertion isok: true - M9: Observed Lead Time panel matches a manual spot-check where history exists
- M10: new-PO suggestion prefers observed → configured; Estimated; edits latch; edit-PO unaffected
- M11: On-Time Rate excludes UNKNOWN; grace days agree with Delayed semantics
- M12: list columns agree with detail; insufficient data shows —; no list N+1
- Regression: Suppliers, POs, Goods Receipts, PO Receiving, Inventory Position, storefront Expected Delivery, Quick Restock, Cost Adjustment, Batch Migration CLI, PO Delay
- Full automated suites green (unit, M1–M12 focused, integration) with 0 risky
Rollback
The entire M9–M12 train is code-only relative to v1.25.0 — nothing to reverse in the database.
- Code rollback 1.29.0 → 1.25.0: unconditionally safe. Remove the new panels/columns/suggestion prefill; purchasing, receiving, inventory, and storefront Expected Delivery continue to function.
- No schema/data cleanup is required.
- Historical PO/GR rows are untouched either direction.
Changelog: CHANGELOG.md