Sell event reservations

event_sale_reservation
REPOSITORY
REPOSITORYOCA/event
GIT
GIThttps://github.com/OCA/event.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/event/tree/17.0/event_sale_reservation
VERSION
VERSION 1.0.2
CATEGORY
CATEGORYMarketing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, pilarvargas-tecnativa
WEBSITE
WEBSITEhttps://github.com/OCA/event
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:04
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - event_sale
    - event
    - barcodes
    - web
    - base
    - base_setup
    - mail
    - bus
    - web_tour
    - phone_validation
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - utm
    - sale_management
    - sale
    - sales_team
    - account_payment
    - account
    - onboarding
    - product
    - uom
    - analytic
    - digest
    - resource
    - payment
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module extends the functionality of event_sale to support selling
reservations of events that still don't exist and to allow you to
schedule the creation of events based on how many reservations already
exist.

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
event_sale_product_template_form Allow products that are event registrations product.template field Inherits product.product_template_form_view
registration_editor_reservations_view_form Convert reservation into registrations registration.editor form New
view_event_type_form Link to reservations from type event.type div Inherits event.view_event_type_form
view_event_type_tree Rerservations info from event category tree event.type tree Inherits event.view_event_type_tree
view_order_product_search Event type search sale.report filter Inherits sale.view_order_product_search
view_sale_order_form_inherit_event Event reservation management sale.order button Inherits event_sale.sale_order_view_form
Models touched (7)

New fields (2)
  • reserved_sale_order_line_ids One2many → sale.order.line
    comodel_name='sale.order.line' inverse_name='event_reservation_type_id' string='Reserved sale order lines'
  • seats_reservation_total Integer
    compute='_compute_reservations_total' help='Seats reserved for events of this type.' store=True string='Reserved seats'
Public methods (1)
  • action_open_sale_orders(self)
    Display SO that include reservations.

New fields (2)
  • detailed_type Selection
    ondelete={'event_reservation': 'set service'} selection_add=[('event_reservation', 'Event Reservation')]
  • event_reservation_type_id Many2one → event.type
    comodel_name='event.type' help='Type of events that can be reserved by buying this product' index=True string='Event type for reservations'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • action_convert_to_registration(self)
    Convert reservations to registrations. We use the skip_event_sale_registration_multi_qty context to "skip" the operation of the event_sale_registration_multi_qty addon because they are "incompatible with each other".
  • default_get(self, fields)
    @api.model
    Get data needed to register reservations.

New fields (1)
  • event_reservation_type_id Many2one
    readonly=True related='sale_order_line_id.event_reservation_type_id'
Public methods (0)

No public methods.

New fields (2)
  • event_registration_count Integer
    compute='_compute_event_registration_count' help='Indicates how many event registrations are linked to this order.' string='Event registrations'
  • event_reservations_pending Integer
    compute='_compute_event_reservations_pending' help='Indicates how many event reservations are still not linked to any registration.' string='Pending event reservations'
Public methods (1)
  • action_open_event_registrations(self)
    Redirect user to event registrations related to this SO.

New fields (3)
  • event_registration_count Integer
    compute='_compute_event_registration_count' help='Count of event registrations related to this sale order line' store=True
  • event_registration_ids One2many → event.registration
    comodel_name='event.registration' help='Event registrations related to this sale order line' inverse_name='sale_order_line_id' string='Event registrations'
  • event_reservation_type_id Many2one
    index=True readonly=True related='product_id.event_reservation_type_id' store=True
Public methods (0)

No public methods.

New fields (1)
  • event_reservation_type_id Many2one → event.type
    comodel_name='event.type' readonly=True string='Event reservation type'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/event
GIT
GIThttps://github.com/OCA/event.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/event/tree/15.0/event_sale_reservation
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYMarketing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSVíctor Martínez, Weblate, OCA-git-bot, David, oca-ci, pilarvargas-tecnativa
WEBSITE
WEBSITEhttps://github.com/OCA/event
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:33
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/web:
    - web_ir_actions_act_multi
    - web_ir_actions_act_view_reload
odoo/odoo:
    - event_sale
    - event
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - utm
    - sale_management
    - sale
    - sales_team
    - payment
    - account
    - product
    - uom
    - analytic
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
event_sale_product_template_form Allow products that are event registrations product.template field Inherits product.product_template_form_view
registration_editor_reservations_view_form Convert reservation into registrations registration.editor form New
view_event_type_form Link to reservations from type event.type div Inherits event.view_event_type_form
view_event_type_tree Rerservations info from event category tree event.type tree Inherits event.view_event_type_tree
view_order_product_search Event type search sale.report filter Inherits sale.view_order_product_search
view_sale_order_form_inherit_event Event reservation management sale.order button Inherits event_sale.sale_order_view_form
Models touched (7)

