Skip to Content
Menú
This question has been flagged
1 Respondre
2006 Vistes

Hi,

I set an automatic action to send an email when a sale order is created, it works correctly but for some orders I need send email only if specific fields are filled. 


My current solution is to set email destination as None if field is empty in the model, but i don't like it

${ (object.partner_id.email if object.x_studio_myfield == 'YES' else None)|safe}

Is there a better solution?

Thanks 


Avatar
Descartar
Best Answer

Hi,

You can change the ‘Action to do’ in the automated action to ‘Execute Python Code’ instead of ‘Send Email’.
Then the give the following python code.

if record.x_studio_myfield == 'YES':
    mail_template = env.ref('sale.email_template_edi_sale')
    mail_template.send_mail(record.id, force_send=True)

You can provide the required email template’s XML ID inside env.ref(‘...’).
In order to find the XML ID of email templates you can enable developer mode , go to Settings > Technical > Email > Templates , select the required template , click on debug tool and click on ‘View Metadata’.
Another suggestion is that you can create a boolean field instead of the character field ‘x_studio_myfield’ and use the python code as:

if record.x_studio_my_boolean_field:
    mail_template = env.ref('sale.email_template_edi_sale')
    mail_template.send_mail(record.id, force_send=True)

Regards

Avatar
Descartar
Related Posts Respostes Vistes Activitat
5
de febr. 25
7337
0
de gen. 17
2944
3
de febr. 25
8666
3
de set. 24
8135
2
de jul. 24
4510