[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
This commit is contained in:
Rishabh Jadia
2019-04-30 05:00:30 +00:00
parent 1e3310d923
commit c388505fbe
12 changed files with 53 additions and 7 deletions
+3
View File
@@ -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):
+5
View File
@@ -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>
+1 -1
View File
@@ -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',
],
@@ -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>
+3
View File
@@ -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,
+1 -1
View File
@@ -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',
+10 -1
View File
@@ -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):
@@ -45,6 +46,14 @@ class AccountInvoice(models.Model):
company = self.company_id or self.env.user.company_id
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
+4 -1
View File
@@ -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)],
+9
View File
@@ -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,
+12
View File
@@ -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>
@@ -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,
})
+1 -2
View File
@@ -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')]")