# © 2018 Forest and Biomass Romania SA # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from odoo import api, fields, models class AccountGroup(models.Model): _inherit = "account.group" group_child_ids = fields.One2many( comodel_name="account.group", inverse_name="parent_id", string="Child Groups" ) level = fields.Integer(string="Level", compute="_compute_level", store=True) account_ids = fields.One2many( comodel_name="account.account", inverse_name="group_id", string="Accounts" ) compute_account_ids = fields.Many2many( "account.account", compute="_compute_group_accounts", string="Compute accounts", store=True, ) @api.depends("parent_id", "parent_id.level") def _compute_level(self): for group in self: if not group.parent_id: group.level = 0 else: group.level = group.parent_id.level + 1 @api.depends( "code_prefix", "account_ids", "account_ids.code", "group_child_ids", "group_child_ids.account_ids.code", ) def _compute_group_accounts(self): account_obj = self.env["account.account"] accounts = account_obj.search([]) for group in self: prefix = group.code_prefix if group.code_prefix else group.name gr_acc = accounts.filtered(lambda a: a.code.startswith(prefix)).ids group.compute_account_ids = [(6, 0, gr_acc)]