Hotel Management

hotel
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
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYHotel Management
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Serpent Consulting Services Pvt. Ltd.
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Serpent Consulting Services Pvt. Ltd.
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, 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 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
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES python-dateutil
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
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 xpath Inherits base.view_company_form
view_hotel_floor_form hotel.floor.form hotel.floor form New
view_hotel_floor_tree hotel.floor.tree hotel.floor tree 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.tree hotel.folio tree 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 tree 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 tree 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.tree hotel.room tree New
view_hotel_room_type_form hotel.room_type.form hotel.room.type form New
view_hotel_room_type_tree hotel.room_type.tree hotel.room.type tree New
view_hotel_service_type_form hotel.service_type.form hotel.service.type form New
view_hotel_service_type_tree hotel.service_type.tree hotel.service.type tree 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.tree hotel.services tree New
view_product_product_form_inherited view.product.product.form.inherited product.product xpath Inherits product.product_normal_form_view
Models touched (17)

New fields (0)

No new fields.

Public methods (1)
  • create(self, vals)
    @api.model
    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=_get_checkin_date required=True args: 'Check In'
  • checkout_date Datetime
    default=_get_checkout_date 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 payment 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
    delegate=True 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 toCustomer and it will included in the main Invoice.' args: 'hotel.service.line', 'folio_id'
Public methods (6)
  • action_cancel(self)
    @param self: object pointer
  • action_cancel_draft(self)
    @param self: object pointer
  • action_confirm(self)
  • create(self, vals)
    @api.model
    Overrides orm create method. @param self: The object pointer @param vals: dictionary of fields value. @return: new record set for hotel folio.
  • name_search(self, name='', args=None, operator='ilike', limit=100)
    @api.model
  • write(self, vals)
    Overrides orm write method. @param self: The object pointer @param vals: dictionary of fields value.

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
    delegate=True 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)
    @api.model
    Overrides orm create method. @param self: The object pointer @param vals: dictionary of fields value. @return: new record set for hotel folio line.
  • 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
    delegate=True 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)
    @api.model
  • 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
    delegate=True ondelete='cascade' required=True args: 'product.product', 'Room Amenities Product'
  • product_manager Many2one → res.users
    args: 'res.users'
Public methods (2)
  • create(self, vals)
    @api.model
  • 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 delegate=True ondelete='restrict' required=True args: 'product.category', 'Product Category'
Public methods (2)
  • create(self, vals)
    @api.model
  • 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 delegate=True ondelete='restrict' required=True args: 'product.category', 'Product Category'
Public methods (2)
  • create(self, vals)
    @api.model
  • 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
    delegate=True ondelete='cascade' required=True args: 'sale.order.line', 'Service Line'
Public methods (4)
  • copy(self, default=None)
    @api.returns('self', <expr>)
    @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)
    @api.model
    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 delegate=True 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)
    @api.model
  • write(self, vals)

New fields (3)
  • product_id Many2one → product.product
    delegate=True 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)
    @api.model
  • 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 (0)

No public methods.

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)
REPOSITORY
REPOSITORYOCA/vertical-hotel
GIT
GIThttps://github.com/OCA/vertical-hotel.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/vertical-hotel/tree/16.0/hotel
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYHotel Management
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), OpenERP SA, Serpent Consulting Services Pvt. Ltd.
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), OpenERP SA, Serpent Consulting Services Pvt. Ltd.
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, sachin-scs, pavan-serpentcs
WEBSITE
WEBSITEhttps://github.com/OCA/vertical-hotel
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:58
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale_stock
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - account_payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
    - stock_account
    - stock
    - barcodes_gs1_nomenclature
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES python-dateutil
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

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 xpath Inherits base.view_company_form
view_hotel_floor_form hotel.floor.form hotel.floor form New
view_hotel_floor_tree hotel.floor.tree hotel.floor tree 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.tree hotel.folio tree 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 tree 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 tree 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.tree hotel.room tree New
view_hotel_room_type_form hotel.room_type.form hotel.room.type form New
view_hotel_room_type_tree hotel.room_type.tree hotel.room.type tree New
view_hotel_service_type_form hotel.service_type.form hotel.service.type form New
view_hotel_service_type_tree hotel.service_type.tree hotel.service.type tree 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.tree hotel.services tree New
view_product_product_form_inherited view.product.product.form.inherited product.product xpath Inherits product.product_normal_form_view
Models touched (17)

New fields (0)

No new fields.

Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (2)
  • date_end Datetime
    args: 'End Date'
  • date_start Datetime
    args: 'Start Date'
Public methods (1)
  • 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 (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (10)
  • checkin_date Datetime
    default=_get_checkin_date readonly=True required=True states={'draft': [('readonly', False)]} args: 'Check In'
  • checkout_date Datetime
    default=_get_checkout_date readonly=True required=True states={'draft': [('readonly', False)]} 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 payment 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 readonly=True args: 'Folio Number'
  • order_id Many2one → sale.order
    delegate=True ondelete='cascade' required=True args: 'sale.order', 'Order'
  • room_line_ids One2many → hotel.folio.line
    help='Hotel room reservation detail.' readonly=True states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} args: 'hotel.folio.line', 'folio_id'
  • service_line_ids One2many → hotel.service.line
    help='Hotel services details provided toCustomer and it will included in the main Invoice.' readonly=True states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} args: 'hotel.service.line', 'folio_id'
Public methods (8)
  • action_cancel(self)
    @param self: object pointer
  • action_cancel_draft(self)
    @param self: object pointer
  • action_confirm(self)
  • action_done(self)
  • 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 folio.
  • name_get(self)
  • name_search(self, name='', args=None, operator='ilike', limit=100)
    @api.model
  • write(self, vals)
    Overrides orm write method. @param self: The object pointer @param vals: dictionary of fields value.

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
    delegate=True 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
    Overrides orm create method. @param self: The object pointer @param vals: dictionary of fields value. @return: new record set for hotel folio line.
  • 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
    delegate=True 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
    delegate=True 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 delegate=True ondelete='restrict' required=True args: 'product.category', 'Product Category'
Public methods (4)
  • create(self, vals_list)
    @api.model_create_multi
  • name_get(self)
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model
  • 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 delegate=True ondelete='restrict' required=True args: 'product.category', 'Product Category'
Public methods (4)
  • create(self, vals_list)
    @api.model_create_multi
  • name_get(self)
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model
  • 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
    delegate=True ondelete='cascade' required=True args: 'sale.order.line', 'Service Line'
Public methods (4)
  • copy(self, default=None)
    @api.returns('self', <expr>)
    @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 delegate=True ondelete='restrict' required=True args: 'product.category', 'Product Category'
  • service_id Many2one → hotel.service.type
    args: 'hotel.service.type', 'Service Category'
Public methods (4)
  • create(self, vals_list)
    @api.model_create_multi
  • name_get(self)
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model
  • write(self, vals)

New fields (3)
  • product_id Many2one → product.product
    delegate=True 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 (0)

No public methods.

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 (2)
  • create_invoices(self)
  • default_get(self, fields)
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
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYHotel Management
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), OpenERP SA, Serpent Consulting Services Pvt. Ltd.
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), OpenERP SA, Serpent Consulting Services Pvt. Ltd.
COMMITTERS
COMMITTERSGitHub, Weblate, OCA-git-bot, oca-ci, George Smirnov, ShwetaSerpentCS, fetcheping
WEBSITE
WEBSITEhttps://github.com/OCA/vertical-hotel
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:43
ODOO DEPENDENCIES
ODOO DEPENDENCIES 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 (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 xpath Inherits base.view_company_form
view_hotel_floor_form hotel.floor.form hotel.floor form New
view_hotel_floor_tree hotel.floor.tree hotel.floor tree 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.tree hotel.folio tree 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 tree 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 tree 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.tree hotel.room tree New
view_hotel_room_type_form hotel.room_type.form hotel.room.type form New
view_hotel_room_type_tree hotel.room_type.tree hotel.room.type tree New
view_hotel_service_type_form hotel.service_type.form hotel.service.type form New
view_hotel_service_type_tree hotel.service_type.tree hotel.service.type tree 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.tree hotel.services tree New
view_product_product_form_inherited view.product.product.form.inherited product.product xpath Inherits product.product_normal_form_view
Models touched (17)

New fields (0)

No new fields.

Public methods (1)
  • create(self, vals)
    @api.model

New fields (2)
  • date_end Datetime
    args: 'End Date'
  • date_start Datetime
    args: 'Start Date'
Public methods (1)
  • 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=_get_checkin_date readonly=True required=True states={'draft': [('readonly', False)]} args: 'Check In'
  • checkout_date Datetime
    default=_get_checkout_date readonly=True required=True states={'draft': [('readonly', False)]} 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 payment 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 readonly=True args: 'Folio Number'
  • order_id Many2one → sale.order
    delegate=True ondelete='cascade' required=True args: 'sale.order', 'Order'
  • room_line_ids One2many → hotel.folio.line
    help='Hotel room reservation detail.' readonly=True states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} args: 'hotel.folio.line', 'folio_id'
  • service_line_ids One2many → hotel.service.line
    help='Hotel services details provided toCustomer and it will included in the main Invoice.' readonly=True states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} args: 'hotel.service.line', 'folio_id'
