Skip to Content
Menu
This question has been flagged
4 Replies
5097 Views

How to automatically generate an email when sale order is confirmed?

Avatar
Discard

Hey Shaffaf R S,

You can use/create automated action feature available in Odoo.

Settings > Technical > Automation > Automated Actions > Create one as per your need. By selecting

1) 'Model' > Quotation (Sale order),

2) Action to do > Send Email or Python Code (If you want custom method),

3) Select Email template here if Action to do = Send Email.

4) You can specify Trigger condition as well (e.g On Update )

Hope this will help you.

Thanks

Best Answer

Hi,

If your are looking to generate email upon clicking the confirm button , just super the confirm and add the code for sending the email.

class SaleOrder(models.Model):   
    _inherit = 'sale.order'

    @api.multi
    def action_confirm(self, val):
res = super(SaleOrder, self).action_confirm()
       # here add the code for sending emails
        return res

Thanks

Avatar
Discard
Author

@Niyas raphy thankyou somuch for your answer. i have done the same but getting an error as TypeError: action_button_confirm() got multiple values for keyword argument 'context'

and this is my code

def action_button_confirm(self, cr, uid, ids, context=None):

assert len(ids) == 1, 'This option should only be used for a single id at a time.'

self.signal_workflow(cr, uid, ids, 'order_confirm')

res = super(sale_order, self).action_button_confirm(cr, uid,ids, [('od_method', '=', 'service'),('state', 'in', 'manual')], context=context)

template_ids = self.pool['email.template'].search(cr, uid, [('name', '=', 'RSO service sale order confirmed mail')], context=context)

template_id = template_ids and template_ids[0] or False

print "template idd.......................>>>>>",template_id

self.pool['email.template'].send_mail(cr, uid, template_id, new_id, force_send=True, context=context)

return res

Best Answer

Most of the time we need to send an email after successfully completion of some tasks or event. To day I will show you how to send an email in odoo using button click.

    @api.one
      def proposal_title_approved(self):
      template_obj = self.env['email.template'].sudo().search([('name','=','Create Section for Thesis')], limit=1)
      body = template_obj.body_html
      body=body.replace('--department--',self.department_id.name)
      body=body.replace('--session--',self.session_id.name)
      body=body.replace('--supervisor--',self.supervisor_id.name)
      body=body.replace('--rollno--',self.student_id.roll_no)
      body=body.replace('--caseno--',self.case_no)
      body=body.replace('--campus--',self.campus_id.name)
      if template_obj:
         mail_values = {
        'subject': template_obj.subject,
        'body_html': body,
        'email_to':';'.join(map(lambda x: x, receipt_list)),
        'email_cc':';'.join(map(lambda x: x, email_cc)),
        'email_from': template_obj.email_from,
       }
       create_and_send_email = self.env['mail.mail'].create(mail_values).send()

Avatar
Discard

Shaffaf R S: To send an email in odoo first of all we need create email template. We can create this email template using following two ways.

1- By using odoo Template Menu Interface

2- By using xml (code)

Get more detailed with code and description about Auto Generation of email [on button click]:

http://learnopenerp.blogspot.com/2017/08/odoo-how-to-send-email-on-button-click.html

Thanks

Related Posts Replies Views Activity
0
Dec 18
4373
2
Feb 18
18847
1
Mar 15
20837
1
Nov 21
9929
0
Jan 17
1692