summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorGoffin Simon <sig@odoo.com>2020-03-18 08:37:10 +0000
committerGoffin Simon <sig@odoo.com>2020-03-30 14:34:55 +0000
commite4be7ad7a6367f3274b5e983c7719f1ed5d6f2c7 (patch)
tree6336f12a9ba9d82ca6a36d6d0692c6290653242b /addons
parent1daf8eb12735db5c697e4a0868b43fe44f6b2f6a (diff)
[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) <sig@openerp.com>
Diffstat (limited to 'addons')
-rw-r--r--addons/website_event/controllers/main.py9
-rw-r--r--addons/website_event/i18n/website_event.pot10
-rw-r--r--addons/website_event/views/event_templates.xml9
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/<model("event.event"):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
@@ -166,6 +166,11 @@ msgid "<span>Online Events</span>"
msgstr ""
#. module: website_event
+#: model_terms:ir.ui.view,arch_db:website_event.registration_attendee_details
+msgid "<strong> You ordered more tickets than available seats</strong>"
+msgstr ""
+
+#. module: website_event
#: model_terms:ir.ui.view,arch_db:website_event.index_sidebar_photos
msgid "A past event"
msgstr ""
@@ -223,6 +228,11 @@ 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"
msgstr ""
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 @@
</div>
<div class="row no-gutters">
<div class="col-md-4 offset-md-8 py-2 pl-md-0 pr-md-2">
- <button type="submit" class="btn btn-primary o_wait_lazy_js btn-block a-submit" disabled="" t-attf-id="#{event.id}">Register</button>
+ <button type="submit" class="btn btn-primary o_wait_lazy_js btn-block a-submit" disabled="" t-attf-id="#{event.id}">Register<t t-if="event.seats_availability != 'unlimited'">(Available seats: <t t-esc="event.seats_available"/>)</t></button>
</div>
</div>
</div>
@@ -665,7 +665,7 @@
</div>
<t t-set="counter_type" t-value="1"/>
<t t-set="counter" t-value="0"/>
- <t t-foreach="tickets" t-as="ticket">
+ <t t-foreach="tickets" t-as="ticket" t-if="availability_check">
<t t-foreach="range(1, ticket['quantity'] + 1)" t-as="att_counter" name="attendee_loop">
<t t-set="counter" t-value="counter + 1"/>
<div class="modal-body bg-light border-bottom">
@@ -689,9 +689,12 @@
</t>
<t t-set="counter_type" t-value="counter_type + 1"/>
</t>
+ <t t-if="not availability_check">
+ <strong> You ordered more tickets than available seats</strong>
+ </t>
<div class="modal-footer border-0 justify-content-between">
<button type="button" class="btn btn-secondary js_goto_event" data-dismiss="modal">Cancel</button>
- <button type="submit" class="btn btn-primary">Continue</button>
+ <button type="submit" class="btn btn-primary" t-if="availability_check">Continue</button>
</div>
</div>
</form>