OdooWiki OCA HUB
Lodging License: AGPL-3

This module manages stays ; it handles lunches, dinners and bed nights. It allows the booking of rooms and dormitories with capacity check.

It has been initially developped by the Barroux Abbey to manage the stays of the guests at the abbey and has been adopted by several other French abbeys.

auto_awesome What this module does

AI-generated from the code · Odoo 18.0

Manage guest stays, room and dormitory assignments, and meals (breakfast, lunch, picnic, dinner, bed nights) with capacity and conflict checks. Includes dashboards, printable journals, fire reports and Excel exports.

This module turns Odoo into a lodging and guest-house manager. A stay records the guest (or a free-text guest name for anonymous guests), the number of people, arrival and departure dates and time slots (morning, afternoon, evening or unknown), notes and tags. Each stay gets an automatic number and moves through Draft, Confirmed, Current, Finished and Cancelled states, with buttons to confirm, cancel, return to draft or mark that the guest has left.

  • Rooms and dormitories are organised by building and by stay group; each room has a bed capacity. Room assignments check that the number of guests does not exceed the beds and that the room is not already booked for overlapping dates, raising a clear conflict message. A stay can also be flagged as over-assigned or partially assigned.
  • Meal and bed-night lines are generated automatically for each day of the stay according to arrival and departure times, and are recalculated when dates or guest numbers change. A wizard can mass-update or reset these lines, and another can duplicate a stay on a recurring frequency.
  • A dashboard shows today's and tomorrow's arrivals, departures, breakfasts, lunches, dinners and bed nights.
  • Printable outputs include a meal journal by refectory, a fire-safety report, a cleaning list and an Excel export of the global view.
  • A scheduled job updates stay states daily, and users can be notified by e-mail about stays without a group.

It extends contacts with a stay count and adds settings for default refectory, breakfast/picnic/group options and room transition rules.

Depends on

Required by other modules

Menus it adds

stay_menustay_construction_menustay_room_assign_menustay_refectory_menustay_room_menustay_room_to_clean_menustay_group_menustay_line_menuGuestsstay_date_label_menustay_building_menuStaysStaysReportsConfigurationstay_tag_menustay_settings_menustay_fire_print_menustay_journal_print_menustay_stay_xlsx_menustay_toclean_print_menu
Models and fields (21)
  • stay.tag · new modelname, color, active, sequence
  • res.users · extends an existing modelcontext_stay_group_id
  • stay.line · new modeldate, stay_id, group_id, lunch_qty (Lunches), company_id, dinner_qty (Dinners), partner_id (Guest), partner_name (Guest Names), refectory_id, bed_night_qty (Bed Nights), breakfast_qty (Breakfast), my_stay_group, picnic_lunch_qty (Picnic), rooms_display_name
  • stay.room · new modelcode, name, notes, active, bed_qty (Number of beds), group_id, sequence, to_clean, company_id, building_id, next_stay_id, my_stay_group, allow_simultaneous, fire_report_exclude (Exclude from Fire Report), fire_report_sequence (Order for Fire Report), next_stay_arrival_date, next_stay_arrival_time, next_stay_partner_name
  • stay.stay · new modelname (Stay Number), notes, state, tag_ids (Tags), group_id, line_ids (Stay Lines), no_meals, guest_qty (Guest Quantity), company_id, partner_id (Guest), arrival_date, arrival_note, arrival_time, construction, partner_name (Guest Names), refectory_id, assign_status, my_stay_group, departure_date, departure_note, departure_time, room_assign_ids (Room Assignments), arrival_datetime (Arrival Date and Time), departure_datetime (Departure Date and Time), rooms_display_name (Rooms), guest_qty_to_assign, same_time_next_stay_id (Next Stay which arrives on same time slot), clash_time_next_stay_id (Next Stay which arrives before), same_time_preceding_stay_id (Preceding Stay which leaves on same time slot), clash_time_preceding_stay_id (Preceding Stay which leaves later)
  • stay.group · new modelname (Group Name), room_ids (Rooms), sequence, company_id (Company), notify_user_ids (Users Notified by E-mail), default_no_meals (No Meals by Default), default_refectory_id (Default Refectory)
  • res.company · extends an existing modeldefault_refectory_id (Default Refectory), stay_notify_user_ids (Users Notified by E-mail for Stays without Group)
  • res.partner · extends an existing modelstay_ids (Stays), stay_count (# of Stays)
  • stay.building · new modelname, active, room_ids (Rooms), sequence
  • stay.refectory · new modelcode, name, active, capacity, sequence, company_id
  • stay.stay.xlsx · new modelend_date, filename, file_xlsx, group_ids (Groups), company_id, start_date
  • stay.date.label · new modeldate, name (Label)
  • stay.fire.print · new modeldate, company_id
  • stay.line.reset · new modelstay_id
  • stay.room.assign · new modelnotes, state, active, room_id, stay_id, tag_ids, group_id, guest_qty (Guest Quantity), company_id, partner_id, arrival_date, arrival_note, arrival_time, construction, partner_name, my_stay_group, stay_group_id (Stay Group), departure_date, departure_note, departure_time, arrival_datetime, conflict_room_ids (Conflict Rooms), partner_name_room (Guest (optional)), departure_datetime
  • stay.journal.print · new modeldate, company_id, date_label, report_type
  • stay.toclean.print · new modelcompany_id (Company)
  • res.config.settings · extends an existing modelgroup_stay_group (Manage Stay Groups), group_stay_picnic (Manage Picnic), group_stay_breakfast (Manage Breakfast), stay_notify_user_ids, stay_room_transition (Room Transition), stay_default_refectory_id
  • stay.multi.duplicate · new modelstay_id, end_date, frequency, keep_notes (Keep Notes?), start_date, create_state, keep_assignments (Keep assignments?)
  • stay.line.mass.update · new modelstay_id, end_date, no_lunch (No Lunches), no_dinner (No Dinners), start_date, no_bed_night (No Bed Nights), no_breakfast (No Breakfasts), refectory_id (New Refectory), convert_lunch_to_picnic (Convert Lunches to Picnics)
  • stay.room.mass.assign · new modelstay_id, group_id, room_ids (Rooms), company_id, assign_type (Assignation), conflict_room_ids (Conflict Rooms)

Text generated by AI (DeepSeek) from reading the Odoo 18.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-03
Confirmed (verified in repository and branch) Estimated (unverified) No information

Confirmation status: 3 confirmed, 6 with no information of 9 versions.

Sources · Odoo 16.0

Confirmed on 2026-11-03 in branch 16.0 of OCA/vertical-abbey.

terminal Installation and usage

OCA documentation · Odoo 18.0

To configure this module, you need to:

> - create the Rooms, > - create the Groups (optional), > - create the Refectories,

Then, go to the Stay configuration page:

> - configure the default Refectory, > - if you want to manage breakfast, check the corresponding option.

To use this module, go to the menu Stays \> Stays \> Stays and start to register the future stays.

Every day, start the wizard Stays \> Stays \> Generate Journal to generate the stay lines for the next day. You can then print the stay report via the wizard Stays \> Reports \> Print Journal to have a printed paper that you can give to the cook for example.

No verified information in OCA: Installation.

info

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.