Every jobcard breaks down into one or more jobs. A job is "the work" — "Full service", "MOT", "Front brake pads" — and each job owns its labour lines, parts, and fixed costs. The jobcard's total is the sum of its jobs' totals.
The line-item model
| Level | What it holds |
|---|---|
| Jobcard | Customer, vehicle, status, comments, recommendations, mileage in/out |
| Job | Description, assigned technician, complete flag, authorisation status |
| Labour | Each labour line: description, hours, hourly rate, line total |
| Part | Each part: description, quantity, unit cost (internal), unit price (customer), order status |
| Fixed cost | Each fixed-cost line: description, quantity, sale price |
Labour and parts both belong to a job, not to the jobcard directly. That means you can have a jobcard with two jobs — "Service" and "MOT" — each with their own labour and parts, and the customer sees a clean breakdown per job on the printed invoice.
How saves work (this is important)
Jobcard-level fields (title, customer, vehicle, status, mileage, comments) save immediately as you edit them — there's an autosave + a debounce.
Line items (labour, parts, descriptions) auto-save too, per job: your edits live in local state, and about a second and a half after you stop typing the whole job is committed in one bulk save. Each job shows a "Saving" then "Saved" indicator in its header while this happens, with a retry link if a save fails.
Watch the save indicator
Pistonlog flushes pending edits when you navigate away, but it's safer to wait for the "Saved" tick on the job you were editing. If a save errors, click the indicator to retry.
The job menu
Every job header has a three-dot menu holding the things you do to the job as a whole:
| Item | What it does |
|---|---|
| Rename | Type a description for the job in place |
| Turn On / Off Auto-Title | With auto-title on, the job's name is generated from what's in it and kept in sync as you add labour and parts. Renaming by hand turns it off |
| Move Up / Move Down | Reorder the jobs on the card. The order is what the customer reads on the printout, so put the main work first |
| Type | Tag the job as MOT, Service, or Timing Belt. More than one can apply. The tag is what drives the yearly MOT reminder and the service reminder, and each tagged job gets a chip where you set the actual work date |
| Save as Template | Save this job, with its labour and parts, as a job template you can drop onto future jobcards |
| Delete Job | Removes the job and everything under it |
When someone else is on the same jobcard
Pistonlog shows you who else is in the card. A presence pill at the top of the Jobs tab reads "Also editing: Sam (Technician)", and if two or more people are in there it collapses to "Sam + 2 others" with the full list on hover. If you're the one with the card open twice, it says "you have this open elsewhere" instead.
Opening a tab someone has already been working in for a while brings up a "Heads up — someone is already on this tab" dialog, telling you who and for how long. It's advisory: Proceed carries on editing, Switch to Messages takes you to the jobcard chat to agree who's doing what.
If you both save the same job anyway, the loser gets a "This Job changed while you were editing" dialog. Nothing is written until you pick: Keep my changes saves what's in front of you over the top, Use latest saved Job throws yours away and loads theirs. The same dialog appears as "We found unsaved Job changes" if the browser closed mid-edit, offering to restore the backup it kept on this device.
Defaults from your garage
Both labour rate and parts markup pre-fill from your garage's defaults in Pricing. You can override them per line if a specific job uses a different rate.
Related
- Creating a jobcard
- Job authorisation statuses
- Parts — the parts hub with deeper detail