"Where are my materials?" on the customer's card

Every order raised for a customer, grouped by their jobs, with status, due date, exceptions, claims and the lines — answerable without going near the supplier.

What it is

A section on the contact card listing the customer's material orders grouped by job. Each order shows its PO number, status, a short/damaged flag, the due date and where it was sent. Any claims on it appear as coloured chips. Expanding shows the lines with what arrived, what is missing and what was damaged.

Also called: customer material status · has the steel shipped · customer orders by job

See it
"Where are my materials?" on the customer's card
Apr
May
Jun
Jul
Ronan Petsch — Riding Arena
Framing
Ronan Petsch — Barndominium
Concrete
Delia Yoder — Riding Arena
Trim
Ivy Brubaker — 40×64 Shop
Framing
Delia Yoder — 40×64 Shop
Concrete
Framing crewConcrete crewTrim crew
The 'Material orders' section on a contact card: two job headings, each with PO rows carrying status pills, a 'Short / damaged' flag and a red Claims chip row. ContactMaterialOrders.tsx. Sample data — no customer information appears here.
How it works
  1. 1Orders are read by contact_id and grouped by job id or project id
  2. 2Claims are loaded per order and shown as chips on the row
  3. 3Expanding an order loads its lines, capped at 40 with a '+N more' note
  4. 4Outstanding orders per job are counted in the job heading
  5. 5The section is silent when there is nothing to say
  6. 6Receiving and claims stay on the supplier's card — this view states that
Why we built it

In the component: the two views answer different questions — 'supplier card → "what have we bought from Harwood, and what do we owe?"… here → "this customer's build — has the steel shipped yet?"… Going to Suppliers, finding the right supplier and scanning their whole history to answer a question about one customer is the trip this exists to remove.' Grouping is non-negotiable: 'A customer with two builds running has two independent material streams; merged into one list neither can be trusted.' (Migration 219 names the case: 'a customer with two jobs running (Trey, today) could not have them told apart at all.') And on claims: '"where is my steel" is answered by "it arrived short and we've claimed".'

The problem
  • Answering a customer question means scanning a supplier's entire order history
  • Two builds for one customer merged into one untrustworthy list
Sound familiar?
What you get
The customer's question answered from the customer's card
Two jobs stay two jobs
The claim is part of the answer

See it on your own jobs

Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.

or keep browsing features →