[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:
@@ -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):
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)],
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
})
|
||||
|
||||
@@ -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')]")
|
||||
|
||||
Reference in New Issue
Block a user