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 @@ + + + + + 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 @@ - + [] 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): @@ -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 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 @@ + + + + + @@ -1049,6 +1054,13 @@ sale.group_discount_per_so_line + + + + + + + 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')]")