You don't have to manually create a job every time a recurring stop is due. Every night, around 04:00 UTC, PortaPro walks every customer's Rate Card and generates the upcoming service jobs for you.
How the nightly run works
For each Rate Card row, PortaPro calculates the next visit date as last service date + the row's frequency interval. If that next visit falls within your organization's configured job lead days, the system creates an unassigned service job on the dispatch board for it. The job carries the site address, unit type, and count straight from the row, so there's nothing to re-enter.
Lead days control how far ahead these jobs appear. A shorter lead time (say, 2 days) keeps the dispatch board tight and close to real time; a longer one (7–14 days) gives dispatchers more runway to plan routes. Configure it at Settings → Finance → Cycle Billing → Default job lead days.
Which frequencies generate jobs
Every frequency with a predictable interval generates jobs: Weekly, Bi-Weekly (EOW), Monthly, Twice Monthly (every 15 days), Daily, Quarterly, Annual, and the 28-day cycle. On Call rows are the one exception — since the customer calls in when they need service rather than following a schedule, there's no interval to generate from. You create On Call jobs manually when the customer reaches out.
Assigning the job
Auto-generated jobs land on the dispatch board unassigned. Assign a driver from the Dispatch board (drag onto a route, or use the assignment panel) or from the customer's Rentals & Service tab — both write to the same underlying assignment, so it doesn't matter which one you use.
If the customer has a Preferred Driver set (in Edit Customer), the route optimizer treats that as a hard constraint: it will only suggest that driver for the stop, rather than treating it as one option among several.
Job chip on the Rate Card row
Once a service job exists for a row — whether auto-generated or created manually — a small chip appears in the Frequency column of the Rate Card table, like "Job Jul 10 · unassigned" or "Job Jul 10 · Mike." Click the chip to jump straight into the job's detail view. This is the fastest way to check whether tonight's run already scheduled a stop for a given row, and who (if anyone) it's assigned to.
Duplicate prevention
If a job already exists covering a row's next visit, the nightly run won't create a second one. You can let the job generation run indefinitely without worrying about the dispatch board filling up with duplicate stops for the same row.
