d5876b510f10f3b91a7cd51c992ad755607b6c22
[odoo/odoo.git] / addons / product_email_template / models / invoice.py
1 # -*- coding: utf-8 -*-
2
3 from openerp.osv import osv
4
5
6 class account_invoice(osv.Model):
7     _inherit = 'account.invoice'
8
9     def invoice_validate_send_email(self, cr, uid, ids, context=None):
10         Composer = self.pool['mail.compose.message']
11         for invoice in self.browse(cr, uid, ids, context=context):
12             # send template only on customer invoice
13             if invoice.type != 'out_invoice':
14                 continue
15             # subscribe the partner to the invoice
16             if invoice.partner_id.id not in invoice.message_follower_ids:
17                 self.message_subscribe(cr, uid, [invoice.id], [invoice.partner_id.id], context=context)
18             for line in invoice.invoice_line:
19                 if line.product_id.email_template_id:
20                     # CLEANME: should define and use a clean API: message_post with a template
21                     composer_id = Composer.create(cr, uid, {
22                         'model': 'account.invoice',
23                         'res_id': invoice.id,
24                         'template_id': line.product_id.email_template_id.id,
25                         'composition_mode': 'comment',
26                     }, context=context)
27                     template_values = Composer.onchange_template_id(
28                         cr, uid, composer_id, line.product_id.email_template_id.id, 'comment', 'account.invoice', invoice.id
29                     )['value']
30                     template_values['attachment_ids'] = [(4, id) for id in template_values.get('attachment_ids', [])]
31                     Composer.write(cr, uid, [composer_id], template_values, context=context)
32                     Composer.send_mail(cr, uid, [composer_id], context=context)
33         return True
34
35     def invoice_validate(self, cr, uid, ids, context=None):
36         res = super(account_invoice, self).invoice_validate(cr, uid, ids, context=context)
37         self.invoice_validate_send_email(cr, uid, ids, context=context)
38         return res