diff options
| author | Olivier Dony <odo@openerp.com> | 2010-07-14 17:17:13 +0200 |
|---|---|---|
| committer | Olivier Dony <odo@openerp.com> | 2010-07-14 17:17:13 +0200 |
| commit | 7ae4ed20ea8eae15cd2a4c0febb5d7ac5c6cd76b (patch) | |
| tree | 3321d9ea9a90643826bba48666b2ce2d266bd0f6 /addons | |
| parent | 202db5c6093d1592ce8a7f013e1fb574004b3060 (diff) | |
[REF/IMP] crm, partner_geo_assign: moved basic partner assignation inside crm, added m2m with assigned opportunities to partner history, changed forward-to-partner to use same visual wizard everywhere
bzr revid: odo@openerp.com-20100714151713-c2hwebfuvcb2s5qd
Diffstat (limited to 'addons')
| -rw-r--r-- | addons/crm/crm_lead.py | 2 | ||||
| -rw-r--r-- | addons/crm/crm_lead_view.xml | 3 | ||||
| -rw-r--r-- | addons/crm/crm_opportunity_view.xml | 15 | ||||
| -rw-r--r-- | addons/crm/res_partner.py | 8 | ||||
| -rw-r--r-- | addons/crm/res_partner_view.xml | 33 | ||||
| -rw-r--r-- | addons/crm/wizard/crm_forward_to_partner.py | 5 | ||||
| -rw-r--r-- | addons/partner_geo_assign/__openerp__.py | 8 | ||||
| -rw-r--r-- | addons/partner_geo_assign/partner_geo_assign.py | 32 | ||||
| -rw-r--r-- | addons/partner_geo_assign/res_partner_view.xml | 32 |
9 files changed, 71 insertions, 67 deletions
diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py index 606895e27a6..5c7fdb08522 100644 --- a/addons/crm/crm_lead.py +++ b/addons/crm/crm_lead.py @@ -154,6 +154,8 @@ and users"), \nIf the case needs to be reviewed then the state is set to \'Pending\'.'), 'message_ids': fields.one2many('mailgate.message', 'res_id', 'Messages', domain=[('history', '=', True),('model','=',_name)], readonly=True), 'log_ids': fields.one2many('mailgate.message', 'res_id', 'Logs', domain=[('history', '=', False),('model','=',_name)], readonly=True), + 'partner_assigned_id': fields.many2one('res.partner', 'Assigned Partner', help="Partner this case has been forwarded/assigned to.", select=True), + 'date_assign': fields.date('Assignation Date', help="Last date this case was forwarded/assigned to a partner"), } _defaults = { diff --git a/addons/crm/crm_lead_view.xml b/addons/crm/crm_lead_view.xml index 590aa9931ee..bcc72d74042 100644 --- a/addons/crm/crm_lead_view.xml +++ b/addons/crm/crm_lead_view.xml @@ -193,11 +193,10 @@ name="%(crm.action_crm_send_mail)d" context="{'mail':'new', 'model': 'crm.lead'}" icon="gtk-go-forward" type="action" /> - <button colspan="2" string="Forward to Partner" + <button colspan="2" string="Forward" name="%(crm_lead_forward_to_partner_act)d" icon="gtk-go-forward" type="action" /> </page> - </notebook> </form> </field> diff --git a/addons/crm/crm_opportunity_view.xml b/addons/crm/crm_opportunity_view.xml index 5bbe4feed35..700eb4cba5c 100644 --- a/addons/crm/crm_opportunity_view.xml +++ b/addons/crm/crm_opportunity_view.xml @@ -190,6 +190,21 @@ </form> </field> </page> + <page string="Assignation" groups="base.group_extended"> + <group name="partner_assign_group" col="5" colspan="4"> + <separator string="Partner Assignation" colspan="5"/> + <field name="partner_assigned_id"/> + <field name="date_assign"/> + <group colspan="1" col="1"> + <button string="Forward" + attrs="{'invisible':[('partner_assigned_id','=',False)]}" + name="%(crm_lead_forward_to_partner_act)d" + icon="gtk-go-forward" type="action" + context="{'default_name': 'partner', 'default_partner_id': partner_assigned_id}" + /> + </group> + </group> + </page> </notebook> </form> </field> diff --git a/addons/crm/res_partner.py b/addons/crm/res_partner.py index 2dbae32ad98..db7069af4db 100644 --- a/addons/crm/res_partner.py +++ b/addons/crm/res_partner.py @@ -26,11 +26,13 @@ class res_partner(osv.osv): _inherit = 'res.partner' _columns = { 'opportunity_ids': fields.one2many('crm.lead', 'partner_id',\ - 'Leads and Opportunities'), + 'Leads and Opportunities'), 'meeting_ids': fields.one2many('crm.meeting', 'partner_id',\ - 'Meetings'), + 'Meetings'), 'phonecall_ids': fields.one2many('crm.phonecall', 'partner_id',\ - 'Phonecalls'), + 'Phonecalls'), + 'opportunity_assigned_ids': fields.one2many('crm.lead', 'partner_assigned_id',\ + 'Assigned Opportunities'), } res_partner() diff --git a/addons/crm/res_partner_view.xml b/addons/crm/res_partner_view.xml index 3ae772b2b85..3b23c53efad 100644 --- a/addons/crm/res_partner_view.xml +++ b/addons/crm/res_partner_view.xml @@ -44,6 +44,39 @@ icon="gtk-cancel" /> </tree> </field> + <field name="opportunity_assigned_ids" colspan="4" nolabel="1"> + <tree string="Assigned Opportunities" colors="blue:state=='pending';grey:state=='cancel')"> + <field name="create_date"/> + <field name="name"/> + <field name="type"/> + <field name="stage_id"/> + <button name="stage_previous" string="Previous" + states="open,pending" type="object" icon="gtk-go-back" /> + <button name="stage_next" string="Next" + states="open,pending" type="object" + icon="gtk-go-forward" /> + <field name="section_id" + invisible="context.get('invisible_section', True)" /> + <field name="user_id" /> + <field name="state" /> + <button name="case_open" string="Open" + states="draft,pending" type="object" + icon="gtk-go-forward" /> + <button name="case_close" string="Close" + states="open,draft,pending" type="object" + icon="gtk-close" /> + <button string="Convert to Opportunity" + name="convert_opportunity" + states="draft,open,pending" icon="gtk-index" + type="object" /> + <button name="case_escalate" string="Escalate" + states="open,draft,pending" type="object" + icon="gtk-go-up" /> + <button name="case_cancel" string="Cancel" + states="draft,open,pending" type="object" + icon="gtk-cancel" /> + </tree> + </field> <field name="meeting_ids" colspan="4" nolabel="1" > <tree string="Meetings" colors="gray:state in ('draft', 'cancel','done','pending')"> <field name="user_id" string="Responsible"/> diff --git a/addons/crm/wizard/crm_forward_to_partner.py b/addons/crm/wizard/crm_forward_to_partner.py index 1e323eddedb..1a6e1fb505b 100644 --- a/addons/crm/wizard/crm_forward_to_partner.py +++ b/addons/crm/wizard/crm_forward_to_partner.py @@ -22,6 +22,7 @@ import base64 import itertools +import time from osv import osv, fields import tools @@ -218,6 +219,10 @@ class crm_lead_forward_to_partner(osv.osv_memory): if result: case_pool.history(cr, uid, [case], _('Forward'), history=True, email=this.email_to, subject=this.subject, details=body, email_from=email_from, attach=attach) + to_write = {'date_assign': time.strftime('%Y-%m-%d')} + if (this.name == 'partner' and this.partner_id): + to_write['partner_assigned_id'] = this.partner_id.id + case_pool.write(cr, uid, case.id, to_write) else: raise osv.except_osv(_('Error!'), _('Unable to send mail. Please check SMTP is configured properly.')) diff --git a/addons/partner_geo_assign/__openerp__.py b/addons/partner_geo_assign/__openerp__.py index 2d18649236e..ccfe6ba7c45 100644 --- a/addons/partner_geo_assign/__openerp__.py +++ b/addons/partner_geo_assign/__openerp__.py @@ -26,12 +26,14 @@ 'category': 'Generic Modules/Production', 'description': """ This is the module used by OpenERP SA to redirect customers to his partners, -based on geolocalisation. +based on geolocalization. """, 'author': 'OpenERP SA', 'depends': ['crm'], - 'update_xml': ['res_partner_view.xml'], - 'demo_xml': [], + 'data': [ + 'res_partner_view.xml', + 'crm_lead_view.xml', + ], 'installable': True, 'active': False, 'certificate': False, diff --git a/addons/partner_geo_assign/partner_geo_assign.py b/addons/partner_geo_assign/partner_geo_assign.py index 97bca0b1073..0134dd04e72 100644 --- a/addons/partner_geo_assign/partner_geo_assign.py +++ b/addons/partner_geo_assign/partner_geo_assign.py @@ -39,14 +39,14 @@ def geo_find(addr): except Exception, e: raise osv.except_osv(_('Network error'), _('Could not contact geolocation servers, please make sure you have a working internet connection (%s)') % e) - + class res_partner(osv.osv): _inherit = "res.partner" _columns = { 'partner_latitude': fields.float('Geo Latitude'), 'partner_longitude': fields.float('Geo Longitude'), - 'date_assign': fields.date('Assignation Date'), + 'date_localization': fields.date('Geo Localization Date'), 'partner_weight': fields.integer('Weight', help="Gives the probability to assign a lead to this partner. (0 means no assignation.)"), } @@ -64,7 +64,7 @@ class res_partner(osv.osv): self.write(cr, uid, [partner.id], { 'partner_latitude': result[0], 'partner_longitude': result[1], - 'date_assign': time.strftime('%Y-%m-%d') + 'date_localization': time.strftime('%Y-%m-%d') }, context=context) return True res_partner() @@ -74,33 +74,7 @@ class crm_lead(osv.osv): _columns = { 'partner_latitude': fields.float('Geo Latitude'), 'partner_longitude': fields.float('Geo Longitude'), - 'partner_assigned_id': fields.many2one('res.partner','Assigned Partner'), - 'date_assign': fields.date('Assignation Date') } - def forward_to_partner(self, cr, uid, ids, context=None): - fobj = self.pool.get('crm.lead.forward.to.partner') - for lead in self.browse(cr, uid, ids, context=context): - context = {'active_id': lead.id, 'active_ids': [lead.id], 'active_model': 'crm.lead'} - if lead.partner_assigned_id: - email = False - if lead.partner_assigned_id.address: - email = lead.partner_assigned_id.address[0].email - if not email: - raise osv.except_osv(_('Error !'), _('No email on the partner assigned to this opportunity')) - - values = fobj.default_get(cr, uid, ['name', 'email_from'], context=context) - if not values.get('email_from'): - raise osv.except_osv(_('Error !'), _('Please set an email address in your user preferences')) - values.update({ - 'history': 'whole', - 'email_to': email, - 'message': fobj._get_case_history(cr, uid, 'whole', lead.id, context) or False, - }) - forward = fobj.create(cr, uid, values, context) - fobj.action_forward(cr, uid, [forward], context) - else: - raise osv.except_osv(_('Error !'), _('No partner assigned to this opportunity')) - return True def assign_partner(self, cr, uid, ids, context=None): ok = False diff --git a/addons/partner_geo_assign/res_partner_view.xml b/addons/partner_geo_assign/res_partner_view.xml index 26322f23495..f9310fdfbd0 100644 --- a/addons/partner_geo_assign/res_partner_view.xml +++ b/addons/partner_geo_assign/res_partner_view.xml @@ -1,33 +1,6 @@ <?xml version="1.0"?> <openerp> <data> - <record id="view_crm_opportunity_geo_assign_form" model="ir.ui.view"> - <field name="name">crm.lead.geo_assign.inherit</field> - <field name="model">crm.lead</field> - <field name="type">form</field> - <field name="inherit_id" ref="crm.crm_case_form_view_oppor"/> - <field name="arch" type="xml"> - <xpath expr="//notebook[last()]" position="inside"> - <page string="Geo Assignation"> - <field name="partner_assigned_id"/> - <newline/> - <field name="partner_latitude"/> - <field name="partner_longitude"/> - <field name="date_assign"/> - <label string="" colspan="1"/> - <group colspan="1" col="2"> - <button string="Geo Assign" name="assign_partner" type="object" colspan="1" - icon="gtk-apply"/> - <button string="Forward" - name="forward_to_partner" attrs="{'invisible':[('partner_assigned_id','=',False)]}" - icon="gtk-apply" - type="object"/> - </group> - </page> - </xpath> - </field> - </record> - <record id="view_crm_partner_geo_form" model="ir.ui.view"> <field name="name">res.partner.geo.inherit</field> <field name="model">res.partner</field> @@ -35,7 +8,7 @@ <field name="inherit_id" ref="base.view_partner_form"/> <field name="arch" type="xml"> <xpath expr="//notebook[last()]" position="inside"> - <page string="Geo Location"> + <page string="Geo Localization"> <field name="partner_weight"/> <label string="" colspan="1"/> <button @@ -46,11 +19,10 @@ <newline/> <field name="partner_latitude"/> <field name="partner_longitude"/> - <field name="date_assign"/> + <field name="date_localization"/> </page> </xpath> </field> </record> - </data> </openerp> |
