BFBambooForge Labs

Hotel Management & Room Booking (PMS)

Hotel management and PMS: reservations that cannot double-sell a room, seasonal rates, a folio billed per night, housekeeping and night audit.

Buy on the Odoo Apps StoreOpen the live demoIndustries€349Community & Enterprise

Available for Odoo 16.0, Odoo 17.0, Odoo 18.0, Odoo 19.0. Technical name bambooforge_hotel.

Odoo 16.0Odoo 17.0Odoo 18.0Odoo 19.0
Full walkthrough on a live Odoo 19.0 database, with subtitles. It ends with what this app deliberately does not do.

Hotel Management & Room Booking (PMS)

Two rules decide whether a hotel can use the software at all: a room cannot be sold twice for the same night, and nobody checks out owing money that was never written down. Everything here supports those two.

Reservations

  • Guest, dates, room type, and an optional room number - a booking can be held on the type and get its number at check-in, the way a hotel really works.

  • Overlapping sales of the same room are refused by the database itself, with an exclusion constraint over the room and the dates: two clerks assigning the same room in the same second cannot both be told it was free. A cancelled or no-show booking frees the room immediately.

  • Bookings held on a room type are counted too. Confirming a booking checks every night of it against the number of rooms of that type, so a hotel cannot quietly sell fourteen doubles it does not have. Overbooking is allowed by a number the manager types on the room type, never by accident.

  • A booking that sleeps more people than the room holds is refused: a fire certificate is not a preference.

  • Assign a free room picks a room of the right type that is genuinely free for the whole stay, preferring one that is clean.

Seasonal rates

The same room is not the same price in August. Rates apply per room type over a date range with a minimum stay, and where two rates cover a night the lower sequence wins - that is how a promotion beats the season. A stay that crosses a season is priced night by night.

The folio

  • One line per night at that night's rate, plus extras and city tax.

  • Invoiced in one click; a line that has been invoiced can no longer be edited or deleted - corrections belong on the invoice.

  • Nights are never posted twice, however often the button is pressed.

  • Everything on a folio is a charge. Deposits and payments belong in Accounting, against the invoice the folio raises, where they are reconciled and can be seen.

  • Check-out posts the bill, so what the guest is handed has a number on it, and every invoice a stay raised is one click from the booking. Crediting an invoice makes exactly its charges billable again.

Housekeeping

Housekeeping is a separate state from occupancy, because a room can be occupied and dirty, or free and not yet cleaned. Checking a guest into a room housekeeping has not released is refused. Checking out puts the room back into "dirty" automatically, and a room with a guest in it cannot be taken out of order.

Night audit

A scheduled job that does what the night manager used to do at 2am: it posts the night that has just been slept and turns yesterday's unarrived bookings into no-shows, so the morning report is true without anybody staying up. Tonight is not posted, because it has not happened. The business date is read through the company's timezone, so a hotel at UTC+7 closes its own day and not London's.

A guaranteed booking - a card guarantee, a prepayment, a corporate contract - is never released by the job: a guest on a delayed connection still has a room at 23:00. A release is stamped and can be undone with Reinstate, which checks whether the room is still there rather than pretending it is.

Roles

Housekeeping sees the room board and changes room status, and never sees a rate or a folio. Reception books, checks in and out, posts charges and invoices. The manager configures room types and rates.

Requirements

Odoo Community 16.0, 17.0, 18.0 or 19.0 with account and product. No Enterprise module, no external service.

Support

support@bambooforge.dev - answered within two business days. OPL-1; one purchase covers one production database plus its staging copies.

Screens

Folio - bambooforge_hotel
Folio
Reservations - bambooforge_hotel
Reservations
Rooms - bambooforge_hotel
Rooms