Skip to content

Jobs and Site Visits

These jobs run the delivery side of the system once a quote has become a job: status changes, countdown emails to customers, project manager (PM) visit bookings and notices, feedback requests, calendar block-outs and materials. All times are Brisbane time. For the full timetable see the Scheduled Tasks Overview.

Job statuses referred to here are the ones on the Jobs screens: Pending Deposit, Deposit Paid, In Progress, On Hold, Completed, Ready to Schedule, Colour Consultancy Pending, Waiting Service Agreement, Waiting on Trades, Cancelled, Accepted and Paid. PM visit types are the ones on Project Manager Visits: Scheduled, Ad Hoc, Improvement Request, Follow Up, Customer Request, Personal, Old Job, Final Inspection, Quote, Travel Time, Warranty Claim, Wednesday Meeting, Custom Block out, Pre-start Site Inspection, Sample Pot Inspection and Customer Confirmed.

Recalculate job earnings (set:job:earnings)

Section titled “Recalculate job earnings (set:job:earnings)”
  • Runs: daily at 01:00.
  • Selects: every job in Paid status.
  • Changes: recalculates the job’s earnings figure as the sum of sub job prices, less tradesperson advances, less materials (excluding GST), less internal variations not offset against a tradesperson (excluding GST). This is the margin figure used by the dashboard and job stats.
  • Where to see it: job earnings on the job and the money charts under Dashboard metrics.

Process project manager reallocations (user:reallocation)

Section titled “Process project manager reallocations (user:reallocation)”
  • Runs: daily at 02:00.
  • Selects: PM reallocations that staff have set up (a PM is away, so their work is handed to another PM between two dates, see ROCH-620).
  • Changes: for a reallocation that is active today and not yet applied, it moves the PM’s site visits in the date range and their jobs (in any live status) to the stand-in PM, records the original PM on each, and swaps zone ownership. For a reallocation whose end date is today it moves visits and jobs back to the original PM, restores zones and marks the reallocation complete.
  • Where to see it: the PM shown on jobs and on the Project Manager Visits calendar.

Deactivate team members who have not clocked in (update:user:not-clocked-in)

Section titled “Deactivate team members who have not clocked in (update:user:not-clocked-in)”
  • Runs: daily at 02:00.
  • Selects: active users with the team member role whose most recent clock-in (from the tradesperson app, or a PM checking them in on a report) is more than three months ago. Team members who have never clocked in are not affected.
  • Changes: marks the user inactive.
  • Background: requested in ROCH-1708 so the team member list stays current. See Team Members.

Mark sub jobs starting today as In Progress (update:subjob:status)

Section titled “Mark sub jobs starting today as In Progress (update:subjob:status)”
  • Runs: daily at 07:00.
  • Selects: sub jobs whose start date is today and that are not completed.
  • Changes: sets the sub job status to In Progress.
  • Where to see it: Job Progress and the Planning Board.

Mark finished jobs as Paid (complete:jobs)

Section titled “Mark finished jobs as Paid (complete:jobs)”
  • Runs: daily at 12:00.
  • Selects: jobs where every invoice is Paid, every sub job is at 100%, every advance is Approved and the job itself is at 100%, but the job status is not yet Paid.
  • Changes: sets the job status to Paid and records the completion time. This is what moves a job off the active boards and makes it eligible for the customer feedback request and Mailchimp.

Job progress follow-up email (job-follow-up)

Section titled “Job progress follow-up email (job-follow-up)”
  • Runs: Mondays at 05:00, on even-numbered weeks of the year only (so roughly fortnightly).
  • Selects: jobs that are In Progress, have started, and have at least one invoice in the Hidden status with no invoice date. These are jobs where progress payments have been set aside but not yet scheduled.
  • Sends: a single email “Job Progress Follow Up Required” to the Job Progress Follow Up Required group in CC Emails, listing job number and customer with links.
  • Changes: nothing.

Deposits paid summary (send:deposit-paid-summary)

Section titled “Deposits paid summary (send:deposit-paid-summary)”
  • Runs: daily at 07:00.
  • Selects: the first progress-payment invoice on each job (the deposit) that is in Paid status and was processed as paid yesterday, on jobs that are not Cancelled.
  • Sends: one email “Deposits paid summary” listing job reference, PO number, customer, amount and paid date, plus a total. It goes to the address configured on the server (currently the accounts inbox for Karen) and is blind-copied to the developer for monitoring. Nothing is sent on days with no deposits.
  • Changes: nothing.
  • Background: ROCH-1977, replacing a manual daily email from the person doing the banking.

