Customer approval
"Yes, go ahead" is the most expensive message of your day, and usually the vaguest. "Yes to all of it?" "The flyers too?" "At the price I quoted on the phone or the one I emailed?" PressCal makes it written, per item, time-stamped.
What the customer sees
The green button in the quote email takes them to a page with the items listed, each with its own checkbox. They tick what they want, watch "Selected: 2 / 3" and the amount update live, and hit approve.
No account, no password, no install. It opens on a phone as well as a computer.
Items they approved on an earlier pass show up ticked and locked — they can't un-approve them by accident, and they don't count twice.
Partial approval — the norm, not the exception
You sent cards, flyers and pads. The customer wants only the cards for now. That used to be a phone call and a note on a scrap of paper; here it becomes a Partial status on the quote, with the approved items marked and the rest pending.
The rest aren't lost. When they decide, they come back through the same link and approve the next ones.
What happens automatically at the moment of approval
1. The price locks on every approved item. Whatever you recost underneath, the price the customer saw and approved doesn't move. It's the only correct behaviour — that's what was agreed.
2. The quote becomes a job. There's no "convert to job" button and none is needed: on the first approval, full or partial, the job appears by itself on the job board, in your first stage. The folder on disk is computed when it's first needed — when you download files into it.
3. The bell rings. An in-app notification: "Quote QT-… approved!" or "Partial approval". The text is written in your organisation's language at the moment it's created and stays that way — change language later and old notifications aren't rewritten.
4. The status becomes Approved or Partial.
If they ask for changes
You fix the items and send again. With the new send the items go back to pending, so no old approval stays stuck to a price that no longer applies. The correspondence stays in the same thread and the quote's history is all in one place.
What it does NOT do
So you're not hunting for it: a quote doesn't keep numbered versions you can compare against each other. There's one quote and it evolves; what happened is recorded in its history. Want to keep the old version separately? Duplicate the quote before you change it — it gets its own number and the two live side by side.