summaryrefslogtreecommitdiff
path: root/addons/mass_mailing/report/mailing_trace_report.py
diff options
context:
space:
mode:
authorThibault Delavallée <tde@odoo.com>2019-07-17 09:26:42 +0000
committerThibault Delavallée <tde@odoo.com>2019-07-17 15:39:06 +0000
commit2896aad34e797b6ca65a8efe3c5d71f31500a9a2 (patch)
tree81f2298b04182860e84f2ca9815f313cc0c75ffc /addons/mass_mailing/report/mailing_trace_report.py
parent20dfba6e11ac4553509c1a3516c6453b8f8023e7 (diff)
[REF] mass_mailing: rename mail.mail.statistics and reporting model
PURPOSE Mass mailing is currently a bit messy. As SMS will be added as a way to notify people in mass through SMS let us take this opportunity to somehow clean this application: organization, light code cleaning, model renaming. SPECIFICATIONS Rename mail.mail.statistics to mailing.trace and mail.statistics.report to mail.trace.report. Rationale : * mail.mail.statistics is linked to mail.mail model. Soon this model will hold data related to SMS sending. It makes sense to be broader in the naming; * mailing.trace is more inlined with marketing.trace model that is the marketing automation model using it in marketing automation (enterprise application); * mailing.trace is shorter to write; * mail.statistics.report model should sense to be updated at the same time; MIGRATION mail.mail.statistics model -> mailing.trace mail_mail_statistics table -> mailing_trace mail.statistics.report model -> mail.trace.report fields updated (w column change) * link.tracker.click: mail_stat_id -> mailing_trace_id fields updated (no column change) * mail.mail: statistics_ids -> mailing_trace_ids * mail.mass_mailing: statistics_ids -> mailing_trace_ids LINKS Task ID 2037906 Preparing task ID 1997464 (SMS addition in mass mailing) PR #34938
Diffstat (limited to 'addons/mass_mailing/report/mailing_trace_report.py')
-rw-r--r--addons/mass_mailing/report/mailing_trace_report.py52
1 files changed, 52 insertions, 0 deletions
diff --git a/addons/mass_mailing/report/mailing_trace_report.py b/addons/mass_mailing/report/mailing_trace_report.py
new file mode 100644
index 00000000000..2afa8906097
--- /dev/null
+++ b/addons/mass_mailing/report/mailing_trace_report.py
@@ -0,0 +1,52 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import fields, models, tools
+
+
+class MailingTraceReport(models.Model):
+ _name = 'mailing.trace.report'
+ _auto = False
+ _description = 'Mass Mailing Statistics'
+
+ scheduled_date = fields.Datetime(string='Scheduled Date', readonly=True)
+ name = fields.Char(string='Mass Mail', readonly=True)
+ campaign = fields.Char(string='Mass Mail Campaign', readonly=True)
+ sent = fields.Integer(readonly=True)
+ delivered = fields.Integer(readonly=True)
+ opened = fields.Integer(readonly=True)
+ bounced = fields.Integer(readonly=True)
+ replied = fields.Integer(readonly=True)
+ clicked = fields.Integer(readonly=True)
+ state = fields.Selection([('draft', 'Draft'), ('test', 'Tested'), ('done', 'Sent')],
+ string='Status', readonly=True)
+ email_from = fields.Char('From', readonly=True)
+
+ def init(self):
+ """Mass Mail Statistical Report: based on mailing.trace that models the various
+ statistics collected for each mailing, and mail.mass_mailing model that models the
+ various mailing performed. """
+ tools.drop_view_if_exists(self.env.cr, 'mailing_trace_report')
+ self.env.cr.execute("""
+ CREATE OR REPLACE VIEW mailing_trace_report AS (
+ SELECT
+ min(ms.id) as id,
+ ms.scheduled as scheduled_date,
+ utm_source.name as name,
+ utm_campaign.name as campaign,
+ count(ms.bounced) as bounced,
+ count(ms.sent) as sent,
+ (count(ms.sent) - count(ms.bounced)) as delivered,
+ count(ms.opened) as opened,
+ count(ms.replied) as replied,
+ count(ms.clicked) as clicked,
+ mm.state,
+ mm.email_from
+ FROM
+ mailing_trace as ms
+ left join mail_mass_mailing as mm ON (ms.mass_mailing_id=mm.id)
+ left join mail_mass_mailing_campaign as mc ON (ms.mass_mailing_campaign_id=mc.id)
+ left join utm_campaign as utm_campaign ON (mc.campaign_id = utm_campaign.id)
+ left join utm_source as utm_source ON (mm.source_id = utm_source.id)
+ GROUP BY ms.scheduled, utm_source.name, utm_campaign.name, mm.state, mm.email_from
+ )""")