[FIX] crm_partner_assign use email_template

bzr revid: al@openerp.com-20130312002934-4j84nb0dhcwayw9f
This commit is contained in:
Antony Lesuisse 2013-03-12 01:29:34 +01:00
parent 1d3c577e33
commit 6204bc28f0
5 changed files with 75 additions and 69 deletions

View File

@ -19,7 +19,7 @@
#
##############################################################################
import partner_geo_assign
import crm_partner_assign
import wizard
import report

View File

@ -44,6 +44,7 @@ You can also use the geolocalization without using the GPS coordinates.
'res_partner_view.xml',
'wizard/crm_forward_to_partner_view.xml',
'crm_lead_view.xml',
'crm_partner_assign_data.xml',
'report/crm_lead_report_view.xml',
'report/crm_partner_report_view.xml',
],

View File

@ -71,7 +71,6 @@ class res_partner_grade(osv.osv):
_defaults = {
'active': lambda *args: 1
}
res_partner_grade()
class res_partner_activation(osv.osv):
_name = 'res.partner.activation'
@ -82,7 +81,6 @@ class res_partner_activation(osv.osv):
'name' : fields.char('Name', size=32, required=True),
}
res_partner_activation()
class res_partner(osv.osv):
_inherit = "res.partner"
@ -120,7 +118,6 @@ class res_partner(osv.osv):
'date_localization': fields.date.context_today(self,cr,uid,context=context)
}, context=context)
return True
res_partner()
class crm_lead(osv.osv):
_inherit = "crm.lead"
@ -261,7 +258,7 @@ class crm_lead(osv.osv):
res_partner_ids[lead.id] = partner_id
break
return res_partner_ids
crm_lead()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,44 @@
<?xml version="1.0" encoding='UTF-8'?>
<openerp>
<data>
<record id="crm_partner_assign_email_template" model="email.template">
<field name="name">Lead forward</field>
<field name="email_from"></field>
<field name="subject">Fwd: Lead: ${object.name}</field>
<field name="email_to"></field>
<field name="lang"></field>
<field name="model_id" ref="crm.model_crm_lead"/>
<field name="auto_delete" eval="True"/>
<field name="body_html"><![CDATA[
Hello ${object.partner_assigned_id.name},
<p>
Here is a lead that might interrest you.
</p>
<p>
Please keep me informed about your actions about it so that i can keep an
accurate follow-up of it and help you in the sale cycle.
</p>
<p>
Your account manager,<br/>
${object.user_id.name},<br/>
${object.user_id.email}
</p>
<p>
${ctx["mail_body"] | safe}
</p>
% if ctx["history_mode"] in ('whole'):
% for message in object.message_ids:
---- Original Message (${message.date or ''}) ----<br/>
${message.body | safe}
% endfor
% endif
% if ctx['history_mode'] == 'latest':
---- Original Message (${object.message_ids[0].date or ''}) ----<br/>
${object.message_ids[0].body | safe}
% endif
]]></field>
</record>
</data>
</openerp>

View File

