diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py index db7ca79ff11..a9311c3be6a 100644 --- a/addons/crm/crm_lead.py +++ b/addons/crm/crm_lead.py @@ -216,13 +216,11 @@ class crm_lead(format_address, osv.osv): res[lead.id][field] = abs(int(duration)) return res def _meeting_count(self, cr, uid, ids, field_name, arg, context=None): - res = dict(map(lambda x: (x,0), ids)) - try: - for meeting in self.browse(cr, uid, ids, context=context): - res[meeting.id] = len(meeting.meeting_ids) - except: - pass - return res + Event = self.pool['calendar.event'] + return { + opp_id: Event.search_count(cr,uid, [('opportunity_id', '=', opp_id)], context=context) + for opp_id in ids + } _columns = { 'partner_id': fields.many2one('res.partner', 'Partner', ondelete='set null', track_visibility='onchange', select=True, help="Linked partner (optional). Usually created when converting the lead."), @@ -297,7 +295,6 @@ class crm_lead(format_address, osv.osv): 'payment_mode': fields.many2one('crm.payment.mode', 'Payment Mode', \ domain="[('section_id','=',section_id)]"), 'planned_cost': fields.float('Planned Costs'), - 'meeting_ids': fields.one2many('calendar.event', 'opportunity_id', 'Opportunities'), 'meeting_count': fields.function(_meeting_count, string='# Meetings', type='integer'), } diff --git a/addons/crm/res_partner.py b/addons/crm/res_partner.py index b34e5c7dbb9..bb216e2040e 100644 --- a/addons/crm/res_partner.py +++ b/addons/crm/res_partner.py @@ -33,10 +33,11 @@ class res_partner(osv.osv): res[partner.id] = { 'opportunity_count': len(partner.opportunity_ids), 'meeting_count': len(partner.meeting_ids), - 'phonecall_count': len(partner.meeting_ids), } except: pass + for partner in self.browse(cr, uid, ids, context): + res[partner.id]['phonecall_count'] = len(partner.phonecall_ids) return res _columns = {