summaryrefslogtreecommitdiff
path: root/addons/event/models
diff options
context:
space:
mode:
authorThibault Delavallée <tde@odoo.com>2020-04-01 14:20:07 +0000
committerThibault Delavallée <tde@odoo.com>2020-04-03 11:07:56 +0000
commitbc1b5e134bee183072507fd86c044403b502e22b (patch)
tree67bd8ddbfc3d1a2768a62570131c62e5db741608 /addons/event/models
parentb29b4bcbfc61aab1035de1f8b0cb9c796cd4bc58 (diff)
[FIX] website_event: better sold out computation
Purpose of this commit is to remove some complex check embedded in templates and replace them by a computed unstored field. It eases definition and understanding. Its computation has been cleaned, so that sold out appears only when tickets are really sold out, not if their end sales date is reached. Sold out label is displayed in both event list and event specific page views in frontend. Small spacing issues in frontend registration form are also fixed. Task ID 2228189 Community PR odoo/odoo#48652 X-original-commit: c36cf90e7b83d2424b2f52ad8a2fec0bf367e8d8
Diffstat (limited to 'addons/event/models')
-rw-r--r--addons/event/models/event_event.py15
1 files changed, 15 insertions, 0 deletions
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: