diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py index fe48c9cc30c..e72c7dca81f 100644 --- a/addons/crm/crm_lead.py +++ b/addons/crm/crm_lead.py @@ -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