From e4be7ad7a6367f3274b5e983c7719f1ed5d6f2c7 Mon Sep 17 00:00:00 2001 From: Goffin Simon Date: Wed, 18 Mar 2020 08:37:10 +0000 Subject: [PATCH] [FIX] website_event: Ordering more tickets than available seats Steps to reproduce the bug: - Let's consider an event E with Maximum Attendees = 2 and Autoconfirm - Create two kind of tickets Premium with Maximum available seats = 2 and Normal with Maximum available seats = 2 - Go to the website and register for E - Take two tickets Premium and two tickets Normal Bug: Odoo gave the possibility to buy for tickets for E even if the Maximum Attendees was 2 and Odoo never autoconfirm these tickets. opw:2214576 closes odoo/odoo#48567 X-original-commit: ff49afc6c71285cf90f720f2e97f8adedee7204b Signed-off-by: Simon Goffin (sig) --- addons/website_event/controllers/main.py | 9 ++++++++- addons/website_event/i18n/website_event.pot | 10 ++++++++++ addons/website_event/views/event_templates.xml | 9 ++++++--- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/addons/website_event/controllers/main.py b/addons/website_event/controllers/main.py index 1823bffcb6f..5e6ffb16751 100644 --- a/addons/website_event/controllers/main.py +++ b/addons/website_event/controllers/main.py @@ -299,9 +299,16 @@ class WebsiteEventController(http.Controller): @http.route(['/event//registration/new'], type='json', auth="public", methods=['POST'], website=True) def registration_new(self, event, **post): tickets = self._process_tickets_form(event, post) + availability_check = True + if event.seats_availability == 'limited': + ordered_seats = 0 + for ticket in tickets: + ordered_seats += ticket['quantity'] + if event.seats_available < ordered_seats: + availability_check = False if not tickets: return False - return request.env['ir.ui.view'].render_template("website_event.registration_attendee_details", {'tickets': tickets, 'event': event}) + return request.env['ir.ui.view'].render_template("website_event.registration_attendee_details", {'tickets': tickets, 'event': event, 'availability_check': availability_check}) def _process_attendees_form(self, event, form_details): """ Process data posted from the attendee details form. diff --git a/addons/website_event/i18n/website_event.pot b/addons/website_event/i18n/website_event.pot index 1ce31fb82ef..0121122c079 100644 --- a/addons/website_event/i18n/website_event.pot +++ b/addons/website_event/i18n/website_event.pot @@ -165,6 +165,11 @@ msgstr "" msgid "Online Events" msgstr "" +#. module: website_event +#: model_terms:ir.ui.view,arch_db:website_event.registration_attendee_details +msgid " You ordered more tickets than available seats" +msgstr "" + #. module: website_event #: model_terms:ir.ui.view,arch_db:website_event.index_sidebar_photos msgid "A past event" @@ -222,6 +227,11 @@ msgstr "" msgid "Author" msgstr "" +#. module: website_event +#: model_terms:ir.ui.view,arch_db:website_event.registration_template +msgid "Available seats: " +msgstr "" + #. module: website_event #: model_terms:ir.ui.view,arch_db:website_event.registration_attendee_details msgid "Cancel" diff --git a/addons/website_event/views/event_templates.xml b/addons/website_event/views/event_templates.xml index a63bec9d171..3671ec46010 100644 --- a/addons/website_event/views/event_templates.xml +++ b/addons/website_event/views/event_templates.xml @@ -612,7 +612,7 @@
- +
@@ -665,7 +665,7 @@ - +