From da9e2e77cb6196b04cfdf9c13966bf922275505c Mon Sep 17 00:00:00 2001 From: Arnaud Joset Date: Wed, 27 Apr 2022 09:22:06 +0000 Subject: [PATCH] [FIX] sale: allows to override the sale.order domain used to count partner subscription Before this commit, the domain used to count the number of SO of a partner was not easlily overridable in the compute method. closes odoo/odoo#91317 X-original-commit: 1f57f0c5f94a4f2a359e49280a5adf8cf8e307ee Related: odoo/enterprise#27311 Signed-off-by: Yannick Tivisse (yti) Signed-off-by: Arnaud Joset --- addons/sale/models/res_partner.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/addons/sale/models/res_partner.py b/addons/sale/models/res_partner.py index a7ff218fc49..d5781ebfb96 100644 --- a/addons/sale/models/res_partner.py +++ b/addons/sale/models/res_partner.py @@ -1,9 +1,9 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from odoo import fields, models +from odoo import api, fields, models from odoo.addons.base.models.res_partner import WARNING_MESSAGE, WARNING_HELP - +from odoo.osv import expression class ResPartner(models.Model): _inherit = 'res.partner' @@ -13,13 +13,17 @@ class ResPartner(models.Model): sale_warn = fields.Selection(WARNING_MESSAGE, 'Sales Warnings', default='no-message', help=WARNING_HELP) sale_warn_msg = fields.Text('Message for Sales Order') + @api.model + def _get_sale_order_domain_count(self): + return [] + def _compute_sale_order_count(self): # retrieve all children partners and prefetch 'parent_id' on them all_partners = self.with_context(active_test=False).search([('id', 'child_of', self.ids)]) all_partners.read(['parent_id']) sale_order_groups = self.env['sale.order']._read_group( - domain=[('partner_id', 'in', all_partners.ids)], + domain=expression.AND([self._get_sale_order_domain_count(), [('partner_id', 'in', all_partners.ids)]]), fields=['partner_id'], groupby=['partner_id'] ) partners = self.browse()