diff options
| author | rpa (Open ERP) <rpa@tinyerp.com> | 2010-05-03 12:07:00 +0530 |
|---|---|---|
| committer | rpa (Open ERP) <rpa@tinyerp.com> | 2010-05-03 12:07:00 +0530 |
| commit | a25cf290ee143129e6b127dc5de43ffcd60b6384 (patch) | |
| tree | 7ad61a7c7528af3684f7ad7dab6bc34d7738279d | |
| parent | fb67b073929a11b87af830ce90d2ca08846ef489 (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.xml | 2 | ||||
| -rw-r--r-- | addons/crm/security/ir.model.access.csv | 2 | ||||
| -rw-r--r-- | addons/crm/wizard/crm_forward_to_partner.py | 213 | ||||
| -rw-r--r-- | addons/crm/wizard/crm_forward_to_partner_view.xml | 44 |
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> |
