Thursday, April 24, 2025
1 change · master
New functionality added to Odoo
Event organizers can now create events with multiple selectable time slots, such as museum visits, cinema showings, or theater performances. Attendees choose a slot during registration, and capacity, ticket availability, communications, website sales, sales orders, and point-of-sale flows are managed separately for each slot.
Original PR description
Purpose ======= Adding the possibility to have events with multiple time slots. For example, creating an event for a Museum exposition, a movie in a Cinema or a Theater piece and have multiple time…
Purpose
=======
Adding the possibility to have events with multiple time slots.
For example, creating an event for a Museum exposition, a movie in a Cinema or
a Theater piece and have multiple time slots for users to register to.
At registration, the selection of a specific time slot will be required.
Specification
=============
This new feature add supports for slots when registering to an event via the registration desk,
the website, a sale order or a point of sale.
To activate the multi-slots option, a boolean is added on the event form and a new "Slots"
status bar button will appear. This button will open the new multi create calendar view to quickly
manage and add slots on large time period.
Events used to only support tickets. They can now also have slots.
An event can have slots without tickets, or both slots and tickets.
For example, if an event go from the 1st of January 2025 to the 31st of December 2025,
a user will be able to register for the Saturday 26th of April 2025 from 12PM to 6PM
with a Standard ticket.
To handle these scenarios, an event registration can now be linked to a slot (with or without ticket).
The slot dates with their start and end hours are expressed in the event tz, but
their datetimes are expressed in UTC (converted back to the event tz on the front-end).
When an event is multi slots, everything will be organized per slot:
- Mailings and communications
e.g. Sending an email 1 hour before the event will send the email 1 hour before each slot
to the attendees registered to the slot.
- Seats management ('seats_max' field on event)
e.g. Limiting Registration to 2 Attendees, means 2 attendees maximum per slot.
- Maximum tickets registration ('seats_max' field on ticket)
e.g. Max registration for the Standard Ticket is 2, means 2 Standard Tickets
registration maximum per slot.
When both seats and tickets limitations are specified, they can limit each other.
For example with an event having only one ticket:
- Max event seats = 5
- Max ticket seats = 10
=> The event won't be able to have more than 5 attendees for each slot even if there are tickets left.
Same logic the other way around:
- Max event seats = 10
- Max ticket seats = 5
=> The event won't be able to have more than 5 registrations for this ticket on each slot even if there
are seats remaining (registrations without tickets can still be added but only via the back-end).
As the seats availabilities can now be tricky to compute, the availability check is changed to be
performed using a check on the registrations instead of splitting the checks on different models.
A new event method will handle the checks on (slot, ticket, count) tuples in batch so that
every combinations of slot and ticket (not necessarily set) can have their availability checked.
It is now possible to change the event 'seats_max' to set it below the current number of registrations
(a warning is displayed). The event will be marked as sold out, the existing registrations will
still exist and won't be archived. The users will need to take responsibility for the change and handle
the extra registrations as they want.
For website, the slot selection will happen first so that the ticket availabilities can be computed
based on the selected slot. The availabilities will then be used to restrict the selectable tickets
on the ticket selection modal.
Task-4307566