From 45ab1aafa3b9daf3a723023dffb7501304bf4a07 Mon Sep 17 00:00:00 2001 From: nans Date: Mon, 15 Feb 2021 10:27:45 +0100 Subject: [PATCH] [FIX] contract: remove groupby if it is in context + consistency between contract count and contract action On the commercial entity, the count shows all contracts of child partners. However clicking on the action might show no contract, as the action only restricted the domain to the partner itself. We extract the domain into a function to share it in both cases. Co-authored by @Lopsanz --- contract/__manifest__.py | 2 +- contract/models/res_partner.py | 19 ++++++++++--------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/contract/__manifest__.py b/contract/__manifest__.py index 72704c2d7..c06dce504 100644 --- a/contract/__manifest__.py +++ b/contract/__manifest__.py @@ -11,7 +11,7 @@ { "name": "Recurring - Contracts Management", - "version": "13.0.2.3.3", + "version": "13.0.2.3.5", "category": "Contract Management", "license": "AGPL-3", "author": "Tecnativa, ACSONE SA/NV, Odoo Community Association (OCA)", diff --git a/contract/models/res_partner.py b/contract/models/res_partner.py index bbfda4a74..6b1175e4e 100644 --- a/contract/models/res_partner.py +++ b/contract/models/res_partner.py @@ -17,10 +17,14 @@ class ResPartner(models.Model): comodel_name="contract.contract", inverse_name="partner_id", string="Contracts", ) + def _get_partner_contract_domain(self): + self.ensure_one() + return [("partner_id", "child_of", self.ids)] + def _compute_contract_count(self): contract_model = self.env["contract.contract"] fetch_data = contract_model.read_group( - [("partner_id", "child_of", self.ids)], + self._get_partner_contract_domain(), ["partner_id", "contract_type"], ["partner_id", "contract_type"], lazy=False, @@ -50,14 +54,11 @@ class ResPartner(models.Model): contract_type = self._context.get("contract_type") res = self._get_act_window_contract_xml(contract_type) - res.update( - context=dict( - self.env.context, - search_default_partner_id=self.id, - default_partner_id=self.id, - default_pricelist_id=self.property_product_pricelist.id, - ), - ) + action_context = {k: v for k, v in self.env.context.items() if k != "group_by"} + action_context["domain"] = self._get_partner_contract_domain() + action_context["default_partner_id"] = self.id + action_context["default_pricelist_id"] = self.property_product_pricelist.id + res["context"] = action_context return res def _get_act_window_contract_xml(self, contract_type):