diff options
| author | Goffin Simon <sig@odoo.com> | 2020-03-18 08:37:10 +0000 |
|---|---|---|
| committer | Goffin Simon <sig@odoo.com> | 2020-03-30 14:34:55 +0000 |
| commit | e4be7ad7a6367f3274b5e983c7719f1ed5d6f2c7 (patch) | |
| tree | 6336f12a9ba9d82ca6a36d6d0692c6290653242b /addons | |
| parent | 1daf8eb12735db5c697e4a0868b43fe44f6b2f6a (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.py | 9 | ||||
| -rw-r--r-- | addons/website_event/i18n/website_event.pot | 10 | ||||
| -rw-r--r-- | 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/<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> |
