[IMP] account Improve the print button to call the invoice_sent signal and also invoice_sent is triggered only when mail is send.

bzr revid: mdi@tinyerp.com-20120229101045-w775o646hlu432ot
This commit is contained in:
Divyesh Makwana (Open ERP) 2012-02-29 15:40:45 +05:30
parent 8082c6e4a3
commit 98fc1ace87
3 changed files with 37 additions and 8 deletions

View File

@ -372,25 +372,54 @@ class account_invoice(osv.osv):
else:
raise orm.except_orm(_('Unknown Error'), str(e))
def invoice_sent(self, cr, uid, ids, *args):
def _hook_message_sent(self, cr, uid, invoice_id, context=None):
wf_service = netsvc.LocalService("workflow")
wf_service.trg_validate(uid, 'account.invoice', invoice_id, 'invoice_sent', cr)
return True
def invoice_print(self, cr, uid, ids, context=None):
wf_service = netsvc.LocalService('workflow')
for id in ids:
wf_service.trg_validate(uid, 'account.invoice', id, 'invoice_sent', cr)
datas = {
'ids': ids,
'model': 'account.invoice',
'form': self.read(cr, uid, ids, context=context)[0]
}
return {
'type': 'ir.actions.report.xml',
'report_name': 'account.invoice',
'datas': datas,
'nodestroy' : True
}
def action_invoice_sent(self, cr, uid, ids, context=None):
email_template_obj = self.pool.get('email.template')
mod_obj = self.pool.get('ir.model.data')
template_id = email_template_obj.search(cr, uid, [('name', '=', 'Automated Invoice Notification Mail')])[0]
template_id = email_template_obj.search(cr, uid, [('model_id', '=', 'account.invoice')], context=context)[0]
template = email_template_obj.browse(cr, uid, template_id)
model_data_id = mod_obj._get_id(cr, uid, 'mail', 'email_compose_message_wizard_form')
res_id = mod_obj.browse(cr, uid, model_data_id).res_id
res_id = mod_obj.browse(cr, uid, model_data_id, context=context).res_id
self.write(cr, uid, ids, {'state' : 'sent'})
#EDI EXport data
id = ids[0]
invoice = self.browse(cr, uid, id, context)
if not invoice.partner_id.opt_out:
invoice.edi_export_and_email(template_ext_id='account.email_template_edi_invoice', context=context)
ctx = context.copy()
ctx.update({'active_model': 'account.invoice', 'active_id': invoice.id, 'mail.compose.template_id': template.id})
return {
'view_type': 'form',
'view_mode': 'form',
'res_model': 'mail.compose.message',
'views': [(res_id, 'form')],
'view_id': res_id,
'type': 'ir.actions.act_window',
'target': 'new',
'context':{'active_model':'account.invoice', 'mail.compose.template_id': template.id},
'context': ctx,
'nodestroy': True,
}
def confirm_paid(self, cr, uid, ids, context=None):

View File

@ -302,8 +302,8 @@
<field name="state" widget="statusbar" statusbar_visible="draft,open,sent,paid" statusbar_colors='{"proforma":"blue","proforma2":"blue"}'/>
<field name="residual"/>
<group col="8" colspan="4" groups="base.group_user">
<button name="invoice_sent" string="Send By Email" icon="terp-mail-message-new" states="open"/>
<button name="%(account_invoices)d" string="Print Invoice" type="action" icon="gtk-print" states="open,proforma,sale,proforma2"/>
<button name="action_invoice_sent" type="object" string="Send By Email" icon="terp-mail-message-new" states="open"/>
<button name="invoice_print" string="Print Invoice" type="object" icon="gtk-print" states="open,proforma,sale,proforma2"/>
<button name="invoice_open" states="draft,proforma2" string="Validate" icon="gtk-go-forward"/>
<button name="invoice_proforma2" states="draft" string="PRO-FORMA" icon="terp-gtk-media-pause" groups="account.group_account_user"/>
<button name="%(action_account_invoice_refund)d" type='action' string='Refund Invoice' states='open,sent,paid' icon="gtk-execute"/>

View File

@ -34,7 +34,7 @@ write({'state':'open'})</field>
<record id="act_sent" model="workflow.activity">
<field name="wkf_id" ref="wkf"/>
<field name="name">sent</field>
<field name="action">invoice_sent()</field>
<field name="action">write({'state':'sent'})</field>
<field name="kind">function</field>
</record>