diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py
index 4ae7b1dd344..0ad779d403f 100644
--- a/addons/crm/crm_lead.py
+++ b/addons/crm/crm_lead.py
@@ -236,12 +236,13 @@ class crm_lead(osv.osv, crm_case):
context.update({'active_ids': ids})
data_obj = self.pool.get('ir.model.data')
- data_id = data_obj._get_id(cr, uid, 'crm', 'view_crm_lead2opportunity_create')
+ data_id = data_obj._get_id(cr, uid, 'crm', 'view_crm_lead2opportunity_action')
value = {}
view_id = False
if data_id:
view_id = data_obj.browse(cr, uid, data_id, context=context).res_id
+
for case in self.browse(cr, uid, ids):
context.update({'active_id': case.id})
if not case.partner_id:
@@ -267,7 +268,7 @@ class crm_lead(osv.osv, crm_case):
'name': _('Create Opportunity'),
'view_type': 'form',
'view_mode': 'form,tree',
- 'res_model': 'crm.lead2opportunity',
+ 'res_model': 'crm.lead2opportunity.action',
'view_id': False,
'context': context,
'views': [(view_id, 'form')],
diff --git a/addons/crm/crm_opportunity_view.xml b/addons/crm/crm_opportunity_view.xml
index 411ae9ec58d..ba52cf58366 100644
--- a/addons/crm/crm_opportunity_view.xml
+++ b/addons/crm/crm_opportunity_view.xml
@@ -35,7 +35,7 @@
-
diff --git a/addons/crm/wizard/crm_lead_to_opportunity.py b/addons/crm/wizard/crm_lead_to_opportunity.py
index 6ec060e624e..79c833b278c 100644
--- a/addons/crm/wizard/crm_lead_to_opportunity.py
+++ b/addons/crm/wizard/crm_lead_to_opportunity.py
@@ -222,7 +222,7 @@ class crm_lead2opportunity_partner(osv.osv_memory):
res = mod_obj.read(cr, uid, result, ['res_id'])
value = {}
data_obj = self.pool.get('ir.model.data')
- data_id = data_obj._get_id(cr, uid, 'crm', 'view_crm_lead2opportunity_create')
+ data_id = data_obj._get_id(cr, uid, 'crm', 'view_crm_lead2opportunity_action')
view_id = False
if data_id:
view_id = data_obj.browse(cr, uid, data_id, context=context).res_id
@@ -232,7 +232,7 @@ class crm_lead2opportunity_partner(osv.osv_memory):
'name': _('Create Opportunity'),
'view_type': 'form',
'view_mode': 'form,tree',
- 'res_model': 'crm.lead2opportunity',
+ 'res_model': 'crm.lead2opportunity.action',
'view_id': False,
'context': context,
'views': [(view_id, 'form')],
@@ -297,5 +297,68 @@ Leads Could not convert into Opportunity"))
crm_lead2opportunity_partner()
+class crm_lead2opportunity_action(osv.osv_memory):
+ '''
+ Merge with Existing Opportunity or Convert to Opportunity
+ '''
+ _name = 'crm.lead2opportunity.action'
+ _description = 'Convert/Merge Opportunity'
+
+ _columns = {
+ 'name': fields.selection([('convert', 'Convert to Opportunity'), ('merge', 'Merge with existing Opportunity')],'Select Action', required=True),
+
+ }
+
+ _defaults = {
+ 'name': 'convert',
+ }
+
+ def do_action(self, cr, uid, ids, context=None):
+ """
+ This function opens form according to selected Action
+ @param self: The object pointer
+ @param cr: the current row, from the database cursor,
+ @param uid: the current user’s ID for security checks,
+ @param ids: List of Lead to Opportunity IDs
+ @param context: A standard dictionary for contextual values
+ @return : Dictionary value for Opportunity form
+ """
+ value = {}
+ data_obj = self.pool.get('ir.model.data')
+ view_id = False
+ for this in self.browse(cr, uid, ids, context=context):
+ if this.name == 'convert':
+ data_id = data_obj._get_id(cr, uid, 'crm', 'view_crm_lead2opportunity_create')
+ if data_id:
+ view_id = data_obj.browse(cr, uid, data_id, context=context).res_id
+ value = {
+ 'name': _('Create Opportunity'),
+ 'view_type': 'form',
+ 'view_mode': 'form,tree',
+ 'res_model': 'crm.lead2opportunity',
+ 'view_id': False,
+ 'context': context,
+ 'views': [(view_id, 'form')],
+ 'type': 'ir.actions.act_window',
+ 'target': 'new',
+ }
+ elif this.name == 'merge':
+ data_id = data_obj._get_id(cr, uid, 'crm', 'merge_opportunity_form')
+ if data_id:
+ view_id = data_obj.browse(cr, uid, data_id, context=context).res_id
+ value = {
+ 'name': _('Merge with Existing Opportunity'),
+ 'view_type': 'form',
+ 'view_mode': 'form,tree',
+ 'res_model': 'crm.merge.opportunity',
+ 'view_id': False,
+ 'context': context,
+ 'views': [(view_id, 'form')],
+ 'type': 'ir.actions.act_window',
+ 'target': 'new',
+ }
+ return value
+
+crm_lead2opportunity_action()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/crm/wizard/crm_lead_to_opportunity_view.xml b/addons/crm/wizard/crm_lead_to_opportunity_view.xml
index 25d9017c8cb..d41030789b6 100644
--- a/addons/crm/wizard/crm_lead_to_opportunity_view.xml
+++ b/addons/crm/wizard/crm_lead_to_opportunity_view.xml
@@ -3,7 +3,7 @@
-
+
crm.lead2opportunity.create
crm.lead2opportunity
form
@@ -61,5 +61,25 @@
+
+ crm.lead2opportunity.action.form
+ crm.lead2opportunity.action
+ form
+
+
+
+
+
diff --git a/addons/crm/wizard/crm_merge_opportunities.py b/addons/crm/wizard/crm_merge_opportunities.py
index 67a73bf4d13..82463c29cf9 100644
--- a/addons/crm/wizard/crm_merge_opportunities.py
+++ b/addons/crm/wizard/crm_merge_opportunities.py
@@ -42,8 +42,6 @@ class crm_merge_opportunity(osv.osv_memory):
if record_id:
opp_obj = self.pool.get('crm.lead')
opp = opp_obj.browse(cr, uid, record_id, context=context)
- if opp.type != 'opportunity':
- raise osv.except_osv(_('Warning!'), _('Can only perform this Operation for "Opportunities".'))
if not opp.partner_id:
raise osv.except_osv(_('Warning!'), _('Opportunity must have Partner assigned before merging with other Opportunity.'))
#Search for Opportunity for the same partner