Rental Houses | Cine Power Planner

Rental Houses

Manage rental providers, pricing, and contact information

Overview

The Rental Houses feature provides a centralized registry of equipment rental providers. Track provider details, link contacts, manage pricing, and associate rental houses with gear list items for cost tracking and PDF export.

Requirements

Functional Requirements

IDRequirementAcceptance CriteriaPrioritySource
REQ-RNT-001The system shall allow CRUD operations on rental houses (name, address, phone, email, website, notes)Create → item appears in list; Update → changes persist after reload; Delete → item removed; Read → all fields displayMustuseRentalHouses
REQ-RNT-002The system shall link rental houses to contacts from the Contacts directoryClick link → contact picker opens; select contact → linked; contact shown on rental house card; unlink → removedMustuseRentalHouses
REQ-RNT-003The system shall allow assigning a rental house as the provider for individual gear list itemsIn gear list → click provider → rental house dropdown; select → provider badge + rental house name shown; persistsMustuseRentalHouses
REQ-RNT-004The system shall display a searchable, sortable list of all rental housesType in search → results filter; choose a sort option → order changes; clear → all shown; empty → "No rental houses found"MustuseRentalHouses
REQ-RNT-005The system shall support per-item daily rental pricing on gear requests and quotesSet a daily rate on a requested item → total is rate × shoot days × quantity; the rate persists on the requestShouldgearRequestService
REQ-RNT-006The system shall display a confirmation dialog before deleting a rental houseClick delete → dialog with rental house name; confirm → removed; cancel → no change; items referencing it → warningMustuseRentalHouses
REQ-RNT-008The system shall let a gear-list PDF export be filtered and highlighted by providerPick providers in the export dialog → only their items export; toggle Highlight providers → each item shows its providerShoulduseExportLogic

Data Requirements

  • Required fields: Rental house name (string, non-empty)
  • Optional fields: Address, phone, email, website, notes, linked contact ID
  • Persistence: IndexedDB → cloud sync via storageService
  • Relationships: Linked to gear list items via Provider System

Constraints & Limits

  • Available to all tiers (Free and Pro)
  • No duplicate-name enforcement at creation — but duplicates are detected afterwards and can be merged in one action (see Merging duplicates below)
  • Deleting a rental house prompts reassignment of associated provider references

Offline Behavior

  • Fully available offline — all CRUD operations work without network
  • Changes sync to cloud when connectivity is restored

Dependencies


Accessing Rental Houses

Click Rental Houses in the sidebar, or open /rental-houses directly. There is no Providers tab in Settings — this guide sent you to one until 2026-09-08.

Managing Rental Houses

Adding a Rental House

  1. Click Add Rental House
  2. Enter name, contact details, and notes
  3. Optionally link to an existing contact
  4. Click Save

Editing

Click a rental house card to open its workspace — a full page at its own URL, not a popup. Contact details, address, notes and business terms live on the House tab; edit any field there and click Save.

Deleting

On the House tab, Delete. The confirmation tells you how many projects still reference the house and how many gear items it holds.

Deleting a house does not delete its gear. A house is a contact record, and losing a whole inventory because someone tidied a contact would be unrecoverable. Orphaned items appear in a Gear without a rental house section at the bottom of the Rental Houses page, where Give them a home moves them to Owned Gear or to another house.

The rental house workspace

Opening a house you created gives you four tabs:

TabWhat it holds
GearThis house's stock — list, search/filter toolbar, and a detail pane for the selected item. On a phone the pane becomes a bottom sheet.
SetsBundles of this house's gear, priced as a package.
DashboardWhat the stock earned and how hard it worked. Hidden for a house that mirrors your Owned Gear — that usage belongs to Analytics.
HouseContact details, address, notes, business terms, linked projects and sub-rentals, the public link, and sharing.

The URL carries both the house and the tab, so a reload or a bookmarked link lands you back where you were. Built-in rental houses stay read-only; only houses you created hold gear of their own.

The Gear tab

A house you created keeps a real inventory with the same fields your Owned Gear has:

  • Add gear picks from the device library; Add by name takes free text for anything the catalogue does not know.
  • The detail pane carries quantity, category, condition, status, storage location, asset tag, RFID, serial numbers, purchase and replacement value, day rate, insurance policies, ATA Carnet fields, photos and components (which can nest).
  • Add missing data walks the items with gaps, one after another.
  • Print labels and Export PDF work as they do in Owned Gear, scoped to this house. A printed QR label points at this house, so scanning one into a project says so instead of reporting "not found".
  • Tick several rows for the bulk bar: edit together, add to a set, move, or delete. Bulk delete warns about anything currently out on a sub-rental.

A house's gear is deliberately separate from your Owned Gear. A rental house's stock is not your property, and counting it as yours would distort insurance value, depreciation and ROI.

The Dashboard tab

Revenue, utilisation, item count and unit count over 30 days, 90 days or 12 months, plus revenue by month, top earners, everything that never went out, and upcoming pickups and returns. Export report produces the gear list with this summary appended as a final page. The date range lives in the URL, so a link you send shows the same period.

