From 4a274f3dda4c3958aae817effc109d1df462b2c4 Mon Sep 17 00:00:00 2001 From: "Purnendu Singh (OpenERP)" Date: Wed, 28 Mar 2012 11:34:43 +0530 Subject: [PATCH] [IMP] account, purchase, sale: Improve code to add a link in mail bzr revid: psi@tinyerp.com-20120328060443-34pimg3azu50dy4v --- addons/account/account_invoice.py | 24 +++++++++------------ addons/account/account_invoice_workflow.xml | 6 +++--- addons/account/edi/invoice.py | 13 +++++++++++ addons/purchase/edi/purchase_order.py | 13 +++++++++++ addons/purchase/purchase.py | 9 ++------ addons/sale/sale.py | 16 +++++++------- 6 files changed, 49 insertions(+), 32 deletions(-) diff --git a/addons/account/account_invoice.py b/addons/account/account_invoice.py index 6b9b2b0e41c..dc2b70c0094 100644 --- a/addons/account/account_invoice.py +++ b/addons/account/account_invoice.py @@ -389,26 +389,22 @@ class account_invoice(osv.osv): } 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, [('model_id', '=', 'account.invoice')], context=context) + template_id = self.pool.get('email.template').search(cr, uid, [('model_id', '=', 'account.invoice')], context=context)[0] res = mod_obj.get_object_reference(cr, uid, 'mail', 'email_compose_message_wizard_form') res_id = res and res[1] or False - ctx = context.copy() ctx.update({'active_model': 'account.invoice', 'active_id': ids[0], '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': ctx, - 'nodestroy': True, + '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': ctx, + 'nodestroy': True, } def confirm_paid(self, cr, uid, ids, context=None): diff --git a/addons/account/account_invoice_workflow.xml b/addons/account/account_invoice_workflow.xml index 7e536036628..faf38acd924 100644 --- a/addons/account/account_invoice_workflow.xml +++ b/addons/account/account_invoice_workflow.xml @@ -66,12 +66,12 @@ write({'state':'cancel'}) invoice_open - + invoice_sent - + account.move.line @@ -85,7 +85,7 @@ write({'state':'cancel'}) move_line_id_payment_get() test_paid() - + invoice_cancel diff --git a/addons/account/edi/invoice.py b/addons/account/edi/invoice.py index d36e9163ba9..97b633d1740 100644 --- a/addons/account/edi/invoice.py +++ b/addons/account/edi/invoice.py @@ -21,6 +21,7 @@ from osv import fields, osv, orm from edi import EDIMixin +from edi.models import edi INVOICE_LINE_EDI_STRUCT = { 'name': True, @@ -71,6 +72,18 @@ INVOICE_EDI_STRUCT = { class account_invoice(osv.osv, EDIMixin): _inherit = 'account.invoice' + def action_invoice_sent(self, cr, uid, ids, context=None): + """"Override this method to add a link to mail""" + if context is None: + context = {} + invoice_objs = self.browse(cr, uid, ids, context=context) + edi_token = self.pool.get('edi.document').export_edi(cr, uid, invoice_objs, context = context)[0] + web_root_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url') + edi_context = dict(context, edi_web_url_view=edi.EDI_VIEW_WEB_URL % (web_root_url, cr.dbname, edi_token)) + ctx = context.copy() + ctx.update(edi_context) + return super(account_invoice, self).action_invoice_sent(cr, uid, ids, context=ctx) + def edi_export(self, cr, uid, records, edi_struct=None, context=None): """Exports a supplier or customer invoice""" edi_struct = dict(edi_struct or INVOICE_EDI_STRUCT) diff --git a/addons/purchase/edi/purchase_order.py b/addons/purchase/edi/purchase_order.py index b8359f3bf7f..8330bb21ec2 100644 --- a/addons/purchase/edi/purchase_order.py +++ b/addons/purchase/edi/purchase_order.py @@ -24,6 +24,7 @@ from dateutil.relativedelta import relativedelta from osv import fields, osv, orm from edi import EDIMixin +from edi.models import edi from tools import DEFAULT_SERVER_DATE_FORMAT from tools.translate import _ @@ -61,6 +62,18 @@ PURCHASE_ORDER_EDI_STRUCT = { class purchase_order(osv.osv, EDIMixin): _inherit = 'purchase.order' + def wkf_send_rfq(self, cr, uid, ids, context=None): + """"Override this method to add a link to mail""" + if context is None: + context = {} + purchase_objs = self.browse(cr, uid, ids, context=context) + edi_token = self.pool.get('edi.document').export_edi(cr, uid, purchase_objs, context = context)[0] + web_root_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url') + edi_context = dict(context, edi_web_url_view=edi.EDI_VIEW_WEB_URL % (web_root_url, cr.dbname, edi_token)) + ctx = context.copy() + ctx.update(edi_context) + return super(purchase_order, self).wkf_send_rfq(cr, uid, ids, context=ctx) + def edi_export(self, cr, uid, records, edi_struct=None, context=None): """Exports a purchase order""" edi_struct = dict(edi_struct or PURCHASE_ORDER_EDI_STRUCT) diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index 0093222d78d..1e6f7602280 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -330,18 +330,13 @@ class purchase_order(osv.osv): def wkf_send_rfq(self, cr, uid, ids, context=None): mod_obj = self.pool.get('ir.model.data') - template_id = self.pool.get('email.template').search(cr, uid, [('model_id', '=', 'purchase.order')]) + template_id = self.pool.get('email.template').search(cr, uid, [('model_id', '=', 'purchase.order')], context=context)[0] res = mod_obj.get_object_reference(cr, uid, 'mail', 'email_compose_message_wizard_form') res_id = res and res[1] or False - #EDI EXport data - id = ids[0] - order = self.browse(cr, uid, id, context) - #if not order.partner_id.opt_out: - #order.edi_export_and_email(template_ext_id='purchase.email_template_edi_purchase', context=context) ctx = context.copy() - ctx.update({'active_model': 'purchase.order', 'active_id': id, 'mail.compose.template_id': template_id}) + ctx.update({'active_model': 'purchase.order', 'active_id': ids[0], 'mail.compose.template_id': template_id}) return { 'view_type': 'form', 'view_mode': 'form', diff --git a/addons/sale/sale.py b/addons/sale/sale.py index 50f6bf81153..4c450aca3a7 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -474,13 +474,13 @@ class sale_order(osv.osv): def print_quotation(self, cr, uid, ids, context=None): wf_service = netsvc.LocalService("workflow") for id in ids: - wf_service.trg_validate(uid, 'sale.order', id, 'quotation_sent', cr) + wf_service.trg_validate(uid, 'sale.order', id, 'quotation_sent', cr) datas = { 'model': 'sale.order', 'ids': ids, 'form': self.read(cr, uid, ids, context=context)[0], - } - return {'type': 'ir.actions.report.xml', 'report_name': 'sale.order', 'datas': datas, 'nodestroy': True} + } + return {'type': 'ir.actions.report.xml', 'report_name': 'sale.order', 'datas': datas, 'nodestroy': True} def manual_invoice(self, cr, uid, ids, context=None): mod_obj = self.pool.get('ir.model.data') @@ -735,17 +735,17 @@ class sale_order(osv.osv): def action_quotation_sent(self, cr, uid, ids, context=None): mod_obj = self.pool.get('ir.model.data') - template_id = self.pool.get('email.template').search(cr, uid, [('model_id', '=', 'sale.order')], context=context) - model_data_ids = mod_obj.search(cr, uid, [('model','=','ir.ui.view'),('name','=','email_compose_message_wizard_form')], context=context) - resource_id = mod_obj.read(cr, uid, model_data_ids, fields=['res_id'], context=context)[0]['res_id'] + template_id = self.pool.get('email.template').search(cr, uid, [('model_id', '=', 'sale.order')], context=context)[0] + res = mod_obj.get_object_reference(cr, uid, 'mail', 'email_compose_message_wizard_form') + res_id = res and res[1] or False ctx = context.copy() ctx.update({'active_model': 'sale.order', 'active_id': ids[0], 'mail.compose.template_id': template_id}) return { 'view_type': 'form', 'view_mode': 'form', 'res_model': 'mail.compose.message', - 'views': [(resource_id,'form')], - 'view_id': resource_id, + 'views': [(res_id,'form')], + 'view_id': res_id, 'type': 'ir.actions.act_window', 'target': 'new', 'context': ctx,