Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
cd34305
[ADD] event_sale_reservation: sell events before they exist
Feb 5, 2021
b016976
[IMP] event_sale_reservation: black, isort, prettier
victoralmau Jan 25, 2022
369497c
[MIG] event_sale_reservation: Migration to 13.0
victoralmau Jan 25, 2022
25a73f4
[IMP] event_sale_reservation: black, isort, prettier
victoralmau Jan 27, 2023
9494d11
[MIG] event_sale_reservation: Migration to 15.0
victoralmau Jan 27, 2023
6f7f8c2
[UPD] Update event_sale_reservation.pot
Feb 14, 2023
d001983
[UPD] README.rst
OCA-git-bot Feb 14, 2023
c07d983
[OU-FIX] event_sale_reservation: wrong table
chienandalu Jun 27, 2023
4016787
Added translation using Weblate (Italian)
mymage Jul 17, 2023
d467637
Translated using Weblate (Italian)
mymage Jul 20, 2023
1ce9643
Translated using Weblate (Italian)
mymage Jul 21, 2023
363009a
[UPD] README.rst
OCA-git-bot Sep 3, 2023
fb5b105
Update translation files
weblate Oct 9, 2023
70931db
Translated using Weblate (Spanish)
Ivorra78 Oct 29, 2023
5b09ae9
[IMP] event_sale_reservation: pre-commit stuff
pilarvargas-tecnativa Dec 16, 2024
ac97163
[MIG] event_sale_reservation: Migration to version 17.0
pilarvargas-tecnativa Dec 18, 2024
7c19c52
[UPD] Update event_sale_reservation.pot
Dec 20, 2024
9dc4db9
[BOT] post-merge updates
OCA-git-bot Dec 20, 2024
f3c1175
Update translation files
weblate Dec 20, 2024
f78b4fc
Translated using Weblate (Italian)
mymage Dec 20, 2024
5105a31
[IMP] event_sale_reservation: change development status to mature
pilarvargas-tecnativa Jan 14, 2025
8dd7484
[BOT] post-merge updates
OCA-git-bot Jan 14, 2025
a78fc25
[FIX] event_sale_reservation: Allow product update to register for th…
pilarvargas-tecnativa Sep 2, 2025
1b60901
[BOT] post-merge updates
OCA-git-bot Sep 5, 2025
2ce1ae8
[MIG] event_sale_reservation: Migration to 19.0
fredericgrall Nov 13, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
176 changes: 176 additions & 0 deletions event_sale_reservation/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association

=======================
Sell event reservations
=======================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:36881c01853b670ba930e05e772258702f94e0a4f25ccceea8ce95094f1dbf2c
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png
:target: https://odoo-community.org/page/development-status
:alt: Mature
.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fevent-lightgray.png?logo=github
:target: https://github.com/OCA/event/tree/19.0/event_sale_reservation
:alt: OCA/event
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/event-19-0/event-19-0-event_sale_reservation
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/event&target_branch=19.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

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.

**Table of contents**

.. contents::
:local:

Configuration
=============

To make use of this module, a user needs these minimal permissions:

- Sales / User: Own Documents Only
- Events / User

Usage
=====

To know how many reservations exist for a given event type:

1. Go to *Events > Configuration > Event Templates* and pick or create
one.
2. There's a new smart button called *Reserved seats* with that count.
3. Click on it to get to the sales orders where the seats got reserved.

But that counter will be probably zero when you install, so let's see
how to increase it.

To create an event reservation product:

1. Go to *Sales > Products > Products*.
2. Create one and set *Product Type* to *Event Reservation*.
3. Select one *Event type for reservations*.
4. Save.

From now on, you can sell event reservations for that event type. To do
it:

1. Go to *Sales > Orders > Quotations*.
2. Create one.
3. Set its basic info (customer, date...) and go to *Order lines* tab.
4. Click *Add a product*.
5. Select the event reservation product you created above.
6. Set its info (quantity, price...).
7. Save that line and the quotation.

At this point, the reservation is not yet confirmed, so if you go to the
event type, the smart button will still count zero.

To confirm those reservations:

1. Go to the quotation you just created (if you are not there yet).
2. Click on *Confirm*.

Now, if you go to the event type form, the smart button will indicate
how many reserved seats exist.

If you want to convert those reservations into real event registrations:

1. Go to the quotation you just created (if you are not there yet).
2. Click on *Register in event*.
3. In the wizard you see, set the *Event* and *Event Ticket* for all the
order lines you want to convert into registrations.
4. If there is any line you still don't want to convert, remove it from
the wizard.
5. Click on *Next*.
6. A new wizard will appear, where you will be able to specify the name,
email and phone of each one of the attendees. If you don't do it,
they will get that info from the sales order customer.
7. After that's done, click on *Apply*.

At this point, the sales order lines will be modified to include the
ticket product instead of the reservation product, and the event
reservations have been created, linked to those lines.

If the event is set to autoconfirmation, the registrations are
confirmed., otherwise, they are kept as draft until an invoice is
created for the sales order, and paid. But that is just upstream
``event_sale`` module in action.

Known issues / Roadmap
======================

Some addons (event_registration_multi_qty +
event_sale_registration_multi_qty) makes totals wrong because they
depend currently on count and not sum of qtys; integrating with them
would require a glue module.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/event/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/event/issues/new?body=module:%20event_sale_reservation%0Aversion:%2019.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
-------

* Tecnativa

Contributors
------------

- `Tecnativa <https://www.tecnativa.com>`__:

- Jairo Llopis
- Pilar Vargas
- Frederic Grall

Maintainers
-----------

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

.. |maintainer-pilarvargas-tecnativa| image:: https://github.com/pilarvargas-tecnativa.png?size=40px
:target: https://github.com/pilarvargas-tecnativa
:alt: pilarvargas-tecnativa

Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:

|maintainer-pilarvargas-tecnativa|

This module is part of the `OCA/event <https://github.com/OCA/event/tree/19.0/event_sale_reservation>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
3 changes: 3 additions & 0 deletions event_sale_reservation/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from . import models
from . import reports
from . import wizards
26 changes: 26 additions & 0 deletions event_sale_reservation/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Copyright 2021 Tecnativa - Jairo Llopis
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

{
"name": "Sell event reservations",
"summary": "Allow selling event registrations before the event exists",
"version": "19.0.1.0.0",
"development_status": "Mature",
"category": "Marketing",
"website": "https://github.com/OCA/event",
"author": "Tecnativa, Odoo Community Association (OCA)",
"maintainers": ["pilarvargas-tecnativa"],
"license": "AGPL-3",
"application": False,
"installable": True,
"depends": [
"event_sale",
],
"data": [
"reports/sale_report_view.xml",
"wizards/registration_editor_view.xml",
"views/event_type_view.xml",
"views/product_template_view.xml",
"views/sale_order_view.xml",
],
}
12 changes: 12 additions & 0 deletions event_sale_reservation/exceptions.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Copyright 2021 Tecnativa - Jairo Llopis
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from odoo import exceptions


class TicketAndReservationError(exceptions.ValidationError):
pass


class ReservationWithoutEventTypeError(exceptions.ValidationError):
pass
Loading