diff --git a/addons/event/models/event_event.py b/addons/event/models/event_event.py index d8e60bb373c..89d31e3c8da 100644 --- a/addons/event/models/event_event.py +++ b/addons/event/models/event_event.py @@ -170,6 +170,9 @@ class EventEvent(models.Model): event_registrations_open = fields.Boolean( 'Registration open', compute='_compute_event_registrations_open', compute_sudo=True, help='Registrations are open if event is not ended, seats are available on event and if tickets are sellable if ticketing is used.') + event_registrations_sold_out = fields.Boolean( + 'Sold Out', compute='_compute_event_registrations_sold_out', compute_sudo=True, + help='Event is sold out if no more seats are available on event. If ticketing is used and all tickets are sold out event is sold out.') start_sale_date = fields.Date( 'Start sale date', compute='_compute_start_sale_date', help='If ticketing is used, this is the lowest starting sale date of tickets.') @@ -268,6 +271,18 @@ class EventEvent(models.Model): start_dates = [ticket.start_sale_date for ticket in event.event_ticket_ids if ticket.start_sale_date] event.start_sale_date = min(start_dates) if start_dates else False + @api.depends('event_ticket_ids.sale_available') + def _compute_event_registrations_sold_out(self): + for event in self: + if event.seats_limited and not event.seats_available: + event.event_registrations_sold_out = True + elif event.event_ticket_ids: + event.event_registrations_sold_out = not any( + ticket.seats_available > 0 if ticket.seats_limited else True for ticket in event.event_ticket_ids + ) + else: + event.event_registrations_sold_out = False + @api.depends('date_tz', 'date_begin') def _compute_date_begin_tz(self): for event in self: diff --git a/addons/website_event/controllers/main.py b/addons/website_event/controllers/main.py index ea484cab7a8..4c23c3165dc 100644 --- a/addons/website_event/controllers/main.py +++ b/addons/website_event/controllers/main.py @@ -208,7 +208,6 @@ class WebsiteEventController(http.Controller): urls = event._get_event_resource_urls() values = { 'event': event, - 'sold_out': all(not ticket.sale_available and not ticket.is_expired for ticket in event.event_ticket_ids), 'main_object': event, 'range': range, 'google_url': urls.get('google_url'), diff --git a/addons/website_event/views/event_templates.xml b/addons/website_event/views/event_templates.xml index c1d73b6d07b..adc517eb938 100644 --- a/addons/website_event/views/event_templates.xml +++ b/addons/website_event/views/event_templates.xml @@ -237,9 +237,13 @@ @@ -535,12 +539,12 @@
- Registrations are closed - Tickets for this Event are Sold Out + Tickets for this Event are Sold Out + Registrations are closed
-
@@ -603,7 +607,9 @@
- +