Public methods (8)
  • action_cancel(self)
    @param self: object pointer
  • action_cancel_draft(self)
    @param self: object pointer
  • action_confirm(self)
  • action_done(self)
  • create(self, vals)
    @api.model
    Overrides orm create method. @param self: The object pointer @param vals: dictionary of fields value. @return: new record set for hotel folio.
  • name_get(self)
  • name_search(self, name='', args=None, operator='ilike', limit=100)
    @api.model
  • write(self, vals)
    Overrides orm write method. @param self: The object pointer @param vals: dictionary of fields value.

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
    delegate=True 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)
    @api.model
    Overrides orm create method. @param self: The object pointer @param vals: dictionary of fields value. @return: new record set for hotel folio line.
  • 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
    delegate=True 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)
    @api.model
  • 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
    delegate=True ondelete='cascade' required=True args: 'product.product', 'Room Amenities Product'
  • product_manager Many2one → res.users
    args: 'res.users'
Public methods (2)
  • create(self, vals)
    @api.model
  • 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 delegate=True ondelete='restrict' required=True args: 'product.category', 'Product Category'
Public methods (4)
  • create(self, vals)
    @api.model
  • name_get(self)
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model
  • 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 delegate=True ondelete='restrict' required=True args: 'product.category', 'Product Category'
Public methods (4)
  • create(self, vals)
    @api.model
  • name_get(self)
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model
  • 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
    delegate=True ondelete='cascade' required=True args: 'sale.order.line', 'Service Line'
Public methods (4)
  • copy(self, default=None)
    @api.returns('self', <expr>)
    @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)
    @api.model
    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 delegate=True ondelete='restrict' required=True args: 'product.category', 'Product Category'
  • service_id Many2one → hotel.service.type
    args: 'hotel.service.type', 'Service Category'
Public methods (4)
  • create(self, vals)
    @api.model
  • name_get(self)
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model
  • write(self, vals)

New fields (3)
  • product_id Many2one → product.product
    delegate=True 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)
    @api.model
  • 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 (0)

No public methods.

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)
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
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYHotel Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), OpenERP SA, Serpent Consulting Services Pvt. Ltd.
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), OpenERP SA, Serpent Consulting Services Pvt. Ltd.
COMMITTERS
COMMITTERSGitHub, OCA Transbot, oca-travis, Weblate, OCA-git-bot, Maitri Patel, Vimal Patel, Rajan-SerpentCS, oca-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/vertical-hotel
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:11
ODOO DEPENDENCIES
ODOO DEPENDENCIES 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 (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 xpath Inherits base.view_company_form
view_hotel_floor_form hotel.floor.form hotel.floor form New
view_hotel_floor_tree hotel.floor.tree hotel.floor tree 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.tree hotel.folio tree 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 tree 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 tree 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.tree hotel.room tree New
view_hotel_room_type_form hotel.room_type.form hotel.room.type form New
view_hotel_room_type_tree hotel.room_type.tree hotel.room.type tree New
view_hotel_service_type_form hotel.service_type.form hotel.service.type form New
view_hotel_service_type_tree hotel.service_type.tree hotel.service.type tree 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.tree hotel.services tree New
view_product_product_form_inherited view.product.product.form.inherited product.product xpath Inherits product.product_normal_form_view
Models touched (17)

New fields (0)

No new fields.

Public methods (1)
  • create(self, vals)
    @api.model

New fields (2)
  • date_end Datetime
    args: 'End Date'
  • date_start Datetime
    args: 'Start Date'
Public methods (1)
  • 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', 'Room id'
  • 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=_get_checkin_date readonly=True required=True states={'draft': [('readonly', False)]} args: 'Check In'
  • checkout_date Datetime
    default=_get_checkout_date readonly=True required=True states={'draft': [('readonly', False)]} 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
    args: 'Duration Dummy'
  • 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 payment at booking time or check-in check-out time.' args: [('prepaid', 'On Booking'), ('manual', 'On Check In'), ('picking', 'On Checkout')], 'Hotel Policy'
  • name Char
    default='New' index=True readonly=True args: 'Folio Number'
  • order_id Many2one → sale.order
    delegate=True ondelete='cascade' required=True args: 'sale.order', 'Order'
  • room_line_ids One2many → hotel.folio.line
    help='Hotel room reservation detail.' readonly=True states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} args: 'hotel.folio.line', 'folio_id'
  • service_line_ids One2many → hotel.service.line
    help='Hotel services details provided toCustomer and it will included in the main Invoice.' readonly=True states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} args: 'hotel.service.line', 'folio_id'
Public methods (8)
  • action_cancel(self)
    @param self: object pointer
  • action_cancel_draft(self)
    @param self: object pointer
  • action_confirm(self)
  • action_done(self)
  • create(self, vals)
    @api.model
    Overrides orm create method. @param self: The object pointer @param vals: dictionary of fields value. @return: new record set for hotel folio.
  • name_get(self)
  • name_search(self, name='', args=None, operator='ilike', limit=100)
    @api.model
  • write(self, vals)
    Overrides orm write method. @param self: The object pointer @param vals: dictionary of fields value.

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' args: 'Is Reserved'
  • order_line_id Many2one → sale.order.line
    delegate=True 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)
    @api.model
    Overrides orm create method. @param self: The object pointer @param vals: dictionary of fields value. @return: new record set for hotel folio line.
  • unlink(self)
    Overrides orm unlink method. @param self: The object pointer @return: True/False.

New fields (10)
  • capacity Integer
    required=True args: 'Capacity'
  • 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
    delegate=True ondelete='cascade' required=True args: 'product.product', 'Product_id'
  • product_manager Many2one → res.users
    args: 'res.users', 'Product Manager'
  • 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')], 'Status'
Public methods (4)
  • create(self, vals)
    @api.model
  • 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
    delegate=True ondelete='cascade' required=True args: 'product.product', 'Room Amenities Product'
  • product_manager Many2one → res.users
    args: 'res.users', 'Product Manager'
Public methods (2)
  • create(self, vals)
    @api.model
  • 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 delegate=True required=True args: 'product.category', 'Product Category'
Public methods (4)
  • create(self, vals)
    @api.model
  • name_get(self)
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model
  • 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 delegate=True required=True args: 'product.category', 'Product Category'
Public methods (4)
  • create(self, vals)
    @api.model
  • name_get(self)
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model
  • 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
    delegate=True ondelete='cascade' required=True args: 'sale.order.line', 'Service Line'
Public methods (4)
  • copy(self, default=None)
    @api.returns('self', <expr>)
    @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)
    @api.model
    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 delegate=True required=True args: 'product.category', 'Product Category'
  • service_id Many2one → hotel.service.type
    args: 'hotel.service.type', 'Service Category'
Public methods (4)
  • create(self, vals)
    @api.model
  • name_get(self)
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model
  • write(self, vals)

New fields (3)
  • product_id Many2one → product.product
    delegate=True ondelete='cascade' required=True args: 'product.product', 'Service_id'
  • product_manager Many2one → res.users
    args: 'res.users', 'Product Manager'
  • service_categ_id Many2one → hotel.service.type
    ondelete='restrict' required=True args: 'hotel.service.type', 'Service Category'
Public methods (2)
  • create(self, vals)
    @api.model
  • 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 (0)

