From 4d59d3d1f3f489d9799ee154a71648c3c692f46c Mon Sep 17 00:00:00 2001 From: Joseph Caburnay Date: Thu, 15 Oct 2020 12:00:39 +0000 Subject: [PATCH] [REF][FIX] coupon,sale_coupon: move mail_template_sale_coupon mail_template_sale_coupon is specific to sale_coupon so we are moving it back to sale_coupon module. Additionally, we add a way of selecting a mail template when generating coupons for customers. --- addons/coupon/__manifest__.py | 2 +- addons/coupon/data/expire_coupon_cron.xml | 16 ++++++++++++++++ addons/coupon/models/coupon.py | 9 ++++++--- addons/coupon/wizard/coupon_generate.py | 6 +++--- addons/coupon/wizard/coupon_generate_views.xml | 7 +++++++ addons/sale_coupon/__manifest__.py | 1 + .../data/coupon_email_data.xml | 18 +++--------------- addons/sale_coupon/models/coupon.py | 5 +++++ addons/sale_coupon/models/sale_order.py | 2 +- 9 files changed, 43 insertions(+), 23 deletions(-) create mode 100644 addons/coupon/data/expire_coupon_cron.xml rename addons/{coupon => sale_coupon}/data/coupon_email_data.xml (85%) diff --git a/addons/coupon/__manifest__.py b/addons/coupon/__manifest__.py index f34ac2a0f98..bc60daf3e21 100644 --- a/addons/coupon/__manifest__.py +++ b/addons/coupon/__manifest__.py @@ -15,7 +15,7 @@ 'views/coupon_program_views.xml', 'report/coupon_report.xml', 'report/coupon_report_templates.xml', - 'data/coupon_email_data.xml', + 'data/expire_coupon_cron.xml', ], 'demo': [ 'demo/coupon_demo.xml', diff --git a/addons/coupon/data/expire_coupon_cron.xml b/addons/coupon/data/expire_coupon_cron.xml new file mode 100644 index 00000000000..f72f93eb1ad --- /dev/null +++ b/addons/coupon/data/expire_coupon_cron.xml @@ -0,0 +1,16 @@ + + + + + Coupon: expire coupon based on date + + code + model.cron_expire_coupon() + + + 1 + days + -1 + + + diff --git a/addons/coupon/models/coupon.py b/addons/coupon/models/coupon.py index 8ae2c4577b0..f2d7d704a92 100644 --- a/addons/coupon/models/coupon.py +++ b/addons/coupon/models/coupon.py @@ -49,18 +49,21 @@ class Coupon(models.Model): for coupon in self.filtered(lambda x: x.program_id.validity_duration > 0): coupon.expiration_date = (coupon.create_date + relativedelta(days=coupon.program_id.validity_duration)).date() + def _get_default_template(self): + return False + def action_coupon_sent(self): """ Open a window to compose an email, with the edi invoice template message loaded by default """ self.ensure_one() - template = self.env.ref('coupon.mail_template_sale_coupon', False) + default_template = self._get_default_template() compose_form = self.env.ref('mail.email_compose_message_wizard_form', False) ctx = dict( default_model='coupon.coupon', default_res_id=self.id, - default_use_template=bool(template), - default_template_id=template.id, + default_use_template=bool(default_template), + default_template_id=default_template and default_template.id, default_composition_mode='comment', custom_layout='mail.mail_notification_light', mark_coupon_as_sent=True, diff --git a/addons/coupon/wizard/coupon_generate.py b/addons/coupon/wizard/coupon_generate.py index f89ee5558c4..a9f7b44f470 100644 --- a/addons/coupon/wizard/coupon_generate.py +++ b/addons/coupon/wizard/coupon_generate.py @@ -17,6 +17,7 @@ class CouponGenerate(models.TransientModel): ], default='nbr_coupon') partners_domain = fields.Char(string="Customer", default='[]') has_partner_email = fields.Boolean(compute='_compute_has_partner_email') + template_id = fields.Many2one('mail.template', 'Use template', domain="[('model', '=', 'coupon.coupon')]") def generate_coupon(self): """Generates the number of coupons entered in wizard field nbr_coupons @@ -34,10 +35,9 @@ class CouponGenerate(models.TransientModel): vals.update({'partner_id': partner.id, 'state': 'sent' if partner.email else 'new'}) coupon = self.env['coupon.coupon'].create(vals) subject = '%s, a coupon has been generated for you' % (partner.name) - template = self.env.ref('coupon.mail_template_sale_coupon', raise_if_not_found=False) - if template: + if self.template_id: email_values = {'email_to': partner.email, 'email_from': self.env.user.email or '', 'subject': subject} - template.send_mail(coupon.id, email_values=email_values, notif_layout='mail.mail_notification_light') + self.template_id.send_mail(coupon.id, email_values=email_values, notif_layout='mail.mail_notification_light') @api.depends('partners_domain') def _compute_has_partner_email(self): diff --git a/addons/coupon/wizard/coupon_generate_views.xml b/addons/coupon/wizard/coupon_generate_views.xml index 57d03dedb1e..3233b5350ef 100644 --- a/addons/coupon/wizard/coupon_generate_views.xml +++ b/addons/coupon/wizard/coupon_generate_views.xml @@ -10,6 +10,13 @@ + +
+ Specify a mail template to send the generated coupons as email. +