diff --git a/electronic_mail.py b/electronic_mail.py index dae9fdf..4c2d728 100644 --- a/electronic_mail.py +++ b/electronic_mail.py @@ -162,6 +162,10 @@ class ElectronicMailFilter(DeactivableMixin, ModelSQL, ModelView): template = fltr.template records = fltr.search_records() if not records: + if not template.no_records_email: + continue + records.append(fltr) + elif template.no_records_email: continue group_records = (getattr(template, 'single_email', False) and diff --git a/locale/es.po b/locale/es.po index 4f6b773..b0b56a2 100644 --- a/locale/es.po +++ b/locale/es.po @@ -1,4 +1,4 @@ -# +# msgid "" msgstr "Content-Type: text/plain; charset=utf-8\n" @@ -98,6 +98,10 @@ msgctxt "field:electronic.mail.template,filters:" msgid "Filters" msgstr "Filtros" +msgctxt "field:electronic.mail.template,no_records_email:" +msgid "Send email when no records" +msgstr "Enviar correo si no hay resultados" + msgctxt "field:electronic.mail.template,reply_to:" msgid "Reply To" msgstr "Responder a" diff --git a/template.py b/template.py index da89ed3..5b31299 100644 --- a/template.py +++ b/template.py @@ -8,7 +8,7 @@ except ImportError: from email.mime.base import MIMEBase from trytond.model import fields from trytond.pool import PoolMeta, Pool - +from trytond.pyson import Eval __all__ = ['Template'] @@ -18,9 +18,23 @@ class Template(metaclass=PoolMeta): filters = fields.One2Many('electronic.mail.filter', 'template', 'Filters') + no_records_email = fields.Boolean('Send email when no records') + + @classmethod + def __setup__(cls): + super().__setup__() + if cls.reports.states.get('invisible'): + cls.reports.states['invisible'] |= Eval('no_records_email') + else: + cls.reports.states['invisible'] = Eval('no_records_email') + if cls.reports.states.get('readonly'): + cls.reports.states['readonly'] |= Eval('no_records_email') + else: + cls.reports.states['readonly'] = Eval('no_records_email') + cls.reports.depends.append('no_records_email') def get_attachments(self, records): - record_ids = [r.id for r in records] + record_ids = [r.id for r in records if r] attachments = [] for report in self.reports: report = Pool().get(report.report_name, type='report') @@ -41,3 +55,8 @@ class Template(metaclass=PoolMeta): 'Content-Disposition', 'attachment', filename=filename) attachments.append(attachment) return attachments + + @fields.depends('no_records_email') + def on_change_no_records_email(self): + if self.no_records_email: + self.reports = [] diff --git a/view/electronic_mail_template_form.xml b/view/electronic_mail_template_form.xml index f716b65..adbfbf5 100644 --- a/view/electronic_mail_template_form.xml +++ b/view/electronic_mail_template_form.xml @@ -3,6 +3,10 @@ The COPYRIGHT file at the top level of this repository contains the full copyright notices and license terms. --> + +