diff --git a/addons/crm/wizard/crm_forward_to_partner.py b/addons/crm/wizard/crm_forward_to_partner.py index 4eed65b4180..4915ae7726b 100644 --- a/addons/crm/wizard/crm_forward_to_partner.py +++ b/addons/crm/wizard/crm_forward_to_partner.py @@ -43,7 +43,7 @@ class crm_lead_forward_to_partner(osv.osv_memory): 'message' : fields.text('Message', required=True), 'history': fields.selection([('latest', 'Latest email'), ('whole', 'Whole Story'), ('info', 'Case Information')], 'Send history', required=True), 'add_cc': fields.boolean('Add as CC', required=False, help="Check this box if you want this address to be added in the CC list"\ - " for this case, in order to receive all future conversations"), + " for this case, in order to receive all future conversations"), } _defaults = { @@ -124,6 +124,7 @@ class crm_lead_forward_to_partner(osv.osv_memory): return model_pool = self.pool.get('crm.lead') + print history_type if history_type == 'info': msg_val = self.get_lead_details(cr, uid, res_id, context=context) @@ -142,7 +143,6 @@ class crm_lead_forward_to_partner(osv.osv_memory): return msg_val - def on_change_partner(self, cr, uid, ids, partner_id): """This function fills address information based on partner/user selected @param self: The object pointer @@ -290,7 +290,7 @@ class crm_lead_forward_to_partner(osv.osv_memory): lead_proxy = self.pool.get('crm.lead') lead = lead_proxy.browse(cr, uid, active_id, context=context) - message = self._get_case_history(cr, uid, defaults.get('history'), lead.id, context=context) + message = self._get_case_history(cr, uid, defaults.get('history', 'latest'), lead.id, context=context) defaults.update({ 'subject' : '%s: %s' % (_('Fwd'), lead.name), 'message' : message, diff --git a/addons/partner_geo_assign/partner_geo_assign.py b/addons/partner_geo_assign/partner_geo_assign.py index 74e0a7ff17f..370b6cb9008 100644 --- a/addons/partner_geo_assign/partner_geo_assign.py +++ b/addons/partner_geo_assign/partner_geo_assign.py @@ -41,8 +41,9 @@ def geo_find(addr): class res_partner(osv.osv): _inherit = "res.partner" _columns = { - 'partner_latitude': fields.float('Geo Latitude', digits=(16,2)), - 'partner_longitude': fields.float('Geo Longitude', digits=(16,2)), + 'partner_latitude': fields.float('Geo Latitude'), + 'partner_longitude': fields.float('Geo Longitude'), + 'date_assign': fields.date('Assignation Date'), 'partner_weight': fields.integer('Weight', help="Gives the probability to assign a lead to this partner. (0 means no assignation.)"), } @@ -52,17 +53,16 @@ class res_partner(osv.osv): def geo_localize(self, cr, uid, ids, context=None): regex = '([+-]?[0-9\.]+),([+-]?[0-9\.]+),([+-]?[0-9\.]+)' for partner in self.browse(cr, uid, ids, context=context): + if not partner.address: + continue part = partner.address[0] addr = ', '.join(filter(None, [part.street, part.street2, (part.zip or '')+' '+(part.city or ''), part.state_id and part.state_id.name, part.country_id and part.country_id.name])) - result = geo_find(addr) + result = geo_find(addr.encode('utf8')) if result: - print 'Write', { - 'partner_latitude': result[0], - 'partner_longitude': result[1] - } self.write(cr, uid, [partner.id], { 'partner_latitude': result[0], - 'partner_longitude': result[1] + 'partner_longitude': result[1], + 'date_assign': time.strftime('%Y-%m-%d') }, context=context) return True res_partner() @@ -70,23 +70,39 @@ res_partner() class crm_lead(osv.osv): _inherit = "crm.lead" _columns = { - 'partner_latitude': fields.float('Geo Latitude', digits=(16,2)), - 'partner_longitude': fields.float('Geo Longitude', digits=(16,2)), + '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): + if lead.partner_assigned_id: + email = False + if lead.partner_assigned_id.address: + email = lead.partner_assigned_id.address[0].email + forward = fobj.create(cr, uid, { + 'name': 'email', + 'history': 'whole', + 'email_to': email, + 'message': fobj._get_case_history(cr, uid, 'whole', lead.id, context) or False + }, {'active_id': lead.id, 'active_ids': [lead.id]}) + else: + raise osv.except_osv(_('Error !'), _('No partner assigned to this opportunity')) + def assign_partner(self, cr, uid, ids, context=None): + ok = False for part in self.browse(cr, uid, ids, context=context): if not part.country_id: continue addr = ', '.join(filter(None, [part.street, part.street2, (part.zip or '')+' '+(part.city or ''), part.state_id and part.state_id.name, part.country_id and part.country_id.name])) - result = geo_find(addr) + result = geo_find(addr.encode('utf8')) if result: self.write(cr, uid, [part.id], { 'partner_latitude': result[0], 'partner_longitude': result[1] }, context=context) - part_ids = self.pool.get('res.partner').search(cr, uid, [ ('partner_weight','>',0), ('partner_latitude','>',result[0]-2), ('partner_latitude','<',result[0]+2), @@ -108,6 +124,7 @@ class crm_lead(osv.osv): if mypartner<=t[1]: self.write(cr, uid, [part.id], {'partner_assigned_id': t[0], 'date_assign': time.strftime('%Y-%m-%d')}, context=context) break - return True + ok = True + return ok crm_lead() diff --git a/addons/partner_geo_assign/res_partner_view.xml b/addons/partner_geo_assign/res_partner_view.xml index d5f4f918d98..b8faedab0aa 100644 --- a/addons/partner_geo_assign/res_partner_view.xml +++ b/addons/partner_geo_assign/res_partner_view.xml @@ -11,11 +11,19 @@ -