From 23fae21cc7b00e3cfe50de0d806c1ba0cca7fa1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Debauche=20St=C3=A9phane?= Date: Thu, 23 Jan 2020 10:22:34 +0000 Subject: [PATCH 1/3] [IMP] event: improve sale computation on event Purpose ======= In this commit we set the total sales price of an event to be the converted sum of order lines, tax excluded. Currency is now a related on the company to avoid de-synchronizing events and companies. Fields and computation comes from 5d1837d25088f4355eb2422d3c924151697ba0ed . Task 2170831 PR #43173 --- addons/event_sale/models/event_event.py | 17 ++++++++--------- addons/event_sale/views/event_views.xml | 2 +- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/addons/event_sale/models/event_event.py b/addons/event_sale/models/event_event.py index 923f0d32ee0..3089f78aced 100644 --- a/addons/event_sale/models/event_event.py +++ b/addons/event_sale/models/event_event.py @@ -37,16 +37,13 @@ class Event(models.Model): event_ticket_ids = fields.One2many( 'event.event.ticket', 'event_id', string='Event Ticket', copy=True) - sale_order_lines_ids = fields.One2many( 'sale.order.line', 'event_id', string='All sale order lines pointing to this event') - - sale_total_price = fields.Monetary(compute='_compute_sale_total_price') + sale_price_subtotal = fields.Monetary(string='Sales (Tax Excluded)', compute='_compute_sale_price_subtotal') currency_id = fields.Many2one( 'res.currency', string='Currency', - default=lambda self: self.env.company.currency_id.id, readonly=True) - + related='company_id.currency_id', readonly=True) start_sale_date = fields.Date('Start sale date', compute='_compute_start_sale_date') @api.onchange('event_type_id') @@ -67,12 +64,14 @@ class Event(models.Model): start_dates = [ticket.start_sale_date for ticket in event.event_ticket_ids if ticket.start_sale_date] event.start_sale_date = min(start_dates) if start_dates else False - @api.depends('sale_order_lines_ids') - def _compute_sale_total_price(self): + @api.depends('company_id.currency_id', + 'sale_order_lines_ids.price_subtotal', 'sale_order_lines_ids.currency_id', + 'sale_order_lines_ids.company_id', 'sale_order_lines_ids.order_id.date_order') + def _compute_sale_price_subtotal(self): for event in self: - event.sale_total_price = sum([ + event.sale_price_subtotal = sum([ event.currency_id._convert( - sale_order_line_id.price_reduce_taxexcl, + sale_order_line_id.price_subtotal, sale_order_line_id.currency_id, sale_order_line_id.company_id, sale_order_line_id.order_id.date_order) diff --git a/addons/event_sale/views/event_views.xml b/addons/event_sale/views/event_views.xml index 277805bb66f..f7913c7c3d0 100644 --- a/addons/event_sale/views/event_views.xml +++ b/addons/event_sale/views/event_views.xml @@ -152,7 +152,7 @@ -
Sales
+
Sales
From ea6ab15d39e75475ebe748973e30376375b3ae2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Debauche=20St=C3=A9phane?= Date: Thu, 23 Jan 2020 10:30:53 +0000 Subject: [PATCH 2/3] [IMP] event_sale: move total sales information from kanban to form view Purpose of this commit is to slightly improve event / sales integration, notably finding sale orders from an event. Specifications * remove sales information from event kanban view; * add it as a stat button on form view; * clicking on this button should redirect to the orders linked to that event, in no create mode to avoid creating de-synchronized data; Task ID 2170831 PR #43173 --- addons/event_sale/models/event_event.py | 9 +++++++++ addons/event_sale/views/event_views.xml | 27 ++++++++++++++----------- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/addons/event_sale/models/event_event.py b/addons/event_sale/models/event_event.py index 3089f78aced..1d7bc163a36 100644 --- a/addons/event_sale/models/event_event.py +++ b/addons/event_sale/models/event_event.py @@ -83,3 +83,12 @@ class Event(models.Model): non_open_events = self.filtered(lambda event: not any(event.event_ticket_ids.mapped('sale_available'))) non_open_events.event_registrations_open = False super(Event, self - non_open_events)._compute_event_registrations_open() + + def action_view_linked_orders(self): + """ Redirects to the orders linked to the current events """ + sale_order_action = self.env.ref('sale.action_orders').read()[0] + sale_order_action.update({ + 'domain': [('state', '!=', 'cancel'), ('order_line.event_id', 'in', self.ids)], + 'context': {'create': 0}, + }) + return sale_order_action diff --git a/addons/event_sale/views/event_views.xml b/addons/event_sale/views/event_views.xml index f7913c7c3d0..9856e1cb2bf 100644 --- a/addons/event_sale/views/event_views.xml +++ b/addons/event_sale/views/event_views.xml @@ -88,6 +88,21 @@ event.event + + + + @@ -145,18 +160,6 @@ - - event.kanban.inherit - event.event - - - - -
Sales
-
-
-
- event.event.ticket.form event.event.ticket From 9726e33654b3aba48c94277cb26bd04e0f140a22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Debauche=20St=C3=A9phane?= Date: Thu, 23 Jan 2020 10:31:30 +0000 Subject: [PATCH 3/3] [IMP] event: improve kanban card display of events Purpose ======= Improve design of the kanban cards in Events. Specifications ============== Have more useful information on the kanban record and removed redundant information * Display the location of the event * Remove the duration * Date should only be in the green block * Use the same links as before Task 2170831 PR #43173 --- addons/event/models/event_event.py | 7 --- addons/event/static/src/scss/event.scss | 57 +++++++------------ addons/event/views/event_views.xml | 73 ++++++++++++------------- 3 files changed, 56 insertions(+), 81 deletions(-) diff --git a/addons/event/models/event_event.py b/addons/event/models/event_event.py index 85890eb84c6..5b0f9dc28b6 100644 --- a/addons/event/models/event_event.py +++ b/addons/event/models/event_event.py @@ -9,7 +9,6 @@ from odoo.addons.base.models.res_partner import _tz_get from odoo.tools import format_datetime from odoo.exceptions import ValidationError from odoo.tools.translate import html_translate -from odoo.tools.misc import _format_time_ago _logger = logging.getLogger(__name__) @@ -128,7 +127,6 @@ class EventEvent(models.Model): legend_blocked = fields.Char(related='stage_id.legend_blocked', string='Kanban Blocked Explanation', readonly=True) legend_done = fields.Char(related='stage_id.legend_done', string='Kanban Valid Explanation', readonly=True) legend_normal = fields.Char(related='stage_id.legend_normal', string='Kanban Ongoing Explanation', readonly=True) - duration_str = fields.Char(compute='_compute_duration_str') # Seats and computation seats_max = fields.Integer( string='Maximum Attendees Number', @@ -265,11 +263,6 @@ class EventEvent(models.Model): end_tz = fields.Datetime.context_timestamp(event, event.date_end) event.is_one_day = (begin_tz.date() == end_tz.date()) - @api.depends('date_begin', 'date_end') - def _compute_duration_str(self): - for event in self: - event.duration_str = _format_time_ago(self.env, event.date_end - event.date_begin, add_direction=False) - @api.onchange('is_online') def _onchange_is_online(self): if self.is_online: diff --git a/addons/event/static/src/scss/event.scss b/addons/event/static/src/scss/event.scss index b300ab54b1a..ec7ff14cc77 100644 --- a/addons/event/static/src/scss/event.scss +++ b/addons/event/static/src/scss/event.scss @@ -1,44 +1,27 @@ .o_kanban_view.o_event_kanban_view { - .o_kanban_record { - position: relative; - padding: 0; - display: flex; - .o_kanban_record_title { - font-size: 1.2em; - } - .o_event_left { - flex: 1 1 25%; - color: white; - background-color: $o-brand-primary; - padding: 8px; - .o_day { - font-size: 26px; - } - } - .o_event_right { - padding: 8px; - margin-left: 8px; - width: 70%; + .o_kanban_content { + min-height: 130px; - .o_event_stat { - padding: 0; - height: 35px; - width: 60%; - } + .o_event_fontweight_500 { + font-weight: 500; } - .o_event_float_right { - right: 8px; - top: 40px; + + .o_event_fontsize_09 { + font-size: .9rem; } - .o_event_bottom_right { - width: 60px; - right: 8px; - bottom: 8px; - img { - width: 20px; - height: 20px; - object-fit: cover; - } + + .o_event_fontsize_11 { + font-size: 1.1rem; + } + + .o_event_fontsize_20 { + font-size: 2rem; + } + + .o_event_fit_20 { + height: 20px; + object-fit: cover; + width: 20px; } } } diff --git a/addons/event/views/event_views.xml b/addons/event/views/event_views.xml index dcf75e6a64a..c1f93eda3d9 100644 --- a/addons/event/views/event_views.xml +++ b/addons/event/views/event_views.xml @@ -328,6 +328,7 @@ + @@ -340,51 +341,49 @@ - -
-
-
-
- - -
-
-
-
-
-

-

-

-
Duration
-
-
-
+
-
- - - -