28
28
from tools.translate import _
30
class lead2opportunity(wizard.interface):
30
class partner_create(wizard.interface):
32
case_form = """<?xml version="1.0"?>
33
<form string="Create a Partner">
34
<label string="Are you sure you want to create a partner based on this lead ?" colspan="4"/>
35
<label string="You may have to verify that this partner does not exist already." colspan="4"/>
36
<!--field name="close"/-->
40
'close': {'type':'boolean', 'string':'Close Lead'}
32
43
partner_form = """<?xml version="1.0"?>
33
<form string="Convert To Partner">
44
<form string="Create a Partner">
34
45
<label string="Are you sure you want to create a partner based on this lead ?" colspan="4"/>
35
46
<label string="You may have to verify that this partner does not exist already." colspan="4"/>
37
48
<field name="action"/>
38
<group attrs="{'invisible':[('action','=','create')]}">
39
<field name="partner_id" attrs="{'required':[('action','=','exist')]}"/>
49
<group attrs="{'invisible':[('action','!=','exist')]}">
50
<field name="partner_id"/>
44
55
'action': {'type':'selection',
45
56
'selection':[('exist','Link to an existing partner'),('create','Create a new partner')],
46
'string':'Action', 'required':True, 'default': lambda *a:'create'},
57
'string':'Action', 'required':True, 'default': lambda *a:'exist'},
47
58
'partner_id' : {'type':'many2one', 'relation':'res.partner', 'string':'Partner'},
61
def _selectPartner(self, cr, uid, data, context):
62
pool = pooler.get_pool(cr.dbname)
63
case_obj = pool.get('crm.lead')
64
partner_obj = pool.get('res.partner')
65
contact_obj = pool.get('res.partner.address')
66
for case in case_obj.browse(cr, uid, data['ids']):
68
raise wizard.except_wizard(_('Warning !'),
69
_('A partner is already defined on this lead.'))
71
partner_ids = partner_obj.search(cr, uid, [('name', '=', case.partner_name or case.name)])
72
if not partner_ids and case.email_from:
73
address_ids = contact_obj.search(cr, uid, [('email', '=', case.email_from)])
75
addresses = contact_obj.browse(cr, uid, address_ids)
76
partner_ids = addresses and [addresses[0].partner_id.id] or False
78
partner_id = partner_ids and partner_ids[0] or False
79
vals = {'partner_id': partner_id}
81
vals['action'] = 'create'
84
def _create_partner(self, cr, uid, data, context):
85
pool = pooler.get_pool(cr.dbname)
86
case_obj = pool.get('crm.lead')
87
partner_obj = pool.get('res.partner')
88
contact_obj = pool.get('res.partner.address')
92
for case in case_obj.browse(cr, uid, data['ids']):
93
if data['form']['action'] == 'create':
94
partner_id = partner_obj.create(cr, uid, {
95
'name': case.partner_name or case.name,
96
'user_id': case.user_id.id,
97
'comment': case.description,
99
contact_id = contact_obj.create(cr, uid, {
100
'partner_id': partner_id,
103
'mobile': case.mobile,
104
'email': case.email_from,
107
'function': case.function and case.function.id or False,
108
'street': case.street,
109
'street2': case.street2,
112
'country_id': case.country_id and case.country_id.id or False,
113
'state_id': case.state_id and case.state_id.id or False,
117
if data['form']['partner_id']:
118
partner = partner_obj.browse(cr,uid,data['form']['partner_id'])
119
partner_id = partner.id
120
contact_id = partner.address and partner.address[0].id
122
partner_ids.append(partner_id)
125
vals.update({'partner_id': partner_id})
127
vals.update({'partner_address_id': contact_id})
128
case_obj.write(cr, uid, [case.id], vals)
131
def _make_partner(self, cr, uid, data, context):
132
pool = pooler.get_pool(cr.dbname)
133
partner_ids = self._create_partner(cr, uid, data, context)
134
mod_obj = pool.get('ir.model.data')
135
result = mod_obj._get_id(cr, uid, 'base', 'view_res_partner_filter')
136
res = mod_obj.read(cr, uid, result, ['res_id'])
140
'view_mode': 'form,tree',
141
'res_model': 'res.partner',
142
'res_id': partner_ids and int(partner_ids[0]) or False,
144
'type': 'ir.actions.act_window',
145
'search_view_id': res['res_id']
151
'actions': [_selectPartner],
152
'result': {'type': 'form', 'arch': case_form, 'fields': case_fields,
153
'state' : [('end', 'Cancel', 'gtk-cancel'),('create_partner', 'Create Partner', 'gtk-go-forward')]}
157
'result': {'type': 'form', 'arch': partner_form, 'fields': partner_fields,
158
'state' : [('end', 'Cancel', 'gtk-cancel'),('create', 'Continue', 'gtk-go-forward')]}
162
'result': {'type': 'action', 'action': _make_partner, 'state': 'end'}
166
partner_create('crm.lead.partner_create')
169
class lead2opportunity(partner_create):
50
171
case_form = """<?xml version="1.0"?>
51
172
<form string="Convert To Opportunity">
151
266
def _makePartner(self, cr, uid, data, context):
152
pool = pooler.get_pool(cr.dbname)
153
lead_case_obj = pool.get('crm.lead')
154
partner_obj = pool.get('res.partner')
155
contact_obj = pool.get('res.partner.address')
156
if data['form']['action'] == 'create':
157
for case in lead_case_obj.browse(cr, uid, data['ids']):
158
partner_id = partner_obj.search(cr, uid, [('name', '=', case.partner_name or case.name)])
160
raise wizard.except_wizard(_('Warning !'),_('A partner is already existing with the same name.'))
162
partner_id = partner_obj.create(cr, uid, {
163
'name': case.partner_name or case.name,
164
'user_id': case.user_id.id,
165
'comment': case.description,
167
contact_id = contact_obj.create(cr, uid, {
168
'partner_id': partner_id,
169
'name': case.partner_name2,
170
'phone': case.partner_phone,
171
'mobile': case.partner_mobile,
172
'email': case.email_from
175
partner = partner_obj.browse(cr,uid,data['form']['partner_id'])
176
partner_id = partner.id
177
contact_id = partner.address and partner.address[0].id
179
lead_case_obj.write(cr, uid, data['ids'], {
180
'partner_id': partner_id,
181
'partner_address_id': contact_id
267
partner_ids = self._create_partner(cr, uid, data, context)
210
295
lead2opportunity('crm.lead.opportunity_set')
212
class partner_create(wizard.interface):
214
case_form = """<?xml version="1.0"?>
215
<form string="Convert To Partner">
216
<label string="Are you sure you want to create a partner based on this lead ?" colspan="4"/>
217
<label string="You may have to verify that this partner does not exist already." colspan="4"/>
218
<!--field name="close"/-->
222
'close': {'type':'boolean', 'string':'Close Lead'}
225
def _selectPartner(self, cr, uid, data, context):
226
pool = pooler.get_pool(cr.dbname)
227
case_obj = pool.get('crm.lead')
228
for case in case_obj.browse(cr, uid, data['ids']):
230
raise wizard.except_wizard(_('Warning !'),
231
_('A partner is already defined on this lead.'))
234
def _makeOrder(self, cr, uid, data, context):
235
pool = pooler.get_pool(cr.dbname)
236
mod_obj = pool.get('ir.model.data')
237
result = mod_obj._get_id(cr, uid, 'base', 'view_res_partner_filter')
238
res = mod_obj.read(cr, uid, result, ['res_id'])
239
case_obj = pool.get('crm.lead')
240
partner_obj = pool.get('res.partner')
241
contact_obj = pool.get('res.partner.address')
242
for case in case_obj.browse(cr, uid, data['ids']):
243
partner_id = partner_obj.search(cr, uid, [('name', '=', case.partner_name or case.name)])
245
raise wizard.except_wizard(_('Warning !'),_('A partner is already existing with the same name.'))
247
partner_id = partner_obj.create(cr, uid, {
248
'name': case.partner_name or case.name,
249
'user_id': case.user_id.id,
250
'comment': case.description,
252
contact_id = contact_obj.create(cr, uid, {
253
'partner_id': partner_id,
254
'name': case.partner_name2,
255
'phone': case.partner_phone,
256
'mobile': case.partner_mobile,
257
'email': case.email_from
261
case_obj.write(cr, uid, data['ids'], {
262
'partner_id': partner_id,
263
'partner_address_id': contact_id
265
if data['form']['close']:
266
case_obj.case_close(cr, uid, data['ids'])
271
'view_mode': 'form,tree',
272
'res_model': 'res.partner',
273
'res_id': int(partner_id),
275
'type': 'ir.actions.act_window',
276
'search_view_id': res['res_id']
282
'actions': [_selectPartner],
283
'result': {'type': 'form', 'arch': case_form, 'fields': case_fields,
284
'state' : [('end', 'Cancel', 'gtk-cancel'),('confirm', 'Create Partner', 'gtk-go-forward')]}
288
'result': {'type': 'action', 'action': _makeOrder, 'state': 'end'}
292
partner_create('crm.lead.partner_create')
294
297
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: