[FIX] crm: lead_to_opportunities, check that current active_id has not been already merged by another previous active_id. Else, we was trying to browse an lead which was already deleted by a previous merge in the same loop.

This commit is contained in:
Jeremy Kersten 2014-09-02 09:48:50 +02:00
parent 9c2f093611
commit 54bb165096
1 changed files with 9 additions and 6 deletions

View File

@ -266,12 +266,15 @@ class crm_lead2opportunity_mass_convert(osv.osv_memory):
if data.name == 'convert' and data.deduplicate:
merged_lead_ids = []
remaining_lead_ids = []
for lead in self.pool['crm.lead'].browse(cr, uid, context.get('active_ids', []), context=context):
duplicated_lead_ids = self._get_duplicated_leads(cr, uid, lead.partner_id.id, lead.partner_id and lead.partner_id.email or lead.email_from)
if len(duplicated_lead_ids) > 1:
lead_id = self.pool.get('crm.lead').merge_opportunity(cr, uid, duplicated_lead_ids, False, False, context=context)
merged_lead_ids.extend(duplicated_lead_ids)
remaining_lead_ids.append(lead_id)
lead_selected = context.get('active_ids', [])
for lead_id in lead_selected:
if lead_id not in merged_lead_ids:
lead = self.pool['crm.lead'].browse(cr, uid, lead_id, context=context)
duplicated_lead_ids = self._get_duplicated_leads(cr, uid, lead.partner_id.id, lead.partner_id and lead.partner_id.email or lead.email_from)
if len(duplicated_lead_ids) > 1:
lead_id = self.pool.get('crm.lead').merge_opportunity(cr, uid, duplicated_lead_ids, False, False, context=context)
merged_lead_ids.extend(duplicated_lead_ids)
remaining_lead_ids.append(lead_id)
active_ids = set(context.get('active_ids', []))
active_ids = active_ids.difference(merged_lead_ids)
active_ids = active_ids.union(remaining_lead_ids)