diff --git a/addons/mcs_operating_system/hooks.py b/addons/mcs_operating_system/hooks.py index 68dbf18..32b3428 100644 --- a/addons/mcs_operating_system/hooks.py +++ b/addons/mcs_operating_system/hooks.py @@ -19,6 +19,7 @@ class OperatingSystemSetup: self._promote_existing_customers() self._ensure_active_portfolio() self._hide_empty_seed_accounts() + self._hide_child_contact_accounts() self._ensure_followup_cron_active() def _promote_existing_customers(self): @@ -29,8 +30,10 @@ class OperatingSystemSetup: ("commercial_partner_id", "!=", False), ] ).mapped("commercial_partner_id") - customers = self.Partner.search([("customer_rank", ">", 0)]) - for partner in customers | invoice_partners: + customer_accounts = self.Partner.search( + [("customer_rank", ">", 0)] + ).mapped("commercial_partner_id") + for partner in customer_accounts | invoice_partners: values = {"mcs_is_client_account": True} if not partner.mcs_account_status: values["mcs_account_status"] = "active" @@ -248,3 +251,14 @@ class OperatingSystemSetup: ) if not has_invoice and not partner.mcs_project_ids: partner.write({"mcs_is_client_account": False}) + + def _hide_child_contact_accounts(self): + child_accounts = self.Partner.search( + [ + ("mcs_is_client_account", "=", True), + ("parent_id", "!=", False), + ] + ) + for partner in child_accounts: + if not partner.mcs_project_ids: + partner.write({"mcs_is_client_account": False}) diff --git a/addons/mcs_operating_system/models/dashboard.py b/addons/mcs_operating_system/models/dashboard.py index 5201efb..e7071db 100644 --- a/addons/mcs_operating_system/models/dashboard.py +++ b/addons/mcs_operating_system/models/dashboard.py @@ -440,6 +440,8 @@ class McsOperatingDashboard(models.Model): rows = [] for partner in partners: projects = client_projects.filtered(lambda project: project.partner_id == partner) + if partner.parent_id and not projects: + continue if ( not projects and not partner.mcs_total_invoiced