# Equipment rentals

`RentalOrder` stores equipment requested for one group-class occurrence. The
customer and administration forms share
`application/view/_snippets/rental_order_form_fields.php`.

Rentals and purchases of textile skate covers share the `ClassOrder` workflow,
while keeping their own order tables, decisions and payments. See
[class orders and skate-cover purchases](class-orders.md) for shared deadlines,
office operations, payment concurrency, cancellation and deployment rules.

Equipment details remain free text in the existing `rollers_size`,
`helmet_size`, and `protective_gear_size` columns. No historical data conversion
is required.

The form asks for:

- the removable shoe-insole length in centimeters, not a shoe size or foot
  length;
- head circumference in centimeters, selected from the 40-70 cm list;
- the expected protective-gear size together with fitting information such as
  age and body build.

Existing helmet values outside the current list remain available when an order
is edited, so an unrelated edit does not silently replace historical input.
`RentalOrder::applyEquipmentData()` continues to trim and validate the three
text values and `getEquipmentSummary()` continues to use them in order details
and notifications.

Run `composer test:rental-equipment` to verify the stored free-text contract and
the shared form fields.

## Public rental page

The public page at `home/wypozyczalnia/` presents three rental variants:

- equipment delivered by an instructor for one Rollschool lesson;
- daily and weekend rental, where collection on Friday and return on Monday is
  charged at the two-day rate;
- roller rental delivered to Nightskating Warszawa and returned immediately
  after the ride.

Rental rollers do not have a brake. This limitation is shown in both the
Nightskating and general-information sections of the public rental page, as well
as in the customer FAQ.

All amounts displayed in the public price table are loaded from the `rental`
section of `ApplicationSetting`. This includes one-day, two-day and additional-
day prices for rollers, helmets, protective gear and full sets. Nightskating
prepayment, on-site payment and cash-deposit amounts are configured separately.

The Nightskating section accepts reservations only by SMS until the configured
Friday cutoff time. It uses `RENTAL_OFFICE_PHONE` and the rental bank recipient,
account number and bank name from `ApplicationSetting`; these operational values
must not be duplicated in the view. The initial values are added by
`20260830221437_add_public_rental_page_settings.sql`. Existing rental orders and
payments are not changed by this migration.

The section uses the official horizontal Nightskating Warszawa logo stored as
`application/Resources/img/nightskating-warszawa-logo.png`. The source is the
official organizer website at `https://nightskating.pl/`.