New fields (2)
  • reserved_sale_order_line_ids One2many → sale.order.line
    comodel_name='sale.order.line' inverse_name='event_reservation_type_id' string='Reserved sale order lines'
  • seats_reservation_total Integer
    compute='_compute_reservations_total' help='Seats reserved for events of this type.' store=True string='Reserved seats'
Public methods (1)
  • action_open_sale_orders(self)
    Display SO that include reservations.

New fields (2)
  • detailed_type Selection
    ondelete={'event_reservation': 'set service'} selection_add=[('event_reservation', 'Event Reservation')]
  • event_reservation_type_id Many2one → event.type
    comodel_name='event.type' help='Type of events that can be reserved by buying this product' index=True string='Event type for reservations'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • action_convert_to_registration(self)
    Convert reservations to registrations. We use the skip_event_sale_registration_multi_qty context to "skip" the operation of the event_sale_registration_multi_qty addon because they are "incompatible with each other".
  • action_make_registration(self)
    Force main view reload after finishing.
  • default_get(self, fields)
    @api.model
    Get data needed to register reservations.

New fields (1)
  • event_reservation_type_id Many2one
    readonly=True related='sale_order_line_id.event_reservation_type_id'
Public methods (0)

No public methods.

New fields (2)
  • event_registration_count Integer
    compute='_compute_event_registration_count' help='Indicates how many event registrations are linked to this order.' string='Event registrations'
  • event_reservations_pending Integer
    compute='_compute_event_reservations_pending' help='Indicates how many event reservations are still not linked to any registration.' string='Pending event reservations'
Public methods (1)
  • action_open_event_registrations(self)
    Redirect user to event registrations related to this SO.

New fields (3)
  • event_registration_count Integer
    compute='_compute_event_registration_count' help='Count of event registrations related to this sale order line' store=True
  • event_registration_ids One2many → event.registration
    comodel_name='event.registration' help='Event registrations related to this sale order line' inverse_name='sale_order_line_id' string='Event registrations'
  • event_reservation_type_id Many2one
    index=True readonly=True related='product_id.event_reservation_type_id' store=True
Public methods (0)

No public methods.

New fields (1)
  • event_reservation_type_id Many2one → event.type
    comodel_name='event.type' readonly=True string='Event reservation type'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/event
GIT
GIThttps://github.com/OCA/event.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/event/tree/13.0/event_sale_reservation
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYMarketing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSVíctor Martínez, oca-travis, Weblate, OCA-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/event
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:11
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/web:
    - web_ir_actions_act_multi
    - web_ir_actions_act_view_reload
odoo/odoo:
    - event_sale
    - event
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - sale_management
    - sale
    - sales_team
    - payment
    - account
    - product
    - uom
    - analytic
    - digest
    - resource
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
event_sale_product_template_form Allow products that are event registrations product.template field Inherits event_sale.event_sale_product_template_form
registration_editor_reservations_view_form Convert reservation into registrations registration.editor form New
view_event_type_form Link to reservations from type event.type div Inherits event.view_event_type_form
view_event_type_tree Rerservations info from event category tree event.type tree Inherits event.view_event_type_tree
view_order_product_search Event type search sale.report filter Inherits sale.view_order_product_search
view_sale_order_form_inherit_event Event reservation management sale.order button Inherits event_sale.sale_order_view_form
Models touched (7)

New fields (2)
  • reserved_sale_order_line_ids One2many → sale.order.line
    comodel_name='sale.order.line' inverse_name='event_reservation_type_id' string='Reserved sale order lines'
  • seats_reservation_total Integer
    compute='_compute_reservations_total' help='Seats reserved for events of this type.' store=True string='Reserved seats'
Public methods (1)
  • action_open_sale_orders(self)
    Display SO that include reservations.

New fields (2)
  • event_reservation_ok Boolean
    help='If checked, this product enables selling event reservations even before an event of the specified type has been scheduled.' index=True string='Is an event reservation'
  • event_reservation_type_id Many2one → event.type
    comodel_name='event.type' help='Type of events that can be reserved by buying this product' index=True string='Event type for reservations'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • action_convert_to_registration(self)
    Convert reservations to registrations. We use the skip_event_sale_registration_multi_qty context to "skip" the operation of the event_sale_registration_multi_qty addon because they are "incompatible with each other".
  • action_make_registration(self)
    Force main view reload after finishing.
  • default_get(self, fields)
    @api.model
    Get data needed to register reservations.

