summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRishabh Jadia <rja@odoo.com>2019-02-11 11:11:37 +0000
committerRishabh Jadia <rja@odoo.com>2019-04-30 05:00:30 +0000
commitc388505fbef012655e079e97c150cd1019e467c2 (patch)
tree1d9d70a7b24ceb0cfefca3557d1c0a2f81f88c93
parent1e3310d923d9c518ce77d917eaa2cf6be37490ff (diff)
[IMP] event_sale, mass_mailing_sale, pos_sale, sale(_crm): added utm parameters (utm_source, utm_campaign, utm_medium)
- added the campaign parameters on event_registration. - added the campaign parameters on sale_order and move the same parameters to the invoice generated for that so. Task-1929272
-rw-r--r--addons/event_sale/models/event.py3
-rw-r--r--addons/event_sale/views/event_views.xml5
-rw-r--r--addons/mass_mailing_sale/__manifest__.py2
-rw-r--r--addons/mass_mailing_sale/data/mass_mailing_demo.xml2
-rw-r--r--addons/pos_sale/report/sale_report.py3
-rw-r--r--addons/sale/__manifest__.py2
-rw-r--r--addons/sale/models/account_invoice.py11
-rw-r--r--addons/sale/models/sale.py5
-rw-r--r--addons/sale/report/sale_report.py9
-rw-r--r--addons/sale/views/sale_views.xml12
-rw-r--r--addons/sale/wizard/sale_make_invoice_advance.py3
-rw-r--r--addons/sale_crm/models/sale_order.py3
12 files changed, 53 insertions, 7 deletions
diff --git a/addons/event_sale/models/event.py b/addons/event_sale/models/event.py
index 0ab88b3be85..3d3e9095a43 100644
--- a/addons/event_sale/models/event.py
+++ b/addons/event_sale/models/event.py
@@ -190,6 +190,9 @@ class EventRegistration(models.Model):
# TDE FIXME: maybe add an onchange on sale_order_id + origin
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)
@api.onchange('event_id')
def _onchange_event_id(self):
diff --git a/addons/event_sale/views/event_views.xml b/addons/event_sale/views/event_views.xml
index 778bd166cb3..097f4ede3fe 100644
--- a/addons/event_sale/views/event_views.xml
+++ b/addons/event_sale/views/event_views.xml
@@ -45,6 +45,11 @@
<field name="origin" attrs="{'invisible': [('sale_order_id', '!=', False)]}"/>
<field name="sale_order_line_id" readonly="1" attrs="{'invisible': [('sale_order_id', '=', False)]}"/>
</group>
+ <group string="Marketing" name="utm_link" groups="base.group_no_one">
+ <field name="campaign_id"/>
+ <field name="medium_id"/>
+ <field name="source_id"/>
+ </group>
</group>
</field>
</record>
diff --git a/addons/mass_mailing_sale/__manifest__.py b/addons/mass_mailing_sale/__manifest__.py
index e241e12f7b8..74c8e741c63 100644
--- a/addons/mass_mailing_sale/__manifest__.py
+++ b/addons/mass_mailing_sale/__manifest__.py
@@ -7,7 +7,7 @@
'version': '1.0',
'summary': 'Add sale order UTM info on mass mailing',
'description': """UTM and mass mailing on sale orders""",
- 'depends': ['sale', 'mass_mailing', 'website_sale_link_tracker'],
+ 'depends': ['sale', 'mass_mailing'],
'data': [
'views/mass_mailing_views.xml',
],
diff --git a/addons/mass_mailing_sale/data/mass_mailing_demo.xml b/addons/mass_mailing_sale/data/mass_mailing_demo.xml
index 3515f59c97b..9a5524c532f 100644
--- a/addons/mass_mailing_sale/data/mass_mailing_demo.xml
+++ b/addons/mass_mailing_sale/data/mass_mailing_demo.xml
@@ -9,7 +9,7 @@
<field name="schedule_date" eval="(DateTime.today() + relativedelta(days=5)).strftime('%Y-%m-%d %H:%M:%S')"/>
<field name="mass_mailing_campaign_id" eval="ref('mass_mailing.mass_mail_campaign_1')"/>
<field name="campaign_id" ref="utm.utm_campaign_email_campaign_products"/>
- <field name="source_id" ref="website_sale_link_tracker.utm_source_sale_order_0"/>
+ <field name="source_id" ref="sale.utm_source_sale_order_0"/>
<field name="medium_id" ref="utm.utm_medium_email"/>
<field name="mailing_model_id" ref="sale.model_sale_order"/>
<field name="mailing_domain">[]</field>
diff --git a/addons/pos_sale/report/sale_report.py b/addons/pos_sale/report/sale_report.py
index 735aaf56169..97ccd467f69 100644
--- a/addons/pos_sale/report/sale_report.py
+++ b/addons/pos_sale/report/sale_report.py
@@ -41,6 +41,9 @@ class SaleReport(models.Model):
pos.partner_id AS partner_id,
pos.user_id AS user_id,
pos.company_id AS company_id,
+ NULL AS campaign_id,
+ NULL AS medium_id,
+ NULL AS source_id,
extract(epoch from avg(date_trunc('day',pos.date_order)-date_trunc('day',pos.create_date)))/(24*60*60)::decimal(16,2) AS delay,
t.categ_id AS categ_id,
pos.pricelist_id AS pricelist_id,
diff --git a/addons/sale/__manifest__.py b/addons/sale/__manifest__.py
index c275df0ac9b..d16eb17bf8c 100644
--- a/addons/sale/__manifest__.py
+++ b/addons/sale/__manifest__.py
@@ -9,7 +9,7 @@
'description': """
This module contains all the common features of Sales Management and eCommerce.
""",
- 'depends': ['sales_team', 'payment', 'portal'],
+ 'depends': ['sales_team', 'payment', 'portal', 'utm'],
'data': [
'security/sale_security.xml',
'security/ir.model.access.csv',
diff --git a/addons/sale/models/account_invoice.py b/addons/sale/models/account_invoice.py
index 76c4e541be0..6f9c3d2b567 100644
--- a/addons/sale/models/account_invoice.py
+++ b/addons/sale/models/account_invoice.py
@@ -5,7 +5,8 @@ from odoo import api, fields, models, _
class AccountInvoice(models.Model):
- _inherit = 'account.invoice'
+ _name = 'account.invoice'
+ _inherit = ['account.invoice', 'utm.mixin']
@api.model
def _get_default_team(self):
@@ -46,6 +47,14 @@ class AccountInvoice(models.Model):
self.comment = company.with_context(lang=self.partner_id.lang).invoice_terms
@api.multi
+ def _prepare_refund(self, invoice, date_invoice=None, date=None, description=None, journal_id=None):
+ values = super(AccountInvoice, self)._prepare_refund(invoice, date_invoice, date, description, journal_id)
+ values.update({'campaign_id': invoice.campaign_id.id,
+ 'medium_id': invoice.medium_id.id,
+ 'source_id': invoice.source_id.id})
+ return values
+
+ @api.multi
def action_invoice_open(self):
# OVERRIDE
# Auto-reconcile the invoice with payments coming from transactions.
diff --git a/addons/sale/models/sale.py b/addons/sale/models/sale.py
index 172479e1485..77bd31385cc 100644
--- a/addons/sale/models/sale.py
+++ b/addons/sale/models/sale.py
@@ -19,7 +19,7 @@ from werkzeug.urls import url_encode
class SaleOrder(models.Model):
_name = "sale.order"
- _inherit = ['portal.mixin', 'mail.thread', 'mail.activity.mixin']
+ _inherit = ['portal.mixin', 'mail.thread', 'mail.activity.mixin', 'utm.mixin']
_description = "Sales Order"
_order = 'date_order desc, id desc'
@@ -458,6 +458,9 @@ class SaleOrder(models.Model):
'payment_term_id': self.payment_term_id.id,
'fiscal_position_id': self.fiscal_position_id.id or self.partner_invoice_id.property_account_position_id.id,
'company_id': self.company_id.id,
+ 'campaign_id': self.campaign_id.id,
+ 'medium_id': self.medium_id.id,
+ 'source_id': self.source_id.id,
'user_id': self.user_id and self.user_id.id,
'team_id': self.team_id.id,
'transaction_ids': [(6, 0, self.transaction_ids.ids)],
diff --git a/addons/sale/report/sale_report.py b/addons/sale/report/sale_report.py
index 79402453440..fab00d06a39 100644
--- a/addons/sale/report/sale_report.py
+++ b/addons/sale/report/sale_report.py
@@ -49,6 +49,9 @@ class SaleReport(models.Model):
discount = fields.Float('Discount %', readonly=True)
discount_amount = fields.Float('Discount Amount', readonly=True)
+ campaign_id = fields.Many2one('utm.campaign', 'Campaign')
+ medium_id = fields.Many2one('utm.medium', 'Medium')
+ source_id = fields.Many2one('utm.source', 'Source')
order_id = fields.Many2one('sale.order', 'Order #', readonly=True)
@@ -75,6 +78,9 @@ class SaleReport(models.Model):
s.partner_id as partner_id,
s.user_id as user_id,
s.company_id as company_id,
+ s.campaign_id as campaign_id,
+ s.medium_id as medium_id,
+ s.source_id as source_id,
extract(epoch from avg(date_trunc('day',s.date_order)-date_trunc('day',s.create_date)))/(24*60*60)::decimal(16,2) as delay,
t.categ_id as categ_id,
s.pricelist_id as pricelist_id,
@@ -118,6 +124,9 @@ class SaleReport(models.Model):
s.user_id,
s.state,
s.company_id,
+ s.campaign_id,
+ s.medium_id,
+ s.source_id,
s.pricelist_id,
s.analytic_account_id,
s.team_id,
diff --git a/addons/sale/views/sale_views.xml b/addons/sale/views/sale_views.xml
index 1a93bb16c04..d2076bd9dfb 100644
--- a/addons/sale/views/sale_views.xml
+++ b/addons/sale/views/sale_views.xml
@@ -570,6 +570,11 @@
</group>
<group name="utm_link" colspan="2"/>
</group>
+ <group string="Marketing" name="utm_link" groups="base.group_no_one">
+ <field name="campaign_id"/>
+ <field name="medium_id"/>
+ <field name="source_id"/>
+ </group>
</group>
</page>
<page groups="base.group_no_one" string="Customer Signature" name="customer_signature" attrs="{'invisible': [('require_signature', '=', False), ('signed_by', '=', False), ('signature', '=', False), ('signed_on', '=', False)]}">
@@ -1049,6 +1054,13 @@
<xpath expr="//field[@name='discount']" position="attributes">
<attribute name="groups">sale.group_discount_per_so_line</attribute>
</xpath>
+ <xpath expr="//field[@name='partner_bank_id']/.." position="after">
+ <group string="Marketing" name="utm_link" groups="base.group_no_one">
+ <field name="campaign_id"/>
+ <field name="medium_id"/>
+ <field name="source_id"/>
+ </group>
+ </xpath>
</data>
</field>
</record>
diff --git a/addons/sale/wizard/sale_make_invoice_advance.py b/addons/sale/wizard/sale_make_invoice_advance.py
index e7a94413116..58e10c2480a 100644
--- a/addons/sale/wizard/sale_make_invoice_advance.py
+++ b/addons/sale/wizard/sale_make_invoice_advance.py
@@ -120,6 +120,9 @@ class SaleAdvancePaymentInv(models.TransientModel):
'payment_term_id': order.payment_term_id.id,
'fiscal_position_id': order.fiscal_position_id.id or order.partner_id.property_account_position_id.id,
'team_id': order.team_id.id,
+ 'campaign_id': order.campaign_id.id,
+ 'medium_id': order.medium_id.id,
+ 'source_id': order.source_id.id,
'user_id': order.user_id.id,
'comment': order.note,
})
diff --git a/addons/sale_crm/models/sale_order.py b/addons/sale_crm/models/sale_order.py
index 51a95f819ff..e635f2fe81b 100644
--- a/addons/sale_crm/models/sale_order.py
+++ b/addons/sale_crm/models/sale_order.py
@@ -5,8 +5,7 @@ from odoo import fields, models
class SaleOrder(models.Model):
- _name = "sale.order"
- _inherit = ['sale.order', 'utm.mixin']
+ _inherit = 'sale.order'
tag_ids = fields.Many2many('crm.lead.tag', 'sale_order_tag_rel', 'order_id', 'tag_id', string='Tags')
opportunity_id = fields.Many2one('crm.lead', string='Opportunity', domain="[('type', '=', 'opportunity')]")