Hotel Reservation Management

hotel_reservation
REPOSITORY
REPOSITORYOCA/vertical-hotel
GIT
GIThttps://github.com/OCA/vertical-hotel.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/vertical-hotel/tree/17.0/hotel_reservation
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYGeneric Modules/Hotel Reservation
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Serpent Consulting Services Pvt. Ltd., Odoo S.A
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Serpent Consulting Services Pvt. Ltd., Odoo S.A
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, pavan-serpentcs, Rajan-SCS
WEBSITE
WEBSITEhttps://github.com/OCA/vertical-hotel
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:10
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/vertical-hotel:
    - hotel
odoo/odoo:
    - sale_stock
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - account_payment
    - account
    - onboarding
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
    - stock_account
    - stock
    - barcodes_gs1_nomenclature
    - barcodes
    - website_sale
    - website
    - social_media
    - google_recaptcha
    - website_payment
    - website_mail
    - portal_rating
    - rating
    - delivery
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES python-dateutil
geoip2
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module provides the feature of Reserving the Hotel Rooms.

You can manage:

- Guest Reservation
- Group Reservation

![image](https://raw.githubusercontent.com/OCA/vertical-hotel/11.0/hotel_reservation/static/description/HotelReserv.png)

- **Manage Hotel Room Based on Room Types and It's Capacity**

![image](https://raw.githubusercontent.com/OCA/vertical-hotel/11.0/hotel_reservation/static/description/room.png)

- **Confirm Your Reservation And Get Reservation Information**

![image](https://raw.githubusercontent.com/OCA/vertical-hotel/11.0/hotel_reservation/static/description/folio.png)

- **Generate Folio**

![image](https://raw.githubusercontent.com/OCA/vertical-hotel/11.0/hotel_reservation/static/description/done.png)

- **Summarize Detail of Reservation**

![image](https://raw.githubusercontent.com/OCA/vertical-hotel/11.0/hotel_reservation/static/description/res5.png)

- **Easy And Quick Reservation from Reservation Summary**

![image](https://raw.githubusercontent.com/OCA/vertical-hotel/11.0/hotel_reservation/static/description/res6.png)

Code Analysis

Views touched (17)
XML IDNameModelTypeStatus
hotel_calendar_view Room Reservation hotel.reservation calendar New
hotel_reservation_wizard_form_view hotel.reservation.wizard.form hotel.reservation.wizard form New
make_folio_wizard_form_view make.folio.wizard.form wizard.make.folio form New
quick_room_reservation_form_view quick.room.reservation.form quick.room.reservation form New
report_checkin_qweb report_checkin_qweb ir.ui.view qweb New
report_checkout_qweb report_checkout_qweb ir.ui.view qweb New
report_maxroom_qweb report_maxroom_qweb ir.ui.view qweb New
report_room_reservation_qweb report_room_reservation_qweb ir.ui.view qweb New
room_reservation_summary_form_view room.reservation.summary.form room.reservation.summary form New
view_hotel_folio1_search_inherited hotel.folio.search.inherited hotel.folio field Inherits hotel.view_hotel_folio_search
view_hotel_folio_form_inherited hotel.folio.form.inherited hotel.folio field Inherits hotel.view_hotel_folio_form
view_hotel_folio_tree_inherited hotel.folio.tree.inherited hotel.folio field Inherits hotel.view_hotel_folio_tree
view_hotel_reservation_form hotel.reservation.form hotel.reservation form New
view_hotel_reservation_graph hotel.reservation.graph hotel.reservation graph New
view_hotel_reservation_search hotel.reservation.search hotel.reservation search New
view_hotel_reservation_tree hotel.reservation.tree hotel.reservation tree New
view_hotel_room_form_inherited view.hotel.room.form.inherited hotel.room xpath Inherits hotel.view_hotel_room_form
Models touched (14)

New fields (1)
  • reservation_id Many2one → hotel.reservation
    ondelete='restrict' args: 'hotel.reservation', 'Reservation'
Public methods (1)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (1)
  • write(self, vals)
    Overrides orm write method. @param self: The object pointer @param vals: dictionary of fields value. Update Hotel Room Reservation line history

New fields (16)
  • adults Integer
    help='List of adults there in guest list. ' readonly=True required=True
  • checkin Datetime
    readonly=True required=True args: 'Expected-Date-Arrival'
  • checkout Datetime
    readonly=True required=True args: 'Expected-Date-Departure'
  • children Integer
    help='Number of children there in guest list.' readonly=True
  • company_id Many2one → res.company
    default=1 index=True readonly=True required=True args: 'res.company', 'Hotel'
  • date_order Datetime
    default=<expr> index=True readonly=True required=True args: 'Date Ordered'
  • folio_id Many2many → hotel.folio
    string='Folio' args: 'hotel.folio', 'hotel_folio_reservation_rel', 'order_id', 'invoice_id'
  • no_of_folio Integer
    compute='_compute_folio_count' args: 'No. Folio'
  • partner_id Many2one → res.partner
    index=True readonly=True required=True args: 'res.partner', 'Guest Name'
  • partner_invoice_id Many2one → res.partner
    help='Invoice address for current reservation.' args: 'res.partner', 'Invoice Address'
  • partner_order_id Many2one → res.partner
    help='The name and address of the contact that requested the order or quotation.' readonly=True args: 'res.partner', 'Ordering Contact'
  • partner_shipping_id Many2one → res.partner
    help='Delivery addressfor current reservation. ' readonly=True args: 'res.partner', 'Delivery Address'
  • pricelist_id Many2one → product.pricelist
    help='Pricelist for current reservation.' readonly=True required=True args: 'product.pricelist', 'Scheme'
  • reservation_line One2many → hotel.reservation.line
    help='Hotel room reservation details.' readonly=True args: 'hotel.reservation.line', 'line_id'
  • reservation_no Char
    copy=False readonly=True
  • state Selection
    default='draft' readonly=True args: [('draft', 'Draft'), ('confirm', 'Confirm'), ('cancel', 'Cancel'), ('done', 'Done')]
Public methods (12)
  • action_send_reservation_mail(self)
    This function opens a window to compose an email, template message loaded by default. @param self: object pointer
  • cancel_reservation(self)
    This method cancel record set for hotel room reservation line ------------------------------------------------------------------ @param self: The object pointer @return: cancel record set for hotel room reservation line.
  • check_in_out_dates(self)
    @api.constrains('checkin', 'checkout')
    When date_order is less then check-in date or Checkout date should be greater than the check-in date.
  • check_overlap(self, date1, date2)
  • confirmed_reservation(self)
    This method create a new record set for hotel room reservation line ------------------------------------------------------------------- @param self: The object pointer @return: new record set for hotel room reservation line.
  • copy(self)
  • create(self, vals)
    @api.model
    Overrides orm create method. @param self: The object pointer @param vals: dictionary of fields value.
  • create_folio(self)
    This method is for create new hotel folio. ----------------------------------------- @param self: The object pointer @return: new record set for hotel folio.
  • open_folio_view(self)
  • reservation_reminder_24hrs(self)
    @api.model
    This method is for scheduler every 1day scheduler will call this method to find all tomorrow's reservations. ---------------------------------------------- @param self: The object pointer @return: send a mail
  • set_to_draft_reservation(self)
  • unlink(self)
    Overrides orm unlink method. @param self: The object pointer @return: True/False.

New fields (4)
  • categ_id Many2one → hotel.room.type
    args: 'hotel.room.type', 'Room Type'
  • line_id Many2one → hotel.reservation
    args: 'hotel.reservation'
  • name Char
  • reserve Many2many → hotel.room
    domain="[('isroom','=',True), ('room_categ_id','=',categ_id)]" args: 'hotel.room', 'hotel_reservation_line_room_rel', 'hotel_reservation_line_id', 'room_id'
Public methods (2)
  • on_change_categ(self)
    @api.onchange('categ_id')
    When you change categ_id it check checkin and checkout are filled or not if not then raise warning ----------------------------------------------------------- @param self: object pointer
  • unlink(self)
    Overrides orm unlink method. @param self: The object pointer @return: True/False.

New fields (2)
  • date_end Datetime
    required=True args: 'End Date'
  • date_start Datetime
    required=True args: 'Start Date'
Public methods (5)
  • check_date(self)
    @api.constrains('date_start', 'date_end')
  • report_checkin_detail(self)
  • report_checkout_detail(self)
  • report_maxroom_detail(self)
  • report_reservation_detail(self)

New fields (1)
  • room_reservation_line_ids One2many → hotel.room.reservation.line
    string='Room Reserve Line' args: 'hotel.room.reservation.line', 'room_id'
Public methods (2)
  • cron_room_line(self)
    @api.model
    This method is for scheduler every 1min scheduler will call this method and check Status of room is occupied or available -------------------------------------------------------------- @param self: The object pointer @return: update status of hotel room reservation line
  • unlink(self)
    Overrides orm unlink method. @param self: The object pointer @return: True/False.

New fields (6)
  • check_in Datetime
    required=True args: 'Check In Date'
  • check_out Datetime
    required=True args: 'Check Out Date'
  • reservation_id Many2one → hotel.reservation
    args: 'hotel.reservation', 'Reservation'
  • room_id Many2one → hotel.room
    args: 'hotel.room'
  • state Selection
    args: [('assigned', 'Assigned'), ('unassigned', 'Unassigned')], 'Room Status'
  • status Selection
    related='reservation_id.state' string='state'
Public methods (0)

No public methods.

New fields (10)
  • adults Integer
  • check_in Datetime
    required=True
  • check_out Datetime
    required=True
  • company_id Many2one → res.company
    required=True args: 'res.company', 'Hotel'
  • partner_id Many2one → res.partner
    required=True args: 'res.partner', 'Customer'
  • partner_invoice_id Many2one → res.partner
    required=True args: 'res.partner', 'Invoice Address'
  • partner_order_id Many2one → res.partner
    required=True args: 'res.partner', 'Ordering Contact'
  • partner_shipping_id Many2one → res.partner
    required=True args: 'res.partner', 'Delivery Address'
  • pricelist_id Many2one → product.pricelist
    args: 'product.pricelist', 'pricelist'
  • room_id Many2one → hotel.room
    required=True args: 'hotel.room'
Public methods (2)
  • default_get(self, fields)
    @api.model
    To get default values for the object. @param self: The object pointer. @param fields: List of fields for which we want default values @return: A dictionary which of fields with values.
  • room_reserve(self)
    This method create a new record for hotel.reservation ----------------------------------------------------- @param self: The object pointer @return: new record set for hotel reservation.

New fields (0)

No new fields.

Public methods (1)
  • get_checkin(self, date_start, date_end)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (5)
  • date_from Datetime
    default=<expr>
  • date_to Datetime
    default=<expr>
  • name Char
    default='Reservations Summary' args: 'Reservation Summary'
  • room_summary Text
  • summary_header Text
Public methods (2)
  • get_room_summary(self)
    @api.onchange('date_from', 'date_to')
    @param self: object pointer
  • room_reservation(self)
    @param self: object pointer

New fields (1)
  • grouped Boolean
    args: 'Group the Folios'
Public methods (1)
  • make_folios(self)
REPOSITORY
REPOSITORYOCA/vertical-hotel
GIT
GIThttps://github.com/OCA/vertical-hotel.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/vertical-hotel/tree/15.0/hotel_reservation
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYGeneric Modules/Hotel Reservation
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Odoo S.A., Serpent Consulting Services Pvt. Ltd.
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Odoo S.A., Serpent Consulting Services Pvt. Ltd.
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, ShwetaSerpentCS
WEBSITE
WEBSITEhttps://github.com/OCA/vertical-hotel
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:43
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/vertical-hotel:
    - hotel
odoo/odoo:
    - sale_stock
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - utm
    - stock_account
    - stock
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES python-dateutil
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (17)
XML IDNameModelTypeStatus
hotel_calendar_view Room Reservation hotel.reservation calendar New
hotel_reservation_wizard_form_view hotel.reservation.wizard.form hotel.reservation.wizard form New
make_folio_wizard_form_view make.folio.wizard.form wizard.make.folio form New
quick_room_reservation_form_view quick.room.reservation.form quick.room.reservation form New
report_checkin_qweb report_checkin_qweb ir.ui.view qweb New
report_checkout_qweb report_checkout_qweb ir.ui.view qweb New
report_maxroom_qweb report_maxroom_qweb ir.ui.view qweb New
report_room_reservation_qweb report_room_reservation_qweb ir.ui.view qweb New
room_reservation_summary_form_view room.reservation.summary.form room.reservation.summary form New
view_hotel_folio1_search_inherited hotel.folio.search.inherited hotel.folio field Inherits hotel.view_hotel_folio_search
view_hotel_folio_form_inherited hotel.folio.form.inherited hotel.folio field Inherits hotel.view_hotel_folio_form
view_hotel_folio_tree_inherited hotel.folio.tree.inherited hotel.folio field Inherits hotel.view_hotel_folio_tree
view_hotel_reservation_form hotel.reservation.form hotel.reservation form New
view_hotel_reservation_graph hotel.reservation.graph hotel.reservation graph New
view_hotel_reservation_search hotel.reservation.search hotel.reservation search New
view_hotel_reservation_tree hotel.reservation.tree hotel.reservation tree New
view_hotel_room_form_inherited view.hotel.room.form.inherited hotel.room xpath Inherits hotel.view_hotel_room_form
Models touched (14)

New fields (1)
  • reservation_id Many2one → hotel.reservation
    ondelete='restrict' args: 'hotel.reservation', 'Reservation'
Public methods (1)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (1)
  • write(self, vals)
    Overrides orm write method. @param self: The object pointer @param vals: dictionary of fields value. Update Hotel Room Reservation line history

New fields (16)
  • adults Integer
    help='List of adults there in guest list. ' readonly=True states={'draft': [('readonly', False)]}
  • checkin Datetime
    readonly=True required=True states={'draft': [('readonly', False)]} args: 'Expected-Date-Arrival'
  • checkout Datetime
    readonly=True required=True states={'draft': [('readonly', False)]} args: 'Expected-Date-Departure'
  • children Integer
    help='Number of children there in guest list.' readonly=True states={'draft': [('readonly', False)]}
  • company_id Many2one → res.company
    default=1 index=True readonly=True required=True states={'draft': [('readonly', False)]} args: 'res.company', 'Hotel'
  • date_order Datetime
    default=<expr> index=True readonly=True required=True args: 'Date Ordered'
  • folio_id Many2many → hotel.folio
    string='Folio' args: 'hotel.folio', 'hotel_folio_reservation_rel', 'order_id', 'invoice_id'
  • no_of_folio Integer
    compute='_compute_folio_count' args: 'No. Folio'
  • partner_id Many2one → res.partner
    index=True readonly=True required=True states={'draft': [('readonly', False)]} args: 'res.partner', 'Guest Name'
  • partner_invoice_id Many2one → res.partner
    help='Invoice address for current reservation.' readonly=True states={'draft': [('readonly', False)]} args: 'res.partner', 'Invoice Address'
  • partner_order_id Many2one → res.partner
    help='The name and address of the contact that requested the order or quotation.' readonly=True states={'draft': [('readonly', False)]} args: 'res.partner', 'Ordering Contact'
  • partner_shipping_id Many2one → res.partner
    help='Delivery addressfor current reservation. ' readonly=True states={'draft': [('readonly', False)]} args: 'res.partner', 'Delivery Address'
  • pricelist_id Many2one → product.pricelist
    help='Pricelist for current reservation.' readonly=True required=True states={'draft': [('readonly', False)]} args: 'product.pricelist', 'Scheme'
  • reservation_line One2many → hotel.reservation.line
    help='Hotel room reservation details.' readonly=True states={'draft': [('readonly', False)]} args: 'hotel.reservation.line', 'line_id'
  • reservation_no Char
    copy=False readonly=True
  • state Selection
    default='draft' readonly=True args: [('draft', 'Draft'), ('confirm', 'Confirm'), ('cancel', 'Cancel'), ('done', 'Done')]
Public methods (12)
  • action_send_reservation_mail(self)
    This function opens a window to compose an email, template message loaded by default. @param self: object pointer
  • cancel_reservation(self)
    This method cancel record set for hotel room reservation line ------------------------------------------------------------------ @param self: The object pointer @return: cancel record set for hotel room reservation line.
  • check_in_out_dates(self)
    @api.constrains('checkin', 'checkout')
    When date_order is less then check-in date or Checkout date should be greater than the check-in date.
  • check_overlap(self, date1, date2)
  • confirmed_reservation(self)
    This method create a new record set for hotel room reservation line ------------------------------------------------------------------- @param self: The object pointer @return: new record set for hotel room reservation line.
  • copy(self)
  • create(self, vals)
    @api.model
    Overrides orm create method. @param self: The object pointer @param vals: dictionary of fields value.
  • create_folio(self)
    This method is for create new hotel folio. ----------------------------------------- @param self: The object pointer @return: new record set for hotel folio.
  • open_folio_view(self)
  • reservation_reminder_24hrs(self)
    @api.model
    This method is for scheduler every 1day scheduler will call this method to find all tomorrow's reservations. ---------------------------------------------- @param self: The object pointer @return: send a mail
  • set_to_draft_reservation(self)
  • unlink(self)
    Overrides orm unlink method. @param self: The object pointer @return: True/False.

New fields (4)
  • categ_id Many2one → hotel.room.type
    args: 'hotel.room.type', 'Room Type'
  • line_id Many2one → hotel.reservation
    args: 'hotel.reservation'
  • name Char
  • reserve Many2many → hotel.room
    domain="[('isroom','=',True), ('categ_id','=',categ_id)]" args: 'hotel.room', 'hotel_reservation_line_room_rel', 'hotel_reservation_line_id', 'room_id'
Public methods (2)
  • on_change_categ(self)
    @api.onchange('categ_id')
    When you change categ_id it check checkin and checkout are filled or not if not then raise warning ----------------------------------------------------------- @param self: object pointer
  • unlink(self)
    Overrides orm unlink method. @param self: The object pointer @return: True/False.

New fields (2)
  • date_end Datetime
    required=True args: 'End Date'
  • date_start Datetime
    required=True args: 'Start Date'
Public methods (4)
  • report_checkin_detail(self)
  • report_checkout_detail(self)
  • report_maxroom_detail(self)
  • report_reservation_detail(self)

New fields (1)
  • room_reservation_line_ids One2many → hotel.room.reservation.line
    string='Room Reserve Line' args: 'hotel.room.reservation.line', 'room_id'
Public methods (2)
  • cron_room_line(self)
    @api.model
    This method is for scheduler every 1min scheduler will call this method and check Status of room is occupied or available -------------------------------------------------------------- @param self: The object pointer @return: update status of hotel room reservation line
  • unlink(self)
    Overrides orm unlink method. @param self: The object pointer @return: True/False.

New fields (6)
  • check_in Datetime
    required=True args: 'Check In Date'
  • check_out Datetime
    required=True args: 'Check Out Date'
  • reservation_id Many2one → hotel.reservation
    args: 'hotel.reservation', 'Reservation'
  • room_id Many2one → hotel.room
    args: 'hotel.room'
  • state Selection
    args: [('assigned', 'Assigned'), ('unassigned', 'Unassigned')], 'Room Status'
  • status Selection
    related='reservation_id.state' string='state'
Public methods (0)

No public methods.

New fields (10)
  • adults Integer
  • check_in Datetime
    required=True
  • check_out Datetime
    required=True
  • company_id Many2one → res.company
    required=True args: 'res.company', 'Hotel'
  • partner_id Many2one → res.partner
    required=True args: 'res.partner', 'Customer'
  • partner_invoice_id Many2one → res.partner
    required=True args: 'res.partner', 'Invoice Address'
  • partner_order_id Many2one → res.partner
    required=True args: 'res.partner', 'Ordering Contact'
  • partner_shipping_id Many2one → res.partner
    required=True args: 'res.partner', 'Delivery Address'
  • pricelist_id Many2one → product.pricelist
    args: 'product.pricelist', 'pricelist'
  • room_id Many2one → hotel.room
    required=True args: 'hotel.room'
Public methods (2)
  • default_get(self, fields)
    @api.model
    To get default values for the object. @param self: The object pointer. @param fields: List of fields for which we want default values @return: A dictionary which of fields with values.
  • room_reserve(self)
    This method create a new record for hotel.reservation ----------------------------------------------------- @param self: The object pointer @return: new record set for hotel reservation.

New fields (0)

No new fields.

Public methods (1)
  • get_checkin(self, date_start, date_end)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (5)
  • date_from Datetime
    default=<expr>
  • date_to Datetime
    default=<expr>
  • name Char
    default='Reservations Summary' args: 'Reservation Summary'
  • room_summary Text
  • summary_header Text
Public methods (2)
  • get_room_summary(self)
    @api.onchange('date_from', 'date_to')
    @param self: object pointer
  • room_reservation(self)
    @param self: object pointer

New fields (1)
  • grouped Boolean
    args: 'Group the Folios'
Public methods (1)
  • make_folios(self)
REPOSITORY
REPOSITORYOCA/vertical-hotel
GIT
GIThttps://github.com/OCA/vertical-hotel.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/vertical-hotel/tree/14.0/hotel_reservation
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYGeneric Modules/Hotel Reservation
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Odoo S.A., Serpent Consulting Services Pvt. Ltd.
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Odoo S.A., Serpent Consulting Services Pvt. Ltd.
COMMITTERS
COMMITTERSGitHub, OCA Transbot, oca-travis, Weblate, OCA-git-bot, Maitri Patel, Rajan-SerpentCS, ShwetaSerpentCS
WEBSITE
WEBSITEhttps://github.com/OCA/vertical-hotel
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:11
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/vertical-hotel:
    - hotel
odoo/odoo:
    - sale_stock
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - utm
    - stock_account
    - stock
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES python-dateutil
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (18)
XML IDNameModelTypeStatus
assets_backend_ Quick Reservation Summary ir.ui.view qweb Inherits web.assets_backend
hotel_calendar_view Room Reservation hotel.reservation calendar New
hotel_reservation_wizard_form_view hotel.reservation.wizard.form hotel.reservation.wizard form New
make_folio_wizard_form_view make.folio.wizard.form wizard.make.folio form New
quick_room_reservation_form_view quick.room.reservation.form quick.room.reservation form New
report_checkin_qweb report_checkin_qweb ir.ui.view qweb New
report_checkout_qweb report_checkout_qweb ir.ui.view qweb New
report_maxroom_qweb report_maxroom_qweb ir.ui.view qweb New
report_room_reservation_qweb report_room_reservation_qweb ir.ui.view qweb New
room_reservation_summary_form_view room.reservation.summary.form room.reservation.summary form New
view_hotel_folio1_search_inherited hotel.folio.search.inherited hotel.folio field Inherits hotel.view_hotel_folio_search
view_hotel_folio_form_inherited hotel.folio.form.inherited hotel.folio field Inherits hotel.view_hotel_folio_form
view_hotel_folio_tree_inherited hotel.folio.tree.inherited hotel.folio field Inherits hotel.view_hotel_folio_tree
view_hotel_reservation_form hotel.reservation.form hotel.reservation form New
view_hotel_reservation_graph hotel.reservation.graph hotel.reservation graph New
view_hotel_reservation_search hotel.reservation.search hotel.reservation search New
view_hotel_reservation_tree hotel.reservation.tree hotel.reservation tree New
view_hotel_room_form_inherited view.hotel.room.form.inherited hotel.room xpath Inherits hotel.view_hotel_room_form
Models touched (14)

New fields (1)
  • reservation_id Many2one → hotel.reservation
    ondelete='restrict' args: 'hotel.reservation', 'Reservation'
Public methods (1)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (1)
  • write(self, vals)
    Overrides orm write method. @param self: The object pointer @param vals: dictionary of fields value. Update Hotel Room Reservation line history

New fields (16)
  • adults Integer
    help='List of adults there in guest list. ' readonly=True states={'draft': [('readonly', False)]} args: 'Adults'
  • checkin Datetime
    readonly=True required=True states={'draft': [('readonly', False)]} args: 'Expected-Date-Arrival'
  • checkout Datetime
    readonly=True required=True states={'draft': [('readonly', False)]} args: 'Expected-Date-Departure'
  • children Integer
    help='Number of children there in guest list.' readonly=True states={'draft': [('readonly', False)]} args: 'Children'
  • company_id Many2one → res.company
    default=1 index=True readonly=True required=True states={'draft': [('readonly', False)]} args: 'res.company', 'Hotel'
  • date_order Datetime
    default=<expr> index=True readonly=True required=True args: 'Date Ordered'
  • folio_id Many2many → hotel.folio
    string='Folio' args: 'hotel.folio', 'hotel_folio_reservation_rel', 'order_id', 'invoice_id'
  • no_of_folio Integer
    compute='_compute_folio_count' args: 'No. Folio'
  • partner_id Many2one → res.partner
    index=True readonly=True required=True states={'draft': [('readonly', False)]} args: 'res.partner', 'Guest Name'
  • partner_invoice_id Many2one → res.partner
    help='Invoice address for current reservation.' readonly=True states={'draft': [('readonly', False)]} args: 'res.partner', 'Invoice Address'
  • partner_order_id Many2one → res.partner
    help='The name and address of the contact that requested the order or quotation.' readonly=True states={'draft': [('readonly', False)]} args: 'res.partner', 'Ordering Contact'
  • partner_shipping_id Many2one → res.partner
    help='Delivery addressfor current reservation. ' readonly=True states={'draft': [('readonly', False)]} args: 'res.partner', 'Delivery Address'
  • pricelist_id Many2one → product.pricelist
    help='Pricelist for current reservation.' readonly=True required=True states={'draft': [('readonly', False)]} args: 'product.pricelist', 'Scheme'
  • reservation_line One2many → hotel.reservation.line
    help='Hotel room reservation details.' readonly=True states={'draft': [('readonly', False)]} string='Reservation Line' args: 'hotel.reservation.line', 'line_id'
  • reservation_no Char
    copy=False readonly=True args: 'Reservation No'
  • state Selection
    default='draft' readonly=True args: [('draft', 'Draft'), ('confirm', 'Confirm'), ('cancel', 'Cancel'), ('done', 'Done')], 'State'
Public methods (13)
  • action_send_reservation_mail(self)
    This function opens a window to compose an email, template message loaded by default. @param self: object pointer
  • cancel_reservation(self)
    This method cancel record set for hotel room reservation line ------------------------------------------------------------------ @param self: The object pointer @return: cancel record set for hotel room reservation line.
  • check_in_out_dates(self)
    @api.constrains('checkin', 'checkout')
    When date_order is less then check-in date or Checkout date should be greater than the check-in date.
  • check_overlap(self, date1, date2)
  • confirmed_reservation(self)
    This method create a new record set for hotel room reservation line ------------------------------------------------------------------- @param self: The object pointer @return: new record set for hotel room reservation line.
  • copy(self)
  • create(self, vals)
    @api.model
    Overrides orm create method. @param self: The object pointer @param vals: dictionary of fields value.
  • create_folio(self)
    This method is for create new hotel folio. ----------------------------------------- @param self: The object pointer @return: new record set for hotel folio.
  • launch_folio(self)
  • open_folio_view(self)
  • reservation_reminder_24hrs(self)
    @api.model
    This method is for scheduler every 1day scheduler will call this method to find all tomorrow's reservations. ---------------------------------------------- @param self: The object pointer @return: send a mail
  • set_to_draft_reservation(self)
  • unlink(self)
    Overrides orm unlink method. @param self: The object pointer @return: True/False.

New fields (4)
  • categ_id Many2one → hotel.room.type
    args: 'hotel.room.type', 'Room Type'
  • line_id Many2one → hotel.reservation
    args: 'hotel.reservation'
  • name Char
    args: 'Name'
  • reserve Many2many → hotel.room
    domain="[('isroom','=',True), ('categ_id','=',categ_id)]" args: 'hotel.room', 'hotel_reservation_line_room_rel', 'hotel_reservation_line_id', 'room_id'
Public methods (2)
  • on_change_categ(self)
    @api.onchange('categ_id')
    When you change categ_id it check checkin and checkout are filled or not if not then raise warning ----------------------------------------------------------- @param self: object pointer
  • unlink(self)
    Overrides orm unlink method. @param self: The object pointer @return: True/False.

New fields (2)
  • date_end Datetime
    required=True args: 'End Date'
  • date_start Datetime
    required=True args: 'Start Date'
Public methods (4)
  • report_checkin_detail(self)
  • report_checkout_detail(self)
  • report_maxroom_detail(self)
  • report_reservation_detail(self)

New fields (1)
  • room_reservation_line_ids One2many → hotel.room.reservation.line
    string='Room Reserve Line' args: 'hotel.room.reservation.line', 'room_id'
Public methods (2)
  • cron_room_line(self)
    @api.model
    This method is for scheduler every 1min scheduler will call this method and check Status of room is occupied or available -------------------------------------------------------------- @param self: The object pointer @return: update status of hotel room reservation line
  • unlink(self)
    Overrides orm unlink method. @param self: The object pointer @return: True/False.

New fields (6)
  • check_in Datetime
    required=True args: 'Check In Date'
  • check_out Datetime
    required=True args: 'Check Out Date'
  • reservation_id Many2one → hotel.reservation
    args: 'hotel.reservation', 'Reservation'
  • room_id Many2one → hotel.room
    string='Room id' args: 'hotel.room'
  • state Selection
    args: [('assigned', 'Assigned'), ('unassigned', 'Unassigned')], 'Room Status'
  • status Selection
    related='reservation_id.state' string='state'
Public methods (0)

No public methods.

New fields (10)
  • adults Integer
    args: 'Adults'
  • check_in Datetime
    required=True args: 'Check In'
  • check_out Datetime
    required=True args: 'Check Out'
  • company_id Many2one → res.company
    required=True args: 'res.company', 'Hotel'
  • partner_id Many2one → res.partner
    required=True args: 'res.partner', 'Customer'
  • partner_invoice_id Many2one → res.partner
    required=True args: 'res.partner', 'Invoice Address'
  • partner_order_id Many2one → res.partner
    required=True args: 'res.partner', 'Ordering Contact'
  • partner_shipping_id Many2one → res.partner
    required=True args: 'res.partner', 'Delivery Address'
  • pricelist_id Many2one → product.pricelist
    args: 'product.pricelist', 'pricelist'
  • room_id Many2one → hotel.room
    required=True args: 'hotel.room', 'Room'
Public methods (2)
  • default_get(self, fields)
    @api.model
    To get default values for the object. @param self: The object pointer. @param fields: List of fields for which we want default values @return: A dictionary which of fields with values.
  • room_reserve(self)
    This method create a new record for hotel.reservation ----------------------------------------------------- @param self: The object pointer @return: new record set for hotel reservation.

New fields (0)

No new fields.

Public methods (1)
  • get_checkin(self, date_start, date_end)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (5)
  • date_from Datetime
    default=<expr> args: 'Date From'
  • date_to Datetime
    default=<expr> args: 'Date To'
  • name Char
    default='Reservations Summary' args: 'Reservation Summary'
  • room_summary Text
    args: 'Room Summary'
  • summary_header Text
    args: 'Summary Header'
Public methods (2)
  • get_room_summary(self)
    @api.onchange('date_from', 'date_to')
    @param self: object pointer
  • room_reservation(self)
    @param self: object pointer

New fields (1)
  • grouped Boolean
    args: 'Group the Folios'
Public methods (1)
  • make_folios(self)
REPOSITORY
REPOSITORYOCA/vertical-hotel
GIT
GIThttps://github.com/OCA/vertical-hotel.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/vertical-hotel/tree/13.0/hotel_reservation
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYGeneric Modules/Hotel Reservation
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Odoo S.A., Serpent Consulting Services Pvt. Ltd.
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Odoo S.A., Serpent Consulting Services Pvt. Ltd.
COMMITTERS
COMMITTERSOCA Transbot, oca-travis, OCA-git-bot, Dhruvita, dhruvitaSerpentCS
WEBSITE
WEBSITEhttps://github.com/OCA/vertical-hotel/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:20
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/vertical-hotel:
    - hotel
odoo/odoo:
    - sale_stock
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - utm
    - stock_account
    - stock
    - barcodes
    - point_of_sale
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES python-dateutil
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (18)
XML IDNameModelTypeStatus
assets_backend_ Quick Reservation Summary ir.ui.view qweb Inherits web.assets_backend
hotel_calendar_view Room Reservation hotel.reservation calendar New
hotel_reservation_wizard_form_view hotel.reservation.wizard.form hotel.reservation.wizard form New
make_folio_wizard_form_view make.folio.wizard.form wizard.make.folio form New
quick_room_reservation_form_view quick.room.reservation.form quick.room.reservation form New
report_checkin_qweb report_checkin_qweb ir.ui.view qweb New
report_checkout_qweb report_checkout_qweb ir.ui.view qweb New
report_maxroom_qweb report_maxroom_qweb ir.ui.view qweb New
report_room_reservation_qweb report_room_reservation_qweb ir.ui.view qweb New
room_reservation_summary_form_view room.reservation.summary.form room.reservation.summary form New
view_hotel_folio1_search_inherited hotel.folio.search.inherited hotel.folio field Inherits hotel.view_hotel_folio_search
view_hotel_folio_form_inherited hotel.folio.form.inherited hotel.folio field Inherits hotel.view_hotel_folio_form
view_hotel_folio_tree_inherited hotel.folio.tree.inherited hotel.folio field Inherits hotel.view_hotel_folio_tree
view_hotel_reservation_form hotel.reservation.form hotel.reservation form New
view_hotel_reservation_graph hotel.reservation.graph hotel.reservation graph New
view_hotel_reservation_search hotel.reservation.search hotel.reservation search New
view_hotel_reservation_tree hotel.reservation.tree hotel.reservation tree New
view_hotel_room_form_inherited view.hotel.room.form.inherited hotel.room xpath Inherits hotel.view_hotel_room_form
Models touched (14)

New fields (1)
  • reservation_id Many2one → hotel.reservation
    ondelete='restrict' args: 'hotel.reservation', 'Reservation'
Public methods (1)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (1)
  • write(self, vals)
    Overrides orm write method. @param self: The object pointer @param vals: dictionary of fields value. Update Hotel Room Reservation line history

New fields (16)
  • adults Integer
    help='Number of adults there in the guest list. ' readonly=True states={'draft': [('readonly', False)]} args: 'Adults'
  • checkin Datetime
    readonly=True required=True states={'draft': [('readonly', False)]} args: 'Expected-Date-Arrival'
  • checkout Datetime
    readonly=True required=True states={'draft': [('readonly', False)]} args: 'Expected-Date-Departure'
  • children Integer
    help='Number of children there in guest list.' readonly=True states={'draft': [('readonly', False)]} args: 'Children'
  • date_order Datetime
    default=<expr> index=True readonly=True required=True args: 'Date Ordered'
  • folios_ids Many2many → hotel.folio
    string='Folio' args: 'hotel.folio', 'hotel_folio_reservation_rel', 'order_id', 'invoice_id'
  • no_of_folio Integer
    compute='_compute_folio_id' args: 'No. Folio'
  • partner_id Many2one → res.partner
    readonly=True required=True states={'draft': [('readonly', False)]} args: 'res.partner', 'Guest Name'
  • partner_invoice_id Many2one → res.partner
    help='Invoice address for current reservation.' readonly=True states={'draft': [('readonly', False)]} args: 'res.partner', 'Invoice Address'
  • partner_order_id Many2one → res.partner
    help='The name and address of the contact that requested the order or quotation.' readonly=True states={'draft': [('readonly', False)]} args: 'res.partner', 'Ordering Contact'
  • partner_shipping_id Many2one → res.partner
    help='Delivery addressfor current reservation. ' readonly=True states={'draft': [('readonly', False)]} args: 'res.partner', 'Delivery Address'
  • pricelist_id Many2one → product.pricelist
    help='Pricelist for current reservation.' readonly=True required=True states={'draft': [('readonly', False)]} args: 'product.pricelist', 'Scheme'
  • reservation_line_ids One2many → hotel_reservation.line
    help='Hotel room reservation details.' readonly=True states={'draft': [('readonly', False)]} args: 'hotel_reservation.line', 'line_id', 'Reservation Line'
  • reservation_no Char
    copy=False readonly=True args: 'Reservation No'
  • state Selection
    default='draft' readonly=True args: [('draft', 'Draft'), ('confirm', 'Confirm'), ('cancel', 'Cancel'), ('done', 'Done')], 'State'
  • warehouse_id Many2one → stock.warehouse
    default=1 readonly=True required=True states={'draft': [('readonly', False)]} args: 'stock.warehouse', 'Hotel'
Public methods (12)
  • action_send_reservation_mail(self)
    This function opens a window to compose an email, template message loaded by default. @param self: object pointer
  • cancel_reservation(self)
    This method cancel record set for hotel room reservation line ------------------------------------------------------------------ @param self: The object pointer @return: cancel record set for hotel room reservation line.
  • check_in_out_dates(self)
    @api.constrains('checkin', 'checkout')
    When date_order is less then check-in date or Checkout date should be greater than the check-in date.
  • check_overlap(self, date1, date2)
  • check_reservation_rooms(self)
    @api.constrains('reservation_line_ids', 'adults', 'children')
    This method is used to validate the reservation_line_ids. ----------------------------------------------------- @param self: object pointer @return: raise a warning depending on the validation
  • confirm_reservation(self)
    This method create a new record set for hotel room reservation line ------------------------------------------------------------------- @param self: The object pointer @return: new record set for hotel room reservation line.
  • copy(self)
  • create(self, vals)
    @api.model
    Overrides orm create method. @param self: The object pointer @param vals: dictionary of fields value.
  • create_folio(self)
    This method is for create new hotel folio. ----------------------------------------- @param self: The object pointer @return: new record set for hotel folio.
  • open_folio_view(self)
  • set_to_draft_reservation(self)
  • unlink(self)
    Overrides orm unlink method. @param self: The object pointer @return: True/False.

New fields (2)
  • date_end Datetime
    required=True args: 'End Date'
  • date_start Datetime
    required=True args: 'Start Date'
Public methods (4)
  • report_checkin_detail(self)
  • report_checkout_detail(self)
  • report_maxroom_detail(self)
  • report_reservation_detail(self)

New fields (1)
  • room_reservation_line_ids One2many → hotel.room.reservation.line
    string='Room Reserve Line' args: 'hotel.room.reservation.line', 'room_id'
Public methods (2)
  • cron_room_line(self)
    @api.model
    This method is for scheduler every 1min scheduler will call this method and check Status of room is occupied or available -------------------------------------------------------------- @param self: The object pointer @return: update status of hotel room reservation line
  • unlink(self)
    Overrides orm unlink method. @param self: The object pointer @return: True/False.

New fields (6)
  • check_in Datetime
    required=True args: 'Check In Date'
  • check_out Datetime
    required=True args: 'Check Out Date'
  • reservation_id Many2one → hotel.reservation
    args: 'hotel.reservation', 'Reservation'
  • room_id Many2one → hotel.room
    string='Room id' args: 'hotel.room'
  • state Selection
    args: [('assigned', 'Assigned'), ('unassigned', 'Unassigned')], 'Room Status'
  • status Selection
    related='reservation_id.state' string='state'
Public methods (0)

No public methods.

New fields (4)
  • categ_id Many2one → hotel.room.type
    args: 'hotel.room.type', 'Room Type'
  • line_id Many2one → hotel.reservation
    args: 'hotel.reservation'
  • name Char
    args: 'Name'
  • reserve Many2many → hotel.room
    domain="[('isroom','=',True), ('categ_id','=',categ_id)]" args: 'hotel.room', 'hotel_reservation_line_room_rel', 'hotel_reservation_line_id', 'room_id'
Public methods (1)
  • unlink(self)
    Overrides orm unlink method. @param self: The object pointer @return: True/False.

New fields (10)
  • adults Integer
    args: 'Adults'
  • check_in Datetime
    required=True args: 'Check In'
  • check_out Datetime
    required=True args: 'Check Out'
  • partner_id Many2one → res.partner
    required=True args: 'res.partner', 'Customer'
  • partner_invoice_id Many2one → res.partner
    required=True args: 'res.partner', 'Invoice Address'
  • partner_order_id Many2one → res.partner
    required=True args: 'res.partner', 'Ordering Contact'
  • partner_shipping_id Many2one → res.partner
    required=True args: 'res.partner', 'Delivery Address'
  • pricelist_id Many2one → product.pricelist
    args: 'product.pricelist', 'pricelist'
  • room_id Many2one → hotel.room
    required=True args: 'hotel.room', 'Room'
  • warehouse_id Many2one → stock.warehouse
    required=True args: 'stock.warehouse', 'Hotel'
Public methods (3)
  • default_get(self, fields)
    @api.model
    To get default values for the object. @param self: The object pointer. @param fields: List of fields for which we want default values @return: A dictionary which of fields with values.
  • on_change_check_out(self)
    @api.onchange('check_out', 'check_in')
    When you change checkout or checkin it will check whether Checkout date should be greater than Checkin date and update dummy field ----------------------------------------------------------- @param self: object pointer @return: raise warning depending on the validation
  • room_reserve(self)
    This method create a new record for hotel.reservation ----------------------------------------------------- @param self: The object pointer @return: new record set for hotel reservation.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (5)
  • date_from Datetime
    default=<expr> args: 'Date From'
  • date_to Datetime
    default=<expr> args: 'Date To'
  • name Char
    default='Reservations Summary' args: 'Reservation Summary'
  • room_summary Text
    args: 'Room Summary'
  • summary_header Text
    args: 'Summary Header'
Public methods (2)
  • get_room_summary(self)
    @api.onchange('date_from', 'date_to')
    @param self: object pointer
  • room_reservation(self)
    @param self: object pointer

New fields (1)
  • grouped Boolean
    args: 'Group the Folios'
Public methods (1)
  • make_folios(self)
REPOSITORY
REPOSITORYOCA/vertical-hotel
GIT
GIThttps://github.com/OCA/vertical-hotel.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/vertical-hotel/tree/12.0/hotel_reservation
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYGeneric Modules/Hotel Reservation
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Odoo S.A., Serpent Consulting Services Pvt. Ltd.
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Odoo S.A., Serpent Consulting Services Pvt. Ltd.
COMMITTERS
COMMITTERSGitHub, Luis Torres, OCA Transbot, oca-travis, OCA-git-bot, tarteo, robin.keunen, Dhruvita, Vimal Patel, Dhruvita Vekariya, Joyce
WEBSITE
WEBSITEhttps://github.com/OCA/vertical-hotel/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:25
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/vertical-hotel:
    - hotel
odoo/odoo:
    - sale_stock
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - payment
    - account
    - product
    - decimal_precision
    - uom
    - analytic
    - portal
    - http_routing
    - digest
    - stock_account
    - stock
    - barcodes
    - point_of_sale
    - web_editor
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES python-dateutil
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (18)
XML IDNameModelTypeStatus
assets_backend_ Quick Reservation Summary ir.ui.view qweb Inherits web.assets_backend
hotel_calendar_view Room Reservation hotel.reservation calendar New
hotel_reservation_wizard_form_view hotel.reservation.wizard.form hotel.reservation.wizard form New
make_folio_wizard_form_view make.folio.wizard.form wizard.make.folio form New
quick_room_reservation_form_view quick.room.reservation.form quick.room.reservation form New
report_checkin_qweb report_checkin_qweb ir.ui.view qweb New
report_checkout_qweb report_checkout_qweb ir.ui.view qweb New
report_maxroom_qweb report_maxroom_qweb ir.ui.view qweb New
report_roomres_qweb report_roomres_qweb ir.ui.view qweb New
room_reservation_summary_form_view room.reservation.summary.form room.reservation.summary form New
view_hotel_folio1_search_inherited hotel.folio.search.inherited hotel.folio field Inherits hotel.view_hotel_folio_search
view_hotel_folio_form_inherited hotel.folio.form.inherited hotel.folio field Inherits hotel.view_hotel_folio_form
view_hotel_folio_tree_inherited hotel.folio.tree.inherited hotel.folio field Inherits hotel.view_hotel_folio_tree
view_hotel_reservation_form hotel.reservation.form hotel.reservation form New
view_hotel_reservation_graph hotel.reservation.graph hotel.reservation graph New
view_hotel_reservation_search hotel.reservation.search hotel.reservation search New
view_hotel_reservation_tree hotel.reservation.tree hotel.reservation tree New
view_hotel_room_form_inherited view.hotel.room.form.inherited hotel.room xpath Inherits hotel.view_hotel_room_form
Models touched (14)

New fields (1)
  • reservation_id Many2one → hotel.reservation
    args: 'hotel.reservation', 'Reservation Id'
Public methods (1)
  • write(self, vals)
    @api.multi

New fields (0)

No new fields.

Public methods (2)
  • on_change_checkout(self)
    @api.onchange('checkin_date', 'checkout_date')
  • write(self, vals)
    @api.multi
    Overrides orm write method. @param self: The object pointer @param vals: dictionary of fields value. Update Hotel Room Reservation line history

New fields (16)
  • adults Integer
    help='List of adults there in guest list. ' readonly=True states={'draft': [('readonly', False)]} args: 'Adults'
  • checkin Datetime
    default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} args: 'Expected-Date-Arrival'
  • checkout Datetime
    default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} args: 'Expected-Date-Departure'
  • children Integer
    help='Number of children there in guest list.' readonly=True states={'draft': [('readonly', False)]} args: 'Children'
  • date_order Datetime
    default=<expr> index=True readonly=True required=True args: 'Date Ordered'
  • folio_id Many2many → hotel.folio
    string='Folio' args: 'hotel.folio', 'hotel_folio_reservation_rel', 'order_id', 'invoice_id'
  • no_of_folio Integer
    compute='_compute_folio_id' args: 'No. Folio'
  • partner_id Many2one → res.partner
    index=True readonly=True required=True states={'draft': [('readonly', False)]} args: 'res.partner', 'Guest Name'
  • partner_invoice_id Many2one → res.partner
    help='Invoice address for current reservation.' readonly=True states={'draft': [('readonly', False)]} args: 'res.partner', 'Invoice Address'
  • partner_order_id Many2one → res.partner
    help='The name and address of the contact that requested the order or quotation.' readonly=True states={'draft': [('readonly', False)]} args: 'res.partner', 'Ordering Contact'
  • partner_shipping_id Many2one → res.partner
    help='Delivery addressfor current reservation. ' readonly=True states={'draft': [('readonly', False)]} args: 'res.partner', 'Delivery Address'
  • pricelist_id Many2one → product.pricelist
    help='Pricelist for current reservation.' readonly=True required=True states={'draft': [('readonly', False)]} args: 'product.pricelist', 'Scheme'
  • reservation_line One2many → hotel_reservation.line
    help='Hotel room reservation details.' readonly=True states={'draft': [('readonly', False)]} args: 'hotel_reservation.line', 'line_id', 'Reservation Line'
  • reservation_no Char
    readonly=True args: 'Reservation No'
  • state Selection
    default=<expr> readonly=True args: [('draft', 'Draft'), ('confirm', 'Confirm'), ('cancel', 'Cancel'), ('done', 'Done')], 'State'
  • warehouse_id Many2one → stock.warehouse
    default=<expr> index=True readonly=True required=True states={'draft': [('readonly', False)]} args: 'stock.warehouse', 'Hotel'
Public methods (14)
  • action_send_reservation_mail(self)
    @api.multi
    This function opens a window to compose an email, template message loaded by default. @param self: object pointer
  • cancel_reservation(self)
    @api.multi
    This method cancel record set for hotel room reservation line ------------------------------------------------------------------ @param self: The object pointer @return: cancel record set for hotel room reservation line.
  • check_in_out_dates(self)
    @api.constrains('checkin', 'checkout')
    When date_order is less then check-in date or Checkout date should be greater than the check-in date.
  • check_overlap(self, date1, date2)
    @api.multi
  • check_reservation_rooms(self)
    @api.constrains('reservation_line', 'adults', 'children')
    This method is used to validate the reservation_line. ----------------------------------------------------- @param self: object pointer @return: raise a warning depending on the validation
  • confirmed_reservation(self)
    @api.multi
    This method create a new record set for hotel room reservation line ------------------------------------------------------------------- @param self: The object pointer @return: new record set for hotel room reservation line.
  • copy(self)
    @api.multi
  • create(self, vals)
    @api.model
    Overrides orm create method. @param self: The object pointer @param vals: dictionary of fields value.
  • create_folio(self)
    @api.multi
    This method is for create new hotel folio. ----------------------------------------- @param self: The object pointer @return: new record set for hotel folio.
  • onchange_check_dates(self, checkin_date=False, checkout_date=False, duration=False)
    @api.multi
    This method gives the duration between check in checkout if customer will leave only for some hour it would be considers as a whole day. If customer will checkin checkout for more or equal hours, which configured in company as additional hours than it would be consider as full days -------------------------------------------------------------------- @param self: object pointer @return: Duration and checkout_date
  • onchange_partner_id(self)
    @api.onchange('partner_id')
    When you change partner_id it will update the partner_invoice_id, partner_shipping_id and pricelist_id of the hotel reservation as well --------------------------------------------------------------------- @param self: object pointer
  • reservation_reminder_24hrs(self)
    @api.model
    This method is for scheduler every 1day scheduler will call this method to find all tomorrow's reservations. ---------------------------------------------- @param self: The object pointer @return: send a mail
  • set_to_draft_reservation(self)
    @api.multi
  • unlink(self)
    @api.multi
    Overrides orm unlink method. @param self: The object pointer @return: True/False.

New fields (2)
  • date_end Datetime
    required=True args: 'End Date'
  • date_start Datetime
    required=True args: 'Start Date'
Public methods (4)
  • report_checkin_detail(self)
    @api.multi
  • report_checkout_detail(self)
    @api.multi
  • report_maxroom_detail(self)
    @api.multi
  • report_reservation_detail(self)
    @api.multi

New fields (1)
  • room_reservation_line_ids One2many → hotel.room.reservation.line
    string='Room Reserve Line' args: 'hotel.room.reservation.line', 'room_id'
Public methods (2)
  • cron_room_line(self)
    @api.model
    This method is for scheduler every 1min scheduler will call this method and check Status of room is occupied or available -------------------------------------------------------------- @param self: The object pointer @return: update status of hotel room reservation line
  • unlink(self)
    @api.multi
    Overrides orm unlink method. @param self: The object pointer @return: True/False.

New fields (6)
  • check_in Datetime
    required=True args: 'Check In Date'
  • check_out Datetime
    required=True args: 'Check Out Date'
  • reservation_id Many2one → hotel.reservation
    string='Reservation' args: 'hotel.reservation'
  • room_id Many2one → hotel.room
    string='Room id' args: 'hotel.room'
  • state Selection
    args: [('assigned', 'Assigned'), ('unassigned', 'Unassigned')], 'Room Status'
  • status Selection
    related='reservation_id.state' string='state'
Public methods (0)

No public methods.

New fields (4)
  • categ_id Many2one → hotel.room.type
    args: 'hotel.room.type', 'Room Type'
  • line_id Many2one → hotel.reservation
    args: 'hotel.reservation'
  • name Char
    args: 'Name'
  • reserve Many2many → hotel.room
    domain="[('isroom','=',True), ('categ_id','=',categ_id)]" args: 'hotel.room', 'hotel_reservation_line_room_rel', 'hotel_reservation_line_id', 'room_id'
Public methods (2)
  • on_change_categ(self)
    @api.onchange('categ_id')
    When you change categ_id it check checkin and checkout are filled or not if not then raise warning ----------------------------------------------------------- @param self: object pointer
  • unlink(self)
    @api.multi
    Overrides orm unlink method. @param self: The object pointer @return: True/False.

New fields (10)
  • adults Integer
    size=64 args: 'Adults'
  • check_in Datetime
    required=True args: 'Check In'
  • check_out Datetime
    required=True args: 'Check Out'
  • partner_id Many2one → res.partner
    required=True string='Customer' args: 'res.partner'
  • partner_invoice_id Many2one → res.partner
    required=True args: 'res.partner', 'Invoice Address'
  • partner_order_id Many2one → res.partner
    required=True args: 'res.partner', 'Ordering Contact'
  • partner_shipping_id Many2one → res.partner
    required=True args: 'res.partner', 'Delivery Address'
  • pricelist_id Many2one → product.pricelist
    args: 'product.pricelist', 'pricelist'
  • room_id Many2one → hotel.room
    required=True args: 'hotel.room', 'Room'
  • warehouse_id Many2one → stock.warehouse
    required=True args: 'stock.warehouse', 'Hotel'
Public methods (4)
  • default_get(self, fields)
    @api.model
    To get default values for the object. @param self: The object pointer. @param fields: List of fields for which we want default values @return: A dictionary which of fields with values.
  • on_change_check_out(self)
    @api.onchange('check_out', 'check_in')
    When you change checkout or checkin it will check whether Checkout date should be greater than Checkin date and update dummy field ----------------------------------------------------------- @param self: object pointer @return: raise warning depending on the validation
  • onchange_partner_id_res(self)
    @api.onchange('partner_id')
    When you change partner_id it will update the partner_invoice_id, partner_shipping_id and pricelist_id of the hotel reservation as well --------------------------------------------------------------------- @param self: object pointer
  • room_reserve(self)
    @api.multi
    This method create a new record for hotel.reservation ----------------------------------------------------- @param self: The object pointer @return: new record set for hotel reservation.

New fields (0)

No new fields.

Public methods (1)
  • get_checkin(self, date_start, date_end)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (5)
  • date_from Datetime
    args: 'Date From'
  • date_to Datetime
    args: 'Date To'
  • name Char
    default='Reservations Summary' invisible=True args: 'Reservation Summary'
  • room_summary Text
    args: 'Room Summary'
  • summary_header Text
    args: 'Summary Header'
Public methods (3)
  • default_get(self, fields)
    @api.model
    To get default values for the object. @param self: The object pointer. @param fields: List of fields for which we want default values @return: A dictionary which of fields with values.
  • get_room_summary(self)
    @api.onchange('date_from', 'date_to')
    @param self: object pointer
  • room_reservation(self)
    @api.multi
    @param self: object pointer

New fields (1)
  • grouped Boolean
    args: 'Group the Folios'
Public methods (1)
  • makeFolios(self)
    @api.multi
REPOSITORY
REPOSITORYOCA/vertical-hotel
GIT
GIThttps://github.com/OCA/vertical-hotel.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/vertical-hotel/tree/11.0/hotel_reservation
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYGeneric Modules/Hotel Reservation
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Odoo S.A., Serpent Consulting Services Pvt. Ltd.
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Odoo S.A., Serpent Consulting Services Pvt. Ltd.
COMMITTERS
COMMITTERSGitHub, OCA Transbot, oca-travis, OCA-git-bot, tarteo, robin.keunen, Yogesh Mahera, Manuel Claeys Bouuaert, Dhruvita, Vimal Patel
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:24:02
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/vertical-hotel:
    - hotel
odoo/odoo:
    - sale_stock
    - sale_management
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - account
    - product
    - decimal_precision
    - analytic
    - web_planner
    - portal
    - http_routing
    - account_invoicing
    - stock_account
    - stock
    - barcodes
    - point_of_sale
    - web_editor
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES python-dateutil
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (18)
XML IDNameModelTypeStatus
assets_backend_ Quick Reservation Summary ir.ui.view qweb Inherits web.assets_backend
hotel_calendar_view Room Reservation hotel.reservation calendar New
hotel_reservation_wizard_form_view hotel.reservation.wizard.form hotel.reservation.wizard form New
make_folio_wizard_form_view make.folio.wizard.form wizard.make.folio form New
quick_room_reservation_form_view quick.room.reservation.form quick.room.reservation form New
report_checkin_qweb report_checkin_qweb ir.ui.view qweb New
report_checkout_qweb report_checkout_qweb ir.ui.view qweb New
report_maxroom_qweb report_maxroom_qweb ir.ui.view qweb New
report_roomres_qweb report_roomres_qweb ir.ui.view qweb New
room_reservation_summary_form_view room.reservation.summary.form room.reservation.summary form New
view_hotel_folio1_form_inherited hotel.folio.form.inherited hotel.folio field Inherits hotel.view_hotel_folio1_form
view_hotel_folio1_search_inherited hotel.folio.search.inherited hotel.folio field Inherits hotel.view_hotel_folio_search
view_hotel_folio1_tree_inherited hotel.folio.tree.inherited hotel.folio field Inherits hotel.view_hotel_folio1_tree
view_hotel_reservation_form hotel.reservation.form hotel.reservation form New
view_hotel_reservation_graph hotel.reservation.graph hotel.reservation graph New
view_hotel_reservation_search hotel.reservation.search hotel.reservation search New
view_hotel_reservation_tree hotel.reservation.tree hotel.reservation tree New
view_hotel_room_form_inherited view.hotel.room.form.inherited hotel.room xpath Inherits hotel.view_hotel_room_form
Models touched (14)

New fields (1)
  • reservation_id Many2one → hotel.reservation
    string='Reservation Id' args: 'hotel.reservation'
Public methods (1)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (2)
  • on_change_checkout(self)
    @api.onchange('checkin_date', 'checkout_date')
  • write(self, vals)
    @api.multi
    Overrides orm write method. @param self: The object pointer @param vals: dictionary of fields value. Update Hotel Room Reservation line history

New fields (19)
  • adults Integer
    help='List of adults there in guest list. ' readonly=True states={'draft': [('readonly', False)]} track_visibility='onchange' args: 'Adults'
  • checkin Datetime
    readonly=True required=True states={'draft': [('readonly', False)]} track_visibility='onchange' args: 'Expected-Date-Arrival'
  • checkout Datetime
    readonly=True required=True states={'draft': [('readonly', False)]} track_visibility='onchange' args: 'Expected-Date-Departure'
  • children Integer
    help='Number of children there in guest list.' readonly=True states={'draft': [('readonly', False)]} track_visibility='onchange' args: 'Children'
  • date_order Datetime
    default=<expr> index=True readonly=True required=True track_visibility='onchange' args: 'Date Ordered'
  • dummy Datetime
    args: 'Dummy'
  • folio_id Many2many → hotel.folio
    string='Folio' track_visibility='onchange' args: 'hotel.folio', 'hotel_folio_reservation_rel', 'order_id', 'invoice_id'
  • no_of_folio Integer
    compute='_compute_folio_id' args: 'Folio'
  • note Text
    string='Note' track_visibility='onchange'
  • open Boolean
    help='Should the rooms be opened for arriving guest.' string='Open Rooms' track_visibility='onchange'
  • partner_id Many2one → res.partner
    index=True readonly=True required=True states={'draft': [('readonly', False)]} track_visibility='onchange' args: 'res.partner', 'Guest Name'
  • partner_invoice_id Many2one → res.partner
    help='Invoice address for current reservation.' readonly=True states={'draft': [('readonly', False)]} track_visibility='onchange' args: 'res.partner', 'Invoice Address'
  • partner_order_id Many2one → res.partner
    help='The name and address of the contact that requested the order or quotation.' readonly=True states={'draft': [('readonly', False)]} track_visibility='onchange' args: 'res.partner', 'Ordering Contact'
  • partner_shipping_id Many2one → res.partner
    help='Delivery addressfor current reservation. ' readonly=True states={'draft': [('readonly', False)]} track_visibility='onchange' args: 'res.partner', 'Delivery Address'
  • pricelist_id Many2one → product.pricelist
    help='Pricelist for current reservation.' readonly=True required=True states={'draft': [('readonly', False)]} track_visibility='onchange' args: 'product.pricelist', 'Scheme'
  • reservation_line One2many → hotel_reservation.line
    help='Hotel room reservation details.' readonly=True states={'draft': [('readonly', False)]} args: 'hotel_reservation.line', 'line_id', 'Reservation Line'
  • reservation_no Char
    readonly=True args: 'Reservation No'
  • state Selection
    default=<expr> readonly=True track_visibility='onchange' args: [('draft', 'Draft'), ('confirm', 'Confirm'), ('cancel', 'Cancel'), ('done', 'Done')], 'State'
  • warehouse_id Many2one → stock.warehouse
    default=1 index=True readonly=True required=True states={'draft': [('readonly', False)]} args: 'stock.warehouse', 'Hotel'
Public methods (15)
  • cancel_reservation(self)
    @api.multi
    This method cancel record set for hotel room reservation line ------------------------------------------------------------------ @param self: The object pointer @return: cancel record set for hotel room reservation line.
  • check_in_out_dates(self)
    @api.constrains('checkin', 'checkout')
    When date_order is less then check-in date or Checkout date should be greater than the check-in date.
  • check_overlap(self, date1, date2)
    @api.multi
  • check_reservation_rooms(self)
    @api.constrains('reservation_line', 'adults', 'children')
    This method is used to validate the reservation_line. ----------------------------------------------------- @param self: object pointer @return: raise a warning depending on the validation
  • confirmed_reservation(self)
    @api.multi
    This method create a new record set for hotel room reservation line ------------------------------------------------------------------- @param self: The object pointer @return: new record set for hotel room reservation line.
  • copy(self)
    @api.multi
  • create(self, vals)
    @api.model
    Overrides orm create method. @param self: The object pointer @param vals: dictionary of fields value.
  • create_folio(self)
    @api.multi
    This method is for create new hotel folio. ----------------------------------------- @param self: The object pointer @return: new record set for hotel folio.
  • on_change_checkout(self)
    @api.onchange('checkout', 'checkin')
    When you change checkout or checkin update dummy field ----------------------------------------------------------- @param self: object pointer @return: raise warning depending on the validation
  • onchange_check_dates(self, checkin_date=False, checkout_date=False, duration=False)
    @api.multi
    This method gives the duration between check in checkout if customer will leave only for some hour it would be considers as a whole day. If customer will checkin checkout for more or equal hours, which configured in company as additional hours than it would be consider as full days -------------------------------------------------------------------- @param self: object pointer @return: Duration and checkout_date
  • onchange_partner_id(self)
    @api.onchange('partner_id')
    When you change partner_id it will update the partner_invoice_id, partner_shipping_id and pricelist_id of the hotel reservation as well --------------------------------------------------------------------- @param self: object pointer
  • reservation_reminder_24hrs(self)
    @api.model
    This method is for scheduler every 1day scheduler will call this method to find all tomorrow's reservations. ---------------------------------------------- @param self: The object pointer @return: send a mail
  • send_reservation_maill(self)
    @api.multi
    This function opens a window to compose an email, template message loaded by default. @param self: object pointer
  • set_to_draft_reservation(self)
    @api.multi
  • unlink(self)
    @api.multi
    Overrides orm unlink method. @param self: The object pointer @return: True/False.

New fields (2)
  • date_end Datetime
    required=True args: 'End Date'
  • date_start Datetime
    required=True args: 'Start Date'
Public methods (4)
  • report_checkin_detail(self)
    @api.multi
  • report_checkout_detail(self)
    @api.multi
  • report_maxroom_detail(self)
    @api.multi
  • report_reservation_detail(self)
    @api.multi

New fields (1)
  • room_reservation_line_ids One2many → hotel.room.reservation.line
    string='Room Reserve Line' args: 'hotel.room.reservation.line', 'room_id'
Public methods (2)
  • cron_room_line(self)
    @api.model
    This method is for scheduler every 1min scheduler will call this method and check Status of room is occupied or available -------------------------------------------------------------- @param self: The object pointer @return: update status of hotel room reservation line
  • unlink(self)
    @api.multi
    Overrides orm unlink method. @param self: The object pointer @return: True/False.

New fields (6)
  • check_in Datetime
    required=True args: 'Check In Date'
  • check_out Datetime
    required=True args: 'Check Out Date'
  • reservation_id Many2one → hotel.reservation
    string='Reservation' args: 'hotel.reservation'
  • room_id Many2one → hotel.room
    string='Room id' args: 'hotel.room'
  • state Selection
    args: [('assigned', 'Assigned'), ('unassigned', 'Unassigned')], 'Room Status'
  • status Selection
    related='reservation_id.state' string='state'
Public methods (0)

No public methods.

New fields (6)
  • categ_id Many2one → hotel.room.type
    args: 'hotel.room.type', 'Room Type'
  • checkin Datetime
    related='line_id.checkin'
  • checkout Datetime
    related='line_id.checkout'
  • line_id Many2one → hotel.reservation
    args: 'hotel.reservation'
  • name Char
    args: 'Name'
  • reserve Many2many → hotel.room
    domain="[('isroom','=',True), ('categ_id','=',categ_id)]" args: 'hotel.room', 'hotel_reservation_line_room_rel', 'hotel_reservation_line_id', 'room_id'
Public methods (2)
  • on_change_categ(self)
    @api.onchange('categ_id')
    When you change categ_id it check checkin and checkout are filled or not if not then raise warning ----------------------------------------------------------- @param self: object pointer
  • unlink(self)
    @api.multi
    Overrides orm unlink method. @param self: The object pointer @return: True/False.

New fields (10)
  • adults Integer
    size=64 args: 'Adults'
  • check_in Datetime
    required=True args: 'Check In'
  • check_out Datetime
    required=True args: 'Check Out'
  • partner_id Many2one → res.partner
    required=True string='Customer' args: 'res.partner'
  • partner_invoice_id Many2one → res.partner
    required=True args: 'res.partner', 'Invoice Address'
  • partner_order_id Many2one → res.partner
    required=True args: 'res.partner', 'Ordering Contact'
  • partner_shipping_id Many2one → res.partner
    required=True args: 'res.partner', 'Delivery Address'
  • pricelist_id Many2one → product.pricelist
    args: 'product.pricelist', 'pricelist'
  • room_id Many2one → hotel.room
    required=True args: 'hotel.room', 'Room'
  • warehouse_id Many2one → stock.warehouse
    required=True args: 'stock.warehouse', 'Hotel'
Public methods (4)
  • default_get(self, fields)
    @api.model
    To get default values for the object. @param self: The object pointer. @param fields: List of fields for which we want default values @return: A dictionary which of fields with values.
  • on_change_check_out(self)
    @api.onchange('check_out', 'check_in')
    When you change checkout or checkin it will check whether Checkout date should be greater than Checkin date and update dummy field ----------------------------------------------------------- @param self: object pointer @return: raise warning depending on the validation
  • onchange_partner_id_res(self)
    @api.onchange('partner_id')
    When you change partner_id it will update the partner_invoice_id, partner_shipping_id and pricelist_id of the hotel reservation as well --------------------------------------------------------------------- @param self: object pointer
  • room_reserve(self)
    @api.multi
    This method create a new record for hotel.reservation ----------------------------------------------------- @param self: The object pointer @return: new record set for hotel reservation.

New fields (0)

No new fields.

Public methods (2)
  • get_checkin(self, date_start, date_end)
  • get_report_values(self, docids, data)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • get_checkout(self, date_start, date_end)
  • get_report_values(self, docids, data)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • get_data(self, date_start, date_end)
  • get_report_values(self, docids, data)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • get_data(self, date_start, date_end)
  • get_report_values(self, docids, data)
    @api.model

New fields (5)
  • date_from Datetime
    args: 'Date From'
  • date_to Datetime
    args: 'Date To'
  • name Char
    default='Reservations Summary' invisible=True args: 'Reservation Summary'
  • room_summary Text
    args: 'Room Summary'
  • summary_header Text
    args: 'Summary Header'
Public methods (3)
  • default_get(self, fields)
    @api.model
    To get default values for the object. @param self: The object pointer. @param fields: List of fields for which we want default values @return: A dictionary which of fields with values.
  • get_room_summary(self)
    @api.onchange('date_from', 'date_to')
    @param self: object pointer
  • room_reservation(self)
    @api.multi
    @param self: object pointer

New fields (1)
  • grouped Boolean
    args: 'Group the Folios'
Public methods (1)
  • makeFolios(self)
    @api.multi
REPOSITORY
REPOSITORYOCA/vertical-hotel
GIT
GIThttps://github.com/OCA/vertical-hotel.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/vertical-hotel/tree/10.0/hotel_reservation
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYGeneric Modules/Hotel Reservation
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Odoo S.A., Serpent Consulting Services Pvt. Ltd.
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Odoo S.A., Serpent Consulting Services Pvt. Ltd.
COMMITTERS
COMMITTERSAlexandre Fayolle, Pedro M. Baeza, GitHub, Stéphane Bidoul (ACSONE), Jay Vora(SerpentCS), Ananias Filho, Krishna Prajapati
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:20:02
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/vertical-hotel:
    - hotel
odoo/odoo:
    - sale_stock
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - web_tour
    - account
    - product
    - decimal_precision
    - report
    - analytic
    - web_planner
    - procurement
    - stock_account
    - stock
    - barcodes
    - point_of_sale
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (19)
XML IDNameModelTypeStatus
assets_backend point_of_sale assets ir.ui.view qweb Inherits web.assets_backend
hotel_calendar_view Room Reservation hotel.reservation calendar New
hotel_gantt_view hotel.gantt hotel.reservation gantt New
hotel_reservation_wizard_form_view hotel.reservation.wizard.form hotel.reservation.wizard form New
make_folio_wizard_form_view make.folio.wizard.form wizard.make.folio form New
quick_room_reservation_form_view quick.room.reservation.form quick.room.reservation form New
report_checkin_qweb report_checkin_qweb ir.ui.view qweb New
report_checkout_qweb report_checkout_qweb ir.ui.view qweb New
report_maxroom_qweb report_maxroom_qweb ir.ui.view qweb New
report_roomres_qweb report_roomres_qweb ir.ui.view qweb New
room_reservation_summary_form_view room.reservation.summary.form room.reservation.summary form New
view_hotel_folio1_form_inherited hotel.folio.form.inherited hotel.folio field Inherits hotel.view_hotel_folio1_form
view_hotel_folio1_search_inherited hotel.folio.search.inherited hotel.folio field Inherits hotel.view_hotel_folio_search
view_hotel_folio1_tree_inherited hotel.folio.tree.inherited hotel.folio field Inherits hotel.view_hotel_folio1_tree
view_hotel_reservation_form hotel.reservation.form hotel.reservation form New
view_hotel_reservation_graph hotel.reservation.graph hotel.reservation graph New
view_hotel_reservation_search hotel.reservation.search hotel.reservation search New
view_hotel_reservation_tree hotel.reservation.tree hotel.reservation tree New
view_hotel_room_form_inherited view.hotel.room.form.inherited hotel.room xpath Inherits hotel.view_hotel_room_form
Models touched (14)

New fields (1)
  • reservation_id Many2one → hotel.reservation
    string='Reservation Id' args: 'hotel.reservation'
Public methods (1)
  • write(self, vals)
    @api.multi

New fields (0)

No new fields.

Public methods (2)
  • on_change_checkout(self)
    @api.onchange('checkin_date', 'checkout_date')
  • write(self, vals)
    @api.multi
    Overrides orm write method. @param self: The object pointer @param vals: dictionary of fields value. Update Hotel Room Reservation line history

New fields (17)
  • adults Integer
    help='List of adults there in guest list. ' readonly=True size=64 states={'draft': [('readonly', False)]} args: 'Adults'
  • checkin Datetime
    readonly=True required=True states={'draft': [('readonly', False)]} args: 'Expected-Date-Arrival'
  • checkout Datetime
    readonly=True required=True states={'draft': [('readonly', False)]} args: 'Expected-Date-Departure'
  • children Integer
    help='Number of children there in guest list.' readonly=True size=64 states={'draft': [('readonly', False)]} args: 'Children'
  • date_order Datetime
    default=<expr> index=True readonly=True required=True args: 'Date Ordered'
  • dummy Datetime
    args: 'Dummy'
  • folio_id Many2many → hotel.folio
    string='Folio' args: 'hotel.folio', 'hotel_folio_reservation_rel', 'order_id', 'invoice_id'
  • no_of_folio Integer
    compute='_compute_folio_id' args: 'Folio'
  • partner_id Many2one → res.partner
    index=True readonly=True required=True states={'draft': [('readonly', False)]} args: 'res.partner', 'Guest Name'
  • partner_invoice_id Many2one → res.partner
    help='Invoice address for current reservation.' readonly=True states={'draft': [('readonly', False)]} args: 'res.partner', 'Invoice Address'
  • partner_order_id Many2one → res.partner
    help='The name and address of the contact that requested the order or quotation.' readonly=True states={'draft': [('readonly', False)]} args: 'res.partner', 'Ordering Contact'
  • partner_shipping_id Many2one → res.partner
    help='Delivery addressfor current reservation. ' readonly=True states={'draft': [('readonly', False)]} args: 'res.partner', 'Delivery Address'
  • pricelist_id Many2one → product.pricelist
    help='Pricelist for current reservation.' readonly=True required=True states={'draft': [('readonly', False)]} args: 'product.pricelist', 'Scheme'
  • reservation_line One2many → hotel_reservation.line
    help='Hotel room reservation details.' readonly=True states={'draft': [('readonly', False)]} args: 'hotel_reservation.line', 'line_id', 'Reservation Line'
  • reservation_no Char
    readonly=True size=64 args: 'Reservation No'
  • state Selection
    default=<expr> readonly=True args: [('draft', 'Draft'), ('confirm', 'Confirm'), ('cancel', 'Cancel'), ('done', 'Done')], 'State'
  • warehouse_id Many2one → stock.warehouse
    default=1 index=True readonly=True required=True states={'draft': [('readonly', False)]} args: 'stock.warehouse', 'Hotel'
Public methods (15)
  • cancel_reservation(self)
    @api.multi
    This method cancel record set for hotel room reservation line ------------------------------------------------------------------ @param self: The object pointer @return: cancel record set for hotel room reservation line.
  • check_in_out_dates(self)
    @api.constrains('checkin', 'checkout')
    When date_order is less then check-in date or Checkout date should be greater than the check-in date.
  • check_overlap(self, date1, date2)
    @api.multi
  • check_reservation_rooms(self)
    @api.constrains('reservation_line', 'adults', 'children')
    This method is used to validate the reservation_line. ----------------------------------------------------- @param self: object pointer @return: raise a warning depending on the validation
  • confirmed_reservation(self)
    @api.multi
    This method create a new record set for hotel room reservation line ------------------------------------------------------------------- @param self: The object pointer @return: new record set for hotel room reservation line.
  • copy(self)
    @api.multi
  • create(self, vals)
    @api.model
    Overrides orm create method. @param self: The object pointer @param vals: dictionary of fields value.
  • create_folio(self)
    @api.multi
    This method is for create new hotel folio. ----------------------------------------- @param self: The object pointer @return: new record set for hotel folio.
  • on_change_checkout(self)
    @api.onchange('checkout', 'checkin')
    When you change checkout or checkin update dummy field ----------------------------------------------------------- @param self: object pointer @return: raise warning depending on the validation
  • onchange_check_dates(self, checkin_date=False, checkout_date=False, duration=False)
    @api.multi
    This method gives the duration between check in checkout if customer will leave only for some hour it would be considers as a whole day. If customer will checkin checkout for more or equal hours, which configured in company as additional hours than it would be consider as full days -------------------------------------------------------------------- @param self: object pointer @return: Duration and checkout_date
  • onchange_partner_id(self)
    @api.onchange('partner_id')
    When you change partner_id it will update the partner_invoice_id, partner_shipping_id and pricelist_id of the hotel reservation as well --------------------------------------------------------------------- @param self: object pointer
  • reservation_reminder_24hrs(self)
    @api.model
    This method is for scheduler every 1day scheduler will call this method to find all tomorrow's reservations. ---------------------------------------------- @param self: The object pointer @return: send a mail
  • send_reservation_maill(self)
    @api.multi
    This function opens a window to compose an email, template message loaded by default. @param self: object pointer
  • set_to_draft_reservation(self)
    @api.multi
  • unlink(self)
    @api.multi
    Overrides orm unlink method. @param self: The object pointer @return: True/False.

New fields (2)
  • date_end Datetime
    required=True args: 'End Date'
  • date_start Datetime
    required=True args: 'Start Date'
Public methods (4)
  • report_checkin_detail(self)
    @api.multi
  • report_checkout_detail(self)
    @api.multi
  • report_maxroom_detail(self)
    @api.multi
  • report_reservation_detail(self)
    @api.multi

New fields (1)
  • room_reservation_line_ids One2many → hotel.room.reservation.line
    string='Room Reserve Line' args: 'hotel.room.reservation.line', 'room_id'
Public methods (2)
  • cron_room_line(self)
    @api.model
    This method is for scheduler every 1min scheduler will call this method and check Status of room is occupied or available -------------------------------------------------------------- @param self: The object pointer @return: update status of hotel room reservation line
  • unlink(self)
    @api.multi
    Overrides orm unlink method. @param self: The object pointer @return: True/False.

New fields (6)
  • check_in Datetime
    required=True args: 'Check In Date'
  • check_out Datetime
    required=True args: 'Check Out Date'
  • reservation_id Many2one → hotel.reservation
    string='Reservation' args: 'hotel.reservation'
  • room_id Many2one → hotel.room
    string='Room id' args: 'hotel.room'
  • state Selection
    args: [('assigned', 'Assigned'), ('unassigned', 'Unassigned')], 'Room Status'
  • status Selection
    related='reservation_id.state' string='state'
Public methods (0)

No public methods.

New fields (4)
  • categ_id Many2one → hotel.room.type
    args: 'hotel.room.type', 'Room Type'
  • line_id Many2one → hotel.reservation
    args: 'hotel.reservation'
  • name Char
    size=64 args: 'Name'
  • reserve Many2many → hotel.room
    domain="[('isroom','=',True), ('categ_id','=',categ_id)]" args: 'hotel.room', 'hotel_reservation_line_room_rel', 'hotel_reservation_line_id', 'room_id'
Public methods (2)
  • on_change_categ(self)
    @api.onchange('categ_id')
    When you change categ_id it check checkin and checkout are filled or not if not then raise warning ----------------------------------------------------------- @param self: object pointer
  • unlink(self)
    @api.multi
    Overrides orm unlink method. @param self: The object pointer @return: True/False.

New fields (10)
  • adults Integer
    size=64 args: 'Adults'
  • check_in Datetime
    required=True args: 'Check In'
  • check_out Datetime
    required=True args: 'Check Out'
  • partner_id Many2one → res.partner
    required=True string='Customer' args: 'res.partner'
  • partner_invoice_id Many2one → res.partner
    required=True args: 'res.partner', 'Invoice Address'
  • partner_order_id Many2one → res.partner
    required=True args: 'res.partner', 'Ordering Contact'
  • partner_shipping_id Many2one → res.partner
    required=True args: 'res.partner', 'Delivery Address'
  • pricelist_id Many2one → product.pricelist
    args: 'product.pricelist', 'pricelist'
  • room_id Many2one → hotel.room
    required=True args: 'hotel.room', 'Room'
  • warehouse_id Many2one → stock.warehouse
    required=True args: 'stock.warehouse', 'Hotel'
Public methods (4)
  • default_get(self, fields)
    @api.model
    To get default values for the object. @param self: The object pointer. @param fields: List of fields for which we want default values @return: A dictionary which of fields with values.
  • on_change_check_out(self)
    @api.onchange('check_out', 'check_in')
    When you change checkout or checkin it will check whether Checkout date should be greater than Checkin date and update dummy field ----------------------------------------------------------- @param self: object pointer @return: raise warning depending on the validation
  • onchange_partner_id_res(self)
    @api.onchange('partner_id')
    When you change partner_id it will update the partner_invoice_id, partner_shipping_id and pricelist_id of the hotel reservation as well --------------------------------------------------------------------- @param self: object pointer
  • room_reserve(self)
    @api.multi
    This method create a new record for hotel.reservation ----------------------------------------------------- @param self: The object pointer @return: new record set for hotel reservation.

New fields (0)

No new fields.

Public methods (2)
  • get_checkin(self, date_start, date_end)
  • render_html(self, docids, data=None)
    @api.multi

New fields (0)

No new fields.

Public methods (2)
  • get_checkout(self, date_start, date_end)
  • render_html(self, docids, data=None)
    @api.multi

New fields (0)

No new fields.

Public methods (2)
  • get_data(self, date_start, date_end)
  • render_html(self, docids, data=None)
    @api.multi

New fields (0)

No new fields.

Public methods (2)
  • get_data(self, date_start, date_end)
  • render_html(self, docids, data=None)
    @api.multi

New fields (5)
  • date_from Datetime
    args: 'Date From'
  • date_to Datetime
    args: 'Date To'
  • name Char
    default='Reservations Summary' invisible=True args: 'Reservation Summary'
  • room_summary Text
    args: 'Room Summary'
  • summary_header Text
    args: 'Summary Header'
Public methods (3)
  • default_get(self, fields)
    @api.model
    To get default values for the object. @param self: The object pointer. @param fields: List of fields for which we want default values @return: A dictionary which of fields with values.
  • get_room_summary(self)
    @api.onchange('date_from', 'date_to')
    @param self: object pointer
  • room_reservation(self)
    @api.multi
    @param self: object pointer

New fields (1)
  • grouped Boolean
    args: 'Group the Folios'
Public methods (1)
  • makeFolios(self)
    @api.multi
REPOSITORY
REPOSITORYOCA/vertical-hotel
GIT
GIThttps://github.com/OCA/vertical-hotel.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/vertical-hotel/tree/9.0/hotel_reservation
VERSION
VERSION 1.0
CATEGORY
CATEGORYGeneric Modules/Hotel Reservation
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Tiny
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Tiny
COMMITTERS
COMMITTERSPedro M. Baeza, Stéphane Bidoul (ACSONE)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:24
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/vertical-hotel:
    - hotel
odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - account
    - product
    - decimal_precision
    - report
    - analytic
    - web_tip
    - web_planner
    - procurement
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Module for Hotel/Resort/Property management. You can manage:

* Guest Reservation
* Group Reservartion

Different reports are also provided, mainly for hotel statistics.
    

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
hotel_calendar_view Room Reservation hotel.reservation calendar New
hotel_reservation_wizard_form_view hotel.reservation.wizard.form hotel.reservation.wizard form New
make_folio_wizard_form_view make.folio.wizard.form wizard.make.folio form New
view_hotel_reservation_form hotel.reservation.form hotel.reservation form New
view_hotel_reservation_graph hotel.reservation.graph hotel.reservation graph New
view_hotel_reservation_search hotel.reservation.search hotel.reservation search New
view_hotel_reservation_tree hotel.reservation.tree hotel.reservation tree New
Models touched (0)

No models found for this module.

REPOSITORY
REPOSITORYOCA/vertical-hotel
GIT
GIThttps://github.com/OCA/vertical-hotel.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/vertical-hotel/tree/8.0/hotel_reservation
VERSION
VERSION 1.0
CATEGORY
CATEGORYGeneric Modules/Hotel Reservation
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Tiny
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Tiny
COMMITTERS
COMMITTERSStéphane Bidoul, Alexandre Fayolle, Stéphane Bidoul (ACSONE)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:27
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/vertical-hotel:
    - hotel
odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web_kanban
    - web
    - web_kanban_sparkline
    - account_voucher
    - account
    - product
    - decimal_precision
    - report
    - analytic
    - board
    - edi
    - email_template
    - procurement
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Module for Hotel/Resort/Property management. You can manage:

* Guest Reservation
* Group Reservartion

Different reports are also provided, mainly for hotel statistics.
    

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
hotel_calendar_view Room Reservation hotel.reservation calendar New
hotel_reservation_wizard_form_view hotel.reservation.wizard.form hotel.reservation.wizard form New
make_folio_wizard_form_view make.folio.wizard.form wizard.make.folio form New
view_hotel_reservation_form hotel.reservation.form hotel.reservation form New
view_hotel_reservation_graph hotel.reservation.graph hotel.reservation graph New
view_hotel_reservation_search hotel.reservation.search hotel.reservation search New
view_hotel_reservation_tree hotel.reservation.tree hotel.reservation tree New
Models touched (0)

No models found for this module.

REPOSITORY
REPOSITORYOCA/vertical-hotel
GIT
GIThttps://github.com/OCA/vertical-hotel.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/vertical-hotel/tree/7.0/hotel_reservation
VERSION
VERSION 1.0
CATEGORY
CATEGORYGeneric Modules/Hotel Reservation
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Tiny
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Tiny
COMMITTERS
COMMITTERSNhomar Hernandez, Alexandre Fayolle
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:07:16
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/vertical-hotel:
    - hotel
odoo/odoo:
    - sale
    - account_voucher
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - process
    - decimal_precision
    - mail
    - analytic
    - board
    - edi
    - email_template
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Module for Hotel/Resort/Property management. You can manage:

* Guest Reservation
* Group Reservartion

Different reports are also provided, mainly for hotel statistics.
    

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
hotel_calendar_view Room Reservation hotel.reservation calendar New
hotel_reservation_wizard_form_view hotel.reservation.wizard.form hotel.reservation.wizard form New
make_folio_wizard_form_view make.folio.wizard.form wizard.make.folio form New
view_hotel_reservation_form hotel.reservation.form hotel.reservation form New
view_hotel_reservation_graph hotel.reservation.graph hotel.reservation graph New
view_hotel_reservation_search hotel.reservation.search hotel.reservation search New
view_hotel_reservation_tree hotel.reservation.tree hotel.reservation tree New
Models touched (0)

No models found for this module.

REPOSITORY
REPOSITORYOCA/vertical-hotel
GIT
GIThttps://github.com/OCA/vertical-hotel.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/vertical-hotel/tree/6.1/hotel_reservation
VERSION
VERSION 1.0
CATEGORY
CATEGORYGeneric Modules/Hotel Reservation
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Tiny
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Tiny
COMMITTERS
COMMITTERSSerpent Consulting Services, Alexandre Fayolle, Anup(SerpentCS), Atul Makwana(SerpentCS)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:04:07
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/vertical-hotel:
    - hotel
odoo/odoo:
    - base
    - product
    - process
    - decimal_precision
    - sale
    - stock
    - account
    - base_setup
    - analytic
    - board
    - edi
    - email_template
    - mail
    - base_tools
    - procurement
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
    Module for Hotel/Resort/Property management. You can manage:
    * Guest Reservation
    * Group Reservartion
      Different reports are also provided, mainly for hotel statistics.
    

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
hotel_calendar_view Room Reservation hotel.reservation calendar New
hotel_reservation_wizard_form_view hotel.reservation.wizard.form hotel.reservation.wizard form New
make_folio_wizard_form_view make.folio.wizard.form wizard.make.folio form New
view_hotel_reservation_form hotel.reservation.form hotel.reservation form New
view_hotel_reservation_graph hotel.reservation.graph hotel.reservation graph New
view_hotel_reservation_search hotel.reservation.search hotel.reservation search New
view_hotel_reservation_tree hotel.reservation.tree hotel.reservation tree New
Models touched (0)

No models found for this module.

STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/vertical-hotel
PULL REQUEST
PULL REQUEST[WIP][MIG] hotel_reservation: Migration to 16.0 (#232)