From 6522fd1cfe7c07ae27de9ce8125e6167e16b445f Mon Sep 17 00:00:00 2001 From: "Dylan Kiss (dyki)" Date: Wed, 20 Sep 2023 11:28:29 +0200 Subject: [PATCH] [FIX] base: allow to archive companies via stat button Once a branch company has some data associated with it, it can't be deleted anymore. Since the branches could only be opened in a dialog, it was also impossible to archive them. In order to allow (un)archiving a branch, we added a stat button on the company form to show the branches in a list view, where people can (un)archive them. task-3503204 Part-of: odoo/odoo#138942 --- odoo/addons/base/models/res_company.py | 15 +++++++++++++++ odoo/addons/base/views/res_company_views.xml | 12 +++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/odoo/addons/base/models/res_company.py b/odoo/addons/base/models/res_company.py index 6d73b90d9a2..27b82f2d7e1 100644 --- a/odoo/addons/base/models/res_company.py +++ b/odoo/addons/base/models/res_company.py @@ -33,6 +33,7 @@ class Company(models.Model): sequence = fields.Integer(help='Used to order Companies in the company switcher', default=10) parent_id = fields.Many2one('res.company', string='Parent Company', index=True) child_ids = fields.One2many('res.company', 'parent_id', string='Branches') + all_child_ids = fields.One2many('res.company', 'parent_id', context={'active_test': False}) parent_path = fields.Char(index=True, unaccent=False) parent_ids = fields.Many2many('res.company', compute='_compute_parent_ids', compute_sudo=True) root_id = fields.Many2one('res.company', compute='_compute_parent_ids', compute_sudo=True) @@ -393,3 +394,17 @@ class Company(models.Model): len(self.env.companies.root_id) == 1 and self.env.companies == self.env['res.company'].sudo().search([('id', 'child_of', self.env.company.root_id.ids)]) ) + + def action_all_company_branches(self): + self.ensure_one() + return { + 'type': 'ir.actions.act_window', + 'name': _('Branches'), + 'res_model': 'res.company', + 'domain': [('parent_id', '=', self.id)], + 'context': { + 'active_test': False, + 'default_parent_id': self.id, + }, + 'views': [[False, 'tree'], [False, 'kanban'], [False, 'form']], + } diff --git a/odoo/addons/base/views/res_company_views.xml b/odoo/addons/base/views/res_company_views.xml index 54d3a7f7b24..881229be8c5 100644 --- a/odoo/addons/base/views/res_company_views.xml +++ b/odoo/addons/base/views/res_company_views.xml @@ -6,7 +6,16 @@ res.company
+ +
+