[FIX]crm: crm lead/opp merge, if merged stage not in sales team and same type (lead...
authordle@openerp.com <>
Tue, 2 Apr 2013 12:58:09 +0000 (14:58 +0200)
committerdle@openerp.com <>
Tue, 2 Apr 2013 12:58:09 +0000 (14:58 +0200)
bzr revid: dle@openerp.com-20130402125809-4qzwe1nm0nkrx283

addons/crm/crm_lead.py

index fe48c9c..e72c7dc 100644 (file)
@@ -632,7 +632,7 @@ class crm_lead(base_stage, format_address, osv.osv):
             sequence = -1
             if opportunity.stage_id and opportunity.stage_id.state != 'cancel':
                 sequence = opportunity.stage_id.sequence
-            sequenced_opps.append(((int(sequence != -1 and opportunity.type == 'opportunity'), sequence, -opportunity.id), opportunity))
+            sequenced_opps.append(((int(sequence != 1 and opportunity.type == 'opportunity'), sequence, -opportunity.id), opportunity))
 
         sequenced_opps.sort(reverse=True)
         opportunities = map(itemgetter(1), sequenced_opps)
@@ -654,11 +654,10 @@ class crm_lead(base_stage, format_address, osv.osv):
         opportunities.extend(opportunities_rest)
         self._merge_notify(cr, uid, highest, opportunities, context=context)
         # Check if the stage is in the stages of the sales team. If not, assign the stage with the lowest sequence
-        if merged_data.get('type') == 'opportunity' and merged_data.get('section_id'):
-            section_stages = self.pool.get('crm.case.section').read(cr, uid, merged_data['section_id'], ['stage_ids'], context=context)
-            if merged_data.get('stage_id') not in section_stages['stage_ids']:
-                stages_sequences = self.pool.get('crm.case.stage').search(cr, uid, [('id','in',section_stages['stage_ids'])], order='sequence', limit=1, context=context)
-                merged_data['stage_id'] = stages_sequences and stages_sequences[0] or False
+        if merged_data.get('section_id'):
+            section_stage_ids = self.pool.get('crm.case.stage').search(cr, uid, [('section_ids', 'in', merged_data['section_id']), ('type', '=', merged_data.get('type'))], order='sequence', context=context)
+            if merged_data.get('stage_id') not in section_stage_ids:
+                merged_data['stage_id'] = section_stage_ids and section_stage_ids[0] or False
         # Write merged data into first opportunity
         self.write(cr, uid, [highest.id], merged_data, context=context)
         # Delete tail opportunities