跳至内容
菜单
此问题已终结
2572 查看

Hello,

I have made some code for document expiry module, that when notification date comes then the email will be triggered  till the expiry date laps. A person can stop the email notification send for any particular document by marking check on Disable Notification check box. It's working fine but fails at one place when Notification date is not come and If Expiry Date laps then for both these case mail is triggered, but it should not be happened.

Here is my code:

class Employee(models.Model):

_inherit = 'hr.employee'

document_lines_ids = fields.One2many('document.lines', 'employee_id', string='Document Lines')

@api.model

def scheduler_document_expiration(self):

employee_obj = self.env['hr.employee'].search([])

template_id = self.env['ir.model.data'].get_object_reference('document_expiry_control', 'email_template_document_expiration')[1]

template_browse = self.env['mail.template'].browse(template_id)

DATE_FORMAT = '%Y-%m-%d'

today_date = datetime.strptime(

str(datetime.today().date()), DATE_FORMAT).date()

if template_browse:

for data in employee_obj:

documents = data.document_lines_ids.filtered(lambda r: not r.disable_notification)

for lines in documents.filtered(lambda r: today_date >= datetime.strptime(

str(r.notification_from), DATE_FORMAT).date() and today_date <= datetime.strptime(

str(r.expiry_date), DATE_FORMAT).date()):

if any(documents.filtered(lambda r: today_date >= datetime.strptime(

str(r.notification_from), DATE_FORMAT).date() and today_date <= datetime.strptime(

str(r.expiry_date), DATE_FORMAT).date())):

values = template_browse.generate_email(data.id, fields=None)

mail_mail_obj = self.env['mail.mail']

msg_id = mail_mail_obj.create(values)

if msg_id:

msg_id.send()

return True

Template:

<data noupdate="1">

<record id="email_template_document_expiration" model="mail.template">

<field name="name">Document Expiration Notification</field>

<field name="email_from">abc@gmail.com</field>

<field name="subject">Document Expiration</field>

<field name="email_to">xyz@gmail.com</field>

<field name="lang">${object.lang}</field>

<field name="model_id" ref="document_expiry_control.model_hr_employee"/>

<field name="auto_delete" eval="True"/>

<field name="body_html"><![CDATA[

<div style="font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: #FFF; ">

<p>Hi,</p>

% for data in object.document_lines_ids:

% if data.disable_notification == False:

<p>The ${data.document_type.name} of ${object.name} is going to expire on ${data.expiry_date}.</p>

% endif

% endfor

<p>Kindly proceed with the renewal.</P>

<p>Best Regards,</p>

</div>

]]></field>

</record>

</data>

形象
丢弃
相关帖文 回复 查看 活动
1
1月 22
28829
1
6月 18
15327
1
3月 18
4121
2
10月 23
6447
3
10月 23
5862