Skip to content

Project Detail - Budget (estimate → budget)

StageBuilding
StatusPartial
Design statusIn progress
EstimateM
ConfidenceMedium
LinearPIN-266 ↗ PIN-652 ↗
Linear statusDone
DesignDesign ↗
Linear epicProject Management & Controls
ModuleBilling ↗

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

-

Reference

  • Linear: PIN-266 (Project Detail — Budget tab + PO commit display); PIN-652 (Verbal Award: estimate lines → budget line rollup by CSI cost code)