Rooms
Purpose and who uses it
ReceptionistHousekeeping MgrHotel ManagerOne screen shows the state of every room right now; managers also maintain the inventory and rates here.
Rooms is where the house is defined and watched. A room type (Standard, Deluxe, Suite…) carries the base nightly rate, bed description and size; a room is a number on a floor that belongs to one type. Bookings are sold by type and assigned to a room; the room's status on this screen tells the desk whether a guest can walk into it.
- Receptionists (Rooms = Edit) watch the grid, take a room out of service and raise housekeeping or maintenance tasks from it.
- Housekeeping Managers and Hotel Managers (Rooms = Full) also add and delete rooms and manage room types and rates.
- Maintenance (Edit) uses the grid to report issues; Security sees it read-only.
Screen anatomy
Status tiles that double as filters, a filter bar, and List / Grid / By floor views of the same rooms.
- 1Page head“Rooms · N rooms · X% occupied”, the List / Grid / By floor switch (List opens first; the choice is remembered and ?view=grid deep-links) and, for Rooms = Full, Room types and New room.
- 7Status tilesAll rooms, Available, Occupied, Reserved, Cleaning, Maintenance, each with its count. Click one to filter; the chosen tile gets a coloured border.
- 2Filter bar“Search room number or type…”, plus Room type, Floor and Housekeeping (HK state) dropdowns. Shown / total counts and Clear.
- 4RowsRoom, Type, Floor, Status, Housekeeping, Guest (who is in-house or reserved, or who is arriving), Departs (with a “today” badge on departure day) and Price / night. Tap a heading to sort; Type, Floor, Status and Housekeeping headings filter. Click a row for the drawer.
- 3View switchGrid shows a card per room with a coloured status stripe. By floor is the floor map: one tile per room under “Floor N · rooms · occupied · arriving · departing”, each tile showing the number, the status colour, the guest in it (or the type when empty), “Departs today” or “Until dd/mm”, a purple “arriving” tag for today’s arrivals, and a broom or wrench icon when housekeeping or maintenance is on the room. Hover a tile for the full story.
Out-of-service rooms have no tile of their own, they show with the grey Out of Service badge under All rooms and carry a red “Out of service” badge in the drawer. The Housekeeping dropdown filters on the HK state (clean, pending, in progress, occupied) that the projection stores alongside the status.
The room drawer and room actions
ReceptionistHousekeeping MgrStatus is never edited directly; the drawer offers the actions that change the facts behind it.
Click any card, tile or row to open “Room N” with its type, status badge, floor, an “Out of service” badge when set, and four cards: Price / night, Housekeeping, Type, Floor. Notes (for example the out-of-service reason) appear below, then thedetail panel: the Occupant (guest, dates, nights, party size and, with Payments access, the folio balance),Next 14 days as a strip of day cells painted by the stays that hold the room (blue = in-house, purple = confirmed),Revenue for the last 30 and 90 days with the nights behind it, the room type profile (sleeps, beds, size, amenities), and the last Housekeeping and Maintenance events on this room. Under Room actions the drawer reminds you: “Status is projected from bookings, housekeeping and maintenance. It is not edited directly.”
- Out of service: flags the room; it disappears from availability and reads Out of Service regardless of anything else. Toast: “Room N marked out of service”. This works offline and is queued until the connection returns.
- Return to service: clears the flag; the projection recomputes at once (“Room N returned to service”). Also offline-capable.
- Create HK task: raises a deep-clean task at Medium priority on the Housekeeping board (“HK task created for N”). The room reads Cleaning until housekeeping marks it Ready for Guest.
- Report maintenance: opens a work order titled “Issue in room N” (category General, Medium priority) on the Maintenance board (“Maintenance reported for N”). It only blocks the room if the work order is marked as blocking.
View-only users see “View-only access. Status changes need the Rooms edit permission.” instead of the action chips. Rooms = Full users also get a red Delete button in the footer.
Adding and deleting rooms
Hotel ManagerHousekeeping MgrNew rooms are sellable immediately; a room with booking history cannot be deleted.
- 1Click New roomThe dialog “New room, Appears immediately in availability and the booking wizard” opens.
- 2Enter Room number, Floor and Room typeNumbers are unique within the hotel (up to 10 characters); floor 0–50. The type list shows the base rate per night.
- 3Click Add roomToast “Room N added”. The room starts Available and counts toward its type's sellable capacity from that moment.
Deleting
Open the room, click Delete, and confirm “Delete room N?”: “Only possible if this room has no booking history. This cannot be undone.” with Delete room. A room that has ever carried a booking is refused; mark it Out of service instead so history stays intact.
Room types and rates
Hotel ManagerRates are edited inline (new quotes only); each type also carries a profile: who fits, what the room has, how it is described.
- 1Click Room typesThe dialog “Room types & rates, Rate changes apply to new bookings only. Existing bookings keep their agreed rate” lists every type with Beds, the number of Rooms and an editable Rate / night (UGX).
- 2Change a rateType a whole figure into the rate cell and press Enter or click away. Toast: “Deluxe → UGX 280,000/night (new bookings only)”.
- 3Add a typeFill Name, Rate (UGX), Beds (e.g. “1 King”) and optionally the size (“26 m²”), then click the plus button. Empty required fields give “Fill name, rate and beds”.
- 4Edit the profileEach row shows Sleeps (adults + children) and the first amenities. Profile opens a dialog for Adults (1 to 20), Children (0 to 10), Amenities (comma separated, up to 20) and a Description (up to 600 characters). Toast: “Deluxe King profile saved”. The profile shows in the room drawer and feeds the reports.
Room types are ordered by the sequence they were created in. Deleting a type is only possible through the API while it has no rooms and no bookings attached.
Availability search
ReceptionistThe same query feeds the booking wizard and the check-in room chips, with a stricter “ready” mode for check-in.
Asking “which rooms are free from A to B” returns rooms that are not out of service and have no New, Confirmed or Checked In booking whose nights overlap the requested window (a room under maintenance today still counts for later dates; the ready-only variant used at check-in also drops Maintenance and Cleaning rooms). Optionally limit it to one room type. The booking wizard uses this at Check availability.
At check-in the desk asks for ready rooms only: the same list minus rooms in Cleaning, rooms with an open housekeeping task and rooms where a guest is still checked in (a same-day turnover). That mirrors the check-in rules exactly, so a chip the drawer offers never fails.
Room status is a projection
Six statuses, computed from facts in a fixed priority order and refreshed by every relevant action, a 30-minute sweeper and the night audit.
- Available → Reserved (booking arrives today)
- Reserved → Occupied (check in)
- Occupied → Cleaning (check out)
- Cleaning → Available (HK task ready)
- Available → Maintenance (blocking work order)
- Maintenance → Available (order closed)
- Available → Out of Service (Out of service)
- Out of Service → Available (Return to service)
The stored status is recomputed from five facts, and the first that is true wins:
- Out of Service: the out-of-service flag is set (HK state pending).
- Occupied: a booking is Checked In on the room (HK state occupied).
- Maintenance: an open work order (Reported, Assigned, In Progress or Waiting for Parts) is marked as blocking the room.
- Cleaning: an open housekeeping task (Dirty, Assigned, In Progress or Inspection) exists for the room (HK state in progress).
- Reserved: a New or Confirmed booking holds the room today in hotel-local time: its check-in is today or earlier and its check-out is later than today. A booking three weeks out does not make the room Reserved.
- Available: none of the above (HK state clean).
Because the Reserved rule depends on the date, the server also re-syncs every room of every hotel on a timer, every 30 minutes by default (ROOM_SYNC_MINUTES; 0 disables it), and again when the night audit closes the business day. Between sweeps, every booking, housekeeping, maintenance and out-of-service action re-syncs the rooms it touches, so the grid is right within seconds of the fact changing.
Fields
The New room dialog and the room type row.
| Field | Type | Notes |
|---|---|---|
| Room number * | text 1–10 | Unique within the hotel. Shown on cards, in the booking drawer and on the housekeeping board. |
| Floor * | 0–50 | Groups the By floor view; shown as a “Floor N” tag. |
| Room type * | select | Sets the nightly price and which bookings the room can take. |
| Notes | text ≤ 300 | Free text shown in the drawer. The out-of-service reason is written here when one is given. |
| Field | Type | Notes |
|---|---|---|
| Name * | text 2–60 | Unique within the hotel. |
| Rate / night * | whole UGX | Base rate before any rate plan and before tax. Digits only, commas and spaces are stripped. |
| Beds * | text 1–40 | Free text such as “1 King” or “2 Twin”, shown in the booking wizard. |
| Size | text ≤ 20 | Optional label such as “26 m²”. |
Permissions
View watches the grid; Edit changes facts about a room; Full manages the inventory and rates.
| Role | Rooms | Bookings |
|---|---|---|
| Super Admin | Full | Full |
| Hotel Manager | Full | Full |
| Receptionist | Edit | Full |
| Accountant | None | View |
| Housekeeping Mgr | Full | View |
| Maintenance | Edit | None |
| Restaurant Mgr | None | View |
| HR Manager | None | None |
| Security | View | View |
- Rooms = View: the grid, list and floor views, room types and rates (read-only), the drawer.
- Rooms = Edit: Out of service, Return to service, Create HK task, Report maintenance.
- Rooms = Full: New room, Delete, Room types (add a type, change rates).
- Bookings = View: the availability search used by the wizard and check-in.
Tips
Tiles as filters, live updates, offline behaviour and when to use out-of-service.
Errors you may see
Every refusal the rooms endpoints return.
Room 204 already existsRoom 204 has booking history. Mark it "Out of Service" instead of deletingRoom type "Deluxe" already exists"Deluxe" still has rooms or bookings attachedWhole UGX figureto must be after from