Project Detail - Budget (estimate → budget)¶
| Stage | Building |
|---|---|
| Status | Partial |
| Design status | In progress |
| Estimate | M |
| Confidence | Medium |
| Linear | PIN-266 ↗ PIN-652 ↗ |
| Linear status | Done |
| Design | Design ↗ |
| Linear epic | Project Management & Controls |
| Module | Billing ↗ |
Route: /projects/:id/detail?tab=budget
Scope¶
Project Detail Budget tab: CSI-grouped budget rows seeded from the awarded estimate (line-level, linked to seeded cost codes with drill-down to source estimate lines), showing budget vs. committed (issued POs) vs. remaining, with a per-row "Request PO" flow. (Source: PIN-266, PIN-652.)
Acceptance criteria¶
- Budget tab grouped by CSI division/cost code, seeded from the awarded estimate at award time
- Columns: Cost Code, Description, Budget, Committed (issued POs), Remaining, Vendor, Status, Insurance Status
- PM view shows a single committed number; Executive+ view adds a margin column
- Click a row → PO history slide-out + "Request PO" action
- Request PO modal: source = Original Budget / Internal CO / External CO; Internal CO requires a reason code + free-text justification (recorded for AI training); submits a request and emails the admin team (Phase-1 manual issuance, no in-app approval queue yet)
- Budget rows roll up line-level from estimate line items (not just sections), linked to the seeded cost-code library, with unclassified lines grouped into a catch-all row
- Row drill-down shows the contributing estimate lines behind each budget number
- Re-awarding a project is idempotent — no duplicate budget rows
Conor's comments¶
PO request and proper transfer from estimating needs to be confirmed. Needs testing & sign off after 8/19
Notes¶
Budget zero when estimate empty; retest after estimate fix
Open question for Conor¶
-