diff --git a/addons/event/__manifest__.py b/addons/event/__manifest__.py index 6286d8d8d8c..e49f260e24a 100644 --- a/addons/event/__manifest__.py +++ b/addons/event/__manifest__.py @@ -17,7 +17,7 @@ Key Features * Manage your Events and Registrations * Use emails to automatically confirm and send acknowledgments for any event registration """, - 'depends': ['base_setup', 'mail', 'portal'], + 'depends': ['base_setup', 'mail', 'portal', 'utm'], 'data': [ 'security/event_security.xml', 'security/ir.model.access.csv', diff --git a/addons/event/models/event_registration.py b/addons/event/models/event_registration.py index c7b7886527d..a70931038b6 100644 --- a/addons/event/models/event_registration.py +++ b/addons/event/models/event_registration.py @@ -22,6 +22,10 @@ class EventRegistration(models.Model): event_ticket_id = fields.Many2one( 'event.event.ticket', string='Event Ticket', readonly=True, states={'draft': [('readonly', False)]}) + # utm informations + utm_campaign_id = fields.Many2one('utm.campaign', 'Campaign', index=True, ondelete='set null') + utm_source_id = fields.Many2one('utm.source', 'Source', index=True, ondelete='set null') + utm_medium_id = fields.Many2one('utm.medium', 'Medium', index=True, ondelete='set null') # attendee partner_id = fields.Many2one( 'res.partner', string='Contact', diff --git a/addons/event/views/event_views.xml b/addons/event/views/event_views.xml index a0d247928ec..43f778f9a5e 100644 --- a/addons/event/views/event_views.xml +++ b/addons/event/views/event_views.xml @@ -563,6 +563,11 @@ + + + + +
diff --git a/addons/event_sale/models/event_registration.py b/addons/event_sale/models/event_registration.py index e057739be10..c8bcd955252 100644 --- a/addons/event_sale/models/event_registration.py +++ b/addons/event_sale/models/event_registration.py @@ -12,9 +12,27 @@ class EventRegistration(models.Model): # TDE FIXME: maybe add an onchange on sale_order_id sale_order_id = fields.Many2one('sale.order', string='Source Sales Order', ondelete='cascade') sale_order_line_id = fields.Many2one('sale.order.line', string='Sales Order Line', ondelete='cascade') - campaign_id = fields.Many2one('utm.campaign', 'Campaign', related="sale_order_id.campaign_id", store=True) - source_id = fields.Many2one('utm.source', 'Source', related="sale_order_id.source_id", store=True) - medium_id = fields.Many2one('utm.medium', 'Medium', related="sale_order_id.medium_id", store=True) + utm_campaign_id = fields.Many2one(compute='_compute_utm_campaign_id', copy=True, readonly=False, store=True) + utm_source_id = fields.Many2one(compute='_compute_utm_source_id', copy=True, readonly=False, store=True) + utm_medium_id = fields.Many2one(compute='_compute_utm_medium_id', copy=True, readonly=False, store=True) + + @api.depends('sale_order_id') + def _compute_utm_campaign_id(self): + for registration in self: + if registration.sale_order_id.campaign_id: + registration.utm_campaign_id = registration.sale_order_id.campaign_id + + @api.depends('sale_order_id') + def _compute_utm_source_id(self): + for registration in self: + if registration.sale_order_id.source_id: + registration.utm_source_id = registration.sale_order_id.source_id + + @api.depends('sale_order_id') + def _compute_utm_medium_id(self): + for registration in self: + if registration.sale_order_id.medium_id: + registration.utm_medium_id = registration.sale_order_id.medium_id def action_view_sale_order(self): action = self.env.ref('sale.action_orders').read()[0] diff --git a/addons/event_sale/views/event_registration_views.xml b/addons/event_sale/views/event_registration_views.xml index fea2fbb0362..5365c7d1e77 100644 --- a/addons/event_sale/views/event_registration_views.xml +++ b/addons/event_sale/views/event_registration_views.xml @@ -38,16 +38,11 @@ - + - - - - -