No public methods.

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.' args: 'Additional Hours'
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)
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
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYHotel Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), OpenERP SA, Serpent Consulting Services Pvt. Ltd.
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), OpenERP SA, Serpent Consulting Services Pvt. Ltd.
COMMITTERS
COMMITTERSGitHub, OCA Transbot, oca-travis, Dhruvita, Vimal Patel, Nikita Vaghela, dhruvitaSerpentCS
WEBSITE
WEBSITEhttps://github.com/OCA/vertical-hotel/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:20
ODOO DEPENDENCIES
ODOO DEPENDENCIES 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 (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 xpath Inherits base.view_company_form
view_hotel_floor_form hotel.floor.form hotel.floor form New
view_hotel_floor_tree hotel.floor.tree hotel.floor tree 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.tree hotel.folio tree 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 tree 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 tree 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.tree hotel.room tree New
view_hotel_room_type_form hotel.room_type.form hotel.room.type form New
view_hotel_room_type_tree hotel.room_type.tree hotel.room.type tree New
view_hotel_service_type_form hotel.service_type.form hotel.service.type form New
view_hotel_service_type_tree hotel.service_type.tree hotel.service.type tree 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.tree hotel.services tree New
view_product_product_form_inherited view.product.product.form.inherited product.product xpath Inherits product.product_normal_form_view
Models touched (17)

New fields (0)

No new fields.

Public methods (1)
  • create(self, vals)
    @api.model

New fields (2)
  • date_end Datetime
    args: 'End Date'
  • date_start Datetime
    args: 'Start Date'
Public methods (1)
  • 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
    args: 'hotel.folio', 'Folio Number'
  • room_id Many2one → hotel.room
    args: 'hotel.room', 'Room id'
  • 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
    index=True
Public methods (0)

No public methods.

New fields (10)
  • checkin_date Datetime
    default=_get_checkin_date readonly=True required=True states={'draft': [('readonly', False)]} args: 'Check In'
  • checkout_date Datetime
    default=_get_checkout_date readonly=True required=True states={'draft': [('readonly', False)]} 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
    args: 'Duration Dummy'
  • 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 payment at booking time or check-in check-out time.' args: [('prepaid', 'On Booking'), ('manual', 'On Check In'), ('picking', 'On Checkout')], 'Hotel Policy'
  • name Char
    default='New' index=True readonly=True args: 'Folio Number'
  • order_id Many2one → sale.order
    delegate=True ondelete='cascade' required=True args: 'sale.order', 'Order'
  • room_line_ids One2many → hotel.folio.line
    help='Hotel room reservation detail.' readonly=True states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} args: 'hotel.folio.line', 'folio_id'
  • service_line_ids One2many → hotel.service.line
    help='Hotel services details provided toCustomer and it will included in the main Invoice.' readonly=True states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} args: 'hotel.service.line', 'folio_id'
Public methods (10)
  • action_cancel(self)
    @param self: object pointer
  • action_cancel_draft(self)
    @param self: object pointer
  • action_confirm(self)
  • action_done(self)
  • create(self, vals)
    @api.model
    Overrides orm create method. @param self: The object pointer @param vals: dictionary of fields value. @return: new record set for hotel folio.
  • folio_room_lines(self)
    @api.constrains('room_line_ids')
    This method is used to validate the room_lines. ------------------------------------------------ @param self: object pointer @return: raise warning depending on the validation
  • name_get(self)
  • name_search(self, name='', args=None, operator='ilike', limit=100)
    @api.model
  • onchange_dates(self)
    @api.onchange('checkout_date', 'checkin_date')
    This method gives the duration between check in and checkout if customer will leave only for some hour it would be considers as a whole day.If customer will check in 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
  • write(self, vals)
    Overrides orm write method. @param self: The object pointer @param vals: dictionary of fields value.

New fields (5)
  • checkin_date Datetime
    default=_get_checkin_date required=True args: 'Check In'
  • checkout_date Datetime
    default=_get_checkout_date 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' args: 'Is Reserved'
  • order_line_id Many2one → sale.order.line
    delegate=True ondelete='cascade' required=True args: 'sale.order.line', 'Order Line'
Public methods (7)
  • button_confirm(self)
    @param self: object pointer
  • button_done(self)
    @param self: object pointer
  • check_dates(self)
    @api.constrains('checkin_date', 'checkout_date')
    This method is used to validate the checkin_date and checkout_date. ------------------------------------------------------------------- @param self: object pointer @return: raise warning depending on the validation
  • copy_data(self, default=None)
    @param self: object pointer @param default: dict of default values to be set
  • create(self, vals)
    @api.model
    Overrides orm create method. @param self: The object pointer @param vals: dictionary of fields value. @return: new record set for hotel folio line.
  • product_id_change(self)
    @api.onchange('product_id')
    - @param self: object pointer -
  • unlink(self)
    Overrides orm unlink method. @param self: The object pointer @return: True/False.

New fields (10)
  • capacity Integer
    required=True args: 'Capacity'
  • floor_id Many2one → hotel.floor
    help='At which floor the room is located.' args: 'hotel.floor', 'Floor No'
  • max_adult Integer
  • max_child Integer
  • product_id Many2one → product.product
    delegate=True ondelete='cascade' required=True args: 'product.product', 'Product_id'
  • product_manager Many2one → res.users
    args: 'res.users', 'Product Manager'
  • room_amenities Many2many → hotel.room.amenities
    help='List of room amenities. ' args: 'hotel.room.amenities', 'temp_tab', 'room_amenities', 'rcateg_id'
  • 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')], 'Status'
Public methods (6)
  • check_capacity(self)
    @api.constrains('capacity')
  • create(self, vals)
    @api.model
  • isroom_change(self)
    @api.onchange('isroom')
    Based on isroom, status will be updated. ---------------------------------------- @param self: object pointer
  • 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
    delegate=True ondelete='cascade' required=True args: 'product.product', 'Product'
  • product_manager Many2one → res.users
    args: 'res.users', 'Product Manager'
Public methods (2)
  • create(self, vals)
    @api.model
  • 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
    delegate=True args: 'product.category', 'Product Category'
Public methods (4)
  • create(self, vals)
    @api.model
  • name_get(self)
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model
  • 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
    delegate=True args: 'product.category', 'Product Category'
Public methods (4)
  • create(self, vals)
    @api.model
  • name_get(self)
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model
  • write(self, vals)

New fields (4)
  • folio_id Many2one → hotel.folio
    ondelete='cascade' args: 'hotel.folio', 'Folio'
  • ser_checkin_date Datetime
    default=_service_checkin_date required=True args: 'From Date'
  • ser_checkout_date Datetime
    default=_service_checkout_date required=True args: 'To Date'
  • service_line_id Many2one → sale.order.line
    delegate=True ondelete='cascade' required=True args: 'sale.order.line', 'Service Line'
Public methods (7)
  • button_confirm(self)
    @param self: object pointer
  • button_done(self)
    @param self: object pointer
  • 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)
    @api.model
    Overrides orm create method. @param self: The object pointer @param vals: dictionary of fields value. @return: new record set for hotel service line.
  • product_id_change(self)
    @api.onchange('product_id')
  • 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
    delegate=True args: 'product.category', 'Product Category'
  • service_id Many2one → hotel.service.type
    args: 'hotel.service.type', 'Service Category'
Public methods (4)
  • create(self, vals)
    @api.model
  • name_get(self)
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model
  • write(self, vals)

New fields (3)
  • product_id Many2one → product.product
    delegate=True ondelete='cascade' required=True args: 'product.product', 'Service_id'
  • product_manager Many2one → res.users
    args: 'res.users', 'Product Manager'
  • service_categ_id Many2one → hotel.service.type
    ondelete='restrict' required=True args: 'hotel.service.type', 'Service Category'
Public methods (2)
  • create(self, vals)
    @api.model
  • 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 (0)

No public methods.

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.' args: 'Additional Hours'
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)
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
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYHotel Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), OpenERP SA, Serpent Consulting Services Pvt. Ltd.
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), OpenERP SA, Serpent Consulting Services Pvt. Ltd.
COMMITTERS
COMMITTERSGitHub, Luis Torres, OCA Transbot, oca-travis, OCA-git-bot, tarteo, robin.keunen, Nikul Chaudhary, Dhruvita, Vimal Patel, Dhruvita Vekariya, Rajan-SerpentCS
WEBSITE
WEBSITEhttps://github.com/OCA/vertical-hotel/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:25
ODOO DEPENDENCIES
ODOO DEPENDENCIES 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 Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

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 xpath Inherits base.view_company_form
view_hotel_floor_form hotel.floor.form hotel.floor form New
view_hotel_floor_tree hotel.floor.tree hotel.floor tree 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.tree hotel.folio tree 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 tree 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 tree 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.tree hotel.room tree New
view_hotel_room_type_form hotel.room_type.form hotel.room.type form New
view_hotel_room_type_tree hotel.room_type.tree hotel.room.type tree New
view_hotel_service_type_form hotel.service_type.form hotel.service.type form New
view_hotel_service_type_tree hotel.service_type.tree hotel.service.type tree 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.tree hotel.services tree New
view_product_product_form_inherited view.product.product.form.inherited product.product xpath Inherits product.product_normal_form_view
Models touched (17)