Upcoming job countdown emails (send:upcoming)

Section titled “Upcoming job countdown emails (send:upcoming)”
  • Runs: daily at 05:00.

  • Selects: for each of 7, 6, 5, 4, 3, 2 and 1 weeks ahead, jobs whose start date is exactly that many weeks from today. For every week except the 2-week email the job must also be a residential type (Residential Interior, Exterior or Interior & Exterior), not In Progress or On Hold, have a start date on every sub job, and belong to a customer with Notify on. The 2-week email is sent to every job starting that day regardless of type or status.

  • Requires a PM: if the job has no PM and has map coordinates, the system assigns the default PM for that zone first. Jobs that still have no PM are skipped.

  • Sends to the customer:

    Weeks out Subject
    7 Your Prompt and Professional Transformation with Rochele is booked!
    6 FIRST NAME let’s prepare for your upcoming project!
    5 Your Rochele project start date is getting closer!
    4 Only one month to go until your Rochele project starts!
    3 FIRST NAME it’s time to prepare your space for your Rochele transformation!
    2 Meet your Rochele Project Manager
    1 FIRST NAME, we are almost there!
  • Changes: nothing (each send is logged).

  • Background: these replaced the older weekly pre-start emails (notify:customer:pre_start), which are no longer scheduled. If a job’s start date moves, the customer gets whichever emails match the new date; there is no memory of which ones were already sent.

Pending deposit and colour consultancy reminders (notify:customer:job_status)

Section titled “Pending deposit and colour consultancy reminders (notify:customer:job_status)”
  • Runs: daily at 08:00.
  • Selects: jobs in Pending Deposit or Colour Consultancy Pending status whose status change date is recorded, for customers with Notify on.
    • Pending Deposit: sends when the number of days since the status changed is a multiple of 7 (so weekly, on the same weekday as the status change).
    • Colour Consultancy Pending: sends when the days since the status changed is a multiple of 30, and only if a colour schedule has actually been sent to the customer (ROCH-2055).
  • Sends: to the customer, “Pending Deposit Reminder Email” or “Colour Consultancy Pending Email” with the job details and next step.
  • Changes: nothing.
  • Gotcha: the deposit reminder stops as soon as the job leaves Pending Deposit. Because deposits are marked paid from MYOB hourly (see Invoices, Advances and MYOB), a payment received late in the day is normally reflected before the 08:00 run. ROCH-1571 investigated a case where it was not.

Job starting tomorrow email (notify:customer:job_start)

Section titled “Job starting tomorrow email (notify:customer:job_start)”
  • Runs: daily at 13:00.
  • Selects: jobs with a PM where a painter sub job starts tomorrow, has a tradesperson assigned and is not a ring-and-book sub job, for customers with Notify on.
  • Sends: “Your job with Rochele Painting is starting tomorrow!” to the customer, copying any additional job contacts. It introduces the PM and confirms the start. (If the job itself is flagged ring-and-book the wording changes to say the painter will call to arrange a start time.)
  • Changes: nothing.

Tradesperson start day reminder (sub_job_start_day_reminder)

Section titled “Tradesperson start day reminder (sub_job_start_day_reminder)”
  • Runs: daily at 15:00.
  • Selects: every sub job that starts tomorrow.
  • Sends: “Job Start Day Reminder” to the assigned tradesperson’s email with the job address and details. Sub jobs without a tradesperson are skipped.
  • Changes: nothing.

Auto-generate pre-start inspections (generate:supervisor:visits)

Section titled “Auto-generate pre-start inspections (generate:supervisor:visits)”
  • Runs: daily at 05:00, but only does anything when the auto-generate pre-start visits server setting is on. At the time of writing it is off by default, so pre-start visits are booked by PMs from the iPad or by the office.
  • Selects (when enabled): jobs starting in exactly five working days that have a PM, do not have Pre-start visit disabled turned on (the iPad toggle from ROCH-1952) and do not already have a Pre-start Site Inspection visit.
  • Changes: creates a Pre-start Site Inspection visit in the PM’s next free slot on that day (if the day works out to a Monday it uses the previous Friday), marked priority, with the note “Auto-generated prestart inspection” and customer notification switched on.
  • Background: the pre-start rules have changed several times (ROCH-683 forced pre-starts over $30,000, ROCH-1858 lowered that to $5,000, ROCH-966 based it on the number of trades). None of those price or trade thresholds are in the current code; the toggle on the job is the only control.

