Add send email when no records option.

This commit refs #11592
This commit is contained in:
Sergio Morillo 2020-06-11 15:36:51 +02:00
parent d0907fc2b6
commit 36cdcc7ace
4 changed files with 34 additions and 3 deletions

View File

@ -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

View File

@ -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"

View File

@ -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 = []

View File

@ -3,6 +3,10 @@
The COPYRIGHT file at the top level of this repository contains the full
copyright notices and license terms. -->
<data>
<xpath expr="/form/notebook" position="before">
<label name="no_records_email"/>
<field name="no_records_email"/>
</xpath>
<xpath expr="/form/notebook/page[@id='advanced']" position="after">
<page string="Filters" id="filters">
<label name="filters"/>