Revenue is never estimated: it comes from the sub-rental's own totals and a request's persisted total. An unpriced booking contributes zero and is reported as unpriced rather than guessed.

Favourites

Each house carries a favourite marker. Favourites always sort to the top of the list whatever sort order you choose, and the toolbar has a Favorites filter that narrows the list to them.

Merging duplicates

When the same house has been added twice, a bar appears above the list offering to consolidate every duplicate in one action. Matching is exact plus fuzzy — names at least 85 % similar are treated as the same house — so "ARRI Rental" and "Arri Rental " are caught. The bar only appears when there is at least one duplicate to clean up, it asks for confirmation first, and the toast that follows offers Undo. Built-in houses are never merged; only ones you created.

Moving gear between Owned Gear and a rental house

Added something to the wrong place? Use the move action on an item's detail pane, or tick several rows and use the bulk bar.

  1. Pick where it should go — Owned Gear, or one of your rental houses.
  2. Read the report of everything that will be detached: set memberships, component links, project assignments, sub-rentals, published catalogues, hidden-item lists.
  3. Confirm. A toast offers Undo.

The item keeps its id and every field, photo, serial and log — only its home changes. A house that mirrors your Owned Gear cannot receive a move; unlink it first.

Sorting and filtering the list

The toolbar carries a search box, an All Countries and an All Cities filter, and a Sort by dropdown with four options — Name (A–Z), Name (Z–A), Country, and Recently Added. The chosen sort lives in the sort URL parameter, so a bookmarked or shared link reopens the same order. Favourites are always listed first, ahead of the chosen order. There are no sortable column headers — the list is a grid of cards, not a table.

Gear Catalogue

Each custom rental house has a gear catalogue — the equipment that house can supply. It is now managed on the workspace's Gear tab (above); the flat editor that used to sit on the create form is gone, because two editors over the same stock meant whichever you used second overwrote the other.

Each row has:

  • Name — a catalogue-matching search field. Start typing and pick a matching device, or type any custom name and keep it as-is (custom overwrites are preserved).
  • Category — one of: Camera, Lens, Lighting, Electrical/Power, Grip, Sound, Monitoring, Media/Storage, Accessories, Expendables, Other.
  • Quantity — how many units the house has.
  • Daily price (optional) — your internal day rate for that item. Prices are never shown on the public share page.

Older houses are upgraded automatically the first time the app loads — nothing is lost. A house whose stock was typed into the earlier flat catalogue has those entries adopted into real gear rows, ids preserved. The old flat catalogue is then removed, so there is exactly one copy of your stock and no way for the two to disagree. If you use the app on a second device, open it once to let that device run the same upgrade; a device still on an older version shows an empty catalogue for a house until you update it.

From a custom rental house you can Link Owned Gear. The catalogue then mirrors your Owned Gear (name, category, quantity, and rate) as a read-only list that updates live as your Owned Gear changes. Use the per-item hide toggle to omit items you don't want listed. Unlinking freezes the current mirror into editable rows this house owns — one row per mirrored item, with the ids preserved so published catalogues, sub-rental lines and project assignments keep resolving.

While the link is active the mirror replaces what you see, it does not merge with it — any items you typed in by hand are still stored, just hidden behind the mirror. So if you link a house before you have added any Owned Gear, the catalogue appears empty; a warning in the link panel says so. Unlinking never clears the catalogue: if the mirror is empty, your previously stored items are restored instead of an empty list being frozen over them.

Open a custom rental house → House tab → Public link to publish an anonymous, live-updating catalogue page at …/rh/<token>. Anyone with the link sees your items grouped by category plus your company contact details. Toggle the link off at any time to disable it.

Prices are opt-in and off by default. While the House tab's Include daily prices switch is off, no price leaves your account at all — the published snapshot omits the field entirely rather than sending a null. Turning it on republishes, because the setting alone does not rewrite a catalogue that is already out there.

What gets published for each item is the item's shareable rental name when you have set one, and its custom day rate when you have set one — the same two fields the Gear tab shows. Your internal label and list price stay in your account. Every way of publishing agrees on this: enabling the link, disabling it, the automatic republish after an edit, the crew-share panel, and the background refresh that keeps a live link in step with your stock. Until they did, the same link could show an item's internal label (serial number and all) or its list price, depending on which surface had written last.

Sharing with specific people

Sharing on the House tab is per person, not all-or-nothing: each connected crew member gets their own switch, and toggling one writes only that person.

  • Publish the catalogue once first. Until you do, the switches are disabled and a Publish catalogue button is shown instead — a toggle that quietly did nothing would be worse than a disabled one.
  • Recipients get browse and request only. They cannot edit the house, its gear, its contact data or its sharing.
  • Their requests land in your normal gear-request inbox, attributed to this house.
  • Turning someone off removes their access on their next load.

Under Link style you can swap the random token for a memorable name link built from the rental house's name (e.g. …/rh/panavision-berlin); if that name is already taken, a short suffix is added automatically. Switch back to the random link at any time — both resolve to the same catalogue.

