This module is an all-in-one property management system (PMS) focused on medium-sized properties for managing every aspect of your property's daily operations.
You can manage properties with multi-property and multi-company support, including your rooms inventory, reservations, check-in, daily reports, board services, rate and availability plans among other property functionalities.
auto_awesome What this module does
AI-generated from the code · Odoo 16.0Adds a full property management system to Odoo for hotels and similar properties: rooms, reservations, folios, check-in, availability plans, board services and invoicing, all linked to accounting and sales.
This module turns Odoo into a hotel-style property management system. Users manage properties, room types and rooms, amenities, services and board services, and create reservations with their own availability plans and rules (minimum/maximum stay, closed dates, quotas).
It adds a folio concept: a guest account that groups reservations, services and sale lines, with its own invoice status, down payments and payments. Folios and reservations can be invoiced, paid and reconciled, and the module links them to standard accounting documents (account.move, account.move.line, account.payment, bank statements) so each invoice, payment and statement line can be tagged with the property, the folio and the origin agency.
Business rules shown in the code include: journals can be restricted to properties and flagged as simplified-invoice journals; simplified invoices are blocked when their total exceeds the property's maximum allowed amount; invoices can require complete customer data before validation; and payments reconciled with invoices automatically update the partner on the payment or statement line.
It also adds property-aware analytic distribution, payment providers and payment methods usable for reservations, and a traveller report. Menus and screens cover properties, rooms, reservations, folios, availability plans, amenities, services and configuration.
Depends on
Required by other modules
Menus it adds
Models and fields (30)
- ir.http · extends an existing model
- pms.room · new modelzip, city, name (Room Name), email, phone, active, mobile, street, street2, website, capacity, sequence, state_id (State), child_ids (Child Rooms), parent_id (Parent Room), address_id (Address), country_id (Country), image_1920, short_name, room_type_id (Property Room Type), ubication_id (Ubication), is_shared_room (Is a Shared Room), email_formatted (Formatted Email), pms_property_id (Property), description_sale (Sale Description), partner_latitude (Geo Latitude), room_amenity_ids (Room Amenities), partner_longitude (Geo Longitude), extra_beds_allowed, assignment_sequence
- pms.folio · new modellang (Language), name (Folio Number), note (Terms and conditions), email (E-mail), state (Status), mobile, user_id (Reception Manager), move_ids (Invoices), sequence, agency_id (Agency), reference (Payment Ref.), amount_tax (Taxes), commission, company_id (Company), date_order, partner_id (Partner), currency_id, payment_ids (Bank Payments), service_ids (Services), amount_total (Total), partner_name (Customer Name), pricelist_id (Pricelist), first_checkin (First Folio Checkin), invoice_count, invoices_paid (Paid Out), last_checkout (Last Folio Checkout), payment_multi (Folio paid with payments assigned to other folios), payment_state (Payment Status), sale_line_ids (Sale lines), amount_untaxed (Untaxed Amount)
- res.users · extends an existing modelpms_property_id (Default Property), pms_property_ids (Properties)
- pms.amenity · new modelname (Amenity Name), active, default_code (Internal Reference), pms_property_ids (Properties), pms_amenity_type_id (Amenity Category), is_add_code_room_name (Add in room name)
- pms.service · new modelname (Service description), state, per_day, tax_ids (Taxes), discount, folio_id (Folio), sequence, price_tax (Taxes Amount), company_id (Company), product_id (Service), currency_id (Currency), price_total (Total), product_qty (Quantity), pricelist_id (Pricelist), product_image, sale_line_ids (Sale Lines), invoice_status, price_subtotal (Subtotal), reservation_id (Room), pms_property_id (Property), is_board_service, service_line_ids (Service Lines), is_cancel_penalty, no_auto_add_lines (Force No Auto Add Lines), default_invoice_to (Invoice to), board_service_line_id (Board Service Line), sale_channel_origin_id (Sale Channel Origin)
- res.company · extends an existing modelurl_advert, privacy_policy, pms_property_ids (Properties), cancel_penalty_product_id (Cancel penalty product), check_min_partner_data_invoice (Check minimum partner data for invoices)
- res.country · extends an existing modelpriority
- res.partner · extends an existing modelcomment, is_agency, folios_count (Number of Folios), pms_folio_ids (Folios), apply_pricelist, commission_type, sale_channel_id (Sale Channel), pms_property_ids (Properties), invoice_to_agency (Invoice Agency), default_commission (Commission), reservations_count (Number of Reservations), pms_reservation_ids (Reservations), pms_checkin_partner_ids (Checkin Partners)
- account.move · extends an existing modelfolio_ids (Folios), pms_property_id (Property), origin_agency_id (Origin Agency), is_simplified_invoice
- pms.property · new modeltz (Timezone), logo (Image in checkin), user_id (Team Leader), room_ids (Rooms), user_ids (Accepted Users), child_ids (Child Properties), parent_id (Parent Property), company_id (Company), member_ids (Team Members), partner_id (Property), availability (Number of rooms available), free_room_ids (Rooms available), cardex_warning (Warning in Cardex), privacy_policy, mail_information, folio_sequence_id (Folio Sequence), is_exit_auto_mail (Auto Send Exit Mail), pms_property_code (Property Code), analytic_account_id, checkin_sequence_id (Checkin Sequence), default_arrival_hour (Arrival Hour), default_pricelist_id (Product Pricelist), is_canceled_auto_mail (Auto Send Cancellation Mail), is_modified_auto_mail (Auto Send Modification Mail), default_departure_hour (Departure Hour), is_confirmed_auto_mail (Auto Send Confirmation Mail), property_exit_template (Exit Email), journal_normal_invoice_id (Normal Invoice Journal), property_canceled_template (Cancellation Email), property_modified_template (Modification Email)
- pms.room.type · new modelclass_id (Property Type Class), room_ids (Rooms), sequence, min_price (Min. Price), product_id (Product Room Type), default_code (Code), default_quota, overnight_room, room_amenity_ids (Room Type Amenities), default_max_avail (Default Max. Availability), total_rooms_count, board_service_room_type_ids (Board Services)
- pms.ubication · new modelname (Ubication Name), sequence, pms_room_ids (Rooms), pms_property_ids (Properties)
- account.journal · extends an existing modelroom_filter_ids (Apply Rooms), allowed_room_ids (Rooms Filter allowed), pms_property_ids (Properties), is_simplified_invoice (Simplified invoice)
- account.payment · extends an existing modelfolio_ids (Folios), origin_agency_id (Origin Agency), origin_reference
- folio.sale.line · new modelname (Description), state (Folio Status), tax_ids (Taxes), discount (Discount (%)), folio_id (Folio Reference), sequence, price_tax (Total Tax), company_id (Company), date_order (Date), price_unit, product_id (Product), section_id (Section), service_id (Service Reference), currency_id (Currency), price_total (Total), product_uom (Unit of Measure), display_type, price_reduce, qty_invoiced (Invoiced Quantity), invoice_lines, service_order (Service Id), invoice_status, is_downpayment (Is a down payment), price_subtotal (Subtotal), qty_to_invoice (To Invoice Quantity), reservation_id (Reservation Reference), pms_property_id (Property), product_uom_qty (Quantity), is_board_service (Board Service), origin_agency_id (Origin Agency)
- ir.pms.property · new modelrecord (Record Id), field_id (Field), model_id (Model), field_name, model_name, value_float (Float Field Value), value_integer (Integer Field Value), pms_property_id (Properties), value_reference (Reference Field Value)
- pms.reservation · new modellang (Language), name (Reservation Code), email (E-mail), rooms (Room/s), state, adults, mobile, nights, blocked, checkin (Check In), tax_ids (Taxes), user_id (Reception Manager), checkout (Check Out), children, discount, folio_id (Folio), splitted, agency_id (Agency), price_tax (Taxes Amount), to_assign, company_id (Company), date_order, partner_id (Customer), preconfirm (Auto confirm to Save), avoid_mails (Avoid comunication mails), currency_id, overbooking (Is Overbooking), price_total (Total), service_ids (Services), arrival_hour
- pms.team.member · new modelname, active, user_id (User Member), pms_role, sequence, pms_property_id (Property)
- product.product · extends an existing modelboard_price (Board Service Price), room_type_id (Room Type)
- payment.provider · extends an existing modelpms_property_ids (Properties)
- pms.amenity.type · new modelname (Amenity Type Name), active, pms_amenity_ids (Amenities In This Category), pms_property_ids (Properties)
- pms.availability · new modeldate, real_avail, room_type_id (Room Type), avail_rule_ids (Avail record rules), child_avail_ids (Child Avails), parent_avail_id (Parent Avail), pms_property_id (Property), reservation_line_ids (Reservation Lines)
- pms.sale.channel · new modelicon (Logo), name (Sale Channel Name), active, is_on_line (On Line), channel_type (Sale Channel Type), pms_property_ids (Properties), product_pricelist_ids (Pricelists)
- pms.service.line · new modeldate, day_qty (Units), tax_ids (Taxes), auto_qty (Qty automated setted), discount (Discount (%)), price_unit (Unit Price), product_id (Product), service_id (Service Room), currency_id, pricelist_id, price_day_tax (Taxes Amount), sale_line_ids (Sales Lines), reservation_id (Reservation), cancel_discount (Cancelation Discount), pms_property_id (Property), price_day_total (Total), is_board_service, default_invoice_to (Invoice to), price_day_subtotal (Subtotal)
- product.template · extends an existing modelis_crib (Is a baby crib), per_day (Unit increment per day), per_person (Unit increment per person), consumed_on (Consumed), daily_limit, is_extra_bed, is_tourist_tax (Is tourist tax), is_pms_available (Is available in PMS), pms_property_ids (Properties), tourist_tax_max_age (Maximum Age), tourist_tax_min_age (Minimum Age), tourist_tax_date_end (End Date (Annual)), property_daily_limits (Daily Limits per Property), tourist_tax_date_start (Start Date (Annual)), tourist_tax_apply_to_night (Apply Until Night), tourist_tax_apply_from_night (Apply From Night)
- account.move.line · extends an existing modelname, move_id, folio_ids (Folios), folio_line_ids (Folio Lines), pms_property_id, origin_agency_id (Origin Agency), name_changed_by_user (Name set manually)
- pms.board.service · new modelname (Board Service Name), active, amount, default_code (Board Service Code), pms_property_ids (Properties), show_detail_report, board_service_line_ids (Board Service Lines), pms_board_service_room_type_ids (Board Services Room Type)
- product.pricelist · extends an existing modelitem_ids (Items), company_id (Company), pricelist_type, is_pms_available (Available in PMS), pms_property_ids (Properties), cancelation_rule_id (Cancelation Policy), availability_plan_id (Availability Plan), pms_sale_channel_ids (Available Channels)
- pms.booking.engine · new modeldiscount, end_date (To:), folio_id (Folio), agency_id (Agency), partner_id (Partner), start_date (From:), partner_name, pricelist_id (Pricelist), channel_type_id (Direct Sale Channel), pms_property_id (Property), can_create_folio, internal_comment (Internal Folio Notes), reservation_type (Type), segmentation_ids (Segmentation), total_price_folio (Total Price), availability_results
Text generated by AI (DeepSeek) from reading the Odoo 16.0 code on GitHub; it may contain mistakes, so check the code before deciding. The module is very large and only part of the code was read. View the code on GitHub
Availability by version
Reviewed: 2026-11-03Confirmation status: 2 confirmed, 7 with no information of 9 versions.
Sources · Odoo 16.0
Confirmed on 2026-11-03 in branch 16.0 of OCA/pms.
terminal Installation and usage
OCA documentation · Odoo 16.0Installation
Source · Odoo 16.0This module depends on modules base, mail, sale and multi_pms_properties. Ensure yourself to have all them in your addons list.
Configuration
Source · Odoo 16.0You will find the hotel settings in PMS Management > Configuration > Properties > Your Property.
This module required additional configuration for company, accounting, invoicing and user privileges.
Usage
Source · Odoo 16.0To use this module, please, read the complete user guide at <roomdoo.com>_.
Installation instructions, the distribution package, dependencies and configuration steps are not shown because they have not yet been verified in the module documentation for any version.
Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.