New fields (0)

No new fields.

Public methods (1)
  • create(self, vals)
    @api.model

New fields (2)
  • date_end Datetime
    args: 'End Date'
  • date_start Datetime
    args: 'Start Date'
Public methods (1)
  • print_report(self)
    @api.multi

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
    string='Folio Number' args: 'hotel.folio'
  • room_id Many2one → hotel.room
    args: 'hotel.room', 'Room id'
  • 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
    index=True
Public methods (0)

No public methods.

New fields (10)
  • checkin_date Datetime
    default=_get_checkin_date readonly=True required=True states={'draft': [('readonly', False)]} args: 'Check In'
  • checkout_date Datetime
    default=_get_checkout_date readonly=True required=True states={'draft': [('readonly', False)]} 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
    args: 'Duration Dummy'
  • hotel_invoice_id Many2one → account.invoice
    copy=False args: 'account.invoice', 'Invoice'
  • hotel_policy Selection
    default='manual' help='Hotel policy for payment that either the guest has to payment at booking time or check-in check-out time.' args: [('prepaid', 'On Booking'), ('manual', 'On Check In'), ('picking', 'On Checkout')], 'Hotel Policy'
  • name Char
    default='New' index=True readonly=True args: 'Folio Number'
  • order_id Many2one → sale.order
    delegate=True ondelete='cascade' required=True args: 'sale.order', 'Order'
  • room_lines One2many → hotel.folio.line
    help='Hotel room reservation detail.' readonly=True states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} args: 'hotel.folio.line', 'folio_id'
  • service_lines One2many → hotel.service.line
    help='Hotel services details provided toCustomer and it will included in the main Invoice.' readonly=True states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} args: 'hotel.service.line', 'folio_id'
Public methods (16)
  • action_cancel(self)
    @api.multi
    @param self: object pointer
  • action_cancel_draft(self)
    @api.multi
    @param self: object pointer
  • action_confirm(self)
    @api.multi
  • action_done(self)
    @api.multi
  • action_invoice_cancel(self)
    @api.multi
    @param self: object pointer
  • action_invoice_create(self, grouped=False, final=False)
    @api.multi
    @param self: object pointer
  • copy(self, default=None)
    @api.multi
    @param self: object pointer @param default: dict of default values to be set
  • create(self, vals)
    @api.model
    Overrides orm create method. @param self: The object pointer @param vals: dictionary of fields value. @return: new record set for hotel folio.
  • folio_room_lines(self)
    @api.constrains('room_lines')
    This method is used to validate the room_lines. ------------------------------------------------ @param self: object pointer @return: raise warning depending on the validation
  • name_get(self)
    @api.multi
  • name_search(self, name='', args=None, operator='ilike', limit=100)
    @api.model
  • onchange_dates(self)
    @api.onchange('checkout_date', 'checkin_date')
    This method gives the duration between check in and checkout if customer will leave only for some hour it would be considers as a whole day.If customer will check in 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 folio as well --------------------------------------------------------------- @param self: object pointer
  • onchange_warehouse_id(self)
    @api.onchange('warehouse_id')
    When you change warehouse it will update the warehouse of the hotel folio as well ---------------------------------------------------------- @param self: object pointer
  • test_state(self, mode)
    @api.multi
    @param self: object pointer @param mode: state of workflow
  • write(self, vals)
    @api.multi
    Overrides orm write method. @param self: The object pointer @param vals: dictionary of fields value.

New fields (5)
  • checkin_date Datetime
    default=_get_checkin_date required=True string='Check In'
  • checkout_date Datetime
    default=_get_checkout_date required=True string='Check Out'
  • folio_id Many2one → hotel.folio
    ondelete='cascade' string='Folio' args: 'hotel.folio'
  • is_reserved Boolean
    help='True when folio line created from Reservation' string='Is Reserved'
  • order_line_id Many2one → sale.order.line
    delegate=True ondelete='cascade' required=True string='Order Line' args: 'sale.order.line'
Public methods (9)
  • button_confirm(self)
    @api.multi
    @param self: object pointer
  • button_done(self)
    @api.multi
    @param self: object pointer
  • check_dates(self)
    @api.constrains('checkin_date', 'checkout_date')
    This method is used to validate the checkin_date and checkout_date. ------------------------------------------------------------------- @param self: object pointer @return: raise warning depending on the validation
  • copy(self, default=None)
    @api.multi
    @param self: object pointer @param default: dict of default values to be set
  • copy_data(self, default=None)
    @api.multi
    @param self: object pointer @param default: dict of default values to be set
  • create(self, vals)
    @api.model
    Overrides orm create method. @param self: The object pointer @param vals: dictionary of fields value. @return: new record set for hotel folio line.
  • on_change_checkout(self)
    @api.onchange('checkin_date', 'checkout_date')
    When you change checkin_date or checkout_date it will checked it and update the qty of hotel folio line ----------------------------------------------------------------- @param self: object pointer
  • product_id_change(self)
    @api.onchange('product_id')
    - @param self: object pointer -
  • unlink(self)
    @api.multi
    Overrides orm unlink method. @param self: The object pointer @return: True/False.

New fields (10)
  • capacity Integer
    required=True args: 'Capacity'
  • categ_id Many2one → hotel.room.type
    required=True string='Room Category' args: 'hotel.room.type'
  • floor_id Many2one → hotel.floor
    help='At which floor the room is located.' args: 'hotel.floor', 'Floor No'
  • max_adult Integer
  • max_child Integer
  • product_id Many2one → product.product
    delegate=True ondelete='cascade' required=True args: 'product.product', 'Product_id'
  • product_manager Many2one → res.users
    args: 'res.users', 'Product Manager'
  • room_amenities Many2many → hotel.room.amenities
    help='List of room amenities. ' args: 'hotel.room.amenities', 'temp_tab', 'room_amenities', 'rcateg_id'
  • 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')], 'Status'
Public methods (5)
  • check_capacity(self)
    @api.constrains('capacity')
  • isroom_change(self)
    @api.onchange('isroom')
    Based on isroom, status will be updated. ---------------------------------------- @param self: object pointer
  • set_room_status_available(self)
    @api.multi
    This method is used to change the state to available of the hotel room. --------------------------------------- @param self: object pointer
  • set_room_status_occupied(self)
    @api.multi
    This method is used to change the state to occupied of the hotel room. --------------------------------------- @param self: object pointer
  • write(self, vals)
    @api.multi
    Overrides orm write method. @param self: The object pointer @param vals: dictionary of fields value.

New fields (3)
  • categ_id Many2one → hotel.room.amenities.type
    required=True string='Amenities Category' args: 'hotel.room.amenities.type'
  • product_id Many2one → product.product
    delegate=True ondelete='cascade' required=True args: 'product.product', 'Product Category'
  • product_manager Many2one → res.users
    string='Product Manager' args: 'res.users'
Public methods (0)

No public methods.

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', 'Child Categories'
  • name Char
    required=True
Public methods (2)
  • name_get(self)
    @api.multi
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model

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', 'Child Categories'
  • name Char
    required=True
Public methods (2)
  • name_get(self)
    @api.multi
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model

New fields (4)
  • folio_id Many2one → hotel.folio
    ondelete='cascade' args: 'hotel.folio', 'Folio'
  • ser_checkin_date Datetime
    default=_service_checkin_date required=True args: 'From Date'
  • ser_checkout_date Datetime
    default=_service_checkout_date required=True args: 'To Date'
  • service_line_id Many2one → sale.order.line
    delegate=True ondelete='cascade' required=True args: 'sale.order.line', 'Service Line'
Public methods (8)
  • button_confirm(self)
    @api.multi
    @param self: object pointer
  • button_done(self)
    @api.multi
    @param self: object pointer
  • copy(self, default=None)
    @api.multi
    @param self: object pointer @param default: dict of default values to be set
  • copy_data(self, default=None)
    @api.multi
    @param self: object pointer @param default: dict of default values to be set
  • create(self, vals)
    @api.model
    Overrides orm create method. @param self: The object pointer @param vals: dictionary of fields value. @return: new record set for hotel service line.
  • on_change_checkout(self)
    @api.onchange('ser_checkin_date', 'ser_checkout_date')
    When you change checkin_date or checkout_date it will checked it and update the qty of hotel service line ----------------------------------------------------------------- @param self: object pointer
  • product_id_change(self)
    @api.onchange('product_id')
    @param self: object pointer
  • unlink(self)
    @api.multi
    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', 'Child Categories'
  • name Char
    required=True size=64 args: 'Service Name'
  • service_id Many2one → hotel.service.type
    args: 'hotel.service.type', 'Service Category'
