From 93c4e0da57511eaab1d441cb29ae4d4016cae8ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 16 May 2014 16:28:55 +0200 Subject: [PATCH] [IMP] crm_partner_assign: added computed field counting the number of references of a partner. This allows to order / filter / do whatever you want with the number of references. --- .../crm_partner_assign/crm_partner_assign.py | 21 +++++++++++++++++++ .../crm_partner_assign/res_partner_view.xml | 1 + 2 files changed, 22 insertions(+) diff --git a/addons/crm_partner_assign/crm_partner_assign.py b/addons/crm_partner_assign/crm_partner_assign.py index 046babccf73..317d1f289eb 100644 --- a/addons/crm_partner_assign/crm_partner_assign.py +++ b/addons/crm_partner_assign/crm_partner_assign.py @@ -53,6 +53,22 @@ class res_partner_activation(osv.osv): class res_partner(osv.osv): _inherit = "res.partner" + + def _get_implemented_count(self, cr, uid, ids, field_name, arg, context): + res = dict.fromkeys(ids, 0) + for partner in self.browse(cr, uid, ids, context=context): + res[partner.id] = len(partner.implemented_partner_ids) + return res + + def _get_partner_from_implementation(self, cr, uid, ids, context=None): + pids = set() + for partner in self.browse(cr, uid, ids, context=context): + pids.add(partner.id) + if partner.assigned_partner_id: + pids.add(partner.assigned_partner_id.id) + pids = pids | set([p.id for p in partner.implemented_partner_ids]) + return list(pids) + _columns = { 'partner_weight': fields.integer('Grade Weight', help="Gives the probability to assign a lead to this partner. (0 means no assignation.)"), @@ -71,6 +87,11 @@ class res_partner(osv.osv): 'res.partner', 'assigned_partner_id', string='Implementation References', ), + 'implemented_count': fields.function( + _get_implemented_count, string="Implementations", type='integer', + store={ + 'res.partner': (_get_partner_from_implementation, ['assigned_partner_id', 'implemented_partner_ids'], 10), + }), } _defaults = { 'partner_weight': lambda *args: 0 diff --git a/addons/crm_partner_assign/res_partner_view.xml b/addons/crm_partner_assign/res_partner_view.xml index c298832a2e6..67ac508ef00 100644 --- a/addons/crm_partner_assign/res_partner_view.xml +++ b/addons/crm_partner_assign/res_partner_view.xml @@ -112,6 +112,7 @@ +