From a340443177dbbe8f9980096ce66799002cfe03da Mon Sep 17 00:00:00 2001 From: Noe Antoine Date: Wed, 28 Sep 2022 10:06:57 +0000 Subject: [PATCH] [IMP] event{_sale}: add sequence to tickets (and templates) When the price and the event are the same, nothing allows ordering tickets in event_sale. Therefore, add a sequence number and handle widget to the tickets (in data as well). Also do it for ticket templates. Also, order the tickets (on events and templates) by name before id. Since event type tickets are not linked to any event, the order does not include the event_id. However, event event tickets are, and if they appear in the same list / reporting someday, it makes sense to order them by event_id first. In event_sale, we make sure the price is also in the order. As the price is in the copied fields on the event when using an event template, we add the price on the event type tickets ordering to align with the event event tickets. Add default value to sequence and sequence number to data for event.type model. They were sequenced but demo data had none, hence not really ordered. We also add the id in the event.event _order value, otherwise when ordering on the event (for instance ordering on event_id for event.event.tickets), the order is random for events having the same date_begin. We prevent this from happening. Also make description optional hide on event types. Task-2997391 closes odoo/odoo#101384 Signed-off-by: David Beguin (dbe) --- addons/event/data/event_data.xml | 2 ++ addons/event/data/event_demo.xml | 10 ++++++++++ addons/event/data/event_demo_misc.xml | 3 +++ addons/event/models/event_event.py | 4 ++-- addons/event/models/event_ticket.py | 5 ++++- addons/event/views/event_ticket_views.xml | 4 +++- addons/event_sale/models/event_ticket.py | 3 ++- 7 files changed, 26 insertions(+), 5 deletions(-) diff --git a/addons/event/data/event_data.xml b/addons/event/data/event_data.xml index bb623435a15..c9febbeb7bd 100644 --- a/addons/event/data/event_data.xml +++ b/addons/event/data/event_data.xml @@ -5,10 +5,12 @@ Ticketing + 1 Conference + 2 diff --git a/addons/event/data/event_demo.xml b/addons/event/data/event_demo.xml index 1b58ac70688..9231245e896 100644 --- a/addons/event/data/event_demo.xml +++ b/addons/event/data/event_demo.xml @@ -30,6 +30,7 @@ 0 + 1 Standard @@ -38,6 +39,7 @@ 50 + 2 VIP @@ -46,6 +48,7 @@ 10 + 3 @@ -118,12 +121,14 @@ 50 + 4 VIP 5 + 5 @@ -155,12 +160,14 @@ 1200 + 6 VIP 50 + 7 @@ -196,6 +203,7 @@ 4 + 8 @@ -254,12 +262,14 @@ Standard + 9 VIP 10 + 10 diff --git a/addons/event/data/event_demo_misc.xml b/addons/event/data/event_demo_misc.xml index 1480546c504..4a46fac03f7 100644 --- a/addons/event/data/event_demo_misc.xml +++ b/addons/event/data/event_demo_misc.xml @@ -5,15 +5,18 @@ Exhibition + 3 Training + 4 Sport US/Pacific + 5 Europe/Brussels diff --git a/addons/event/models/event_event.py b/addons/event/models/event_event.py index dfddcc21bf2..46786ec274b 100644 --- a/addons/event/models/event_event.py +++ b/addons/event/models/event_event.py @@ -52,7 +52,7 @@ class EventType(models.Model): name = fields.Char('Event Template', required=True, translate=True) note = fields.Html(string='Note') - sequence = fields.Integer() + sequence = fields.Integer(default=10) # tickets event_type_ticket_ids = fields.One2many('event.type.ticket', 'event_type_id', string='Tickets') tag_ids = fields.Many2many('event.tag', string="Tags") @@ -88,7 +88,7 @@ class EventEvent(models.Model): _name = 'event.event' _description = 'Event' _inherit = ['mail.thread', 'mail.activity.mixin'] - _order = 'date_begin' + _order = 'date_begin, id' @api.model def default_get(self, fields_list): diff --git a/addons/event/models/event_ticket.py b/addons/event/models/event_ticket.py index 9fc8338c7b0..711610301ce 100644 --- a/addons/event/models/event_ticket.py +++ b/addons/event/models/event_ticket.py @@ -9,7 +9,9 @@ from odoo.tools.misc import formatLang class EventTemplateTicket(models.Model): _name = 'event.type.ticket' _description = 'Event Template Ticket' + _order = 'sequence, name, id' + sequence = fields.Integer('Sequence', default=10) # description name = fields.Char( string='Name', default=lambda self: _('Registration'), @@ -36,7 +38,7 @@ class EventTemplateTicket(models.Model): def _get_event_ticket_fields_whitelist(self): """ Whitelist of fields that are copied from event_type_ticket_ids to event_ticket_ids when changing the event_type_id field of event.event """ - return ['name', 'description', 'seats_max'] + return ['sequence', 'name', 'description', 'seats_max'] class EventTicket(models.Model): @@ -47,6 +49,7 @@ class EventTicket(models.Model): _name = 'event.event.ticket' _inherit = 'event.type.ticket' _description = 'Event Ticket' + _order = "event_id, sequence, name, id" @api.model def default_get(self, fields): diff --git a/addons/event/views/event_ticket_views.xml b/addons/event/views/event_ticket_views.xml index 40907d9e17e..f16ea2ef6ef 100644 --- a/addons/event/views/event_ticket_views.xml +++ b/addons/event/views/event_ticket_views.xml @@ -8,8 +8,9 @@ + - + @@ -70,6 +71,7 @@ + diff --git a/addons/event_sale/models/event_ticket.py b/addons/event_sale/models/event_ticket.py index b796fc7d2ec..542b6b362b5 100644 --- a/addons/event_sale/models/event_ticket.py +++ b/addons/event_sale/models/event_ticket.py @@ -10,6 +10,7 @@ _logger = logging.getLogger(__name__) class EventTemplateTicket(models.Model): _inherit = 'event.type.ticket' + _order = "sequence, price, name, id" def _default_product_id(self): return self.env.ref('event_sale.product_product_event', raise_if_not_found=False) @@ -101,7 +102,7 @@ class EventTemplateTicket(models.Model): class EventTicket(models.Model): _inherit = 'event.event.ticket' - _order = "event_id, price" + _order = "event_id, sequence, price, name, id" # product price_reduce_taxinc = fields.Float(