JEB PartitionHubv9 · per-entity
For vendor scoping · Phase-1 build · v9 = Jacq feedback round (45+ updates · per-entity data model · Reservation Approval workflow · 5 product lines)
Active entity:
CRM pipeline14DashboardProject BriefNEWQuotationProjectsReconciliationNEWProduct DBStock mgmtCare PlansNEWMaintenance ↗v1

📊 BOQ-vs-PO Reconciliation Report

Tracks discrepancies between the quoted BOQ (full JEB scope) and the purchase orders that scope generates. Surfaces items JEB cannot order — the ones a dealer ends up sourcing locally — and spots missed items before installation. A report, kept separate from the BOQ table so quotation stays about selling.

Filter:Reconciling…
Avg match rate
0 of 0 BOQ lines
✗ Missing lines
in BOQ but not on a PO
+ Extra lines
on a PO but not in the BOQ
⚠ Qty diff
matched but qty mismatch
💰 Value at risk
quoted sell with no PO behind it

Quote summary — % of the BOQ that reached a PO

Click a row to drill into the line-by-line diff →
QuoteProjectClientStatusBOQ linesPO lines✓ Match✗ Missing+ Extra⚠ Qty diffMatch %Value at risk
Reading quotes and their PO previews…

Both sides are live: the BOQ is the quote's line items, and the PO side is what /flex/preview-po generates from them, joined on the component each was built from. Every figure is counted from those lines, so a summary row and its drill-down cannot disagree. Value at risk is sell-side onlyand reported per currency — a BOQ line's value is a sell price in the quote's currency and a PO row's is a cost in the supplier's, and one quote routinely carries three, so the two are never added together. The API stores no incoming dealer PO; when it does, this compares against that instead.