[IMP] crm: use partner's phone and email on the lead

When available, use the phone and email on the partner
When creating a partner, use the information already available

Task id: 35420

Closes #18660
This commit is contained in:
Kinjal Mehta
2018-02-05 16:33:57 +05:30
committed by Martin Trigaux
parent 41a9eeff1a
commit 4b78e71806
4 changed files with 51 additions and 6 deletions
+2 -1
View File
@@ -111,6 +111,7 @@ class Lead(models.Model):
color = fields.Integer('Color Index', default=0)
partner_address_name = fields.Char('Partner Contact Name', related='partner_id.name', readonly=True)
partner_address_email = fields.Char('Partner Contact Email', related='partner_id.email', readonly=True)
partner_address_phone = fields.Char('Partner Contact Phone', related='partner_id.phone', readonly=True)
company_currency = fields.Many2one(string='Currency', related='company_id.currency_id', readonly=True, relation="res.currency")
user_email = fields.Char('User Email', related='user_id.email', readonly=True)
user_login = fields.Char('User Login', related='user_id.login', readonly=True)
@@ -1218,7 +1219,7 @@ class Lead(models.Model):
emails = email_re.findall(partner_info['full_name'] or '')
email = emails and emails[0] or ''
if email and self.email_from and email.lower() == self.email_from.lower():
partner_info['full_name'] = '%s <%s>' % (self.partner_name or self.contact_name, email)
partner_info['full_name'] = '%s <%s>' % (self.contact_name or self.partner_name, email)
break
return result
+21
View File
@@ -14,6 +14,27 @@ class Partner(models.Model):
opportunity_count = fields.Integer("Opportunity", compute='_compute_opportunity_count')
meeting_count = fields.Integer("# Meetings", compute='_compute_meeting_count')
@api.model
def default_get(self, fields):
rec = super(Partner, self).default_get(fields)
active_model = self.env.context.get('active_model')
if active_model == 'crm.lead':
lead = self.env[active_model].browse(self.env.context.get('active_id'))
rec.update(
phone=lead.phone,
mobile=lead.mobile,
function=lead.function,
title=lead.title.id,
website=lead.website,
street=lead.street,
street2=lead.street2,
city=lead.city,
state_id=lead.state_id.id,
country_id=lead.country_id.id,
zip=lead.zip,
)
return rec
@api.multi
def _compute_opportunity_count(self):
for partner in self:
+26 -5
View File
@@ -253,6 +253,13 @@
<field name="partner_id" domain="[('customer', '=', True)]" context="{'search_default_customer': 1}"/>
<field name="email_from" invisible="1"/>
<field name="phone" invisible="1"/>
<field name="partner_name" invisible="1"/>
<field name="street" invisible="1"/>
<field name="street2" invisible="1"/>
<field name="city" invisible="1"/>
<field name="state_id" invisible="1"/>
<field name="zip" invisible="1"/>
<field name="country_id" invisible="1"/>
<field name="company_id" invisible="1"/>
<field name="company_currency" invisible="1"/>
<label for="planned_revenue"/>
@@ -497,8 +504,22 @@
'default_phone': phone, 'default_mobile': mobile,
'default_email': email_from,
'default_user_id': user_id, 'default_team_id': team_id, 'default_website': website}"/>
<field name="email_from" string="Email" widget="email"/>
<field name="phone" widget="phone"/>
<field name="partner_address_email"
attrs="{'invisible': [('partner_address_email', '==', False)]}"
widget="email"
string="Email"/>
<field name="email_from"
attrs="{'invisible': [('partner_address_email', '!=', False)]}"
string="Email"
widget="email"/>
<field name="partner_address_phone"
attrs="{'invisible': [('partner_address_phone', '==', False)]}"
readonly="1"
widget="phone"
string="Phone"/>
<field name="phone"
attrs="{'invisible': [('partner_address_phone', '!=', False)]}"
widget="phone"/>
</group>
<group>
@@ -521,9 +542,9 @@
<page string="Internal Notes">
<field name="description"/>
</page>
<page name="lead" string="Contact Information">
<page name="lead" string="Followup">
<group>
<group>
<group string="Initial Contact Information">
<field name="partner_name"/>
<label for="street" string="Address"/>
<div class="o_address_format">
@@ -537,7 +558,7 @@
<field name="website" widget="url" placeholder="e.g. www.odoo.com"/>
</group>
<group>
<group class="mt48">
<label for="contact_name"/>
<div class="o_row">
<field name="contact_name"/>
@@ -149,6 +149,8 @@ var ChatterComposer = composer.BasicComposer.extend({
res_model: 'res.partner',
res_id: partner_id,
context: {
active_model: self.model,
active_id: self.context.default_res_id,
force_email: true,
ref: "compound_context",
default_name: parsed_email[0],