Repository
OCA/vertical-hotel · module folder · Try on Runboat
Module version
1.0.0
Category
Hotel Management
Folder size
3.0 MB
License
LGPL-3
Application
Yes
Auto-installable
No
Website
https://github.com/OCA/vertical-hotel
Last tracking update
2026-08-19 17:41:06
Authors
Odoo Community Association (OCA), Serpent Consulting Services Pvt. Ltd.
Maintainers
Odoo Community Association (OCA), Serpent Consulting Services Pvt. Ltd.
Committers
GitHub, Weblate, OCA-git-bot, oca-ci, nikul-serpentcs, Nik, Vadan-serpentcs
Odoo dependencies
Python dependencies
python-dateutil
System dependencies
None
Required by
hotel_housekeeping, hotel_reservation, hotel_restaurant
Description
Module for Complete Hotel management which includes the basic operations
at a hotel/apartment.

You can manage:

- Configure Property
- Hotel Configuration
- Manage history of Check In, Check out
- Manage Folio
- Payment

Code Analysis

Views touched (27)
XML IDNameModelTypeStatus
hotel_folio_calendar_view Hotel- Folios Calendar hotel.folio calendar New
report_hotel_folio report_hotel_folio ir.ui.view qweb New
res_company_inherit_config_hotel res.company.inherit.config.hotel res.company form Inherits base.view_company_form
view_hotel_floor_form hotel.floor.form hotel.floor form New
view_hotel_floor_tree hotel.floor.list hotel.floor list New
view_hotel_folio_form hotel.folio.form hotel.folio form New
view_hotel_folio_graph view.hotel.folio.graph hotel.folio graph New
view_hotel_folio_search hotel.folio.search hotel.folio search New
view_hotel_folio_tree hotel.folio.list hotel.folio list New
view_hotel_folio_wizard folio.report.wizard folio.report.wizard form New
view_hotel_room_aenities_search hotel.room_amenities_search hotel.room.amenities search New
view_hotel_room_amenities_form hotel.room.amenities.form hotel.room.amenities form New
view_hotel_room_amenities_list hotel.room_amenities_list hotel.room.amenities list New
view_hotel_room_amenities_type_form hotel.room_amenities_type_form hotel.room.amenities.type form New
view_hotel_room_amenities_type_list hotel.room_amenities_type_list hotel.room.amenities.type list New
view_hotel_room_form hotel.room.form hotel.room form New
view_hotel_room_kanban hotel.room.kanban hotel.room kanban New
view_hotel_room_search hotel.room.search hotel.room search New
view_hotel_room_tree hotel.room.list hotel.room list New
view_hotel_room_type_form hotel.room_type.form hotel.room.type form New
view_hotel_room_type_tree hotel.room_type.list hotel.room.type list New
view_hotel_service_type_form hotel.service_type.form hotel.service.type form New
view_hotel_service_type_tree hotel.service_type.list hotel.service.type list New
view_hotel_services_form .hotel.services.form hotel.services form New
view_hotel_services_search hotel.services.search hotel.services search New
view_hotel_services_tree hotel.services.list hotel.services list New
view_product_product_form_inherited view.product.product.form.inherited product.product form Inherits product.product_normal_form_view
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (17)

New fields (0)

No new fields.

Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi
    Overrides orm create method to link the account move with a hotel folio.

New fields (2)
  • date_end Datetime
    args: 'End Date'
  • date_start Datetime
    args: 'Start Date'
Public methods (2)
  • check_date(self)
    @api.model@api.constrains('date_start', 'date_end')
  • print_report(self)

New fields (5)
  • check_in Datetime
    required=True args: 'Check In Date'
  • check_out Datetime
    required=True args: 'Check Out Date'
  • folio_id Many2one → hotel.folio
    ondelete='cascade' args: 'hotel.folio', 'Folio Number'
  • room_id Many2one → hotel.room
    index=True ondelete='restrict' args: 'hotel.room'
  • status Selection
    related='folio_id.state' string='state'
Public methods (0)

No public methods.

New fields (2)
  • name Char
    index=True required=True args: 'Floor Name'
  • sequence Integer
    default=10 args: 'sequence'
Public methods (0)

No public methods.

New fields (10)
  • checkin_date Datetime
    default=<expr> required=True args: 'Check In'
  • checkout_date Datetime
    default=<expr> readonly=True required=True args: 'Check Out'
  • duration Float
    help='Number of days which will automatically count from the check-in and check-out date. ' args: 'Duration in Days'
  • duration_dummy Float
  • hotel_invoice_id Many2one → account.move
    copy=False args: 'account.move', 'Invoice'
  • hotel_policy Selection
    default='manual' help='Hotel policy for payment that either the guest has to pay at booking time or check-in check-out time.' args: [('prepaid', 'On Booking'), ('manual', 'On Check In'), ('picking', 'On Checkout')]
  • name Char
    default='New' index=True args: 'Folio Number'
  • order_id Many2one → sale.order
    ondelete='cascade' required=True args: 'sale.order', 'Order'
  • room_line_ids One2many → hotel.folio.line
    help='Hotel room reservation detail.' args: 'hotel.folio.line', 'folio_id'
  • service_line_ids One2many → hotel.service.line
    help='Hotel services details provided to Customer and it will be included in the main Invoice.' args: 'hotel.service.line', 'folio_id'
Public methods (4)
  • action_cancel(self)
    @param self: object pointer
  • action_cancel_draft(self)
    @param self: object pointer
  • action_confirm(self)
  • create(self, vals_list)
    @api.model_create_multi

