From 5f2dc97e1c05f13de88355fd6255973a70bc4a93 Mon Sep 17 00:00:00 2001 From: ijas ahammed Date: Thu, 4 Mar 2021 13:04:09 +0000 Subject: [PATCH] [IMP] website_crm_partner_assign: consider assigned partner for stat button Currently the 'Opportunities' stat button on partner form view does not show the opportunities where current partner is assigned one, it only shows the ones that have current partner(and it's children) set as a customer. This commit includes such opportunities (where current partner is set as assigned parter) in the count of stat button and on the view we get when clicking this button. taskID-2443894 closes https://github.com/odoo/odoo/pull/67524 Part-of: odoo/odoo#67524 --- .../models/res_partner.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/addons/website_crm_partner_assign/models/res_partner.py b/addons/website_crm_partner_assign/models/res_partner.py index 264f8f9ff1e..f43ca2b6bf6 100644 --- a/addons/website_crm_partner_assign/models/res_partner.py +++ b/addons/website_crm_partner_assign/models/res_partner.py @@ -2,6 +2,7 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. from odoo import api, fields, models +from odoo.osv import expression from odoo.addons.http_routing.models.ir_http import slug @@ -79,3 +80,20 @@ class ResPartner(models.Model): def _compute_partner_weight(self): for partner in self: partner.partner_weight = partner.grade_id.partner_weight if partner.grade_id else 0 + + def _compute_opportunity_count(self): + super()._compute_opportunity_count() + assign_counts = {} + if self.ids: + opportunity_data = self.env['crm.lead'].with_context(active_test=False).read_group( + [('partner_assigned_id', 'in', self.ids)], + ['partner_assigned_id'], ['partner_assigned_id'] + ) + assign_counts = {datum['partner_assigned_id'][0]: datum['partner_assigned_id_count'] for datum in opportunity_data} + for partner in self: + partner.opportunity_count += assign_counts.get(partner.id, 0) + + def action_view_opportunity(self): + action = super().action_view_opportunity() + action['domain'] = expression.OR([action.get('domain', []), [('partner_assigned_id', '=', self.id)]]) + return action