Public methods (2)
  • name_get(self)
    @api.multi
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model

New fields (3)
  • categ_id Many2one → hotel.service.type
    required=True string='Service Category' args: 'hotel.service.type'
  • product_id Many2one → product.product
    delegate=True ondelete='cascade' required=True args: 'product.product', 'Service_id'
  • product_manager Many2one → res.users
    string='Product Manager' args: 'res.users'
Public methods (0)

No public methods.

New fields (3)
  • iscategid Boolean
    args: 'Is Categ'
  • isroom Boolean
    args: 'Is Room'
  • isservice Boolean
    args: 'Is Service'
Public methods (0)

No public methods.

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.' args: 'Additional Hours'
Public methods (0)

No public methods.

New fields (1)
  • advance_payment_method Selection
    default=_get_advance_payment required=True string='What do you want to invoice?' args: [('delivered', 'Invoiceable lines'), ('all', 'Invoiceable lines (deduct down payments)'), ('percentage', 'Down payment (percentage)'), ('fixed', 'Down payment (fixed amount)')]
Public methods (1)
  • create_invoices(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
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYHotel Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
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, Darshan Patel, robin.keunen, Yogesh Mahera, Manuel Claeys Bouuaert, Dhruvita, Vimal Patel, KrishnaPrajapati-SerpentCS
WEBSITE
WEBSITEhttps://github.com/OCA/vertical-hotel/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:24:02
ODOO DEPENDENCIES
ODOO DEPENDENCIES 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 Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

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 xpath Inherits base.view_company_form
view_hotel_floor_form hotel.floor.form hotel.floor form New
view_hotel_floor_tree hotel.floor.tree hotel.floor tree New
view_hotel_folio1_form hotel.folio.form hotel.folio form New
view_hotel_folio1_tree hotel.folio.tree hotel.folio tree 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_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 tree 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 tree 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.tree hotel.room tree New
view_hotel_room_type_form hotel.room_type.form hotel.room.type form New
view_hotel_room_type_tree hotel.room_type.tree hotel.room.type tree New
view_hotel_service_type_form hotel.service_type.form hotel.service.type form New
view_hotel_service_type_tree hotel.service_type.tree hotel.service.type tree 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.tree hotel.services tree New
view_product_product_form_inherited view.product.product.form.inherited product.product xpath Inherits product.product_normal_form_view
Models touched (17)

New fields (0)

No new fields.

Public methods (1)
  • create(self, vals)
    @api.model

New fields (2)
  • date_end Datetime
    args: 'End Date'
  • date_start Datetime
    args: 'Start Date'
Public methods (1)
  • print_report(self)
    @api.multi

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
    string='Folio Number' args: 'hotel.folio'
  • room_id Many2one → hotel.room
    args: 'hotel.room', 'Room id'
  • 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
    index=True
Public methods (0)

No public methods.

New fields (10)
  • checkin_date Datetime
    default=_get_checkin_date readonly=True required=True states={'draft': [('readonly', False)]} args: 'Check In'
  • checkout_date Datetime
    default=_get_checkout_date readonly=True required=True states={'draft': [('readonly', False)]} 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
    args: 'Duration Dummy'
  • hotel_invoice_id Many2one → account.invoice
    copy=False args: 'account.invoice', 'Invoice'
  • hotel_policy Selection
    default='manual' help='Hotel policy for payment that either the guest has to payment at booking time or check-in check-out time.' args: [('prepaid', 'On Booking'), ('manual', 'On Check In'), ('picking', 'On Checkout')], 'Hotel Policy'
  • name Char
    default='New' index=True readonly=True args: 'Folio Number'
  • order_id Many2one → sale.order
    delegate=True ondelete='cascade' required=True args: 'sale.order', 'Order'
  • room_lines One2many → hotel.folio.line
    help='Hotel room reservation detail.' readonly=True states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} args: 'hotel.folio.line', 'folio_id'
  • service_lines One2many → hotel.service.line
    help='Hotel services details provided toCustomer and it will included in the main Invoice.' readonly=True states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} args: 'hotel.service.line', 'folio_id'
Public methods (16)
  • action_cancel(self)
    @api.multi
    @param self: object pointer
  • action_cancel_draft(self)
    @api.multi
    @param self: object pointer
  • action_confirm(self)
    @api.multi
  • action_done(self)
    @api.multi
  • action_invoice_cancel(self)
    @api.multi
    @param self: object pointer
  • action_invoice_create(self, grouped=False, final=False)
    @api.multi
    @param self: object pointer
  • copy(self, default=None)
    @api.multi
    @param self: object pointer @param default: dict of default values to be set
  • create(self, vals, check=True)
    @api.model
    Overrides orm create method. @param self: The object pointer @param vals: dictionary of fields value. @return: new record set for hotel folio.
  • folio_room_lines(self)
    @api.constrains('room_lines')
    This method is used to validate the room_lines. ------------------------------------------------ @param self: object pointer @return: raise warning depending on the validation
  • name_get(self)
    @api.multi
  • name_search(self, name='', args=None, operator='ilike', limit=100)
    @api.model
  • onchange_dates(self)
    @api.onchange('checkout_date', 'checkin_date')
    This method gives the duration between check in and checkout if customer will leave only for some hour it would be considers as a whole day.If customer will check in 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 folio as well --------------------------------------------------------------- @param self: object pointer
  • onchange_warehouse_id(self)
    @api.onchange('warehouse_id')
    When you change warehouse it will update the warehouse of the hotel folio as well ---------------------------------------------------------- @param self: object pointer
  • test_state(self, mode)
    @api.multi
    @param self: object pointer @param mode: state of workflow
  • write(self, vals)
    @api.multi
    Overrides orm write method. @param self: The object pointer @param vals: dictionary of fields value.

New fields (5)
  • checkin_date Datetime
    default=_get_checkin_date required=True args: 'Check In'
  • checkout_date Datetime
    default=_get_checkout_date required=True args: 'Check Out'
  • folio_id Many2one → hotel.folio
    ondelete='cascade' string='Folio' args: 'hotel.folio'
  • is_reserved Boolean
    help='True when folio line created from Reservation' args: 'Is Reserved'
  • order_line_id Many2one → sale.order.line
    delegate=True ondelete='cascade' required=True string='Order Line' args: 'sale.order.line'
Public methods (9)
  • button_confirm(self)
    @api.multi
    @param self: object pointer
  • button_done(self)
    @api.multi
    @param self: object pointer
  • check_dates(self)
    @api.constrains('checkin_date', 'checkout_date')
    This method is used to validate the checkin_date and checkout_date. ------------------------------------------------------------------- @param self: object pointer @return: raise warning depending on the validation
  • copy(self, default=None)
    @api.multi
    @param self: object pointer @param default: dict of default values to be set
  • copy_data(self, default=None)
    @api.multi
    @param self: object pointer @param default: dict of default values to be set
  • create(self, vals, check=True)
    @api.model
    Overrides orm create method. @param self: The object pointer @param vals: dictionary of fields value. @return: new record set for hotel folio line.
  • on_change_checkout(self)
    @api.onchange('checkin_date', 'checkout_date')
    When you change checkin_date or checkout_date it will checked it and update the qty of hotel folio line ----------------------------------------------------------------- @param self: object pointer
  • product_id_change(self)
    @api.multi@api.onchange('product_id', 'checkin_date', 'checkout_date')
  • unlink(self)
    @api.multi
    Overrides orm unlink method. @param self: The object pointer @return: True/False.

New fields (10)
  • capacity Integer
    required=True args: 'Capacity'
  • floor_id Many2one → hotel.floor
    help='At which floor the room is located.' args: 'hotel.floor', 'Floor No'
  • max_adult Integer
  • max_child Integer
  • product_id Many2one → product.product
    delegate=True ondelete='cascade' required=True args: 'product.product', 'Product_id'
  • product_manager Many2one → res.users
    args: 'res.users', 'Product Manager'
  • room_amenities Many2many → hotel.room.amenities
    help='List of room amenities. ' args: 'hotel.room.amenities', 'temp_tab', 'room_amenities', 'rcateg_id'
  • room_categ_id Many2one → hotel.room.type
    oldname='categ_id' 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')], 'Status'