New fields (1)
  • event_reservation_type_id Many2one
    readonly=True related='sale_order_line_id.event_reservation_type_id'
Public methods (0)

No public methods.

New fields (2)
  • event_registration_count Integer
    compute='_compute_event_registration_count' help='Indicates how many event registrations are linked to this order.' string='Event registrations'
  • event_reservations_pending Integer
    compute='_compute_event_reservations_pending' help='Indicates how many event reservations are still not linked to any registration.' string='Pending event reservations'
Public methods (1)
  • action_open_event_registrations(self)
    Redirect user to event registrations related to this SO.

New fields (3)
  • event_registration_count Integer
    compute='_compute_event_registration_count' help='Count of event registrations related to this sale order line' store=True
  • event_registration_ids One2many → event.registration
    comodel_name='event.registration' help='Event registrations related to this sale order line' inverse_name='sale_order_line_id' string='Event registrations'
  • event_reservation_type_id Many2one
    index=True readonly=True related='product_id.event_reservation_type_id' store=True
Public methods (0)

No public methods.

New fields (1)
  • event_reservation_type_id Many2one → event.type
    comodel_name='event.type' readonly=True string='Event reservation type'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/event
GIT
GIThttps://github.com/OCA/event.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/event/tree/12.0/event_sale_reservation
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYMarketing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSJairo Llopis, oca-travis, Weblate, OCA-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/event
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:16
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/web:
    - web_ir_actions_act_multi
    - web_ir_actions_act_view_reload
odoo/odoo:
    - event_sale
    - event
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
    - sale_management
    - sale
    - sales_team
    - payment
    - account
    - product
    - decimal_precision
    - uom
    - analytic
    - portal
    - http_routing
    - digest
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
event_sale_product_template_form Allow products that are event registrations product.template field Inherits event_sale.event_sale_product_template_form
registration_editor_reservations_view_form Convert reservation into registrations registration.editor form New
view_event_type_form Link to reservations from type event.type div Inherits event.view_event_type_form
view_event_type_tree Rerservations info from event category tree event.type tree Inherits event.view_event_type_tree
view_order_product_search Event type search sale.report filter Inherits sale.view_order_product_search
view_sale_order_form_inherit_event Event reservation management sale.order button Inherits event_sale.view_sale_order_form_inherit_event
Models touched (7)

New fields (2)
  • reserved_sale_order_line_ids One2many → sale.order.line
    comodel_name='sale.order.line' inverse_name='event_reservation_type_id' string='Reserved sale order lines'
  • seats_reservation_total Integer
    compute='_compute_reservations_total' help='Seats reserved for events of this type.' store=True string='Reserved seats'
Public methods (1)
  • action_open_sale_orders(self)
    Display SO that include reservations.

New fields (2)
  • event_reservation_ok Boolean
    help='If checked, this product enables selling event reservations even before an event of the specified type has been scheduled.' index=True string='Is an event reservation'
  • event_reservation_type_id Many2one → event.type
    comodel_name='event.type' help='Type of events that can be reserved by buying this product' index=True string='Event type for reservations'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • action_convert_to_registration(self)
    Convert reservations to registrations.
  • action_make_registration(self)
    Force main view reload after finishing.
  • default_get(self, fields)
    @api.model
    Get data needed to register reservations.

New fields (1)
  • event_reservation_type_id Many2one
    readonly=True related='sale_order_line_id.event_reservation_type_id'
Public methods (0)

No public methods.

New fields (2)
  • event_registration_count Integer
    compute='_compute_event_registration_count' help='Indicates how many event registrations are linked to this order.' string='Event registrations'
  • event_reservations_pending Integer
    compute='_compute_event_reservations_pending' help='Indicates how many event reservations are still not linked to any registration.' string='Pending event reservations'
Public methods (1)
  • action_open_event_registrations(self)
    Redirect user to event registrations related to this SO.

New fields (3)
  • event_registration_count Integer
    compute='_compute_event_registration_count' help='Count of event registrations related to this sale order line' store=True
  • event_registration_ids One2many → event.registration
    comodel_name='event.registration' help='Event registrations related to this sale order line' inverse_name='sale_order_line_id' string='Event registrations'
  • event_reservation_type_id Many2one
    index=True readonly=True related='product_id.event_reservation_type_id' store=True
Public methods (0)

No public methods.

New fields (1)
  • event_reservation_type_id Many2one → event.type
    comodel_name='event.type' readonly=True string='Event reservation type'
Public methods (0)

No public methods.

STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/event
PULL REQUEST
PULL REQUEST[18.0][MIG] event_sale_reservation: Migration to 18.0 (#436)