Account Consolidation

account_consolidation_oca
REPOSITORY
REPOSITORYOCA/account-consolidation
GIT
GIThttps://github.com/OCA/account-consolidation.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-consolidation/tree/14.0/account_consolidation_oca
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYGeneric Modules/Accounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSEnric Tobella, Weblate, oca-ci, kaynnan
WEBSITE
WEBSITEhttps://github.com/OCA/account-consolidation
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:13
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/currency:
    - currency_monthly_rate
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
res_config_settings_view_form res.config.settings.view.form.inherit.account.consolidation res.config.settings div Inherits account.res_config_settings_view_form
view_account_consolidation_form account.account.consolidation.form account.account xpath Inherits account.view_account_form
view_company_consolidation_company_profile company.consolidation.profile res.company xpath Inherits base.view_company_form
view_company_consolidation_profile_form company.consolidation.profile.view company.consolidation.profile form New
view_company_consolidation_profile_tree company.consolidation.profile.view company.consolidation.profile tree New
view_consolidation_check_form account.consolidation.check.form account.consolidation.check form New
view_consolidation_consolidate_form account.consolidation.consolidate.form account.consolidation.consolidate form New
view_move_form account.move.form account.move xpath Inherits account.view_move_form
view_move_line_tree account.move.line.tree.conso account.move.line field Inherits account.view_move_line_tree
Models touched (9)

New fields (2)
  • consolidation_account_id Many2one → account.account
    comodel_name='account.account' domain="[('company_id', '=', consolidation_company_id)]" help='Consolidation moves will be generated on this account' string='Consolidation account'
  • consolidation_company_id Many2one → res.company
    comodel_name='res.company' compute='_compute_conso_company' store=True
Public methods (1)
  • name_get(self)
    @api.depends('name', 'code')
    Display the account company if the user is connected to it..

New fields (1)
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> domain=[('is_consolidation', '=', True)] readonly=True required=True string='Company'
Public methods (6)
  • check_account_mapping(self)
    Check subsidiaries mapping against hodling's.
  • check_companies_allowed(self)
    Check that the user has access to subsidiaries defined in profiles.
  • check_interco_partner(self)
    Check that subsidiaries' partners defined in profiles are not linked to a company.
  • check_subsidiary_mapping(self, conso_holding_accounts, subsidiary)
    Check the mapping between accounts of subsidiary and the accounts of holding. All the active accounts of the subsidiary must be linked to an active account in the holding. :param conso_holding_accounts: Recordset of the holding company accounts :param subsidiary: Recordset of the subsidiary company to check :return: Dictionnary of accounts not correctly mapped to an holding company account
  • default_get(self, fields)
    @api.model
    Raise an error if user is not connected to consolidation company.
  • run_consolidation(self)
    Consolidate. Proceed with all checks before launch any consolidation step. This is a base method intended to be inherited with the next consolidation steps.

New fields (2)
  • message Html
    readonly=True
  • state Selection
    default='open' args: [('open', 'Open'), ('error', 'Error'), ('ok', 'Checks ok')]
Public methods (4)
  • check_account_mapping(self)
    Convert errors message to a HTML list of errors.
  • check_companies_allowed(self)
    Convert errors message to a HTML list of errors.
  • check_configuration(self)
    Action launched with the button on the view. Calls the checks and display the result as HTML
  • check_interco_partner(self)
    Convert errors message to a HTML list of errors.

New fields (5)
  • consolidation_profile_ids Many2many → company.consolidation.profile
    column1='consolidate_id' column2='profile_id' comodel_name='company.consolidation.profile' default=<expr> readonly=True relation='consolidate_profile_rel'
  • journal_id Many2one → account.journal
    comodel_name='account.journal' default=<expr> required=True string='Journal'
  • month Selection
    default=<expr> required=True args: MONTHS
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
  • year Char
    default=<expr> required=True size=4
Public methods (4)
  • consolidate_subsidiary(self, profile)
    Consolidate one subsidiary on the Holding according to its profile. Create a move per subsidiary and a move line per account. If intercompany partners were used, extra move lines will be generated per partner and account. :param profile: Recordset of the consolidation profile of the subsidiary to consolidate on the holding :return: Recordset of the created move
  • get_account_balance(self, account, partner=False)
    Gets the accounting balance for the specified account according to Wizard settings. Flags every processed move line with consolidated=True, so these move lines will not be processed two times in the same consolidation. :param account: Recordset of the account :param partner: Recordset of partner to distinct :return: Balance of the account
  • reverse_moves(self, subsidiary)
    Reverse all consolidation account moves of a subsidiary which have the "Auto posted" flag, and wasn't reversed before this date :param subsidiary: Recordset of the subsidiary :return: tuple with : Recordset of the reversed moves, Recordset of the reversal moves
  • run_consolidation(self)
    Consolidate. Consolidate selected subsidiaries according to consolidation profiles onto the Holding accounts. :return: dict to open an Items view filtered on the created move lines

New fields (1)
  • consol_company_id Many2one → res.company
    comodel_name='res.company' readonly=True string='Consolidated from Company'
Public methods (1)
  • post(self)
    Bypass move posting when reversing consolidation moves

New fields (3)
  • consol_company_id Many2one → res.company
    comodel_name='res.company' readonly=True related='move_id.consol_company_id' store=True string='Consolidated from'
  • consol_partner_id Many2one → res.partner
    comodel_name='res.partner' readonly=True string='Intercompany Partner'
  • consolidated Boolean
    default=False
Public methods (0)

No public methods.

New fields (3)
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True
  • consolidation_percentage Float
    default=<expr> help='Define a percentage to consolidate this company (in percents)' required=True string='Consolidation percentage'
  • sub_company_id Many2one → res.company
    comodel_name='res.company' required=True string='Subsidiary'
Public methods (1)
  • name_get(self)

New fields (5)
  • consolidation_default_journal_id Many2one → account.journal
    comodel_name='account.journal' help='Default journal to generate consolidation entries' string='Default consolidation journal'
  • consolidation_diff_account_id Many2one → account.account
    comodel_name='account.account' help='Conso. differences will be affected to this account' string='Consolidation difference account'
  • consolidation_percentage Float
    compute=<expr>
  • consolidation_profile_ids One2many → company.consolidation.profile
    comodel_name='company.consolidation.profile' inverse_name='company_id'
  • is_consolidation Boolean
    string='Consolidation company'
Public methods (0)

No public methods.

New fields (4)
  • consolidation_default_journal_id Many2one → account.journal
    comodel_name='account.journal' help='Default journal to generate consolidation entries' readonly=False related='company_id.consolidation_default_journal_id' string='Default consolidation journal'
  • consolidation_diff_account_id Many2one → account.account
    comodel_name='account.account' help='Conso. differences will be affected to this account' readonly=False related='company_id.consolidation_diff_account_id' string='Consolidation difference account'
  • consolidation_profile_ids One2many → company.consolidation.profile
    comodel_name='company.consolidation.profile' readonly=False related='company_id.consolidation_profile_ids' string='Consolidation profiles'
  • is_consolidation Boolean
    help='Check this box if you want to consolidate in this company.' readonly=False related='company_id.is_consolidation' string='Consolidation company'
Public methods (0)

No public methods.

STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/account-consolidation
PULL REQUEST
PULL REQUEST[15.0][MIG] account_consolidation_oca (#43)