<!-- https://unlockos.io/manual/option-products -->

# Option Products

## Overview

**Option products** are add-ons sold alongside a reservation. From the **Option Products** menu (`/option-products`) you register per-facility items such as “Projector — ¥500/hour” or “Shower room — ¥500/person”.

Guests pick options on the confirmation screen (before payment) and pay for them together with the room in a single charge.

Each option carries three settings:

- **Charge mode** — flat / proportional to duration / proportional to headcount / headcount x duration
- **Applicability** — which plans and room types can buy it
- **Access grant** — whether buyers receive a dedicated key (locker or unit)

> **Status (2026-08)**: beyond catalogue management, applicability, and member-tier restriction, the guest-facing purchase screen ([Feature 7](#feature-7-guest-purchase-and-key-pickup)) and key issuance are live. **The only gap is creating a reservation from the admin screen** (Booking Management → New Reservation) — see [Known Limitations](#known-limitations).

---

## Features

## Feature 1: Registering an option

1. Open **Option Products** from the left menu
2. Click **Add option**
3. Fill in the fields

| Field | Description |
|-------|-------------|
| **Name** | Shown to guests (e.g. “Projector”, “Shower room”) |
| **Description (optional)** | Extra explanation; may be left blank |
| **Image (optional)** | Shown in the list and on the purchase screen |
| **Charge mode** | How the amount is counted (see [Feature 2](#feature-2-charge-modes)) |
| **Time unit** | Only shown for duration-based modes. **hour** or **day** |
| **Unit price** | Price per unit. Tax follows the facility's tax settings |
| **Stock** | Max concurrent units across overlapping reservations. Blank = unlimited, `0` = temporarily unavailable |
| **Max per reservation** | Largest quantity a single reservation may buy. Blank = no limit |
| **Applicability** | See [Feature 3](#feature-3-applicability) |
| **Access grant** | See [Feature 4](#feature-4-access-grant) |
| **Available for sale** | Turn off to stop new purchases (existing orders are kept) |

4. Click **Save**

## Feature 2: Charge modes

| Mode | Amount | Typical use |
|------|--------|-------------|
| **Flat, once per reservation** | price x quantity | Equipment rental, extra bedding |
| **Proportional to duration** | price x quantity x duration | Meeting-room gear, hourly facilities |
| **Proportional to headcount** | price x headcount | Breakfast, shower room |
| **Headcount x duration** | price x headcount x duration | Facilities charged by both |

Duration is **always rounded up** (with the “hour” unit, a 90-minute booking is charged 2 hours).

## Feature 3: Applicability

Restrict which reservations may buy the option along two axes: **plan** and **room type**.

- **Per axis, empty means unrestricted.** If you only pick plans, every room type still qualifies
- With both axes empty, every reservation at this facility can buy it
- An empty candidate list means the facility has no plans / room types yet, or the list failed to load. Do not delete tags while the list failed to load — reload the page first, otherwise you may widen the restriction by accident

## Feature 4: Access grant

An option can issue a key that is **separate from the room key**.

| Setting | Behaviour |
|---------|-----------|
| **None** | No key is issued (plain rentals) |
| **Locker** | Pick one of the facility's locker configurations; buyers receive its PIN / QR |
| **Door** | Pick a smart lock linked to one of the facility's rooms; buyers receive that door's key |

- Only units / lockers **registered at this facility** are listed. Free text is not accepted (it would allow pointing at another facility's hardware)
- If no unit candidates appear, link a room to a KEYVOX unit first
- **Lockers let you choose how the box is picked**
  - **Any free box** — a free box is assigned automatically at purchase time and its number is shown on the guest key page (baggage drop and similar "lend an empty box" uses)
  - **A specific box** — always issues a key for that box (a projector and similar "the item lives in this box" uses). It cannot be saved without picking a box
- While a pinned box is still held by the previous user, no new key can be issued for it (KEYVOX lockers have no reservation concept); the next key is issued once the box is returned

## Feature 5: Restricting to member tiers

In the editor, **Restricted tiers** limits the option to the members of the selected tiers. Leave it empty and anyone can buy it.

Tiers are created and populated on the **Members** screen. Archiving a tier automatically removes it from every option restriction.

## Feature 6: Editing and deleting

Click a card in the list to open the editor.

- **Delete** is only possible while the option has never been ordered
- Once a reservation has bought it, deletion is blocked. Uncheck **Available for sale** instead — this preserves order history and already-issued keys

## Feature 7: Guest purchase and key pickup

On the confirmation screen (before payment), guests see the **Add options** section, which lists only the options whose applicability matches this booking (plan / room type / time window). If the facility has no add-ons at all, the section does not render.

- Options are grouped by **category** — an internal field that has no input in [Feature 1](#feature-1-registering-an-option) yet, so every option currently falls back to a single "Other" group
- A sold-out option is never hidden — it is **greyed out and marked unselectable** instead (a guest who already holds one keeps the stepper so they can put it back to zero)
- The price is re-quoted from the server every time the quantity changes. The unit price and charge mode shown are always checked against the live catalogue, so a guest can never pay a stale amount
- An option marked "A key will be issued" grants a key (a door unlock code, or a locker PIN/QR) separate from the room key once purchased
- After check-in, an issued option key appears **alongside the room key on the same key screen** (a carousel that switches between multiple keys)

## Feature 8: Billing and cancellation

- An option's price is **frozen at the moment it is ordered** (unit price and charge mode). Changing the catalogue price later does not affect already-ordered lines
- The option total is folded into the room total and charged in a single payment
- Cancelling the reservation cancels its option orders together, releases the held stock, and revokes any already-issued option keys

---

## Permissions

| Action | Who can do it |
|--------|---------------|
| View the list / details | Organization Owner / the facility's Facility Owner and staff (including read-only roles) |
| Create / edit / delete / change applicability | Organization Owner / the facility's Facility Owner and staff (**read-only roles excluded**) |

Unlike the membership plan or ticket book admin screens, write access is not limited to Facility Owners. **Any staff member who is not a read-only role can create, edit, and delete options.**

---

## Known Limitations

- **Not supported when creating a reservation from the admin screen**: Booking Management's "New Reservation" has no field for adding option products. To attach options to a booking, the guest must select them in their own booking flow (the confirmation screen)
- **The required unit-price check is effectively bypassed**: saving with the unit price field left blank does not raise an error — it is stored as a ¥0 (free) price instead. Check after saving that this was not accidental
- **The description field has no character limit**: an overly long description can break the layout of the option section on the confirmation screen
- **Category grouping cannot be configured**: the data model supports a category, but the admin screen has no field for it, so guests always see a single "Other" group

---

## FAQ

**Q. Can a guest cancel just the option?**
A. No. Cancelling the reservation cancels its options together; option-only cancellation is not supported.

**Q. How is stock counted?**
A. As concurrent usage across overlapping reservations. If 10:00–12:00 and 11:00–13:00 each buy one unit, an option with stock 1 rejects the second one.

**Q. Do membership free quotas or ticket books cover option charges?**
A. No. Options are always charged.

**Q. Can I set a reduced tax rate per option?**
A. No. The facility's tax settings are the single source of truth.

---

## Related Documentation

- [Review & Confirm Your Booking](guest-confirm.md) — where guests pick options
- [Payments](guest-payment.md) — how the room and option totals are combined and charged
- [Key Display](key-display.md) — how an issued key is shown
