This bridge and optional module add a button on the lead form view to allow users to create issues from leads. The lead is distroyed during the operation. All communication history is kept and transferred to the new issue. bzr revid: tde@openerp.com-20140304170544-kp624l6vhj0s1rwc
60 lines
2.3 KiB
Python
60 lines
2.3 KiB
Python
|
|
from openerp.osv import osv, fields
|
|
|
|
|
|
class crm_lead_to_project_issue_wizard(osv.TransientModel):
|
|
""" wizard to convert a Lead into a Project Issue and move the Mail Thread """
|
|
_name = "crm.lead2projectissue.wizard"
|
|
_inherit = 'crm.partner.binding'
|
|
|
|
_columns = {
|
|
"lead_id": fields.many2one("crm.lead", "Lead", domain=[("type", "=", "lead")]),
|
|
"project_id": fields.many2one("project.project", "Project", domain=[("use_issues", "=", True)])
|
|
}
|
|
|
|
_defaults = {
|
|
"lead_id": lambda self, cr, uid, context=None: context.get('active_id')
|
|
}
|
|
|
|
def action_lead_to_project_issue(self, cr, uid, ids, context=None):
|
|
# get the wizards and models
|
|
wizards = self.browse(cr, uid, ids, context=context)
|
|
Lead = self.pool["crm.lead"]
|
|
Issue = self.pool["project.issue"]
|
|
|
|
for wizard in wizards:
|
|
# get the lead to transform
|
|
lead = wizard.lead_id
|
|
|
|
partner = self._find_matching_partner(cr, uid, context=context)
|
|
if not partner and (lead.partner_name or lead.contact_name):
|
|
partner_ids = Lead.handle_partner_assignation(cr, uid, [lead.id], context=context)
|
|
partner = partner_ids[lead.id]
|
|
|
|
# create new project.issue
|
|
vals = {
|
|
"name": lead.name,
|
|
"description": lead.description,
|
|
"email_from": lead.email_from,
|
|
"project_id": wizard.project_id.id,
|
|
"partner_id": partner,
|
|
"user_id": None
|
|
}
|
|
issue_id = Issue.create(cr, uid, vals, context=None)
|
|
# move the mail thread
|
|
Lead.message_change_thread(cr, uid, lead.id, issue_id, "project.issue", context=context)
|
|
# delete the lead
|
|
Lead.unlink(cr, uid, [lead.id], context=None)
|
|
# return the action to go to the form view of the new Issue
|
|
view_id = self.pool.get('ir.ui.view').search(cr, uid, [('model', '=', 'project.issue'), ('name', '=', 'project_issue_form_view')])
|
|
return {
|
|
'name': 'Issue created',
|
|
'view_type': 'form',
|
|
'view_mode': 'form',
|
|
'view_id': view_id,
|
|
'res_model': 'project.issue',
|
|
'type': 'ir.actions.act_window',
|
|
'res_id': issue_id,
|
|
'context': context
|
|
}
|