diff --git a/addons/crm/crm_opportunity_view.xml b/addons/crm/crm_opportunity_view.xml index 8b07b83e2fd..ec41af2f3e4 100644 --- a/addons/crm/crm_opportunity_view.xml +++ b/addons/crm/crm_opportunity_view.xml @@ -195,7 +195,7 @@ context="{'mail':'new', 'model': 'crm.lead'}" icon="gtk-go-forward" type="action" /> diff --git a/addons/crm/security/ir.model.access.csv b/addons/crm/security/ir.model.access.csv index 8dae83790b3..7c8c393b63f 100644 --- a/addons/crm/security/ir.model.access.csv +++ b/addons/crm/security/ir.model.access.csv @@ -34,3 +34,5 @@ "access_crm_send_mail","crm.send.mail","model_crm_send_mail","crm.group_crm_user",1,1,1,1 "access_crm_partner2opportunity","crm.partner2opportunity","model_crm_partner2opportunity","crm.group_crm_user",1,1,1,1 "access_crm_lead2opportunity_partner","crm.lead2opportunity.partner","model_crm_lead2opportunity_partner","crm.group_crm_user",1,1,1,1 +"access_crm_installer","crm.installer.rule","model_crm_installer","crm.group_crm_user",1,1,1,1 +"access_crm_lead_forward_to_partner","crm.lead.forward.to.partner","model_crm_lead_forward_to_partner","crm.group_crm_user",2,2,2,2 diff --git a/addons/crm/wizard/crm_forward_to_partner.py b/addons/crm/wizard/crm_forward_to_partner.py index 413747739c2..fb85794f64a 100644 --- a/addons/crm/wizard/crm_forward_to_partner.py +++ b/addons/crm/wizard/crm_forward_to_partner.py @@ -38,22 +38,23 @@ class crm_lead_forward_to_partner(osv.osv_memory): } def on_change_partner(self, cr, uid, ids, partner_id): + if not partner_id: + return {'value' : {'email_to' : False, 'address_id': False}} + + addr = self.pool.get('res.partner').address_get(cr, uid, [partner_id], ['contact']) + data = {'address_id': addr['contact']} + data.update(self.on_change_address(cr, uid, ids, addr['contact'])['value']) return { - 'domain' : { - 'address_id' : partner_id and "[('partner_id', '=', partner_id)]" or "[]", + 'value' : data, + 'domain' : {'address_id' : partner_id and "[('partner_id', '=', partner_id)]" or "[]"} } - } def on_change_address(self, cr, uid, ids, address_id): email = '' if address_id: email = self.pool.get('res.partner.address').browse(cr, uid, address_id).email - return { - 'value' : { - 'email_to' : email, - } - } + return {'value': {'email_to' : email}} def action_cancel(self, cr, uid, ids, context=None): return {'type' : 'ir.actions.act_window_close'} @@ -116,33 +117,53 @@ class crm_lead_forward_to_partner(osv.osv_memory): lead_proxy = self.pool.get('crm.lead') lead = lead_proxy.browse(cr, uid, active_ids[0], context=context) - - field_names = [ - 'partner_name', 'title', 'function_name', 'street', 'street2', - 'zip', 'city', 'country_id', 'state_id', 'email_from', - 'phone', 'fax', 'mobile' - ] - message = [] - - for field_name in field_names: - field_definition = lead_proxy._columns[field_name] - value = None - - if field_definition._type == 'selection': - if hasattr(field_definition.selection, '__call__'): - key = field_definition.selection(lead_proxy, cr, uid, context=context) - else: - key = field.definition.selection - value = dict(key).get(lead[field_name], lead[field_name]) - elif field_definition._type == 'many2one': - if lead[field_name]: - value = lead[field_name].name_get()[0][1] - else: - value = lead[field_name] - - message.append("%s: %s" % (field_definition.string, value or '')) - + + if lead.type == 'lead': + field_names = [ + 'partner_name', 'title', 'function_name', 'street', 'street2', + 'zip', 'city', 'country_id', 'state_id', 'email_from', + 'phone', 'fax', 'mobile' + ] + + for field_name in field_names: + print field_name + field_definition = lead_proxy._columns[field_name] + value = None + + if field_definition._type == 'selection': + if hasattr(field_definition.selection, '__call__'): + key = field_definition.selection(lead_proxy, cr, uid, context=context) + else: + key = field.definition.selection + value = dict(key).get(lead[field_name], lead[field_name]) + elif field_definition._type == 'many2one': + print '>>>>>>>>>>>', lead[field_name], field_name + if lead[field_name]: + value = lead[field_name].name_get()[0][1] + else: + value = lead[field_name] + + message.append("%s: %s" % (field_definition.string, value or '')) + elif lead.type == 'opportunity': + pa = lead.partner_address_id + message = [ + "Partner: %s" % (lead.partner_id.name_get()[0][1]), + "Contact: %s" % (pa.name or ''), + "Title: %s" % (pa.title or ''), + "Function: %s" % (pa.function and pa.function.name_get()[0][1] or ''), + "Street: %s" % (pa.street or ''), + "Street2: %s" % (pa.street2 or ''), + "Zip: %s" % (pa.zip or ''), + "City: %s" % (pa.city or ''), + "Country: %s" % (pa.country_id and pa.country_id.name_get()[0][1] or ''), + "State: %s" % (pa.state_id and pa.state_id.name_get()[0][1] or ''), + "Email: %s" % (pa.email or ''), + "Phone: %s" % (pa.phone or ''), + "Fax: %s" % (pa.fax or ''), + "Mobile: %s" % (pa.mobile or ''), + ] + user = self.pool.get('res.users').browse(cr, uid, uid, context=context) email_from = '' if user.address_id and user.address_id.email: @@ -150,7 +171,7 @@ class crm_lead_forward_to_partner(osv.osv_memory): res = { 'email_from' : email_from, - 'subject' : '[Lead-Forward:%06d] %s' % (lead.id, lead.name), + 'subject' : '[%s-Forward:%06d] %s' % (lead.type.title(), lead.id, lead.name), 'message' : "\n".join(message + ['---']), } @@ -158,128 +179,4 @@ class crm_lead_forward_to_partner(osv.osv_memory): crm_lead_forward_to_partner() -class crm_opportunity_forward_to_partner(osv.osv_memory): - _name = 'crm.opportunity.forward.to.partner' - - _columns = { - 'partner_id' : fields.many2one('res.partner', 'Partner'), - 'address_id' : fields.many2one('res.partner.address', 'Address'), - 'email_from' : fields.char('From', required=True, size=128), - 'email_to' : fields.char('To', required=True, size=128), - 'subject' : fields.char('Subject', required=True, size=128), - 'message' : fields.text('Message', required=True), - } - - def on_change_partner(self, cr, uid, ids, partner_id): - return { - 'domain' : { - 'address_id' : partner_id and "[('partner_id', '=', partner_id)]" or "[]", - } - } - - def on_change_address(self, cr, uid, ids, address_id): - email = '' - if address_id: - email = self.pool.get('res.partner.address').browse(cr, uid, address_id).email - - return { - 'value' : { - 'email_to' : email, - } - } - - def action_cancel(self, cr, uid, ids, context=None): - return {'type' : 'ir.actions.act_window_close'} - - def action_forward(self, cr, uid, ids, context=None): - """ - Forward the opportunity to a partner - """ - if context is None: - context = {} - - res_id = context.get('active_id', False) - - if not res_id: - return {} - - this = self.browse(cr, uid, ids[0], context=context) - - hist_obj = self.pool.get('crm.case.history') - smtp_pool = self.pool.get('email.smtpclient') - case_pool = self.pool.get('crm.opportunity') - case = case_pool.browse(cr, uid, res_id, context=context) - - emails = [this.email_to] - body = case_pool.format_body(this.message) - email_from = this.email_from or False - case_pool._history(cr, uid, [case], _('Forward'), history=True, email=this.email_to, details=body, email_from=email_from) - - flag = False - if case.section_id and case.section_id.server_id: - flag = smtp_pool.send_email( - cr=cr, - uid=uid, - server_id=case.section_id.server_id.id, - emailto=emails, - subject=this.subject, - body="
%s" % body, - ) - else: - flag = tools.email_send( - email_from, - emails, - this.subject, - body, - ) - - return {} - - def default_get(self, cr, uid, fields, context=None): - """ - This function gets default values - """ - if context is None: - context = {} - - active_ids = context.get('active_ids') - if not active_ids: - return {} - - opportunity_proxy = self.pool.get('crm.opportunity') - - opportunity = opportunity_proxy.browse(cr, uid, active_ids[0], context=context) - - pa = opportunity.partner_address_id - message = [ - "Partner: %s" % (opportunity.partner_id.name_get()[0][1]), - "Contact: %s" % (pa.name), - "Title: %s" % (pa.title), - "Function: %s" % (pa.function and pa.function.name_get()[0][1] or ''), - "Street: %s" % (pa.street), - "Street2: %s" % (pa.street2), - "Zip: %s" % (pa.zip), - "City: %s" % (pa.city), - "Country: %s" % (pa.country_id and pa.country_id.name_get()[0][1] or ''), - "State: %s" % (pa.state_id and pa.state_id.name_get()[0][1] or ''), - "Email: %s" % (pa.email), - "Phone: %s" % (pa.phone), - "Fax: %s" % (pa.fax), - "Mobile: %s" % (pa.mobile), - ] - - user = self.pool.get('res.users').browse(cr, uid, uid, context=context) - email_from = '' - if user.address_id and user.address_id.email: - email_from = "%s <%s>" % (user.name, user.address_id.email) - - res = { - 'email_from' : email_from, - 'subject' : '[Opportunity-Forward:%06d] %s' % (opportunity.id, opportunity.name), - 'message' : "\n".join(message + ['---']), - } - - return res - -crm_opportunity_forward_to_partner() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/crm/wizard/crm_forward_to_partner_view.xml b/addons/crm/wizard/crm_forward_to_partner_view.xml index 8f238333a29..0bf04ac15d0 100644 --- a/addons/crm/wizard/crm_forward_to_partner_view.xml +++ b/addons/crm/wizard/crm_forward_to_partner_view.xml @@ -8,16 +8,17 @@