[REF/IMP] crm, partner_geo_assign: moved basic partner assignation inside crm, added...
authorOlivier Dony <odo@openerp.com>
Wed, 14 Jul 2010 15:17:13 +0000 (17:17 +0200)
committerOlivier Dony <odo@openerp.com>
Wed, 14 Jul 2010 15:17:13 +0000 (17:17 +0200)
bzr revid: odo@openerp.com-20100714151713-c2hwebfuvcb2s5qd

addons/crm/crm_lead.py
addons/crm/crm_lead_view.xml
addons/crm/crm_opportunity_view.xml
addons/crm/res_partner.py
addons/crm/res_partner_view.xml
addons/crm/wizard/crm_forward_to_partner.py
addons/partner_geo_assign/__openerp__.py
addons/partner_geo_assign/partner_geo_assign.py
addons/partner_geo_assign/res_partner_view.xml

index 606895e..5c7fdb0 100644 (file)
@@ -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 = {
index 590aa99..bcc72d7 100644 (file)
                         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>
index 5bbe4fe..700eb4c 100644 (file)
                                 </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>
index 2dbae32..db7069a 100644 (file)
@@ -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()
 
index 3ae772b..3b23c53 100644 (file)
                                  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"/>
index 1e323ed..1a6e1fb 100644 (file)
@@ -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.'))
 
index 2d18649..ccfe6ba 100644 (file)
     '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,
index 97bca0b..0134dd0 100644 (file)
@@ -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
index 26322f2..f9310fd 100644 (file)
@@ -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
                         <newline/>
                         <field name="partner_latitude"/>
                         <field name="partner_longitude"/>
-                        <field name="date_assign"/>
+                        <field name="date_localization"/>
                     </page>
                 </xpath>
             </field>
         </record>
-
     </data>
 </openerp>