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 List / Grid / By floor views of the same rooms.

Rooms, List view
17243
  1. 1
    Page 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.
  2. 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.
  3. 2
    Filter bar
    “Search room number or type…”, plus Room type, Floor and Housekeeping (HK state) dropdowns. Shown / total counts and Clear.
  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. 3
    View switch
    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.

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” 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 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 “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 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 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

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
  • AvailableReserved (booking arrives today)
  • ReservedOccupied (check in)
  • OccupiedCleaning (check out)
  • CleaningAvailable (HK task ready)
  • AvailableMaintenance (blocking work order)
  • MaintenanceAvailable (order closed)
  • AvailableOut of Service (Out of service)
  • Out of ServiceAvailable (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
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).
  • 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.