Under Category order you can drag the gear categories into the sequence you want them shown in on the catalogue page (e.g. lead with Lighting for a lighting-heavy inventory). Categories you haven't ordered follow in the default department order, and the uncategorised Other bucket always appears last; Reset restores the default. Each rental house keeps its own order, independent of your other shared links, and it applies to both the public link and the crew share. The control appears only when the catalogue has at least two categories.

From that public page, a visitor can Request gear:

  1. Select the items they need.
  2. Enter the rental period (start/end) plus optional prep and return dates.
  3. Enter their name, company, email, and phone.
  4. Send the request.

The request arrives in your account and you are notified by email. Reviewing and accepting requests into a sub-rental is handled through the Sub-Rental gear-request system.

Shared with me — requesting from a crew catalogue

Below your own houses, Shared with me lists the gear catalogues connected crew have shared with you. Press Browse & request on one to open it with the same browsing surface the public link uses — name search, category filters, select-all, and a stock-capped quantity stepper per item — and send a sub-rental request from it.

  1. Tick the gear you need, then Continue.
  2. Set the rental period (plus optional prep and return buffer days).
  3. Optionally link one of your own projects, so they can see what the gear is for. Nothing else from the project is shared — only its name.
  4. Add a message and send.

No contact details and no captcha: you are both signed in and already connected.

Because a shared catalogue never carries prices, your request goes out unpriced. The crew member prices it and sends a quote back; you review it under My gear requests on the Sub-Rentals page and accept, decline, or send a counter-offer. Once the request is confirmed it becomes a real sub-rental on their side and runs the normal pickup → return → invoice pipeline.

Gear requests are cloud-only — you need an active crew connection and an internet connection to send one.

Integration with Provider System

Rental houses appear as custom providers in the Provider System. When you assign a rental house to gear items:

  • Items show the rental house color badge
  • PDF exports can be filtered by rental house
  • Cost summaries include rental house pricing

Rental Workflow Statuses

Each rental order progresses through a defined set of statuses:

StatusMeaning
not_sentRequest not yet sent to the rental house
waiting_for_quoteRequest sent; waiting for the rental house to respond with pricing
quotedQuote received; under review before approval
request_submittedFormal rental request submitted to the rental house
approvedRental house confirmed availability and accepted the order
activeGear is currently out on rental
reservedGear reserved and pickup scheduled
picked_upGear collected from the rental house
returnedGear returned to the rental house
completedRental order closed and reconciled
cancelledOrder cancelled before pickup

Workflow Events

EventMeaning
pickupScheduledA pickup date and time has been confirmed
returnScheduledA return date and time has been confirmed

Where the timeline and the overdue warning get their dates

The workflow panel shows a pickup/return timeline and warns you when a pickup is within 24 hours, a return is due within 24 hours, or the rental is overdue. You do not enter those dates a second time — they are resolved in this order:

  1. An explicit pickup_scheduled_at / return_scheduled_at on the project, if one is present.
  2. The owned-gear pickup appointment (providerPickupAppointments.__owned__) — the project-level handoff described in the next section.
  3. The project's rental window, which itself falls back to the shoot schedule.

A rental counts as overdue only once the due day has ended, so returning on the due date still reads as on time. Per-provider pickup appointments other than the owned-gear one are deliberately not folded in: those are individual collection times, not the project's own rental period.

Pickup Appointments (per provider)

Inside a project's Rental tab, the Pickup Appointments section lists every provider assigned to gear in the project (rental houses, owned gear, crew members) and lets you schedule a distinct pickup per provider — separate from the project-wide prep window.

For each provider you can:

  • Schedule / Edit — set a pickup datetime, optional return datetime, optional location override, and notes. Persisted per project under providerPickupAppointments[providerId] and synced across devices.
  • Send to provider — opens a dialog to email the provider their pickup details and the items they'll be handing over. Two modes:
    • Send via server — uses the in-app SMTP relay (template: provider_pickup_appointment) and sets your address as Reply-To.
    • Open in my mail app — builds a mailto: URL with subject and plain-text body grouped by category, opens your default mail client.
    • If the server send fails, the dialog automatically falls back to mailto: with a warning banner.
    • Disabled when the provider has no email or for pseudo-providers (Owned Gear, Crew, Unassigned) — those still support scheduling and calendar export.
  • Add to Calendar — downloads a single-event .ics file containing the pickup (and return, if set), with the location, items grouped by category, and notes in the description. Disabled until an appointment is scheduled.

The global Calendar tab also surfaces these pickup and return appointments alongside gear booking blocks so you can see all rental commitments in one place.

Tips

  1. Link contacts: Associate each rental house with a contact for quick access to phone/email
  2. Add pricing: Include daily rates to enable cost estimation in projects
  3. Use for PDF exports: Generate separate gear lists per rental house for order coordination
  4. Keep notes current: Store account numbers, pickup addresses, and business hours

Last Updated: 2026-09-09 Version: 0.790.2