summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrpa (Open ERP) <rpa@tinyerp.com>2010-05-03 12:07:00 +0530
committerrpa (Open ERP) <rpa@tinyerp.com>2010-05-03 12:07:00 +0530
commita25cf290ee143129e6b127dc5de43ffcd60b6384 (patch)
tree7ad61a7c7528af3684f7ad7dab6bc34d7738279d
parentfb67b073929a11b87af830ce90d2ca08846ef489 (diff)
[IMP]: crm: Improvement in forward to partner wizard as lead and opportunity are now merged in one object
bzr revid: rpa@tinyerp.com-20100503063700-pzej8pgup125rz5u
-rw-r--r--addons/crm/crm_opportunity_view.xml2
-rw-r--r--addons/crm/security/ir.model.access.csv2
-rw-r--r--addons/crm/wizard/crm_forward_to_partner.py213
-rw-r--r--addons/crm/wizard/crm_forward_to_partner_view.xml44
4 files changed, 64 insertions, 197 deletions
diff --git a/addons/crm/crm_opportunity_view.xml b/addons/crm/crm_opportunity_view.xml
index 8b07b83e2fd..ec41af2f3e4 100644
--- a/addons/crm/crm_opportunity_view.xml
+++ b/addons/crm/crm_opportunity_view.xml
@@ -195,7 +195,7 @@
context="{'mail':'new', 'model': 'crm.lead'}"
icon="gtk-go-forward" type="action" />
<button colspan="2" string="Forward to Partner"
- name="%(crm_opportunity_forward_to_partner_act)d"
+ name="%(crm_lead_forward_to_partner_act)d"
icon="gtk-go-forward" type="action" />
</page>
</notebook>
diff --git a/addons/crm/security/ir.model.access.csv b/addons/crm/security/ir.model.access.csv
index 8dae83790b3..7c8c393b63f 100644
--- a/addons/crm/security/ir.model.access.csv
+++ b/addons/crm/security/ir.model.access.csv
@@ -34,3 +34,5 @@
"access_crm_send_mail","crm.send.mail","model_crm_send_mail","crm.group_crm_user",1,1,1,1
"access_crm_partner2opportunity","crm.partner2opportunity","model_crm_partner2opportunity","crm.group_crm_user",1,1,1,1
"access_crm_lead2opportunity_partner","crm.lead2opportunity.partner","model_crm_lead2opportunity_partner","crm.group_crm_user",1,1,1,1
+"access_crm_installer","crm.installer.rule","model_crm_installer","crm.group_crm_user",1,1,1,1
+"access_crm_lead_forward_to_partner","crm.lead.forward.to.partner","model_crm_lead_forward_to_partner","crm.group_crm_user",2,2,2,2
diff --git a/addons/crm/wizard/crm_forward_to_partner.py b/addons/crm/wizard/crm_forward_to_partner.py
index 413747739c2..fb85794f64a 100644
--- a/addons/crm/wizard/crm_forward_to_partner.py
+++ b/addons/crm/wizard/crm_forward_to_partner.py
@@ -38,22 +38,23 @@ class crm_lead_forward_to_partner(osv.osv_memory):
}
def on_change_partner(self, cr, uid, ids, partner_id):
+ if not partner_id:
+ return {'value' : {'email_to' : False, 'address_id': False}}
+
+ addr = self.pool.get('res.partner').address_get(cr, uid, [partner_id], ['contact'])
+ data = {'address_id': addr['contact']}
+ data.update(self.on_change_address(cr, uid, ids, addr['contact'])['value'])
return {
- 'domain' : {
- 'address_id' : partner_id and "[('partner_id', '=', partner_id)]" or "[]",
+ 'value' : data,
+ 'domain' : {'address_id' : partner_id and "[('partner_id', '=', partner_id)]" or "[]"}
}
- }
def on_change_address(self, cr, uid, ids, address_id):
email = ''
if address_id:
email = self.pool.get('res.partner.address').browse(cr, uid, address_id).email
- return {
- 'value' : {
- 'email_to' : email,
- }
- }
+ return {'value': {'email_to' : email}}
def action_cancel(self, cr, uid, ids, context=None):
return {'type' : 'ir.actions.act_window_close'}
@@ -116,158 +117,53 @@ class crm_lead_forward_to_partner(osv.osv_memory):
lead_proxy = self.pool.get('crm.lead')
lead = lead_proxy.browse(cr, uid, active_ids[0], context=context)
-
- field_names = [
- 'partner_name', 'title', 'function_name', 'street', 'street2',
- 'zip', 'city', 'country_id', 'state_id', 'email_from',
- 'phone', 'fax', 'mobile'
- ]
-
message = []
-
- for field_name in field_names:
- field_definition = lead_proxy._columns[field_name]
- value = None
-
- if field_definition._type == 'selection':
- if hasattr(field_definition.selection, '__call__'):
- key = field_definition.selection(lead_proxy, cr, uid, context=context)
- else:
- key = field.definition.selection
- value = dict(key).get(lead[field_name], lead[field_name])
- elif field_definition._type == 'many2one':
- if lead[field_name]:
- value = lead[field_name].name_get()[0][1]
- else:
- value = lead[field_name]
-
- message.append("%s: %s" % (field_definition.string, value or ''))
-
- user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
- email_from = ''
- if user.address_id and user.address_id.email:
- email_from = "%s <%s>" % (user.name, user.address_id.email)
-
- res = {
- 'email_from' : email_from,
- 'subject' : '[Lead-Forward:%06d] %s' % (lead.id, lead.name),
- 'message' : "\n".join(message + ['---']),
- }
-
- return res
-
-crm_lead_forward_to_partner()
-
-class crm_opportunity_forward_to_partner(osv.osv_memory):
- _name = 'crm.opportunity.forward.to.partner'
-
- _columns = {
- 'partner_id' : fields.many2one('res.partner', 'Partner'),
- 'address_id' : fields.many2one('res.partner.address', 'Address'),
- 'email_from' : fields.char('From', required=True, size=128),
- 'email_to' : fields.char('To', required=True, size=128),
- 'subject' : fields.char('Subject', required=True, size=128),
- 'message' : fields.text('Message', required=True),
- }
-
- def on_change_partner(self, cr, uid, ids, partner_id):
- return {
- 'domain' : {
- 'address_id' : partner_id and "[('partner_id', '=', partner_id)]" or "[]",
- }
- }
-
- def on_change_address(self, cr, uid, ids, address_id):
- email = ''
- if address_id:
- email = self.pool.get('res.partner.address').browse(cr, uid, address_id).email
-
- return {
- 'value' : {
- 'email_to' : email,
- }
- }
-
- def action_cancel(self, cr, uid, ids, context=None):
- return {'type' : 'ir.actions.act_window_close'}
-
- def action_forward(self, cr, uid, ids, context=None):
- """
- Forward the opportunity to a partner
- """
- if context is None:
- context = {}
-
- res_id = context.get('active_id', False)
-
- if not res_id:
- return {}
-
- this = self.browse(cr, uid, ids[0], context=context)
-
- hist_obj = self.pool.get('crm.case.history')
- smtp_pool = self.pool.get('email.smtpclient')
- case_pool = self.pool.get('crm.opportunity')
- case = case_pool.browse(cr, uid, res_id, context=context)
-
- emails = [this.email_to]
- body = case_pool.format_body(this.message)
- email_from = this.email_from or False
- case_pool._history(cr, uid, [case], _('Forward'), history=True, email=this.email_to, details=body, email_from=email_from)
-
- flag = False
- if case.section_id and case.section_id.server_id:
- flag = smtp_pool.send_email(
- cr=cr,
- uid=uid,
- server_id=case.section_id.server_id.id,
- emailto=emails,
- subject=this.subject,
- body="<pre>%s</pre>" % body,
- )
- else:
- flag = tools.email_send(
- email_from,
- emails,
- this.subject,
- body,
- )
-
- return {}
-
- def default_get(self, cr, uid, fields, context=None):
- """
- This function gets default values
- """
- if context is None:
- context = {}
-
- active_ids = context.get('active_ids')
- if not active_ids:
- return {}
-
- opportunity_proxy = self.pool.get('crm.opportunity')
-
- opportunity = opportunity_proxy.browse(cr, uid, active_ids[0], context=context)
-
- pa = opportunity.partner_address_id
- message = [
- "Partner: %s" % (opportunity.partner_id.name_get()[0][1]),
- "Contact: %s" % (pa.name),
- "Title: %s" % (pa.title),
+
+ if lead.type == 'lead':
+ field_names = [
+ 'partner_name', 'title', 'function_name', 'street', 'street2',
+ 'zip', 'city', 'country_id', 'state_id', 'email_from',
+ 'phone', 'fax', 'mobile'
+ ]
+
+ for field_name in field_names:
+ print field_name
+ field_definition = lead_proxy._columns[field_name]
+ value = None
+
+ if field_definition._type == 'selection':
+ if hasattr(field_definition.selection, '__call__'):
+ key = field_definition.selection(lead_proxy, cr, uid, context=context)
+ else:
+ key = field.definition.selection
+ value = dict(key).get(lead[field_name], lead[field_name])
+ elif field_definition._type == 'many2one':
+ print '>>>>>>>>>>>', lead[field_name], field_name
+ if lead[field_name]:
+ value = lead[field_name].name_get()[0][1]
+ else:
+ value = lead[field_name]
+
+ message.append("%s: %s" % (field_definition.string, value or ''))
+ elif lead.type == 'opportunity':
+ pa = lead.partner_address_id
+ message = [
+ "Partner: %s" % (lead.partner_id.name_get()[0][1]),
+ "Contact: %s" % (pa.name or ''),
+ "Title: %s" % (pa.title or ''),
"Function: %s" % (pa.function and pa.function.name_get()[0][1] or ''),
- "Street: %s" % (pa.street),
- "Street2: %s" % (pa.street2),
- "Zip: %s" % (pa.zip),
- "City: %s" % (pa.city),
+ "Street: %s" % (pa.street or ''),
+ "Street2: %s" % (pa.street2 or ''),
+ "Zip: %s" % (pa.zip or ''),
+ "City: %s" % (pa.city or ''),
"Country: %s" % (pa.country_id and pa.country_id.name_get()[0][1] or ''),
"State: %s" % (pa.state_id and pa.state_id.name_get()[0][1] or ''),
- "Email: %s" % (pa.email),
- "Phone: %s" % (pa.phone),
- "Fax: %s" % (pa.fax),
- "Mobile: %s" % (pa.mobile),
- ]
-
+ "Email: %s" % (pa.email or ''),
+ "Phone: %s" % (pa.phone or ''),
+ "Fax: %s" % (pa.fax or ''),
+ "Mobile: %s" % (pa.mobile or ''),
+ ]
+
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
email_from = ''
if user.address_id and user.address_id.email:
@@ -275,11 +171,12 @@ class crm_opportunity_forward_to_partner(osv.osv_memory):
res = {
'email_from' : email_from,
- 'subject' : '[Opportunity-Forward:%06d] %s' % (opportunity.id, opportunity.name),
+ 'subject' : '[%s-Forward:%06d] %s' % (lead.type.title(), lead.id, lead.name),
'message' : "\n".join(message + ['---']),
}
return res
-crm_opportunity_forward_to_partner()
+crm_lead_forward_to_partner()
+
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/crm/wizard/crm_forward_to_partner_view.xml b/addons/crm/wizard/crm_forward_to_partner_view.xml
index 8f238333a29..0bf04ac15d0 100644
--- a/addons/crm/wizard/crm_forward_to_partner_view.xml
+++ b/addons/crm/wizard/crm_forward_to_partner_view.xml
@@ -8,16 +8,17 @@
<field name="arch" type="xml">
<form string="Forward to Partner">
<separator string="User" colspan="4" />
- <field name="email_from" colspan="4" />
+ <field name="email_from" colspan="2" />
<separator string="Destination" colspan="4" />
- <field name="partner_id" on_change="on_change_partner(partner_id)" colspan="4" />
- <field name="address_id" string="Contact" on_change="on_change_address(address_id)" colspan="4" />
- <field name="email_to" colspan="4" />
+ <field name="partner_id" on_change="on_change_partner(partner_id)" colspan="2" />
+ <field name="address_id" string="Contact" on_change="on_change_address(address_id)" colspan="2" />
+ <field name="email_to" colspan="2" />
<separator string="Email" colspan="4" />
<field name="subject" colspan="4" />
- <field name="message" colspan="4" />
+ <separator string="Mesage body" colspan="4" />
+ <field name="message" colspan="4" nolabel="1"/>
<separator string="" colspan="4" />
<group colspan="4" col="2">
<button name="action_cancel" special="cancel" string="Cancel" icon="gtk-cancel" type="object" />
@@ -35,38 +36,5 @@
<field name="target">new</field>
</record>
- <record model="ir.ui.view" id="crm_opportunity_forward_to_partner_form">
- <field name="name">crm_opportunity_forward_to_partner</field>
- <field name="model">crm.opportunity.forward.to.partner</field>
- <field name="type">form</field>
- <field name="arch" type="xml">
- <form string="Forward to Partner">
- <separator string="User" colspan="4" />
- <field name="email_from" colspan="4" />
-
- <separator string="Destination" colspan="4" />
- <field name="partner_id" on_change="on_change_partner(partner_id)" colspan="4" />
- <field name="address_id" string="Contact" on_change="on_change_address(address_id)" colspan="4" />
- <field name="email_to" colspan="4" />
-
- <separator string="Email" colspan="4" />
- <field name="subject" colspan="4" />
- <field name="message" colspan="4" />
- <separator string="" colspan="4" />
- <group colspan="4" col="2">
- <button name="action_cancel" special="cancel" string="Cancel" icon="gtk-cancel" type="object" />
- <button name="action_forward" string="Forward" icon="gtk-go-forward" type="object" />
- </group>
- </form>
- </field>
- </record>
-
- <record model="ir.actions.act_window" id="crm_opportunity_forward_to_partner_act">
- <field name="name">Forward to Partner</field>
- <field name="res_model">crm.opportunity.forward.to.partner</field>
- <field name="view_type">form</field>
- <field name="view_mode">form</field>
- <field name="target">new</field>
- </record>
</data>
</openerp>