Customer-requested visit alert to PM (notify:pm:pre_start_visit)

Section titled “Customer-requested visit alert to PM (notify:pm:pre_start_visit)”
  • Runs: daily at 10:00.
  • Selects: PM visits scheduled for tomorrow that the customer requested themselves (through the customer timeline) and that the PM has not yet confirmed.
  • Sends: “#JOB - Visit Request - CUSTOMER” to the job’s PM with a link to the internal timeline so they can confirm or call the client.
  • Changes: nothing.

PM visit tomorrow notice to customer (notify:customer:supervisor_visit)

Section titled “PM visit tomorrow notice to customer (notify:customer:supervisor_visit)”
  • Runs: daily at 15:30.
  • Selects: customers who have a PM visit scheduled for tomorrow (any visit type linked to their job).
  • Sends:
    • If the customer’s Notify is on: an email “Job #REF has an inspection booked” (or “…has a pre-start site inspection booked” / “…has a sample pot inspection booked” for those types) with date, time window and a link to the timeline where they can accept or reschedule. For Scheduled, Ad Hoc, Improvement Request, Follow Up, Customer Request, Final Inspection and Pre-start visits the PM is copied, and any additional job contacts are always copied.
    • If the customer’s Notify SMS is on: an SMS with the address, date and time and a link to say whether they will attend.
    • Any extra quote contacts flagged for SMS also receive the SMS (ROCH-837, ROCH-2018).
  • Changes: stamps the visit as notified once anything was sent. Visits that have already been notified are still selected the next time they fall on “tomorrow” (for example after a reschedule).
  • Gotcha: this is the job people mean when they say “the 3pm appointment SMS”. Personal, Wednesday Meeting and block-out visits have no job and are never sent to a customer.

PM visit tomorrow SMS to head tradesperson (notify:contractor:pm_visit_painting_in_progress)

Section titled “PM visit tomorrow SMS to head tradesperson (notify:contractor:pm_visit_painting_in_progress)”
  • Runs: daily at 15:30.
  • Selects: PM visits tomorrow linked to a painter sub job that is In Progress and has a tradesperson assigned, on jobs with a PM.
  • Sends: an SMS to the sub job’s head tradesperson: “PM NAME has scheduled a site visit for the job at ADDRESS (Ref …) on DATE at TIME. Please ensure you or a team member is onsite to review the job progress.”
  • Changes: nothing.
  • Background: ROCH-1538 and ROCH-1675 added this so the painter is on site when the PM arrives.

Create final inspection appointments (create:final:supervisor-appointments)

Section titled “Create final inspection appointments (create:final:supervisor-appointments)”
  • Runs: daily at 03:30.
  • Selects: sub jobs whose suggested end date is tomorrow.
  • Changes: creates a Final Inspection visit for the job’s PM on that date, marked priority with the note “Final Appointment”, then deletes any later visits for the same sub job that the customer has not yet been notified about (so the final inspection becomes the last visit).
  • Where to see it: Project Manager Visits.

Wednesday meeting block-outs (blockout:wednesday-meetings)

Section titled “Wednesday meeting block-outs (blockout:wednesday-meetings)”
  • Runs: Mondays at 00:00.
  • Selects: every user with the Project Manager role.
  • Changes: for each of the next 14 Wednesdays, creates a Wednesday Meeting visit from 11:00 to 12:00 if one does not already exist. These block the PM’s calendar so nothing else is booked over the team meeting.

Recurring meeting block-outs (blockout:recurring-meetings)

Section titled “Recurring meeting block-outs (blockout:recurring-meetings)”
  • Runs: Sundays at 00:00.
  • Selects: a single, hard-coded PM account (Alastair). If that account does not exist nothing happens.
  • Changes: for the coming week creates block-out visits if missing: Monday 07:30 to 08:30 (Custom Block out, every second week only), Monday 16:00 to 16:30 (Personal, “gym”), Tuesday 09:30 to 11:30 (Custom Block out, “meeting at job 19100057”), Thursday 07:30 to 08:30 and Thursday 16:00 to 16:30 (Custom Block out).
  • Gotcha: these times and the person are fixed in code, not configurable. Ask a developer to change them.

Customer feedback request (request:feedback)

Section titled “Customer feedback request (request:feedback)”
  • Runs: daily at 10:30.
  • Selects: jobs in Completed status with every invoice Paid, that have not yet been asked for feedback and have not received any, for customers with Notify on.
  • Sends: an SMS to the customer: “Thank you for choosing ROCHELE® for your transformation project. How did we do?…” with a short link to the feedback form.
  • Changes: stamps the feedback sent date on the job.
  • Where to see it: the Feedback tab on the job and the review KPIs under KPI.

Customer feedback reminder (request:reminderfeedback)

Section titled “Customer feedback reminder (request:reminderfeedback)”
  • Runs: daily at 11:30.
  • Selects: the same jobs where the first request went out more than three days ago, no reminder has been sent and no feedback has been received.
  • Sends: an email “Thank you for choosing Rochele” to the customer with the feedback link.
  • Changes: stamps the feedback reminder date. Only one reminder is ever sent.

Daily variation view report (send:report:variation-views)

Section titled “Daily variation view report (send:report:variation-views)”
  • Runs: daily at 06:30.
  • Selects: for each active PM, every time a customer opened one of their variations yesterday, on jobs that are not Cancelled.
  • Sends: “Daily Variation View Report - DATE” to the PM, only if there was at least one view, with views, viewing time and last viewed per variation.
  • Changes: nothing.

Internal variations report (send:internal:variant)

Section titled “Internal variations report (send:internal:variant)”
  • Runs: monthly, midnight at the start of the 1st, covering the previous calendar month.
  • Selects: variation sub jobs created last month whose variation is Accepted, flagged internal, has a price above zero and is not offset against a tradesperson (so Rochele is absorbing the cost).
  • Sends: “Internal Variations” to the Internal Variations CC Emails group. Nothing is sent if there were none.
  • Background: ROCH-352 and ROCH-363 define the report.

Line item colour change alert (lineItem:colour:change)

Section titled “Line item colour change alert (lineItem:colour:change)”
  • Runs: hourly.
  • Selects: jobs with line items whose colour differs from the previously recorded colour (or has just been given a colour) and that have not been notified yet, where the change was made more than an hour ago (so a run of edits produces one email).
  • Sends: “Line Item Colour Changed for job #REF” to the job’s PM (or service@rochele.com.au if there is no PM), copied to the Line Item Colour Changed CC Emails group, listing the items and old and new colours.
  • Changes: marks each line item as notified.

Colour schedule reminder (send:colour-schedule-reminder)

Section titled “Colour schedule reminder (send:colour-schedule-reminder)”
  • Runs: hourly.
  • Selects: colour schedules in Unaccepted status that were sent to the customer more than a day ago, at the exact hours where the time since sending is a multiple of 72 hours.
  • Sends: “Colour Schedule Reminder Ref#NUMBER” to the job’s customer, copied to the Rochele Interior CC Emails group (the colour consultants), with a link to review and accept the schedule.
  • Changes: nothing. Reminders continue every three days until the schedule is accepted or a PO is requested.

Allocate unassigned materials (allocate:materials)

Section titled “Allocate unassigned materials (allocate:materials)”
  • Runs: daily at 23:45.
  • Selects: material purchases recorded against a tradesperson but not yet linked to an advance, sub job or job.
  • Changes: for each, finds the tradesperson’s first Suggested advance whose total is larger than the material price, links the material to that advance, sub job and job, and reduces the advance by the material price. Materials with no suitable advance stay unallocated.
  • Sends: one email “Rochele Allocated/Unallocated Materials” to the Allocated Materials CC Emails group (falling back to the business inbox if that group is empty), listing what was allocated tonight and what is still unallocated for active tradespersons.
  • Where to see it: Materials and the advance on Advances. Background in ROCH-95, ROCH-254 and ROCH-679.
  • Most customer emails here check Notify; the SMS ones check Notify SMS. Both live on the customer record (see Customers), and ROCH-1527 fixed a case where editing a customer on the iPad switched Notify off.
  • Visit notices always describe “tomorrow”, so a visit created for tomorrow after 15:30 gets no automated notice; the PM or office should tell the customer directly.
  • The countdown emails and start-tomorrow email only care about the job’s dates on the morning they run. Rescheduling a job the night before can trigger or skip an email.
  • If a job never reaches Paid even though everything looks finished, check for an advance that is not Approved or an invoice that is not Paid; the Mark finished jobs as Paid job needs all of them.