Public methods (6)
  • check_capacity(self)
    @api.constrains('capacity')
  • create(self, vals)
    @api.model
  • isroom_change(self)
    @api.onchange('isroom')
    Based on isroom, status will be updated. ---------------------------------------- @param self: object pointer
  • set_room_status_available(self)
    @api.multi
    This method is used to change the state to available of the hotel room. --------------------------------------- @param self: object pointer
  • set_room_status_occupied(self)
    @api.multi
    This method is used to change the state to occupied of the hotel room. --------------------------------------- @param self: object pointer
  • write(self, vals)
    @api.multi
    Overrides orm write method. @param self: The object pointer @param vals: dictionary of fields value.

New fields (3)
  • categ_id Many2one → hotel.room.amenities.type
    required=True string='Amenities Category' args: 'hotel.room.amenities.type'
  • product_id Many2one → product.product
    delegate=True ondelete='cascade' required=True args: 'product.product', 'Product Category'
  • product_manager Many2one → res.users
    string='Product Manager' args: 'res.users'
Public methods (0)

No public methods.

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', 'Child Categories'
  • name Char
    required=True
Public methods (2)
  • name_get(self)
    @api.multi
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model

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', 'Child Categories'
  • product_categ_id Many2one → product.category
    delegate=True required=True args: 'product.category', 'Product Category'
Public methods (4)
  • create(self, vals)
    @api.model
  • name_get(self)
    @api.multi
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model
  • write(self, vals)
    @api.multi

New fields (4)
  • folio_id Many2one → hotel.folio
    ondelete='cascade' args: 'hotel.folio', 'Folio'
  • ser_checkin_date Datetime
    default=_service_checkin_date required=True args: 'From Date'
  • ser_checkout_date Datetime
    default=_service_checkout_date required=True args: 'To Date'
  • service_line_id Many2one → sale.order.line
    delegate=True ondelete='cascade' required=True args: 'sale.order.line', 'Service Line'
Public methods (8)
  • button_confirm(self)
    @api.multi
    @param self: object pointer
  • button_done(self)
    @api.multi
    @param self: object pointer
  • copy(self, default=None)
    @api.multi
    @param self: object pointer @param default: dict of default values to be set
  • copy_data(self, default=None)
    @api.multi
    @param self: object pointer @param default: dict of default values to be set
  • create(self, vals, check=True)
    @api.model
    Overrides orm create method. @param self: The object pointer @param vals: dictionary of fields value. @return: new record set for hotel service line.
  • on_change_checkout(self)
    @api.onchange('ser_checkin_date', 'ser_checkout_date')
    When you change checkin_date or checkout_date it will checked it and update the qty of hotel service line ----------------------------------------------------------------- @param self: object pointer
  • product_id_change(self)
    @api.multi@api.onchange('product_id')
  • unlink(self)
    @api.multi
    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', 'Child Categories'
  • name Char
    required=True size=64 args: 'Service Name'
  • service_id Many2one → hotel.service.type
    args: 'hotel.service.type', 'Service Category'
Public methods (2)
  • name_get(self)
    @api.multi
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model

New fields (3)
  • categ_id Many2one → hotel.service.type
    required=True string='Service Category' args: 'hotel.service.type'
  • product_id Many2one → product.product
    delegate=True ondelete='cascade' required=True args: 'product.product', 'Service_id'
  • product_manager Many2one → res.users
    string='Product Manager' args: 'res.users'
Public methods (0)

No public methods.

New fields (3)
  • iscategid Boolean
    args: 'Is Categ'
  • isroom Boolean
    args: 'Is Room'
  • isservice Boolean
    args: 'Is Service'
Public methods (0)

