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 the List table (the default) with Grid and By floor as the other views of the same rooms.
- 1Page head“Rooms · N rooms · X% occupied”, the List / Grid / By floor switch (the List table opens first; the choice is remembered per module and ?view=grid deep-links) and, for Rooms = Full, Room types and New room.
- 2Filter bar“Search room number or type…”, plus Room type, Floor and Housekeeping (HK state) dropdowns. Shown / total counts and Clear.
- 3View switchGrid and By floor are the alternatives to the table. Grid 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.
- 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.
- 7Status tilesAll rooms, Available, Occupied, Reserved, Cleaning, Maintenance, each with its count. Click one to filter; the chosen tile gets a coloured border.
Every room carries the stay holding it today: the card and the Guest today column name the guest, say whether they are In-house or Reserved, and show the stay dates. Rooms nobody is booked into read “No guest today”. A room can be Cleaning or Maintenance and still have a reservation waiting on it, which is exactly the case the desk needs to see early.
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”, headed with its type, beds and size, a status badge, floor and an “Out of service” badge when set.
- Occupancy: who holds the room today: guest, guest code and booking code, the status badge, In-house / Arriving today / Reserved, the dates, nights, guests and country, their phone and email, when they checked in, and what the folio has been charged and paid with the balance still due. Open bookingjumps to that booking in the archive. When nobody is booked in it says so.
- Price / night, Housekeeping, Last released, Past stays: the four summary cards. Notes (for example the out-of-service reason) appear below them.
- Next 14 days: a strip of day cells painted by the stays that hold the room (blue = in-house, purple = confirmed), then 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.
- Open work: every open housekeeping task and maintenance order on the room, with its code, status and who it is assigned to. Orders that block the room are flagged.
- Next arrivals: the next five reservations on the room; click one to open it.
- Stay history: every stay this room has ever carried (guest, booking, dates, nights, status, amount and anything still owed), 25 at a time with Prev / Next underneath.
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 not offered on screen; ask an administrator, and it is only possible while the type 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 |
| Waiter | None | None |
| Chef | None | None |
- 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