The Roll-Off Rentals page, the sidebar entry with the container icon, is the dispatcher's one screen for every roll-off box that's on the ground right now. It's the operational twin of the Roll-Off Swap Cycle billing article: that one explains how a term bills, this one explains where you *see* the term, filter it, schedule its next visit, and close it out.
If you're new to the roll-off model itself, start with the Roll-Off Swap Cycle Workflow first. This article assumes you already know what a rental term is.
---
RP-1: What You See on the Page
The header split. Two pills on the left, one button on the right.
The KPI strip. Always reads from OPEN rentals, no matter which tab you're on:
---
RP-2: Filter, Search, Sort
Every filter composes. Search AND container AND overage AND driver, then sort, so they never fight each other.
---
RP-3: The Term Row
Each row is one rental term. Six columns:
| Column | What it shows |
|---|---|
| Customer | Customer name. Debris type appears below as a small caption if set. |
| Container | Product label (e.g. "20-Yard Roll-Off") plus the specific unit's item code once the delivery is done. "N completed swaps" below if any. Amber "N pulls missing weight" if a driver skipped a weight ticket. |
| Status | Badge: Scheduled / Active / Pickup due / Completed / Cancelled. |
| Term | `start_date → expected_end_date`. Below it, "N day(s) left" (muted) or "N day(s) overdue" (red). Rows that haven't delivered yet show "Not delivered · N day term" instead. |
| Rates | Haul rate, included tons, $/ton over, $/day over, pulled straight from the term. If nothing's set, amber "Rates not set" appears (see RP-6). |
| Actions | The verbs available on this row's current state. |
---
RP-4: Row Actions
Which buttons appear depends on the term's status.
Active or Pickup-due terms:
Completed terms:
Cancelled terms: view-only.
---
RP-5: The Schedule Job Dialog (Swap and Pickup)
The Schedule dialog is shared between the Swap and Pickup buttons; the only difference is the job type it pre-selects.
Fields:
The Edit rates link at the bottom jumps directly into the term editor (RP-6), useful when you're about to schedule a swap and notice the term's still at "Rates not set" from delivery.
Saving creates one `jobs` row attached to the term (`rental_term_id` set) and drops it on the dispatch board.
---
RP-6: Edit Term Dialog
Pencil icon opens the same shared editor used from the customer profile's Rentals & Service tab. Fields:
What happens on save
Saving rewrites the term row, then automatically calls `recomputeTermCharges` for the term's already-completed pulls that haven't been invoiced. If you entered rates *after* the delivery had already run, a common "container hit the ground unpriced" scenario, the toast tells you how many staged lines got re-priced. Already-invoiced pulls are not touched (the final statement is frozen; see the Swap Cycle article's ROL-9 for the reset flow).
---
RP-7: The Customer-Profile Rentals & Service Tab
Every roll-off term also shows up on the customer's profile under Rentals & Service. Same editor, same actions, same shared dialogs, just scoped to one customer. Use the customer view when you're on a call with them about their box; use the Roll-Off Rentals page when you're planning the day.
Both surfaces read from `rental_terms` in the same order and both invalidate the same query cache on save, so they never disagree.
---
RP-8: Empty States
---
