[FIX] find partner with email or opp with email
bzr revid: tfr@openerp.com-20110406085252-6cddo7mke2ijr3ao
This commit is contained in:
parent
609d962b97
commit
06bf22682c
|
@ -22,6 +22,7 @@
|
||||||
from osv import osv, fields
|
from osv import osv, fields
|
||||||
from tools.translate import _
|
from tools.translate import _
|
||||||
import tools
|
import tools
|
||||||
|
import re
|
||||||
|
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
@ -54,6 +55,8 @@ class crm_lead2opportunity_partner(osv.osv_memory):
|
||||||
partner_id = False
|
partner_id = False
|
||||||
for lead in lead_obj.browse(cr, uid, opportunities, context=context):
|
for lead in lead_obj.browse(cr, uid, opportunities, context=context):
|
||||||
partner_id = lead.partner_id and lead.partner_id.id or False
|
partner_id = lead.partner_id and lead.partner_id.id or False
|
||||||
|
email = re.findall(r'([^ ,<@]+@[^> ,]+)', lead.email_from or '')
|
||||||
|
email = map(lambda x: "'" + x + "'", email)
|
||||||
|
|
||||||
if not partner_id and res.get('partner_id'):
|
if not partner_id and res.get('partner_id'):
|
||||||
partner_id = res.get('partner_id')
|
partner_id = res.get('partner_id')
|
||||||
|
@ -63,6 +66,18 @@ class crm_lead2opportunity_partner(osv.osv_memory):
|
||||||
ids = lead_obj.search(cr, uid, [('partner_id', '=', partner_id), ('type', '=', 'opportunity'), '!', ('state', 'in', ['done', 'cancel'])])
|
ids = lead_obj.search(cr, uid, [('partner_id', '=', partner_id), ('type', '=', 'opportunity'), '!', ('state', 'in', ['done', 'cancel'])])
|
||||||
if ids:
|
if ids:
|
||||||
opportunities.append(ids[0])
|
opportunities.append(ids[0])
|
||||||
|
|
||||||
|
|
||||||
|
if not partner_id:
|
||||||
|
label = False
|
||||||
|
opp_ids = []
|
||||||
|
if email:
|
||||||
|
# Find email of existing opportunity matches the email_from of the lead
|
||||||
|
cr.execute("""select id from crm_lead where type='opportunity' and
|
||||||
|
substring(email_from from '([^ ,<@]+@[^> ,]+)') in (%s)""" % (','.join(email)))
|
||||||
|
ids = map(lambda x:x[0], cr.fetchall())
|
||||||
|
if ids:
|
||||||
|
opportunities.append(ids[0])
|
||||||
|
|
||||||
if 'action' in fields:
|
if 'action' in fields:
|
||||||
res.update({'action' : partner_id and 'exist' or 'create'})
|
res.update({'action' : partner_id and 'exist' or 'create'})
|
||||||
|
@ -84,7 +99,6 @@ class crm_lead2opportunity_partner(osv.osv_memory):
|
||||||
@param uid: the current user’s ID for security checks,
|
@param uid: the current user’s ID for security checks,
|
||||||
@param fields: List of fields for default value
|
@param fields: List of fields for default value
|
||||||
@param context: A standard dictionary for contextual values
|
@param context: A standard dictionary for contextual values
|
||||||
|
|
||||||
"""
|
"""
|
||||||
if context is None:
|
if context is None:
|
||||||
context = {}
|
context = {}
|
||||||
|
@ -92,8 +106,7 @@ class crm_lead2opportunity_partner(osv.osv_memory):
|
||||||
|
|
||||||
for lead in lead_obj.browse(cr, uid, context.get('active_ids', []), context=context):
|
for lead in lead_obj.browse(cr, uid, context.get('active_ids', []), context=context):
|
||||||
if lead.state in ['done', 'cancel']:
|
if lead.state in ['done', 'cancel']:
|
||||||
raise osv.except_osv(_("Warning !"), _("Closed/Cancelled \
|
raise osv.except_osv(_("Warning !"), _("Closed/Cancelled Leads Could not convert into Opportunity"))
|
||||||
Leads Could not convert into Opportunity"))
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def _convert(self, cr, uid, ids, lead, partner_id, stage_ids, context=None):
|
def _convert(self, cr, uid, ids, lead, partner_id, stage_ids, context=None):
|
||||||
|
|
|
@ -85,15 +85,15 @@ class crm_lead2partner(osv.osv_memory):
|
||||||
substring(email from '([^ ,<@]+@[^> ,]+)') in (%s)""" % (','.join(email)))
|
substring(email from '([^ ,<@]+@[^> ,]+)') in (%s)""" % (','.join(email)))
|
||||||
address_ids = map(lambda x: x[0], cr.fetchall())
|
address_ids = map(lambda x: x[0], cr.fetchall())
|
||||||
if address_ids:
|
if address_ids:
|
||||||
addresses = contact_obj.browse(cr, uid, address_ids)
|
partner_ids = partner_obj.search(cr, uid, [('address', 'in', address_ids)], context=context)
|
||||||
partner_ids = addresses and [addresses[0].partner_id.id] or False
|
|
||||||
|
|
||||||
# Find partner name that matches the name of the lead
|
# Find partner name that matches the name of the lead
|
||||||
if not partner_ids and lead.partner_name:
|
if not partner_ids and lead.partner_name:
|
||||||
partner_ids = partner_obj.search(cr, uid, [('name', '=', lead.partner_name)], context=context)
|
partner_ids = partner_obj.search(cr, uid, [('name', '=', lead.partner_name)], context=context)
|
||||||
|
|
||||||
|
|
||||||
partner_id = partner_ids and partner_ids[0] or False
|
partner_id = partner_ids and partner_ids[0] or False
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if 'partner_id' in fields:
|
if 'partner_id' in fields:
|
||||||
res.update({'partner_id': partner_id})
|
res.update({'partner_id': partner_id})
|
||||||
|
|
Loading…
Reference in New Issue