diff --git a/addons/event_sale/models/event_ticket.py b/addons/event_sale/models/event_ticket.py index d88ea5f4a24..2e6ab3410a8 100644 --- a/addons/event_sale/models/event_ticket.py +++ b/addons/event_sale/models/event_ticket.py @@ -94,6 +94,7 @@ class EventTemplateTicket(models.Model): class EventTicket(models.Model): _inherit = 'event.event.ticket' + _order = "event_id, price" # product price_reduce_taxinc = fields.Float(string='Price Reduce Tax inc', compute='_compute_price_reduce_taxinc') diff --git a/addons/website_event/controllers/main.py b/addons/website_event/controllers/main.py index 8691222101d..1823bffcb6f 100644 --- a/addons/website_event/controllers/main.py +++ b/addons/website_event/controllers/main.py @@ -212,6 +212,7 @@ 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, 'registrable': event.sudo().event_registrations_open, diff --git a/addons/website_event/static/src/js/website_event.js b/addons/website_event/static/src/js/website_event.js index cdaf012448d..36c0f5df526 100644 --- a/addons/website_event/static/src/js/website_event.js +++ b/addons/website_event/static/src/js/website_event.js @@ -9,9 +9,6 @@ var _t = core._t; // Catch registration form event, because of JS for attendee details var EventRegistrationForm = Widget.extend({ - events: { - 'click .o_wevent_registration_btn': '_onRegistrationBtnClick', - }, /** * @override @@ -70,15 +67,6 @@ var EventRegistrationForm = Widget.extend({ }); } }, - /** - * @private - * @param {Event} ev - */ - _onRegistrationBtnClick: function (ev) { - var $btn = $(ev.currentTarget); - $btn.toggleClass('btn-primary text-left pl-0'); - $btn.siblings().toggleClass('d-none'); - }, }); publicWidget.registry.EventRegistrationFormInstance = publicWidget.Widget.extend({ diff --git a/addons/website_event/static/src/js/website_event_ticket_details.js b/addons/website_event/static/src/js/website_event_ticket_details.js new file mode 100644 index 00000000000..8ad2e307c69 --- /dev/null +++ b/addons/website_event/static/src/js/website_event_ticket_details.js @@ -0,0 +1,55 @@ +odoo.define('website_event.ticket_details', function (require) { + var publicWidget = require('web.public.widget'); + + publicWidget.registry.ticketDetailsWidget = publicWidget.Widget.extend({ + selector: '.o_wevent_js_ticket_details', + events: { + 'click .o_wevent_registration_btn': '_onTicketDetailsClick', + 'change .custom-select': '_onTicketQuantityChange' + }, + start: function (){ + this.foldedByDefault = this.$el.data('foldedByDefault') === 1; + return this._super.apply(this, arguments); + }, + + //-------------------------------------------------------------------------- + // Private + //-------------------------------------------------------------------------- + + /** + * @private + */ + _getTotalTicketCount: function (){ + var ticketCount = 0; + this.$('.custom-select').each(function (){ + ticketCount += parseInt($(this).val()); + }); + return ticketCount; + }, + + //-------------------------------------------------------------------------- + // Handlers + //-------------------------------------------------------------------------- + + /** + * @private + * @param {*} ev + */ + _onTicketDetailsClick: function (ev){ + ev.preventDefault(); + if (this.foldedByDefault){ + $(ev.currentTarget).toggleClass('btn-primary text-left pl-0'); + $(ev.currentTarget).siblings().toggleClass('d-none'); + this.$('.close').toggleClass('d-none'); + } + }, + /** + * @private + */ + _onTicketQuantityChange: function (){ + this.$('button.btn-primary').attr('disabled', this._getTotalTicketCount() === 0); + } + }); + +return publicWidget.registry.ticketDetailsWidget; +}); diff --git a/addons/website_event/views/assets.xml b/addons/website_event/views/assets.xml index 9c14a99c5ea..28f03d3848b 100644 --- a/addons/website_event/views/assets.xml +++ b/addons/website_event/views/assets.xml @@ -14,6 +14,7 @@ + diff --git a/addons/website_event/views/event_templates.xml b/addons/website_event/views/event_templates.xml index 35592fed462..c611173360e 100644 --- a/addons/website_event/views/event_templates.xml +++ b/addons/website_event/views/event_templates.xml @@ -98,12 +98,7 @@ -<<<<<<< HEAD - -