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 @@
-
+
-
-
-
-
-