@ -29,18 +29,6 @@ class crm_lead_forward_to_partner(osv.TransientModel):
_name = 'crm.lead.forward.to.partner'
_inherit = "mail.compose.message"
def default_get(self, cr, uid, fields, context=None):
if context is None:
context = {}
# set as comment, perform overrided document-like action that calls get_record_data
old_mode = context.get('default_composition_mode', 'forward')
context['default_composition_mode'] = 'comment'
res = super(crm_lead_forward_to_partner, self).default_get(cr, uid, fields, context=context)
# back to forward mode
context['default_composition_mode'] = old_mode
res['composition_mode'] = context['default_composition_mode']
return res
def _get_composition_mode_selection(self, cr, uid, context=None):
composition_mode = super(crm_lead_forward_to_partner, self)._get_composition_mode_selection(cr, uid, context=context)
composition_mode.append(('forward', 'Forward'))
@ -53,37 +41,54 @@ class crm_lead_forward_to_partner(osv.TransientModel):
'attachment_ids': fields.many2many('ir.attachment',
'lead_forward_to_partner_attachment_rel',
'wizard_id', 'attachment_id', 'Attachments'),
'history_mode': fields.selection([('info', 'Case Information'),
'history_mode': fields.selection([('info', 'Internal notes'),
('latest', 'Latest email'), ('whole', 'Whole Story')],
'Send history', required=True),
}
_defaults = {
'history_mode': 'latest',
'history_mode': 'whole',
}
def default_get(self, cr, uid, fields, context=None):
if context is None:
context = {}
# set as comment, perform overrided document-like action that calls get_record_data
old_mode = context.get('default_composition_mode', 'forward')
context['default_composition_mode'] = 'comment'
res = super(crm_lead_forward_to_partner, self).default_get(cr, uid, fields, context=context)
# back to forward mode
context['default_composition_mode'] = old_mode
res['composition_mode'] = context['default_composition_mode']
return res
def get_record_data(self, cr, uid, model, res_id, context=None):
""" Override of mail.compose.message, to add default values coming
form the related lead.
"""
if context is None:
context = {}
res = super(crm_lead_forward_to_partner, self).get_record_data(cr, uid, model, res_id, context=context)
if model not in ('crm.lead') or not res_id:
return res
lead_obj = self.pool.get(model)
lead = lead_obj.browse(cr, uid, res_id, context=context)
subject = '%s: %s - %s' % (_('Fwd'), _('Lead forward'), lead.name)
body = self._get_message_body(cr, uid, lead, 'info', context=context)
res.update({
'subject': subject,
'body': body,
})
template_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'crm_partner_assign', 'crm_partner_assign_email_template')[1]
context['history_mode'] = context.get('history_mode','whole')
mail_body_fields = ['partner_id', 'partner_name', 'title', 'function', 'street', 'street2', 'zip', 'city', 'country_id', 'state_id', 'email_from', 'phone', 'fax', 'mobile', 'description']
lead = self.pool.get('crm.lead').browse(cr, uid, res_id, context=context)
context['mail_body'] = self.pool.get('crm.lead')._mail_body(cr, uid, lead, mail_body_fields, context=context)
template = self.generate_email_for_composer(cr, uid, template_id, res_id, context)
res['subject'] = template['subject']
res['body'] = template['body']
return res
def on_change_history_mode(self, cr, uid, ids, history_mode, model, res_id, context=None):
""" Update body when changing history_mode """
if context is None:
context = {}
if model and model == 'crm.lead' and res_id:
lead = self.pool.get(model).browse(cr, uid, res_id, context=context)
body = self._get_message_body(cr, uid, lead, history_mode, context=context)
context['history_mode'] = history_mode
body = self.get_record_data(cr, uid, 'crm.lead', res_id, context=context)['body']
return {'value': {'body': body}}
def create(self, cr, uid, values, context=None):
@ -115,46 +120,5 @@ class crm_lead_forward_to_partner(osv.TransientModel):
return self.send_mail(cr, uid, ids, context=context)
def _get_info_body(self, cr, uid, lead, context=None):
field_names = []
proxy = self.pool.get(lead._name)
if lead.type == 'opportunity':
field_names += ['partner_id']
field_names += [
'partner_name' , 'title', 'function', 'street', 'street2',
'zip', 'city', 'country_id', 'state_id', 'email_from',
'phone', 'fax', 'mobile', 'categ_id', 'description',
]
return proxy._mail_body(cr, uid, lead, field_names, context=context)
def _get_message_body(self, cr, uid, lead, history_mode='whole', context=None):
""" This function gets whole communication history and returns as top
posting style
#1: form a body, based on the lead
#2: append to the body the communication history, based on the
history_mode parameter
- info: Forward the case information
- latest: Send the latest history
- whole: Send the whole history
:param lead: browse_record on crm.lead
:param history_mode: 'whole' or 'latest'
"""
mail_message = self.pool.get('mail.message')
body = self._get_info_body(cr, uid, lead, context=context)
if history_mode not in ('whole', 'latest'):
return body or ''
for message in lead.message_ids:
header = '-------- Original Message --------'
sentdate = 'Date: %s' % (message.date or '')
desc = '\n%s'%(message.body)
original = [header, sentdate, desc, '\n']
original = '\n'.join(original)
body += original
if history_mode == 'latest':
break
return body or ''
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: