From 54bb1650967416b0532d9e49608397628badedf7 Mon Sep 17 00:00:00 2001 From: Jeremy Kersten Date: Tue, 2 Sep 2014 09:48:50 +0200 Subject: [PATCH] [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. --- addons/crm/wizard/crm_lead_to_opportunity.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/addons/crm/wizard/crm_lead_to_opportunity.py b/addons/crm/wizard/crm_lead_to_opportunity.py index e8372add327..235434410fd 100644 --- a/addons/crm/wizard/crm_lead_to_opportunity.py +++ b/addons/crm/wizard/crm_lead_to_opportunity.py @@ -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)