Project Detail - Purchase Orders (tab, approval workflow, PDF)¶
| Stage | Built |
|---|---|
| Status | Shipped |
| Design status | In progress |
| Estimate | M |
| Confidence | High |
| Linear | PIN-276 ↗ PIN-363 ↗ PIN-430 ↗ |
| Linear status | Done |
| Cycle | C16 |
| Design | Design ↗ |
| Linear epic | Procurement, Vendors & Compliance |
| Module | Purchase Orders ↗ |
Status: Built · Route: /projects/:id/detail?tab=purchase-orders
Scope¶
Project-scoped Purchase Orders tab on Project Detail: every PO issued against the project, filtered and columned by cost code, vendor, amount, status, insurance, and origin. PMs request POs from the Budget tab; submissions email the admin team, who issue in Foundation and mark them Issued; PMs then see the status update and can download a branded PDF. (Source: PIN-276, PIN-363, PIN-430.)
Acceptance criteria¶
- Purchase Orders tab lists POs where
projectIdmatches, with columns PO Number, Cost Code, Vendor, Amount, Status, Insurance, Origin (Budget / CO-NNN) - Row click opens the existing PO detail slide-out
- "Request PO" opens a modal: cost code, vendor, scope, amount, PO source type (Original Budget / Internal CO / External CO)
- Submitting a request emails the admin team; admin manually issues the PO in Foundation and marks it Issued in Pinley
- PM sees the status update on the Budget/PO tab; email notification on request, audit log on every state change
- "Download PDF" on issued POs (gated by
GetPORequests): branded document with vendor, project, cost code, scope, amount, signature blocks, T&Cs, and attachments list - Cross-project admin queue stays a separate surface at
/admin/purchase-orders
The project-scoped Purchase Orders tab on Project Detail: a filtered view of every PO issued against the project, the PM approval flow with notifications, and branded PDF generation/download for each PO. This is the single-project view — distinct from the cross-project admin/portfolio PO queue in the Billing module (Purchase Orders - admin/portfolio queue).
Notes¶
Three tickets shipped this: the tab itself, filtered to the project (PIN-276); the PM approval flow with notifications and PDF download, tested end-to-end (PIN-363); and branded HTML→PDF generation (PIN-430). An interim "email PO to Mandy & Elaine" flow (PIN-841) is separately in QA. AI-drafted PO scope generation (PIN-255) is a deferred enhancement on top of this, not yet built.