diff --git a/addons/mass_mailing/models/mailing.py b/addons/mass_mailing/models/mailing.py index 50e73aff0a9..851edc5100e 100644 --- a/addons/mass_mailing/models/mailing.py +++ b/addons/mass_mailing/models/mailing.py @@ -289,6 +289,7 @@ class MassMailing(models.Model): FROM mailing_trace AS stats LEFT OUTER JOIN link_tracker_click AS clicks ON clicks.mailing_trace_id = stats.id WHERE stats.mass_mailing_id IN %s + AND stats.trace_status != 'cancel' GROUP BY stats.mass_mailing_id """, [tuple(self.ids) or (None,)]) mass_mailing_data = self.env.cr.dictfetchall() diff --git a/addons/test_mass_mailing/tests/test_mailing_statistics.py b/addons/test_mass_mailing/tests/test_mailing_statistics.py index 56c3edede50..13be8bb5286 100644 --- a/addons/test_mass_mailing/tests/test_mailing_statistics.py +++ b/addons/test_mass_mailing/tests/test_mailing_statistics.py @@ -29,7 +29,8 @@ class TestMailingStatistics(TestMassMailCommon): @users('user_marketing') @mute_logger('odoo.addons.mass_mailing.models.mailing', 'odoo.addons.mail.models.mail_mail', 'odoo.addons.mail.models.mail_thread') def test_mailing_statistics(self): - target_records = self._create_mailing_test_records(model='mailing.test.blacklist', count=10) + target_records = self._create_mailing_test_records(model='mailing.test.blacklist', count=11) + target_records[10]['email_from'] = False # void email should lead to a 'cancel' trace_status mailing = self.env['mailing.mailing'].browse(self.mailing_bl.ids) mailing.write({'mailing_domain': [('id', 'in', target_records.ids)], 'user_id': self.user_marketing_2.id}) mailing.action_put_in_queue() @@ -45,7 +46,9 @@ class TestMailingStatistics(TestMassMailCommon): self.gateway_mail_click(mailing, target_records[3], 'https://www.odoo.be') # check mailing statistics + self.assertEqual(mailing.canceled, 1) self.assertEqual(mailing.clicked, 3) + self.assertEqual(mailing.clicks_ratio, 30) self.assertEqual(mailing.delivered, 10) self.assertEqual(mailing.opened, 4) self.assertEqual(mailing.opened_ratio, 40)