Unified Job & Visit Workspaces
This update introduces a streamlined Visit Workspace, giving every scheduled visit a dedicated, bookmarkable page for managing crew, line items, and invoicing with real-time profit tracking. We’ve overhauled the Job Workspace and Scout to eliminate redundant menus, merging billing and costs into a single "Line Items" block and replacing multi-step browser confirmations with a clear "Review Changes" summary. Workflow efficiency is further improved by aligning job statuses with actual visits, automating coordinate backfills for property maps, and refining the autosave logic to ensure your manual schedule changes are never overwritten by background updates.
New features
- Visit workspace: Each scheduled visit opens on a bookmarkable page (
/org/…/visits/…) for status, crew, line items (same editor as the job), and invoices—including Outstanding, Profit to date, row Edit, and Options (send, mark paid, delete when allowed)—with clear paths to the full job and Schedule. Open it from Schedule quick look (Open visit workspace) or from upcoming visits on the job. If map pins were missing, coordinates backfill from the property address like schedule maps (Geocod.io when configured, otherwise Nominatim); service-area detail stays unobtrusive on Overview until you open a specific area tab.
Improvements
-
Scout — jobs: Proposed Create job / Edit job actions line up with the real job workspace: waitlist, one-time, and recurring. Run cards show a readable schedule panel (single service date with optional budgeted hours for one calendar day, or multi-day start/end and visit days, plus recurring controls when relevant)—not raw JSON—with no redundant Schedule type dropdown or extra one-time description line.
-
Job workspace — Schedule: Save schedule / Update schedule type funnel through one Review schedule changes summary (visit counts and short notes) instead of chained browser confirms and extra toasts. Recurring changes preview adds/removals, then Apply updates visits, like one-time. Waitlist jobs hide rows that don’t apply. Leaving recurring or switching schedule type spells out consequences in that summary first.
-
Jobs list & workflow: Status follows visits (workspace, Schedule, My Day, visit workspace), not job tabs—the list removes status tabs; bulk actions adjust priority, crew, and reschedule all visits. Job Upcoming visits uses tappable cards (date, status, optional visit title, crew, invoice count) with Schedule in the section header and a note when more visits exist than are shown.
-
Line items & money: Billing lines and Job costs are merged into one Line items block (catalog, packages, cost/retail, include on invoice—no separate billing grid or Save billing lines). Costs & profit folds into Billing & customer payments (Outstanding, Profit to date next to Create invoice and the list). Full-page workspace drops the old Finance & records block; Service location (map and areas) still appears when a property is set.
-
Creating & editing jobs: Set waitlist, one-time, or recurring while creating; one-time builds visits when dates land; recurring pattern, crew, end rules, and multi-day behavior save with Create job / Save changes—no separate Create series; tune visits from Schedule. Multi-day range toggles cleanly between Service date and Start/End, and the stray Save schedule row stays hidden until the job exists where that matters. Visit crew for one-time and recurring sits only under Schedule type, with tighter layout—selected people above search, suggestions flush beneath, list opens on focus—and budgeted hours per visit for one-day one-time schedules. Turning Waitlist/other types toward One-time uses the normal visit-update path; saving One-time no longer inserts an extra browser confirm ahead of Update one-time visits?.
-
Calmer copy: Removed long explanatory blurbs from add/edit job (schedule lectures, billing/finance paragraphs, SMS footnotes in legacy popups, invoice intros, duplicate bulk-visit hints). Controls and labels stand on their own.
-
Back, saves, & chips: Back clears pending autosaves (job fields, visit rows, line items) so leave prompts aren’t racing blur-triggered PATCHes—Save all stays meaningful when you choose to leave. Visit Save your changes? stacks buttons vertically; background saves reuse the job workspace’s bottom-right chip.
Bug fixes
-
Scout: Schedule chips honor weekdays in payloads (including JSON strings on
pattern/recurring_schedule); a true single calendar day sticks to service date mode—no start/end rows or stray weekday chips—and the CSS hides the range fields when appropriate.crm_customers_listsearch relies on customer name/company/contact clues, not the proposed job title. -
Typing, pickers, & lines: Estimate and job text/line edits no longer auto-save on short idle pauses (focus loss and commit points drive saves, like invoices). The catalog/package “add line” picker stays under the top nav, aligned while scrolling, unclipped, and doesn’t dismiss when clicking results. Line category suggestions load above neighboring content and appear on focus or typing even while categories still load. Visit workspace: Back always opens the discard/save sheet when dirty; failed saves restore buttons and footer labeling; catalog/custom lines and autosave work for visit-scoped expense lines without a stored job id.
-
Schedule integrity: Switching schedule type to One-time previews first; confirming Update one-time visits? persists the type change and rebuilds visits (invoices strip refreshes without a full reload); moving off recurring clears draft invoices on removed visits before blocking deletion (sent/paid visits still guard with clearer messaging); moving between Waitlist/Recurring/one-time hides obsolete one-time inputs; flipping to One-time wipes pending visits before recreating so mixed leftovers don’t stick; one-off visits spun from dates pick up current job crew from the schedule like elsewhere.
-
Autosave vs schedule: Workspace auto-save skips schedule PATCHes—only dedicated schedule actions (Save / Move to …) touch type, dates, pattern, crew, and hours—so the dirty indicator isn’t cleared while schedule edits are still outstanding. One-time Save sends budgeted hours, crew, and correct busy guarding; the visit summary modal padding/footer are fixed. Multi-day range reliably shows/hides Service date vs start/end on new jobs; Create job no longer trips the generic browser “leave site?” warning entering full workspace; Create job includes line items in the main submit; recurring setup reuses crew already chosen on one-time when it applies.