How to automatically generate an email when sale order is confirmed?
Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:
- CRM
- e-Commerce
- Accounting
- Inventory
- PoS
- Project management
- MRP
This question has been flagged
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
@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
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()
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
Enjoying the discussion? Don't just read, join in!
Create an account today to enjoy exclusive features and engage with our awesome community!
Sign upRelated Posts | Replies | Views | Activity | |
---|---|---|---|---|
|
0
Dec 18
|
4373 | ||
|
2
Feb 18
|
18847 | ||
|
1
Mar 15
|
20837 | ||
|
1
Nov 21
|
9929 | ||
|
0
Jan 17
|
1692 |
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