[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) <yti@odoo.com>
Signed-off-by: Arnaud Joset <arj@odoo.com>
This commit is contained in:
Arnaud Joset
2022-05-18 12:00:04 +02:00
parent 5df841123d
commit da9e2e77cb
+7 -3
View File
@@ -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()