User guide · Modules

Rooms

The room inventory: room types and their nightly rates, the rooms themselves, a live status grid projected from bookings, housekeeping and maintenance, out-of-service handling and the availability search behind every booking.
Whole guide

Purpose and who uses it

ReceptionistHousekeeping MgrHotel Manager

One 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.

Rooms, List view (the default)
12347
  1. 1
    Page 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.
  2. 2
    Filter bar
    “Search room number or type…”, plus Room type, Floor and Housekeeping (HK state) dropdowns. Shown / total counts and Clear.
  3. 3
    View switch
    Grid 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.
  4. 4
    Rows
    Room, 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.
  5. 7
    Status tiles
    All 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 Mgr

Status 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. It is refused while a guest is in-house, and when reservations still hold the room a dialog lists them (“Room 12 has 2 upcoming bookings (BK-…, BK-…)”) and offers Unassign them and continue, after which those bookings wait for a room on the board.
  • 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 Mgr

New rooms are sellable immediately; a room with booking history cannot be deleted.

  1. 1
    Click New room
    The dialog “New room, Appears immediately in availability and the booking wizard” opens.
  2. 2
    Enter Room number, Floor and Room type
    Numbers are unique within the hotel (up to 10 characters); floor 0–50. The type list shows the base rate per night.
  3. 3
    Click Add room
    Toast “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. A room a guest has ever slept in, or that a restaurant bill was ever charged to, is refused with the count: the stays have to keep naming the room they were sold. Take it out of service instead, which stops it being sold and keeps everything. Open housekeeping tasks and work orders do not block the delete for a Super Admin; they go with the room.

Room types and rates

Hotel Manager

Rates are edited inline (new quotes only); each type also carries a profile: who fits, what the room has, how it is described.

  1. 1
    Click Room types
    The 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).
  2. 2
    Change a rate
    Type a whole figure into the rate cell and press Enter or click away. Toast: “Deluxe → UGX 280,000/night (new bookings only)”.
  3. 3
    Add a type
    Fill 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”.
  4. 4
    Edit the profile
    Each row shows Sleeps (adults + children) and the amenities as icons. Profile opens a dialog for Adults (1 to 20), Children (0 to 10), Amenities (picked from a list, up to 30) and a Description (up to 600 characters). Toast: “<name> profile saved”. The profile shows in the room drawer and feeds the reports.

Room types are ordered by the sequence they were created in.

Amenities

Amenities are picked from a list, never typed: open Profile on a room type and press the amenities box. The list drops down grouped the way a person thinks about a room (Comfort, Bathroom, Media and work, Drinks and food, Outside the room, Service, Hotel facilities, Access and policy), and every row is acheckbox, so the list itself shows what this room already has. Tick and untick as many as you like; the box above says how many are picked, Clear empties it, and each one also appears underneath as a chip with its icon and an x. Saving shows on the room types table behind at once, without closing it.

On the Rooms screens they show as icons alone: the room types table and the room drawer draw the little pictures, with the name on hover and on the accessible name, and a “+3” when there are more than fit. A list of six pictures reads as a room at a glance where six words read as a wall of text.

Stopping a type being sold

Each row has a red bin. What happens when you press it depends on what the type is carrying, and the app says which:

  • Nothing points at it: it goes, along with any published prices it had. Bookings are not affected because there are none.
  • It has rooms but has never been booked: “Room type “Trial Wing” still has 1 room.” A Hotel Manager is told a Super Admin can delete it anyway; the Super Admin gets a Move its rooms to picker, and one press moves the rooms and deletes the type together.
  • A guest has been sold it: “still has 639 bookings, 3 group allotments, 15 rooms and 6 published rates. The 639 bookings and 3 group allotments cannot be deleted with it.” Nothing gets past that, at any access level, because a folio has to keep saying what it sold. Move its rooms to another type instead: the type stays on the old bookings and stops being sold the moment its last room leaves.

Availability search

Receptionist

The 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.

A typical day for one room, every arrow is a fact changing, not a status edit
A typical day for one room, every arrow is a fact changing, not a status editbooking arrives todaycheck incheck outHK task readyblocking work orderorder closedOut of serviceReturn to serviceAvailableReservedOccupiedCleaningMaintenanceOut of Service
  • 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:

  1. Out of Service: the out-of-service flag is set (HK state pending).
  2. Occupied: a booking is Checked In on the room (HK state occupied).
  3. Maintenance: an open work order (Reported, Assigned, In Progress or Waiting for Parts) is marked as blocking the room.
  4. Cleaning: an open housekeeping task (Dirty, Assigned, In Progress or Inspection) exists for the room (HK state in progress).
  5. 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.
  6. 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.

New room
FieldTypeNotes
Room number *text 1–10Unique within the hotel. Shown on cards, in the booking drawer and on the housekeeping board.
Floor *0–50Groups the By floor view; shown as a “Floor N” tag.
Room type *selectSets the nightly price and which bookings the room can take.
Notestext ≤ 300Free text shown in the drawer. The out-of-service reason is written here when one is given.
Room type
FieldTypeNotes
Name *text 2–60Unique within the hotel.
Rate / night *whole UGXBase rate before any rate plan and before tax. Digits only, commas and spaces are stripped.
Beds *text 1–40Free text such as “1 King” or “2 Twin”, shown in the booking wizard.
Sizetext ≤ 20Optional label such as “26 m²”.

Permissions

View watches the grid; Edit changes facts about a room; Full manages the inventory and rates.

Default levels for Rooms (Housekeeping and Maintenance share the Rooms module)
RoleRoomsBookings
Super AdminFullFull
Hotel ManagerFullFull
ReceptionistEditFull
AccountantNoneView
Housekeeping MgrFullView
MaintenanceEditNone
Restaurant MgrNoneView
HR ManagerNoneNone
SecurityViewView
WaiterNoneNone
ChefNoneNone
HousekeeperEditNone
CashierNoneNone
None No accessView View onlyEdit Can editFull Full access
  • 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, delete a type). Deleting past rooms that are still on a type needs a Super Admin.
  • 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.

409Room 204 already exists
Why
Another room already has that number.
Fix
Use a different number, or edit the existing room.
409Room 204 has booking history. Mark it "Out of Service" instead of deleting
Why
The room has carried at least one booking, so deleting it would break folios and reports.
Fix
Open the room and click Out of service; it leaves availability but keeps its history.
409Room type "Deluxe" already exists
Why
Type names are unique within the hotel.
Fix
Pick another name, or change the rate on the existing type.
409"Deluxe" still has rooms or bookings attached
Why
A room type cannot be deleted while rooms or bookings reference it.
Fix
Move or delete its rooms first; bookings keep it forever.
400Whole UGX figure
Why
The rate contained something other than digits.
Fix
Enter the nightly rate as a whole number, 250000, not 250,000.00.
400to must be after from
Why
The availability search was asked for a zero- or negative-length window.
Fix
Check-out must be at least one day after check-in.