New fields (5)
  • checkin_date Datetime
    required=True args: 'Check In'
  • checkout_date Datetime
    required=True args: 'Check Out'
  • folio_id Many2one → hotel.folio
    ondelete='cascade' args: 'hotel.folio', 'Folio'
  • is_reserved Boolean
    help='True when folio line created from Reservation'
  • order_line_id Many2one → sale.order.line
    ondelete='cascade' required=True args: 'sale.order.line', 'Order Line'
Public methods (3)
  • copy_data(self, default=None)
    @param self: object pointer @param default: dict of default values to be set
  • create(self, vals_list)
    @api.model_create_multi
    Override ORM create method to auto-link order_id from folio when folio_id is provided.
  • unlink(self)
    Overrides orm unlink method. @param self: The object pointer @return: True/False.

New fields (10)
  • capacity Integer
    required=True
  • floor_id Many2one → hotel.floor
    help='At which floor the room is located.' ondelete='restrict' args: 'hotel.floor', 'Floor No'
  • max_adult Integer
  • max_child Integer
  • product_id Many2one → product.product
    ondelete='cascade' required=True args: 'product.product', 'Product_id'
  • product_manager Many2one → res.users
    args: 'res.users'
  • room_amenities_ids Many2many → hotel.room.amenities
    help='List of room amenities.' string='Room Amenities' args: 'hotel.room.amenities'
  • room_categ_id Many2one → hotel.room.type
    ondelete='restrict' required=True args: 'hotel.room.type', 'Room Category'
  • room_line_ids One2many → folio.room.line
    string='Room Reservation Line' args: 'folio.room.line', 'room_id'
  • status Selection
    default='available' args: [('available', 'Available'), ('occupied', 'Occupied')]
Public methods (4)
  • create(self, vals_list)
    @api.model_create_multi
  • set_room_status_available(self)
    This method is used to change the state to available of the hotel room. --------------------------------------- @param self: object pointer
  • set_room_status_occupied(self)
    This method is used to change the state to occupied of the hotel room. --------------------------------------- @param self: object pointer
  • write(self, vals)
    Overrides orm write method. @param self: The object pointer @param vals: dictionary of fields value.

New fields (3)
  • amenities_categ_id Many2one → hotel.room.amenities.type
    ondelete='restrict' required=True args: 'hotel.room.amenities.type', 'Amenities Category'
  • product_id Many2one → product.product
    ondelete='cascade' required=True args: 'product.product', 'Room Amenities Product'
  • product_manager Many2one → res.users
    args: 'res.users'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)
    Overrides orm write method. @param self: The object pointer @param vals: dictionary of fields value.

New fields (3)
  • amenity_id Many2one → hotel.room.amenities.type
    args: 'hotel.room.amenities.type', 'Category'
  • child_ids One2many → hotel.room.amenities.type
    args: 'hotel.room.amenities.type', 'amenity_id', 'Amenities Child Categories'
  • product_categ_id Many2one → product.category
    copy=False ondelete='restrict' required=True args: 'product.category', 'Product Category'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (3)
  • categ_id Many2one → hotel.room.type
    args: 'hotel.room.type', 'Category'
  • child_ids One2many → hotel.room.type
    args: 'hotel.room.type', 'categ_id', 'Room Child Categories'
  • product_categ_id Many2one → product.category
    copy=False ondelete='restrict' required=True args: 'product.category', 'Product Category'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (4)
  • folio_id Many2one → hotel.folio
    ondelete='cascade' args: 'hotel.folio', 'Folio'
  • ser_checkin_date Datetime
    args: 'From Date'
  • ser_checkout_date Datetime
    args: 'To Date'
  • service_line_id Many2one → sale.order.line
    ondelete='cascade' required=True args: 'sale.order.line', 'Service Line'
Public methods (4)
  • copy(self, default=None)
    @param self: object pointer @param default: dict of default values to be set
  • copy_data(self, default=None)
    @param self: object pointer @param default: dict of default values to be set
  • create(self, vals_list)
    @api.model_create_multi
    Overrides orm create method. @param self: The object pointer @param vals: dictionary of fields value. @return: new record set for hotel service line.
  • unlink(self)
    Overrides orm unlink method. @param self: The object pointer @return: True/False.

New fields (3)
  • child_ids One2many → hotel.service.type
    args: 'hotel.service.type', 'service_id', 'Service Child Categories'
  • product_categ_id Many2one → product.category
    copy=False ondelete='restrict' required=True args: 'product.category', 'Product Category'
  • service_id Many2one → hotel.service.type
    args: 'hotel.service.type', 'Service Category'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (3)
  • product_id Many2one → product.product
    ondelete='cascade' required=True args: 'product.product', 'Service_id'
  • product_manager Many2one → res.users
    args: 'res.users'
  • service_categ_id Many2one → hotel.service.type
    ondelete='restrict' required=True args: 'hotel.service.type', 'Service Category'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)
    Overrides orm write method. @param self: The object pointer @param vals: dictionary of fields value.

New fields (3)
  • iscategid Boolean
    args: 'Is Categ'
  • isroom Boolean
    args: 'Is Room'
  • isservice Boolean
    args: 'Is Service'
Public methods (1)
  • search_fetch(self, domain, field_names, offset=0, limit=None, order=None)
    @api.model
    Custom search_fetch override: - When called with context["from_room"], restricts to available rooms for given dates.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • additional_hours Integer
    help='Provide the min hours value for check in, checkout days, whatever the hours will be provided here based on that extra days will be calculated.'
Public methods (0)

No public methods.

New fields (1)
  • advance_payment_method Selection
    default='delivered' help='A standard invoice is issued with all the order lines ready for\n invoicing, according to their invoicing policy\n (based on ordered or delivered quantity).' required=True string='Create Invoice' args: [('delivered', 'Regular invoice'), ('percentage', 'Down payment (percentage)'), ('fixed', 'Down payment (fixed amount)')]
Public methods (1)
  • create_invoices(self)

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…