No public methods.

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 (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.' args: 'Additional Hours'
Public methods (0)

No public methods.

New fields (1)
  • advance_payment_method Selection
    default=_get_advance_payment required=True string='What do you want to invoice?' args: [('delivered', 'Invoiceable lines'), ('all', 'Invoiceable lines (deduct down payments)'), ('percentage', 'Down payment (percentage)'), ('fixed', 'Down payment (fixed amount)')]
Public methods (1)
  • create_invoices(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
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYGeneric Modules/Hotel Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
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
COMMITTERSPedro 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 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 (33)
XML IDNameModelTypeStatus
hotel_amenities_category_tree_view hotel.room.amenities.type.tree hotel.room.amenities.type tree New
hotel_folio_calendar_view Hotel- Folios Calendar hotel.folio calendar New
hotel_room_category_tree_view hotel.room.type.tree hotel.room.type tree New
hotel_service_category_tree_view hotel.service.type.tree hotel.service.type tree New
report_currency_exchange report_currency_exchange ir.ui.view qweb New
report_hotel_folio report_hotel_folio ir.ui.view qweb New
res_company_inherit_config_hotel res.company.inherit.config.hotel res.company xpath Inherits base.view_company_form
view_currency_exchange_form currency.exchange.form currency.exchange form New
view_currency_exchange_tree currency.exchange.tree currency.exchange tree New
view_hotel_floor_form hotel.floor.form hotel.floor form New
view_hotel_floor_tree hotel.floor.tree hotel.floor tree New
view_hotel_folio1_form hotel.folio.form hotel.folio form New
view_hotel_folio1_tree hotel.folio.tree hotel.folio tree 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_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 tree 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 tree 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.tree hotel.room tree New
view_hotel_room_type_form hotel.room_type.form hotel.room.type form New
view_hotel_room_type_tree hotel.room_type.tree hotel.room.type tree New
view_hotel_service_type_form hotel.service_type.form hotel.service.type form New
view_hotel_service_type_tree hotel.service_type.tree hotel.service.type tree 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.tree hotel.services tree New
view_product_product_form_inherited view.product.product.form.inherited product.product xpath Inherits product.product_normal_form_view
Models touched (18)

New fields (0)

No new fields.

Public methods (1)
  • create(self, vals)
    @api.model

New fields (15)
  • folio_no Many2one → hotel.folio
    args: 'hotel.folio', 'Folio Number'
  • guest_name Many2one → res.partner
    string='Guest Name' args: 'res.partner'
  • hotel_id Many2one → stock.warehouse
    args: 'stock.warehouse', 'Hotel Name'
  • in_amount Float
    default=1.0 index=True size=64 args: 'Amount Taken'
  • input_curr Many2one → res.currency
    string='Input Currency' track_visibility='always' args: 'res.currency'
  • name Char
    default='New' readonly=True args: 'Reg Number'
  • out_amount Float
    compute='_compute_get_currency' size=64 string='Subtotal'
  • out_curr Many2one → res.currency
    string='Output Currency' track_visibility='always' args: 'res.currency'
  • rate Float
    compute='_compute_get_currency' readonly=True size=64 string='Rate (Per Unit)'
  • room_number Char
    string='Room Number'
  • state Selection
    default='draft' args: [('draft', 'Draft'), ('done', 'Done'), ('cancel', 'Cancel')], 'State'
  • tax Selection
    default='2' args: [('2', '2%'), ('5', '5%'), ('10', '10%')], 'Service Tax'
  • today_date Datetime
    default=<expr> required=True args: 'Date Ordered'
  • total Float
    compute='_compute_tax_change' string='Total Amount'
  • type Selection
    default='cash' args: [('cash', 'Cash')], 'Type'
Public methods (7)
  • act_cur_cancel(self)
    @api.multi
    This method is used to change the state to cancel of the currency exchange --------------------------------------- @param self: object pointer
  • act_cur_cancel_draft(self)
    @api.multi
    This method is used to change the state to draft of the currency exchange --------------------------------------- @param self: object pointer
  • act_cur_done(self)
    @api.multi
    This method is used to change the state to done of the currency exchange --------------------------------------- @param self: object pointer
  • check_out_curr(self)
    @api.constrains('out_curr')
  • create(self, vals)
    @api.model
    Overrides orm create method. @param self: The object pointer @param vals: dictionary of fields value.
  • get_folio_no(self)
    @api.onchange('folio_no')
    When you change folio_no, based on that it will update the guest_name,hotel_id and room_number as well --------------------------------------------------------- @param self: object pointer
  • get_rate(self, a, b)
    @api.model
    Calculate rate between two currency ----------------------------------- @param self: object pointer

New fields (2)
  • date_end Datetime
    args: 'End Date'
  • date_start Datetime
    args: 'Start Date'
Public methods (1)
  • print_report(self)
    @api.multi

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
    string='Folio Number' args: 'hotel.folio'
  • room_id Many2one → hotel.room
    string='Room id' 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 size=64 args: 'Floor Name'
  • sequence Integer
    index=True size=64 args: 'Sequence'
Public methods (0)

No public methods.

New fields (11)
  • checkin_date Datetime
    default=_get_checkin_date readonly=True required=True states={'draft': [('readonly', False)]} args: 'Check In'
  • checkout_date Datetime
    default=_get_checkout_date readonly=False required=True states={'done': [('readonly', True)], 'cancel': [('readonly', True)]} args: 'Check Out'
  • currrency_ids One2many → currency.exchange
    readonly=True args: 'currency.exchange', 'folio_no'
  • 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
    args: 'Duration Dummy'
  • hotel_invoice_id Many2one → account.invoice
    copy=False args: 'account.invoice', 'Invoice'
  • hotel_policy Selection
    default='manual' help='Hotel policy for payment that either the guest has to payment at booking time or check-in check-out time.' args: [('prepaid', 'On Booking'), ('manual', 'On Check In'), ('picking', 'On Checkout')], 'Hotel Policy'
  • name Char
    default='New' index=True readonly=True args: 'Folio Number'
  • order_id Many2one → sale.order
    delegate=True ondelete='cascade' required=True args: 'sale.order', 'Order'
  • room_lines One2many → hotel.folio.line
    help='Hotel room reservation detail.' readonly=True states={'draft': [('readonly', False)], 'sent': [('readonly', False)], 'sale': [('readonly', False)]} args: 'hotel.folio.line', 'folio_id'
  • service_lines One2many → hotel.service.line
    help='Hotel services detail provide tocustomer and it will include in main Invoice.' readonly=True states={'draft': [('readonly', False)], 'sent': [('readonly', False)], 'sale': [('readonly', False)]} args: 'hotel.service.line', 'folio_id'
Public methods (16)
  • action_cancel(self)
    @api.multi
    @param self: object pointer
  • action_cancel_draft(self)
    @api.multi
    @param self: object pointer
  • action_confirm(self)
    @api.multi
  • action_done(self)
    @api.multi
  • action_invoice_create(self, grouped=False, final=False)
    @api.multi
    @param self: object pointer
  • button_dummy(self)
    @api.multi
    @param self: object pointer
  • copy(self, default=None)
    @api.multi
    @param self: object pointer @param default: dict of default values to be set
  • create(self, vals, check=True)
    @api.model
    Overrides orm create method. @param self: The object pointer @param vals: dictionary of fields value. @return: new record set for hotel folio.
  • folio_room_lines(self)
    @api.constrains('room_lines')
    This method is used to validate the room_lines. ------------------------------------------------ @param self: object pointer @return: raise warning depending on the validation
  • go_to_currency_exchange(self)
    @api.multi
    When Money Exchange button is clicked then this method is called. ------------------------------------------------------------------- @param self: object pointer
  • name_get(self)
    @api.multi
  • name_search(self, name='', args=None, operator='ilike', limit=100)
    @api.model
  • onchange_dates(self)
    @api.onchange('checkout_date', 'checkin_date')
    This method gives the duration between check in and checkout if customer will leave only for some hour it would be considers as a whole day.If customer will check in 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 folio as well --------------------------------------------------------------- @param self: object pointer
  • onchange_warehouse_id(self)
    @api.onchange('warehouse_id')
    When you change warehouse it will update the warehouse of the hotel folio as well ---------------------------------------------------------- @param self: object pointer
  • write(self, vals)
    @api.multi
    Overrides orm write method. @param self: The object pointer @param vals: dictionary of fields value.

New fields (5)
  • checkin_date Datetime
    default=_get_checkin_date required=True args: 'Check In'
  • checkout_date Datetime
    default=_get_checkout_date required=True args: 'Check Out'
  • folio_id Many2one → hotel.folio
    ondelete='cascade' string='Folio' args: 'hotel.folio'
  • is_reserved Boolean
    help='True when folio line created from Reservation' args: 'Is Reserved'
  • order_line_id Many2one → sale.order.line
    delegate=True ondelete='cascade' required=True string='Order Line' args: 'sale.order.line'
Public methods (10)
  • button_confirm(self)
    @api.multi
    @param self: object pointer
  • button_done(self)
    @api.multi
    @param self: object pointer
  • check_dates(self)
    @api.constrains('checkin_date', 'checkout_date')
    This method is used to validate the checkin_date and checkout_date. ------------------------------------------------------------------- @param self: object pointer @return: raise warning depending on the validation
  • copy(self, default=None)
    @api.multi
    @param self: object pointer @param default: dict of default values to be set
  • copy_data(self, default=None)
    @api.multi
    @param self: object pointer @param default: dict of default values to be set
  • create(self, vals, check=True)
    @api.model
    Overrides orm create method. @param self: The object pointer @param vals: dictionary of fields value. @return: new record set for hotel folio line.
  • on_change_checkout(self)
    @api.onchange('checkin_date', 'checkout_date')
    When you change checkin_date or checkout_date it will checked it and update the qty of hotel folio line ----------------------------------------------------------------- @param self: object pointer
  • product_id_change(self)
    @api.onchange('product_id')
    - @param self: object pointer -
  • product_uom_change(self)
    @api.onchange('product_uom')
  • unlink(self)
    @api.multi
    Overrides orm unlink method. @param self: The object pointer @return: True/False.

New fields (10)
  • capacity Integer
    required=True args: 'Capacity'
  • categ_id Many2one → hotel.room.type
    required=True string='Room Category' args: 'hotel.room.type'
  • floor_id Many2one → hotel.floor
    help='At which floor the room is located.' args: 'hotel.floor', 'Floor No'
  • max_adult Integer
    args: 'Max Adult'
  • max_child Integer
    args: 'Max Child'
  • product_id Many2one → product.product
    delegate=True ondelete='cascade' required=True args: 'product.product', 'Product_id'
  • product_manager Many2one → res.users
    string='Product Manager' args: 'res.users'
  • room_amenities Many2many → hotel.room.amenities
    help='List of room amenities. ' string='Room Amenities' args: 'hotel.room.amenities', 'temp_tab', 'room_amenities', 'rcateg_id'
  • 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')], 'Status'
Public methods (5)
  • check_capacity(self)
    @api.constrains('capacity')
  • isroom_change(self)
    @api.onchange('isroom')
    Based on isroom, status will be updated. ---------------------------------------- @param self: object pointer
  • set_room_status_available(self)
    @api.multi
    This method is used to change the state to available of the hotel room. --------------------------------------- @param self: object pointer
  • set_room_status_occupied(self)
    @api.multi
    This method is used to change the state to occupied of the hotel room. --------------------------------------- @param self: object pointer
  • write(self, vals)
    @api.multi
    Overrides orm write method. @param self: The object pointer @param vals: dictionary of fields value.

New fields (3)
  • categ_id Many2one → hotel.room.amenities.type
    required=True string='Amenities Category' args: 'hotel.room.amenities.type'
  • product_id Many2one → product.product
    delegate=True ondelete='cascade' required=True args: 'product.product', 'Product Category'
  • product_manager Many2one → res.users
    string='Product Manager' args: 'res.users'
Public methods (0)

No public methods.

New fields (3)
  • amenity_id Many2one → hotel.room.amenities.type
    args: 'hotel.room.amenities.type', 'Category'
  • child_id One2many → hotel.room.amenities.type
    args: 'hotel.room.amenities.type', 'amenity_id', 'Child Categories'
  • name Char
    required=True size=64 args: 'Name'
Public methods (2)
  • name_get(self)
    @api.multi
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model

New fields (3)
  • categ_id Many2one → hotel.room.type
    args: 'hotel.room.type', 'Category'
  • child_id One2many → hotel.room.type
    args: 'hotel.room.type', 'categ_id', 'Child Categories'
  • name Char
    required=True size=64 args: 'Name'
Public methods (2)
  • name_get(self)
    @api.multi
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model

New fields (4)
  • folio_id Many2one → hotel.folio
    ondelete='cascade' args: 'hotel.folio', 'Folio'
  • ser_checkin_date Datetime
    default=_service_checkin_date required=True args: 'From Date'
  • ser_checkout_date Datetime
    default=_service_checkout_date required=True args: 'To Date'
  • service_line_id Many2one → sale.order.line
    delegate=True ondelete='cascade' required=True args: 'sale.order.line', 'Service Line'
Public methods (9)
  • button_confirm(self)
    @api.multi
    @param self: object pointer
  • button_done(self)
    @api.multi
    @param self: object pointer
  • copy(self, default=None)
    @api.multi
    @param self: object pointer @param default: dict of default values to be set
  • copy_data(self, default=None)
    @api.multi
    @param self: object pointer @param default: dict of default values to be set
  • create(self, vals, check=True)
    @api.model
    Overrides orm create method. @param self: The object pointer @param vals: dictionary of fields value. @return: new record set for hotel service line.
  • on_change_checkout(self)
    @api.onchange('ser_checkin_date', 'ser_checkout_date')
    When you change checkin_date or checkout_date it will checked it and update the qty of hotel service line ----------------------------------------------------------------- @param self: object pointer
  • product_id_change(self)
    @api.onchange('product_id')
    @param self: object pointer
  • product_uom_change(self)
    @api.onchange('product_uom')
    @param self: object pointer
  • unlink(self)
    @api.multi
    Overrides orm unlink method. @param self: The object pointer @return: True/False.

New fields (3)
  • child_id One2many → hotel.service.type
    args: 'hotel.service.type', 'service_id', 'Child Categories'
  • name Char
    required=True size=64 args: 'Service Name'
  • service_id Many2one → hotel.service.type
    args: 'hotel.service.type', 'Service Category'
Public methods (2)
  • name_get(self)
    @api.multi
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model

New fields (3)
  • categ_id Many2one → hotel.service.type
    required=True string='Service Category' args: 'hotel.service.type'
  • product_id Many2one → product.product
    delegate=True ondelete='cascade' required=True args: 'product.product', 'Service_id'
  • product_manager Many2one → res.users
    string='Product Manager' args: 'res.users'
Public methods (0)

No public methods.

New fields (3)
  • iscategid Boolean
    args: 'Is categ id'
  • isroom Boolean
    args: 'Is Room'
  • isservice Boolean
    args: 'Is Service id'
Public methods (0)

No public methods.

New fields (0)

No new fields.

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

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.' args: 'Additional Hours'
Public methods (0)

No public methods.

New fields (1)
  • advance_payment_method Selection
    default=_get_advance_payment required=True string='What do you want to invoice?' args: [('delivered', 'Invoiceable lines'), ('all', 'Invoiceable lines (deduct down payments)'), ('percentage', 'Down payment (percentage)'), ('fixed', 'Down payment (fixed amount)')]
Public methods (1)
  • create_invoices(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
VERSION
VERSION 1.0
CATEGORY
CATEGORYGeneric Modules/Hotel Management
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
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 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/Rooms/Property management. You can manage:

* Configure Property
* Hotel Configuration
* Check In, Check out
* Manage Folio
* Payment

Different reports are also provided, mainly for hotel statistics.
    

Code Analysis

Views touched (18)
XML IDNameModelTypeStatus
hotel_folio_calendar_view Hotel- Folios Calendar hotel.folio calendar New
view_hotel_floor_form hotel.floor.form hotel.floor form New
view_hotel_floor_tree hotel.floor.tree hotel.floor tree New
view_hotel_folio1_tree hotel.folio.tree hotel.folio tree New
view_hotel_folio_wizard folio.report.wizard folio.report.wizard form New
view_hotel_room_amenities_list hotel.room_amenities_list hotel.room_amenities tree New
view_hotel_room_amenities_search hotel.room_amenities_search hotel.room_amenities search 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 tree New
view_hotel_room_form hotel.room.form hotel.room form New
view_hotel_room_search hotel.room.search hotel.room search New
view_hotel_room_tree hotel.room.tree hotel.room tree New
view_hotel_room_type_form hotel.room_type.form hotel.room_type form New
view_hotel_room_type_tree hotel.room_type.tree hotel.room_type tree New
view_hotel_service_type_form hotel.service_type.form hotel.service_type form New
view_hotel_service_type_tree hotel.service_type.tree hotel.service_type tree New
view_hotel_services_search hotel.services.search hotel.services search New
view_hotel_services_tree hotel.services.tree hotel.services 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
VERSION
VERSION 1.0
CATEGORY
CATEGORYGeneric Modules/Hotel Management
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
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 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/Rooms/Property management. You can manage:

* Configure Property
* Hotel Configuration
* Check In, Check out
* Manage Folio
* Payment

Different reports are also provided, mainly for hotel statistics.
    

Code Analysis

Views touched (18)
XML IDNameModelTypeStatus
hotel_folio_calendar_view Hotel- Folios Calendar hotel.folio calendar New
view_hotel_floor_form hotel.floor.form hotel.floor form New
view_hotel_floor_tree hotel.floor.tree hotel.floor tree New
view_hotel_folio1_tree hotel.folio.tree hotel.folio tree New
view_hotel_folio_wizard folio.report.wizard folio.report.wizard form New
view_hotel_room_amenities_list hotel.room_amenities_list hotel.room_amenities tree New
view_hotel_room_amenities_search hotel.room_amenities_search hotel.room_amenities search 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 tree New
view_hotel_room_form hotel.room.form hotel.room form New
view_hotel_room_search hotel.room.search hotel.room search New
view_hotel_room_tree hotel.room.tree hotel.room tree New
view_hotel_room_type_form hotel.room_type.form hotel.room_type form New
view_hotel_room_type_tree hotel.room_type.tree hotel.room_type tree New
view_hotel_service_type_form hotel.service_type.form hotel.service_type form New
view_hotel_service_type_tree hotel.service_type.tree hotel.service_type tree New
view_hotel_services_search hotel.services.search hotel.services search New
view_hotel_services_tree hotel.services.tree hotel.services 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
VERSION
VERSION 1.0
CATEGORY
CATEGORYGeneric Modules/Hotel Management
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
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 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/Rooms/Property management. You can manage:

* Configure Property
* Hotel Configuration
* Check In, Check out
* Manage Folio
* Payment

Different reports are also provided, mainly for hotel statistics.
    

Code Analysis

Views touched (18)
XML IDNameModelTypeStatus
hotel_folio_calendar_view Hotel- Folios Calendar hotel.folio calendar New
view_hotel_floor_form hotel.floor.form hotel.floor form New
view_hotel_floor_tree hotel.floor.tree hotel.floor tree New
view_hotel_folio1_tree hotel.folio.tree hotel.folio tree New
view_hotel_folio_wizard folio.report.wizard folio.report.wizard form New
view_hotel_room_amenities_list hotel.room_amenities_list hotel.room_amenities tree New
view_hotel_room_amenities_search hotel.room_amenities_search hotel.room_amenities search 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 tree New
view_hotel_room_form hotel.room.form hotel.room form New
view_hotel_room_search hotel.room.search hotel.room search New
view_hotel_room_tree hotel.room.tree hotel.room tree New
view_hotel_room_type_form hotel.room_type.form hotel.room_type form New
view_hotel_room_type_tree hotel.room_type.tree hotel.room_type tree New
view_hotel_service_type_form hotel.service_type.form hotel.service_type form New
view_hotel_service_type_tree hotel.service_type.tree hotel.service_type tree New
view_hotel_services_search hotel.services.search hotel.services search New
view_hotel_services_tree hotel.services.tree hotel.services 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
VERSION
VERSION 1.0
CATEGORY
CATEGORYGeneric Modules/Hotel Management
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Tiny
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Tiny
COMMITTERS
COMMITTERSAlexandre Fayolle, Anup(SerpentCS), Atul Makwana(SerpentCS)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:04:07
ODOO DEPENDENCIES
ODOO DEPENDENCIES 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:
    * Configure Property
    * Hotel Configuration
    * Check In, Check out
    * Manage Folio
    * Payment

    Different reports are also provided, mainly for hotel statistics.
    

Code Analysis

Views touched (21)
XML IDNameModelTypeStatus
hotel_folio_calendar_view Hotel- Folios Calendar hotel.folio calendar New
view_hotel_floor_form hotel.floor.form hotel.floor form New
view_hotel_floor_tree hotel.floor.tree hotel.floor tree New
view_hotel_folio1_form hotel.folio.form hotel.folio form New
view_hotel_folio1_tree hotel.folio.tree hotel.folio tree New
view_hotel_folio_wizard folio.report.wizard folio.report.wizard form 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 tree New
view_hotel_room_amenities_search hotel.room_amenities_search hotel.room_amenities search 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 tree New
view_hotel_room_form hotel.room.form hotel.room form New
view_hotel_room_search hotel.room.search hotel.room search New
view_hotel_room_tree hotel.room.tree hotel.room tree New
view_hotel_room_type_form hotel.room_type.form hotel.room_type form New
view_hotel_room_type_tree hotel.room_type.tree hotel.room_type tree New
view_hotel_service_type_form hotel.service_type.form hotel.service_type form New
view_hotel_service_type_tree hotel.service_type.tree hotel.service_type tree 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.tree hotel.services tree New
Models touched (0)

No models found for this module.