AAuditPro Suite· Jobs manual
Jobs manual› Create the job

The 3-step wizard

1 Template & client Pick template (12 options) Confirm client (auto-filled) → 2 Period & dates Fiscal year, planned start/end Live JSON preview of folders → 3 Team Partner, manager, senior, staff Capability-matrix suggestions

Step-by-step

  1. From the client detail page

    Open the client (M04). Click New Job in the action rail. The wizard launches with the client field pre-filled — you can't accidentally create a job for the wrong client.

  2. Step 1 — pick the template

    Dropdown shows the 12 active templates. Picking one expands a panel with the template description + deliverables + skills required + estimated total hours, so you can verify it's the right shape.

  3. Step 2 — period & dates

    Fiscal year (auto-derived from client's fiscal_year setting + current calendar; override if needed). Planned start date, planned end date. As you type, the right panel shows a live JSON preview of the folder structure with tokens substituted in real time — you see exactly which folders will be created.

  4. Step 3 — allocate the team

    Pickers for Partner, Manager, Senior, Staff. Capability-matrix integration: each picker only shows employees with matching skills. EQCR picker appears only if template requires_eqcr or client is listed.

  5. Commit

    Click Create job. ~1.2 seconds later: redirected to /jobs/{id} dashboard. The job number is rendered in the header (e.g. JOB2026/0042) — auto-issued via NumberSequenceService.

What happens on commit (under the hood)

#ActionTables touched
1Issue job number from sequencesnumber_sequences (atomic counter)
2Insert jobs rowjobs (1 row)
3Insert team-member rowsjob_team_members (1-5 rows)
4Clone template tasks → job_tasks (parent re-link)job_tasks (8-15 rows)
5Clone checklist items → job_task_checklist_itemsjob_task_checklist_items (50-200 rows)
6Walk folder JSON, write to disk under storage/jobs/{id}/filesystem · job_folders (10-30 rows)
7Initial status_history row (status=not_started)job_status_history (1 row)
8If template.requires_workpapers — auto-seed 12 workpapers + 79 proceduresaudit_workpapers (12), audit_workpaper_procedures (79)
9If template = audit — initialise disclosure checklist (~120 items) + 24 FS notesengagement_disclosure_checklist, fs_notes
10If M20 auto-subscribe is on — subscribe client to recurring obligationsclient_compliance_obligations + compliance_deadlines
11Audit-log entryaudit_logs

Total: between ~80 rows (TPL-VAT minimal) and ~430 rows (TPL-AA Annual Audit) — all in a single database transaction, all rolled back if any step fails.

Form fields reference

1Template
Required · 1 of 12

Filtered to is_active=1. Selection drives every downstream defaulting.

2Client
Pre-filled (read-only)

Inherited from where you launched the wizard. Cannot be changed in the wizard — start over from the right client.

3Job title
Auto-generated, editable

Default: "{template.name} · FY {year}". Edit if your firm uses different conventions.

4Fiscal year (from-to)
Required dates

Drives every period reference downstream — TB import dates, materiality basis, FS comparatives.

5Planned start
Required

When fieldwork begins. Drives capacity reports + deadline dashboard.

6Planned end
Required

Deadline for issuance. Reports flag past-due jobs in red.

7Engagement partner
Required · employee picker

Carries professional liability. Capability matrix filters to partners only.

8Audit manager
Required (audit) · optional (advisory)

Day-to-day owner. Sees the job in their "My jobs" filter on the dashboard.

9Senior + staff
Optional but recommended

Multi-pick. Each gets a row in job_team_members with role.

10EQCR partner
Required for listed / high-risk

Independent partner. Auto-required when template demands or client.is_listed=1. Cannot be the engagement partner.

11Estimated fee
Optional · OMR 3-dp

Defaults to client's annual_audit_fee if set. Drives invoice auto-draft on completion.

12Internal notes
Free text

Things only the team should see. Not exposed to client.

The job dashboard (after commit)

You're redirected to /jobs/{id}. The dashboard has 8 or 9 tabs (workpapers tab visible only when requires_workpapers=1):

TabWhat it shows
OverviewStatus banner · progress bar · financial summary · partner/manager block · description
Tasks5-phase grouped list, inline checklist ticking, drag-drop reorder, filter
TeamAdd/remove members, change role, set scope
FilesPolymorphic attachments (per-job + per-task), upload, download, delete
CommentsFlat thread, internal flag, author-only edit/delete
TimelineStatus-history with colour badges
ActivityAudit-log filtered to this job
WorkpapersVisible only when template.requires_workpapers=1; opens M19 hub
InvoicesLinked invoices roll-up + billing timeline

Engagement workflow strip — guided 8-phase navigator

Above the tabs sits the Engagement Workflow strip — a row of numbered chevron-pills mapping the job to 8 logical phases (Acceptance → Plan → Trial Balance → Fieldwork → Workpapers/AJEs → FS/Reporting → Review → Issue & Lock). The strip is purely a navigator; clicking any pill jumps to the relevant tab. Pills auto-update from existing data — no manual phase management.

Phase 1 — Acceptance (engagement letter first)

Per ISA 210, the signed engagement letter is the FIRST artefact on every audit. The Acceptance phase tracks it explicitly: the phase only flips green when (a) the engagement letter is generated/finalised AND (b) the team is allocated AND (c) a manager or partner is on the team. Until the letter is on file, the phase's next-action button reads "Generate engagement letter" and lands on the Documents tab — not the Team tab.

Smart routing — every pill knows what's blocking it

Each pill computes its destination based on the topmost failing exit criterion, not a hard-coded tab. Examples: Acceptance with no letter → Documents; with letter but no team → Team; with team but no manager → Team + CTA "Assign a manager or partner". Review with 0 points raised → Tasks tab → #phase-review (avoids the hidden Review-Points tab). Issue & Lock routes to Overview when the phase is active (status-change form lives there), but to Documents when it's done (where signed deliverables live) — a click never feels like a no-op.

Same-page click feedback

When a pill click resolves to the page the user is already viewing (no navigation possible), the pill flashes briefly with a gold ring + a small toast appears at the bottom reading "You are already on the {Phase} destination." The page also smooth-scrolls to the top so the strip is in view. No more silent clicks.

Rich hover tooltip on every pill

Hover any pill — even skipped ones — for an instant context card showing phase number, label, status badge, description, progress (X of Y · percent · mini bar) and a status hint. Skipped pills explain WHY they're skipped (e.g. "This engagement type does not require a trial balance").

Tooltip portal — escapes overflow clipping

The rich tooltip is rendered as a body-level overlay populated by JS on hover, not as an inline element. Reason: the pill row scrolls horizontally (overflow-x: auto) which clips any element trying to render above the row. The portal pattern bypasses that completely. The native HTML title="" attribute remains as the no-JS fallback, so even with scripts disabled hovering shows the phase description.

Hero card — sorted criteria + dynamic CTA

The hero card carries a "X of Y done" pill + colour-coded progress bar + sorted criteria list (failing first in amber, done at bottom in green) + smart CTA whose label changes based on the topmost blocker (e.g. "Generate engagement letter" → "Add team members" → "Assign a manager"). For Issue & Lock the CTA is a direct form-submit button, not a navigation link.

Pill ↔ tab visual handshake

When the active phase targets a specific tab and the user is on that tab, the tab nav-link gets a gold left-edge accent + ★ marker. Visual confirmation: "you're on the right tab for the active phase".

Skipped pills are non-clickable

Phases that don't apply to this engagement render as greyed-out, italic, non-clickable spans instead of links — clicking them would take the user to a tab that doesn't even exist for this job. The hover tooltip explains why.

Celebration banner when complete

When every applicable phase is done, the hero card is replaced with a green "Engagement complete" banner showing the trophy icon + a one-click Print summary button.

Why only the active phase has a hero card

The hero card shows only for the currently active phase — that's by design. Other pills surface their info as a rich tooltip on hover. Showing 8 hero cards stacked would dilute the "what to do next" focus. One active phase, one hero card, one smart CTA.

✓Done
Green

Phase exit criteria met (e.g. all planning tasks ticked, TB imported).

▶Active
Gold + glow

Current phase. Hero card below the strip explains what to do + shows the next-action button.

·Pending
Grey

Not yet reached. Click to navigate anyway.

−Skipped
Italic grey

Doesn't apply to this engagement (e.g. TB phase for a payroll job).

The hero card under the strip carries:

The strip is collapsible (top-right toggle); collapsed state persists per-user via localStorage. F1 help available with article m07.workflow.

Tip — best for new staff

The chevron pills work as live training. A senior can hand a fresh staff member a job and say "follow the gold pill" — the strip surfaces the next-action so the staff doesn't have to guess which tab matters today. Materially shortens time-to-productivity for new hires.

Try this

Open any client → New Job → TPL-AA Annual Audit → next year's FY → standard team. Hit commit. In ~1 second you have a fully-populated dashboard with 12 workpapers, 8 tasks, 79 procedures, ~120 disclosure items, 24 FS notes, 7 status-tracked phase folders on disk. This is what 30 minutes of manual setup used to look like.

Watch out

Don't pick a template that doesn't match the actual work. If you create an Annual Audit but the engagement is really a Compilation, you've materialised 230+ extra rows you don't need + 79 procedures you'll have to mark N/A. Cancel the job and create the right one — soft-delete leaves a forensic trail but is the right move.

Tip — JSON preview

Watch the live folder JSON preview in step 2 of the wizard before committing. If you see {CLIENT} still showing un-substituted, your client record is missing the client_code field — fix that first or your folders will have literal token text in their names. Click into client → save the code → restart the wizard.