Detect changes and update the Account Chart from a template

account_chart_update
REPOSITORY
REPOSITORYOCA/account-financial-tools
GIT
GIThttps://github.com/OCA/account-financial-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-financial-tools/tree/19.0/account_chart_update
VERSION
VERSION 1.1.4
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), BCIM, Okia
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), BCIM, Okia
COMMITTERS
COMMITTERSJairo Llopis, Weblate, OCA-git-bot, Raf Ven, oca-ci, Andrii9090-tecnativa
WEBSITE
WEBSITEhttps://github.com/OCA/account-financial-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:40:46
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This is a pretty useful tool to update Odoo installations after tax
reforms on the official charts of accounts, or to apply fixes performed
on the chart template.

The wizard:

- Allows the user to compare a chart and a template showing differences
  on accounts, taxes, tax codes and fiscal positions.
- It may create the new account, taxes, tax codes and fiscal positions
  detected on the template.
- It can also update (overwrite) the accounts, taxes, tax codes and
  fiscal positions that got modified on the template.

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
res_config_settings_view_form Open Account Chart Update Wizard 2 res.config.settings button Inherits account.res_config_settings_view_form
view_update_multi_chart Update Chart of Accounts from a Chart Template wizard.update.charts.accounts form New
Models touched (14)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • matching_value Selection
    selection='_get_matching_selection'
  • sequence Integer
    default=1 required=True
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (38)
  • account_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_account_fields_rel' string='Account fields'
  • account_group_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_account_group_fields_rel' string='Account groups fields'
  • account_group_ids One2many → wizard.update.charts.accounts.account.group
    comodel_name='wizard.update.charts.accounts.account.group' inverse_name='update_chart_wizard_id' string='Account Groups'
  • account_group_matching_ids One2many → wizard.account.group.matching
    comodel_name='wizard.account.group.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Account groups matching'
  • account_ids One2many → wizard.update.charts.accounts.account
    comodel_name='wizard.update.charts.accounts.account' inverse_name='update_chart_wizard_id' string='Accounts'
  • account_matching_ids One2many → wizard.account.matching
    comodel_name='wizard.account.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Accounts matching'
  • chart_template Selection
    required=True selection='_chart_template_selection'
  • code_digits Integer
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True string='Company'
  • deleted_taxes Integer
    compute='_compute_deleted_taxes_count' string='Deactivated taxes'
  • fiscal_position_ids One2many → wizard.update.charts.accounts.fiscal.position
    comodel_name='wizard.update.charts.accounts.fiscal.position' inverse_name='update_chart_wizard_id' string='Fiscal positions'
  • fp_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_fp_fields_rel' string='Fiscal position fields'
  • fp_matching_ids One2many → wizard.fp.matching
    comodel_name='wizard.fp.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Fiscal positions matching'
  • log Text
    readonly=True string='Messages and Errors'
  • new_account_groups Integer
    compute='_compute_new_account_groups_count'
  • new_accounts Integer
    compute='_compute_new_accounts_count'
  • new_fps Integer
    compute='_compute_new_fps_count' string='New fiscal positions'
  • new_tax_groups Integer
    compute='_compute_new_tax_group_count'
  • new_taxes Integer
    compute='_compute_new_taxes_count'
  • rejected_new_account_number Integer
  • rejected_updated_account_number Integer
  • state Selection
    default='init' readonly=True selection=[('init', 'Configuration'), ('ready', 'Select records to update'), ('done', 'Wizard completed')] string='Status'
  • tax_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_tax_fields_rel' string='Tax fields'
  • tax_group_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_tax_group_fields_rel' string='Tax group fields'
  • tax_group_ids One2many → wizard.update.charts.accounts.tax.group
    comodel_name='wizard.update.charts.accounts.tax.group' inverse_name='update_chart_wizard_id' string='Taxe Groups'
  • tax_group_matching_ids One2many → wizard.tax.group.matching
    comodel_name='wizard.tax.group.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Tax goups matching'
  • tax_ids One2many → wizard.update.charts.accounts.tax
    comodel_name='wizard.update.charts.accounts.tax' inverse_name='update_chart_wizard_id' string='Taxes'
  • tax_matching_ids One2many → wizard.tax.matching
    comodel_name='wizard.tax.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Taxes matching'
  • update_account Boolean
    default=True help='Existing accounts are updated. Accounts are searched by code.' string='Update accounts'
  • update_account_group Boolean
    default=True help='Existing account groups are updated. Account groups are searched by prefix_code_start.' string='Update account groups'
  • update_fiscal_position Boolean
    default=True help='Existing fiscal positions are updated. Fiscal positions are searched by name.' string='Update fiscal positions'
  • update_tax Boolean
    default=True help='Existing taxes are updated. Taxes are searched by name.' string='Update taxes'
  • update_tax_group Boolean
    default=True help='Existing tax groups are updated. Tax group are searched by name.' string='Update tax groups'
  • updated_account_groups Integer
    compute='_compute_updated_account_groups_count'
  • updated_accounts Integer
    compute='_compute_updated_accounts_count'
  • updated_fps Integer
    compute='_compute_updated_fps_count' string='Updated fiscal positions'
  • updated_tax_groups Integer
    compute='_compute_updated_tax_groups_count'
  • updated_taxes Integer
    compute='_compute_updated_taxes_count'
Public methods (11)
  • action_find_records(self)
    Searchs for records to update/create and shows them.
  • action_init(self)
    Initial action that sets the initial state.
  • action_update_records(self)
    Action that creates/updates/deletes the selected elements.
  • diff_fields(self, record_values, real)
    @api.model
    Get fields that are different in record values and real records. :param odoo.models.Model record_values: Record values values. :param odoo.models.Model real: Real record. :return dict: Fields that are different in both records, and the expected value.
  • diff_notes(self, record_values, real)
    @api.model
    Get notes for humans on why this record is going to be updated. Shows each differing field with a concise "actual → expected" detail so the user can audit the proposed change before accepting it.
  • fields_to_ignore(self, name)
    @api.model@tools.ormcache('name')
    Get fields that will not be used when checking differences. :param str name: The name of the template model. :return set: Fields to ignore in diff.
  • get_default_unchecked_fields(self, name)
    @api.model
    Get fields that should be unchecked by default for a given model. :param str name: The name of the template model. :return set: Fields to uncheck by default.
  • get_uncheck_fields_domain(self, name)
  • missing_xml_id(self, record, xml_id)
  • padded_code(self, code)
    @api.model@tools.ormcache('code')
    Return a right-zero-padded code with the chosen digits. Similar to what is done in the _pre_load_data() method of chart.template
  • recreate_xml_id(self, record, xml_id)
    Recreate the xml_id if it is different than expected, otherwise chart.template won't do it correctly.

New fields (5)
  • notes Text
    readonly=True
  • type Selection
    readonly=False selection=[('new', 'New account'), ('updated', 'Updated account')]
  • update_account_id Many2one → account.account
    comodel_name='account.account' ondelete='set null' required=False string='Account to update'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • xml_id Char
Public methods (0)

No public methods.

New fields (5)
  • notes Text
    readonly=True
  • type Selection
    readonly=False selection=[('new', 'New account group'), ('updated', 'Updated accoung group')]
  • update_account_group_id Many2one → account.group
    comodel_name='account.group' ondelete='set null' required=False string='Account group to update'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • xml_id Char
Public methods (0)

No public methods.

New fields (5)
  • notes Text
    readonly=True
  • type Selection
    readonly=False selection=[('new', 'New fiscal position'), ('updated', 'Updated fiscal position')]
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • update_fiscal_position_id Many2one → account.fiscal.position
    comodel_name='account.fiscal.position' ondelete='set null' required=False string='Fiscal position to update'
  • xml_id Char
Public methods (0)

No public methods.

New fields (6)
  • notes Text
    readonly=True
  • type Selection
    readonly=False selection=[('new', 'New tax'), ('updated', 'Updated tax'), ('deleted', 'Tax to deactivate')]
  • type_tax_use Selection
    readonly=True selection='_get_account_tax_type_tax_uses'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • update_tax_id Many2one → account.tax
    comodel_name='account.tax' ondelete='set null' required=False string='Tax to update'
  • xml_id Char
Public methods (0)

No public methods.

New fields (5)
  • notes Text
    readonly=True
  • type Selection
    readonly=False selection=[('new', 'New tax group'), ('updated', 'Updated tax group')]
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • update_tax_group_id Many2one → account.tax.group
    comodel_name='account.tax.group' ondelete='set null' required=False string='Tax group to update'
  • xml_id Char
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/account-financial-tools
GIT
GIThttps://github.com/OCA/account-financial-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-financial-tools/tree/18.0/account_chart_update
VERSION
VERSION 2.0.0
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), BCIM, Okia
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), BCIM, Okia
COMMITTERS
COMMITTERSJairo Llopis, Carlos Lopez, Víctor Martínez, Weblate, OCA-git-bot, oca-ci, Emilio Pascual, Fernando La Chica (Sidoo SDi. Digital Group)
WEBSITE
WEBSITEhttps://github.com/OCA/account-financial-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:07
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - 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
This is a pretty useful tool to update Odoo installations after tax
reforms on the official charts of accounts, or to apply fixes performed
on the chart template.

The wizard:

- Allows the user to compare a chart and a template showing differences
  on accounts, taxes, tax codes and fiscal positions.
- It may create the new account, taxes, tax codes and fiscal positions
  detected on the template.
- It can also update (overwrite) the accounts, taxes, tax codes and
  fiscal positions that got modified on the template.

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
res_config_settings_view_form Open Account Chart Update Wizard 2 res.config.settings button Inherits account.res_config_settings_view_form
view_update_multi_chart Update Chart of Accounts from a Chart Template wizard.update.charts.accounts form New
Models touched (14)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • matching_value Selection
    selection='_get_matching_selection'
  • sequence Integer
    default=1 required=True
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (38)
  • account_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_account_fields_rel' string='Account fields'
  • account_group_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_account_group_fields_rel' string='Account groups fields'
  • account_group_ids One2many → wizard.update.charts.accounts.account.group
    comodel_name='wizard.update.charts.accounts.account.group' inverse_name='update_chart_wizard_id' string='Account Groups'
  • account_group_matching_ids One2many → wizard.account.group.matching
    comodel_name='wizard.account.group.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Account groups matching'
  • account_ids One2many → wizard.update.charts.accounts.account
    comodel_name='wizard.update.charts.accounts.account' inverse_name='update_chart_wizard_id' string='Accounts'
  • account_matching_ids One2many → wizard.account.matching
    comodel_name='wizard.account.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Accounts matching'
  • chart_template Selection
    required=True selection='_chart_template_selection'
  • code_digits Integer
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True string='Company'
  • deleted_taxes Integer
    compute='_compute_deleted_taxes_count' string='Deactivated taxes'
  • fiscal_position_ids One2many → wizard.update.charts.accounts.fiscal.position
    comodel_name='wizard.update.charts.accounts.fiscal.position' inverse_name='update_chart_wizard_id' string='Fiscal positions'
  • fp_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_fp_fields_rel' string='Fiscal position fields'
  • fp_matching_ids One2many → wizard.fp.matching
    comodel_name='wizard.fp.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Fiscal positions matching'
  • log Text
    readonly=True string='Messages and Errors'
  • new_account_groups Integer
    compute='_compute_new_account_groups_count'
  • new_accounts Integer
    compute='_compute_new_accounts_count'
  • new_fps Integer
    compute='_compute_new_fps_count' string='New fiscal positions'
  • new_tax_groups Integer
    compute='_compute_new_tax_group_count'
  • new_taxes Integer
    compute='_compute_new_taxes_count'
  • rejected_new_account_number Integer
  • rejected_updated_account_number Integer
  • state Selection
    default='init' readonly=True selection=[('init', 'Configuration'), ('ready', 'Select records to update'), ('done', 'Wizard completed')] string='Status'
  • tax_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_tax_fields_rel' string='Tax fields'
  • tax_group_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_tax_group_fields_rel' string='Tax group fields'
  • tax_group_ids One2many → wizard.update.charts.accounts.tax.group
    comodel_name='wizard.update.charts.accounts.tax.group' inverse_name='update_chart_wizard_id' string='Taxe Groups'
  • tax_group_matching_ids One2many → wizard.tax.group.matching
    comodel_name='wizard.tax.group.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Tax goups matching'
  • tax_ids One2many → wizard.update.charts.accounts.tax
    comodel_name='wizard.update.charts.accounts.tax' inverse_name='update_chart_wizard_id' string='Taxes'
  • tax_matching_ids One2many → wizard.tax.matching
    comodel_name='wizard.tax.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Taxes matching'
  • update_account Boolean
    default=True help='Existing accounts are updated. Accounts are searched by code.' string='Update accounts'
  • update_account_group Boolean
    default=True help='Existing account groups are updated. Account groups are searched by prefix_code_start.' string='Update account groups'
  • update_fiscal_position Boolean
    default=True help='Existing fiscal positions are updated. Fiscal positions are searched by name.' string='Update fiscal positions'
  • update_tax Boolean
    default=True help='Existing taxes are updated. Taxes are searched by name.' string='Update taxes'
  • update_tax_group Boolean
    default=True help='Existing tax groups are updated. Tax group are searched by name.' string='Update taxe groups'
  • updated_account_groups Integer
    compute='_compute_updated_account_groups_count'
  • updated_accounts Integer
    compute='_compute_updated_accounts_count'
  • updated_fps Integer
    compute='_compute_updated_fps_count' string='Updated fiscal positions'
  • updated_tax_groups Integer
    compute='_compute_updated_tax_groups_count'
  • updated_taxes Integer
    compute='_compute_updated_taxes_count'
Public methods (11)
  • action_find_records(self)
    Searchs for records to update/create and shows them.
  • action_init(self)
    Initial action that sets the initial state.
  • action_update_records(self)
    Action that creates/updates/deletes the selected elements.
  • diff_fields(self, record_values, real)
    @api.model
    Get fields that are different in record values and real records. :param odoo.models.Model record_values: Record values values. :param odoo.models.Model real: Real record. :return dict: Fields that are different in both records, and the expected value.
  • diff_notes(self, record_values, real)
    @api.model
    Get notes for humans on why is this record going to be updated. :param openerp.models.Model record_values: Record values values. :param openerp.models.Model real: Real record. :return str: Notes result.
  • fields_to_ignore(self, name)
    @api.model@tools.ormcache('name')
    Get fields that will not be used when checking differences. :param str name: The name of the template model. :return set: Fields to ignore in diff.
  • get_default_unchecked_fields(self, name)
    @api.model
    Get fields that should be unchecked by default for a given model. :param str name: The name of the template model. :return set: Fields to uncheck by default.
  • get_uncheck_fields_domain(self, name)
  • missing_xml_id(self, record, xml_id)
  • padded_code(self, code)
    @api.model@tools.ormcache('code')
    Return a right-zero-padded code with the chosen digits. Similar to what is done in the _pre_load_data() method of chart.template
  • recreate_xml_id(self, record, xml_id)
    Recreate the xml_id if it is different than expected, otherwise chart.template won't do it correctly.

New fields (5)
  • notes Text
    readonly=True
  • type Selection
    readonly=False selection=[('new', 'New account'), ('updated', 'Updated account')]
  • update_account_id Many2one → account.account
    comodel_name='account.account' ondelete='set null' required=False string='Account to update'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • xml_id Char
Public methods (0)

No public methods.

New fields (5)
  • notes Text
    readonly=True
  • type Selection
    readonly=False selection=[('new', 'New account group'), ('updated', 'Updated accoung group')]
  • update_account_group_id Many2one → account.group
    comodel_name='account.group' ondelete='set null' required=False string='Account group to update'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • xml_id Char
Public methods (0)

No public methods.

New fields (5)
  • notes Text
    readonly=True
  • type Selection
    readonly=False selection=[('new', 'New fiscal position'), ('updated', 'Updated fiscal position')]
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • update_fiscal_position_id Many2one → account.fiscal.position
    comodel_name='account.fiscal.position' ondelete='set null' required=False string='Fiscal position to update'
  • xml_id Char
Public methods (0)

No public methods.

New fields (6)
  • notes Text
    readonly=True
  • type Selection
    readonly=False selection=[('new', 'New tax'), ('updated', 'Updated tax'), ('deleted', 'Tax to deactivate')]
  • type_tax_use Selection
    readonly=True selection='_get_account_tax_type_tax_uses'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • update_tax_id Many2one → account.tax
    comodel_name='account.tax' ondelete='set null' required=False string='Tax to update'
  • xml_id Char
Public methods (0)

No public methods.

New fields (5)
  • notes Text
    readonly=True
  • type Selection
    readonly=False selection=[('new', 'New tax group'), ('updated', 'Updated tax group')]
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • update_tax_group_id Many2one → account.tax.group
    comodel_name='account.tax.group' ondelete='set null' required=False string='Tax group to update'
  • xml_id Char
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/account-financial-tools
GIT
GIThttps://github.com/OCA/account-financial-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-financial-tools/tree/17.0/account_chart_update
VERSION
VERSION 1.1.2
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), BCIM, Okia
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), BCIM, Okia
COMMITTERS
COMMITTERSVíctor Martínez, Weblate, OCA-git-bot, oca-ci, cristina-hidalgo-tecnativa
WEBSITE
WEBSITEhttps://github.com/OCA/account-financial-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:01
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - onboarding
    - 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
This is a pretty useful tool to update Odoo installations after tax
reforms on the official charts of accounts, or to apply fixes performed
on the chart template.

The wizard:

- Allows the user to compare a chart and a template showing differences
  on accounts, taxes, tax codes and fiscal positions.
- It may create the new account, taxes, tax codes and fiscal positions
  detected on the template.
- It can also update (overwrite) the accounts, taxes, tax codes and
  fiscal positions that got modified on the template.

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
res_config_settings_view_form Open Account Chart Update Wizard 2 res.config.settings button Inherits account.res_config_settings_view_form
view_update_multi_chart Update Chart of Accounts from a Chart Template wizard.update.charts.accounts form New
Models touched (14)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • matching_value Selection
    selection='_get_matching_selection'
  • sequence Integer
    default=1 required=True
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (38)
  • account_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_account_fields_rel' string='Account fields'
  • account_group_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_account_group_fields_rel' string='Account groups fields'
  • account_group_ids One2many → wizard.update.charts.accounts.account.group
    comodel_name='wizard.update.charts.accounts.account.group' inverse_name='update_chart_wizard_id' string='Account Groups'
  • account_group_matching_ids One2many → wizard.account.group.matching
    comodel_name='wizard.account.group.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Account groups matching'
  • account_ids One2many → wizard.update.charts.accounts.account
    comodel_name='wizard.update.charts.accounts.account' inverse_name='update_chart_wizard_id' string='Accounts'
  • account_matching_ids One2many → wizard.account.matching
    comodel_name='wizard.account.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Accounts matching'
  • chart_template Selection
    required=True selection='_chart_template_selection'
  • code_digits Integer
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True string='Company'
  • deleted_taxes Integer
    compute='_compute_deleted_taxes_count' string='Deactivated taxes'
  • fiscal_position_ids One2many → wizard.update.charts.accounts.fiscal.position
    comodel_name='wizard.update.charts.accounts.fiscal.position' inverse_name='update_chart_wizard_id' string='Fiscal positions'
  • fp_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_fp_fields_rel' string='Fiscal position fields'
  • fp_matching_ids One2many → wizard.fp.matching
    comodel_name='wizard.fp.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Fiscal positions matching'
  • log Text
    readonly=True string='Messages and Errors'
  • new_account_groups Integer
    compute='_compute_new_account_groups_count'
  • new_accounts Integer
    compute='_compute_new_accounts_count'
  • new_fps Integer
    compute='_compute_new_fps_count' string='New fiscal positions'
  • new_tax_groups Integer
    compute='_compute_new_tax_group_count'
  • new_taxes Integer
    compute='_compute_new_taxes_count'
  • rejected_new_account_number Integer
  • rejected_updated_account_number Integer
  • state Selection
    default='init' readonly=True selection=[('init', 'Configuration'), ('ready', 'Select records to update'), ('done', 'Wizard completed')] string='Status'
  • tax_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_tax_fields_rel' string='Tax fields'
  • tax_group_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_tax_group_fields_rel' string='Tax group fields'
  • tax_group_ids One2many → wizard.update.charts.accounts.tax.group
    comodel_name='wizard.update.charts.accounts.tax.group' inverse_name='update_chart_wizard_id' string='Taxe Groups'
  • tax_group_matching_ids One2many → wizard.tax.group.matching
    comodel_name='wizard.tax.group.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Tax goups matching'
  • tax_ids One2many → wizard.update.charts.accounts.tax
    comodel_name='wizard.update.charts.accounts.tax' inverse_name='update_chart_wizard_id' string='Taxes'
  • tax_matching_ids One2many → wizard.tax.matching
    comodel_name='wizard.tax.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Taxes matching'
  • update_account Boolean
    default=True help='Existing accounts are updated. Accounts are searched by code.' string='Update accounts'
  • update_account_group Boolean
    default=True help='Existing account groups are updated. Account groups are searched by prefix_code_start.' string='Update account groups'
  • update_fiscal_position Boolean
    default=True help='Existing fiscal positions are updated. Fiscal positions are searched by name.' string='Update fiscal positions'
  • update_tax Boolean
    default=True help='Existing taxes are updated. Taxes are searched by name.' string='Update taxes'
  • update_tax_group Boolean
    default=True help='Existing tax groups are updated. Tax group are searched by name.' string='Update taxe groups'
  • updated_account_groups Integer
    compute='_compute_updated_account_groups_count'
  • updated_accounts Integer
    compute='_compute_updated_accounts_count'
  • updated_fps Integer
    compute='_compute_updated_fps_count' string='Updated fiscal positions'
  • updated_tax_groups Integer
    compute='_compute_updated_tax_groups_count'
  • updated_taxes Integer
    compute='_compute_updated_taxes_count'
Public methods (9)
  • action_find_records(self)
    Searchs for records to update/create and shows them.
  • action_init(self)
    Initial action that sets the initial state.
  • action_update_records(self)
    Action that creates/updates/deletes the selected elements.
  • diff_fields(self, record_values, real)
    @api.model
    Get fields that are different in record values and real records. :param odoo.models.Model record_values: Record values values. :param odoo.models.Model real: Real record. :return dict: Fields that are different in both records, and the expected value.
  • diff_notes(self, record_values, real)
    @api.model
    Get notes for humans on why is this record going to be updated. :param openerp.models.Model record_values: Record values values. :param openerp.models.Model real: Real record. :return str: Notes result.
  • fields_to_ignore(self, name)
    @api.model@tools.ormcache('name')
    Get fields that will not be used when checking differences. :param str template: A template record. :param str name: The name of the template model. :return set: Fields to ignore in diff.
  • missing_xml_id(self, record, xml_id)
    @tools.ormcache('self', 'record', 'xml_id')
  • padded_code(self, code)
    @api.model@tools.ormcache('code')
    Return a right-zero-padded code with the chosen digits. Similar to what is done in the _pre_load_data() method of chart.template
  • recreate_xml_id(self, record, xml_id)
    Eecreate the xml_id if it is different than expected, otherwise chart.template won't do it correctly.

New fields (5)
  • notes Text
    readonly=True
  • type Selection
    readonly=False selection=[('new', 'New account'), ('updated', 'Updated account')]
  • update_account_id Many2one → account.account
    comodel_name='account.account' ondelete='set null' required=False string='Account to update'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • xml_id Char
Public methods (0)

No public methods.

New fields (5)
  • notes Text
    readonly=True
  • type Selection
    readonly=False selection=[('new', 'New account group'), ('updated', 'Updated accoung group')]
  • update_account_group_id Many2one → account.group
    comodel_name='account.group' ondelete='set null' required=False string='Account group to update'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • xml_id Char
Public methods (0)

No public methods.

New fields (5)
  • notes Text
    readonly=True
  • type Selection
    readonly=False selection=[('new', 'New fiscal position'), ('updated', 'Updated fiscal position')]
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • update_fiscal_position_id Many2one → account.fiscal.position
    comodel_name='account.fiscal.position' ondelete='set null' required=False string='Fiscal position to update'
  • xml_id Char
Public methods (0)

No public methods.

New fields (6)
  • notes Text
    readonly=True
  • type Selection
    readonly=False selection=[('new', 'New tax'), ('updated', 'Updated tax'), ('deleted', 'Tax to deactivate')]
  • type_tax_use Selection
    readonly=True selection='_get_account_tax_type_tax_uses'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • update_tax_id Many2one → account.tax
    comodel_name='account.tax' ondelete='set null' required=False string='Tax to update'
  • xml_id Char
Public methods (0)

No public methods.

New fields (5)
  • notes Text
    readonly=True
  • type Selection
    readonly=False selection=[('new', 'New tax group'), ('updated', 'Updated tax group')]
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • update_tax_group_id Many2one → account.tax.group
    comodel_name='account.tax.group' ondelete='set null' required=False string='Tax group to update'
  • xml_id Char
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/account-financial-tools
GIT
GIThttps://github.com/OCA/account-financial-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-financial-tools/tree/16.0/account_chart_update
VERSION
VERSION 2.0.8
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), BCIM, Okia
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), BCIM, Okia
COMMITTERS
COMMITTERSPedro M. Baeza, GitHub, Jairo Llopis, Lois Rilo, Weblate, OCA-git-bot, Luis J. Salvatierra, Adrián Cifuentes, oca-ci, Eduardo De Miguel, Zina Rasoamanana, Camille Morand, Eduardo López Peñalver
WEBSITE
WEBSITEhttps://github.com/OCA/account-financial-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:47
ODOO DEPENDENCIES
ODOO DEPENDENCIES 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 (2)
XML IDNameModelTypeStatus
res_config_settings_view_form Open Account Chart Update Wizard 2 res.config.settings div Inherits account.res_config_settings_view_form
view_update_multi_chart Update Chart of Accounts from a Chart Template wizard.update.charts.accounts form New
Models touched (11)

New fields (0)

No new fields.

Public methods (1)
  • name_get(self)
    Return special label when showing fields in chart update wizard.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • matching_value Selection
    selection='_get_matching_selection'
  • sequence Integer
    default=1 required=True
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (38)
  • account_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_account_fields_rel' string='Account fields'
  • account_group_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_account_group_fields_rel' string='Account groups fields'
  • account_group_ids One2many → wizard.update.charts.accounts.account.group
    comodel_name='wizard.update.charts.accounts.account.group' inverse_name='update_chart_wizard_id' string='Account Groups'
  • account_group_matching_ids One2many → wizard.account.group.matching
    comodel_name='wizard.account.group.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Account groups matching'
  • account_ids One2many → wizard.update.charts.accounts.account
    comodel_name='wizard.update.charts.accounts.account' inverse_name='update_chart_wizard_id' string='Accounts'
  • account_matching_ids One2many → wizard.account.matching
    comodel_name='wizard.account.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Accounts matching'
  • chart_template_id Many2one → account.chart.template
    comodel_name='account.chart.template' ondelete='cascade' required=True string='Chart Template'
  • chart_template_ids Many2many → account.chart.template
    compute='_compute_chart_template_ids' help='Includes all chart templates.' string='Chart Templates' args: 'account.chart.template'
  • code_digits Integer
    related='chart_template_id.code_digits'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True string='Company'
  • continue_on_errors Boolean
    default=False help='If set, the wizard will continue to the next step even if there are minor errors.'
  • deleted_taxes Integer
    compute='_compute_deleted_taxes_count' string='Deactivated taxes'
  • fiscal_position_ids One2many → wizard.update.charts.accounts.fiscal.position
    comodel_name='wizard.update.charts.accounts.fiscal.position' inverse_name='update_chart_wizard_id' string='Fiscal positions'
  • fp_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_fp_fields_rel' string='Fiscal position fields'
  • fp_matching_ids One2many → wizard.fp.matching
    comodel_name='wizard.fp.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Fiscal positions matching'
  • lang Selection
    default=<expr> help='For records searched by name (taxes, fiscal positions), the template name will be matched against the record name on this language.' required=True args: <expr>, 'Language'
  • log Text
    readonly=True string='Messages and Errors'
  • new_account_groups Integer
    compute='_compute_new_account_groups_count'
  • new_accounts Integer
    compute='_compute_new_accounts_count'
  • new_fps Integer
    compute='_compute_new_fps_count' string='New fiscal positions'
  • new_taxes Integer
    compute='_compute_new_taxes_count'
  • recreate_xml_ids Boolean
    string='Recreate missing XML-IDs'
  • rejected_new_account_number Integer
  • rejected_updated_account_number Integer
  • state Selection
    default='init' readonly=True selection=[('init', 'Configuration'), ('ready', 'Select records to update'), ('done', 'Wizard completed')] string='Status'
  • tax_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_tax_fields_rel' string='Tax fields'
  • tax_ids One2many → wizard.update.charts.accounts.tax
    comodel_name='wizard.update.charts.accounts.tax' inverse_name='update_chart_wizard_id' string='Taxes'
  • tax_matching_ids One2many → wizard.tax.matching
    comodel_name='wizard.tax.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Taxes matching'
  • update_account Boolean
    default=True help='Existing accounts are updated. Accounts are searched by code.' string='Update accounts'
  • update_account_group Boolean
    default=True help='Existing account groups are updated. Account groups are searched by prefix_code_start.' string='Update account groups'
  • update_fiscal_position Boolean
    default=True help='Existing fiscal positions are updated. Fiscal positions are searched by name.' string='Update fiscal positions'
  • update_tax Boolean
    default=True help='Existing taxes are updated. Taxes are searched by name.' string='Update taxes'
  • update_tax_repartition_line_account Boolean
    default=True help='Update account_id field on existing Tax repartition lines' string='Update Tax Accounts'
  • update_tax_repartition_line_tags Boolean
    default=True help='Update tag_ids field on existing Tax repartition lines' string='Update Tax Tags'
  • updated_account_groups Integer
    compute='_compute_updated_account_groups_count'
  • updated_accounts Integer
    compute='_compute_updated_accounts_count'
  • updated_fps Integer
    compute='_compute_updated_fps_count' string='Updated fiscal positions'
  • updated_taxes Integer
    compute='_compute_updated_taxes_count'
Public methods (19)
  • action_find_records(self)
    Searchs for records to update/create and shows them.
  • action_init(self)
    Initial action that sets the initial state.
  • action_update_records(self)
    Action that creates/updates/deletes the selected elements.
  • diff_fields(self, template, real)
    @api.model
    Get fields that are different in template and real records. :param odoo.models.Model template: Template record. :param odoo.models.Model real: Real record. :return dict: Fields that are different in both records, and the expected value.
  • diff_notes(self, template, real)
    @api.model
    Get notes for humans on why is this record going to be updated. :param openerp.models.Model template: Template record. :param openerp.models.Model real: Real record. :return str: Notes result.
  • fields_to_ignore(self, name)
    @api.model@tools.ormcache('name')
    Get fields that will not be used when checking differences. :param str template: A template record. :param str name: The name of the template model. :return set: Fields to ignore in diff.
  • fields_to_include(self, name)
    Get fields that will be used when checking differences. :param str name: The name of the template model. :return set: Fields to include in diff.
  • find_account_by_templates(self, templates)
    @tools.ormcache('templates')
    Find an account that matches the template.
  • find_account_group_by_templates(self, templates)
    @tools.ormcache('templates')
    Find an account groups that matches the template.
  • find_accounts_by_templates(self, templates)
    @tools.ormcache('templates')
  • find_fp_account_by_templates(self, templates, current_fp_accounts)
    @tools.ormcache('templates', 'current_fp_accounts')
  • find_fp_by_templates(self, templates)
    @tools.ormcache('templates')
    Find a real fiscal position from a template.
  • find_fp_tax_by_templates(self, templates, current_fp_taxes)
    @tools.ormcache('templates', 'current_fp_taxes')
  • find_repartition_by_templates(self, templates, current_repartition, tax, inverse_name)
    @tools.ormcache('templates', 'current_repartition')
  • find_tax_by_templates(self, templates)
    @tools.ormcache('templates')
    Find a tax that matches the template.
  • find_taxes_by_templates(self, templates)
    @tools.ormcache('templates')
  • missing_xml_id(self, template, real_obj)
    @tools.ormcache('self', 'template', 'real_obj')
  • padded_code(self, code)
    @api.model@tools.ormcache('code')
    Return a right-zero-padded code with the chosen digits.
  • recreate_xml_id(self, template, real_obj)

New fields (6)
  • account_id Many2one → account.account.template
    comodel_name='account.account.template' required=True string='Account template'
  • notes Text
    readonly=True
  • recreate_xml_ids Boolean
    related='update_chart_wizard_id.recreate_xml_ids'
  • type Selection
    readonly=False selection=[('new', 'New template'), ('updated', 'Updated template')]
  • update_account_id Many2one → account.account
    comodel_name='account.account' ondelete='set null' required=False string='Account to update'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
Public methods (0)

No public methods.

New fields (6)
  • account_group_id Many2one → account.group.template
    comodel_name='account.group.template' required=True string='Account group template'
  • notes Text
    readonly=True
  • recreate_xml_ids Boolean
    related='update_chart_wizard_id.recreate_xml_ids' string='Recreate missing XML-IDs'
  • type Selection
    readonly=False selection=[('new', 'New template'), ('updated', 'Updated template')]
  • update_account_group_id Many2one → account.group
    comodel_name='account.group' ondelete='set null' required=False string='Account group to update'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
Public methods (0)

No public methods.

New fields (6)
  • fiscal_position_id Many2one → account.fiscal.position.template
    comodel_name='account.fiscal.position.template' required=True string='Fiscal position template'
  • notes Text
    readonly=True
  • recreate_xml_ids Boolean
    related='update_chart_wizard_id.recreate_xml_ids' string='Recreate missing XML-IDs'
  • type Selection
    readonly=False selection=[('new', 'New template'), ('updated', 'Updated template')]
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • update_fiscal_position_id Many2one → account.fiscal.position
    comodel_name='account.fiscal.position' ondelete='set null' required=False string='Fiscal position to update'
Public methods (0)

No public methods.

New fields (7)
  • notes Text
    readonly=True
  • recreate_xml_ids Boolean
    related='update_chart_wizard_id.recreate_xml_ids'
  • tax_id Many2one → account.tax.template
    comodel_name='account.tax.template' ondelete='set null' string='Tax template'
  • type Selection
    readonly=False selection=[('new', 'New template'), ('updated', 'Updated template'), ('deleted', 'Tax to deactivate')]
  • type_tax_use Selection
    readonly=True related='tax_id.type_tax_use'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • update_tax_id Many2one → account.tax
    comodel_name='account.tax' ondelete='set null' required=False string='Tax to update'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/account-financial-tools
GIT
GIThttps://github.com/OCA/account-financial-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-financial-tools/tree/15.0/account_chart_update
VERSION
VERSION 1.3.1
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), BCIM, Okia
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), BCIM, Okia
COMMITTERS
COMMITTERSPedro M. Baeza, Jairo Llopis, Lois Rilo, manu, OCA Transbot, Weblate, OCA-git-bot, oca-ci, Fernando La Chica
WEBSITE
WEBSITEhttps://github.com/OCA/account-financial-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:34
ODOO DEPENDENCIES
ODOO DEPENDENCIES 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 (2)
XML IDNameModelTypeStatus
res_config_settings_view_form Open Account Chart Update Wizard 2 res.config.settings div Inherits account.res_config_settings_view_form
view_update_multi_chart Update Chart of Accounts from a Chart Template wizard.update.charts.accounts form New
Models touched (11)

New fields (0)

No new fields.

Public methods (1)
  • name_get(self)
    Return special label when showing fields in chart update wizard.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • matching_value Selection
    selection='_get_matching_selection'
  • sequence Integer
    default=1 required=True
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (38)
  • account_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_account_fields_rel' string='Account fields'
  • account_group_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_account_group_fields_rel' string='Account groups fields'
  • account_group_ids One2many → wizard.update.charts.accounts.account.group
    comodel_name='wizard.update.charts.accounts.account.group' inverse_name='update_chart_wizard_id' string='Account Groups'
  • account_group_matching_ids One2many → wizard.account.group.matching
    comodel_name='wizard.account.group.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Account groups matching'
  • account_ids One2many → wizard.update.charts.accounts.account
    comodel_name='wizard.update.charts.accounts.account' inverse_name='update_chart_wizard_id' string='Accounts'
  • account_matching_ids One2many → wizard.account.matching
    comodel_name='wizard.account.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Accounts matching'
  • chart_template_id Many2one → account.chart.template
    comodel_name='account.chart.template' ondelete='cascade' required=True string='Chart Template'
  • chart_template_ids Many2many → account.chart.template
    compute='_compute_chart_template_ids' help='Includes all chart templates.' string='Chart Templates' args: 'account.chart.template'
  • code_digits Integer
    related='chart_template_id.code_digits'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True string='Company'
  • continue_on_errors Boolean
    default=False help='If set, the wizard will continue to the next step even if there are minor errors.'
  • deleted_taxes Integer
    compute='_compute_deleted_taxes_count' string='Deactivated taxes'
  • fiscal_position_ids One2many → wizard.update.charts.accounts.fiscal.position
    comodel_name='wizard.update.charts.accounts.fiscal.position' inverse_name='update_chart_wizard_id' string='Fiscal positions'
  • fp_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_fp_fields_rel' string='Fiscal position fields'
  • fp_matching_ids One2many → wizard.fp.matching
    comodel_name='wizard.fp.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Fiscal positions matching'
  • lang Selection
    default=<expr> help='For records searched by name (taxes, fiscal positions), the template name will be matched against the record name on this language.' required=True args: <expr>, 'Language'
  • log Text
    readonly=True string='Messages and Errors'
  • new_account_groups Integer
    compute='_compute_new_account_groups_count'
  • new_accounts Integer
    compute='_compute_new_accounts_count'
  • new_fps Integer
    compute='_compute_new_fps_count' string='New fiscal positions'
  • new_taxes Integer
    compute='_compute_new_taxes_count'
  • recreate_xml_ids Boolean
    string='Recreate missing XML-IDs'
  • rejected_new_account_number Integer
  • rejected_updated_account_number Integer
  • state Selection
    default='init' readonly=True selection=[('init', 'Configuration'), ('ready', 'Select records to update'), ('done', 'Wizard completed')] string='Status'
  • tax_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_tax_fields_rel' string='Tax fields'
  • tax_ids One2many → wizard.update.charts.accounts.tax
    comodel_name='wizard.update.charts.accounts.tax' inverse_name='update_chart_wizard_id' string='Taxes'
  • tax_matching_ids One2many → wizard.tax.matching
    comodel_name='wizard.tax.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Taxes matching'
  • update_account Boolean
    default=True help='Existing accounts are updated. Accounts are searched by code.' string='Update accounts'
  • update_account_group Boolean
    default=True help='Existing account groups are updated. Account groups are searched by prefix_code_start.' string='Update account groups'
  • update_fiscal_position Boolean
    default=True help='Existing fiscal positions are updated. Fiscal positions are searched by name.' string='Update fiscal positions'
  • update_tax Boolean
    default=True help='Existing taxes are updated. Taxes are searched by name.' string='Update taxes'
  • update_tax_repartition_line_account Boolean
    default=True help='Update account_id field on existing Tax repartition lines' string='Update Tax Accounts'
  • update_tax_repartition_line_tags Boolean
    default=True help='Update tag_ids field on existing Tax repartition lines' string='Update Tax Tags'
  • updated_account_groups Integer
    compute='_compute_updated_account_groups_count'
  • updated_accounts Integer
    compute='_compute_updated_accounts_count'
  • updated_fps Integer
    compute='_compute_updated_fps_count' string='Updated fiscal positions'
  • updated_taxes Integer
    compute='_compute_updated_taxes_count'
Public methods (18)
  • action_find_records(self)
    Searchs for records to update/create and shows them.
  • action_init(self)
    Initial action that sets the initial state.
  • action_update_records(self)
    Action that creates/updates/deletes the selected elements.
  • diff_fields(self, template, real)
    @api.model
    Get fields that are different in template and real records. :param odoo.models.Model template: Template record. :param odoo.models.Model real: Real record. :return dict: Fields that are different in both records, and the expected value.
  • diff_notes(self, template, real)
    @api.model
    Get notes for humans on why is this record going to be updated. :param openerp.models.Model template: Template record. :param openerp.models.Model real: Real record. :return str: Notes result.
  • fields_to_ignore(self, name)
    @api.model@tools.ormcache('name')
    Get fields that will not be used when checking differences. :param str template: A template record. :param str name: The name of the template model. :return set: Fields to ignore in diff.
  • find_account_by_templates(self, templates)
    @tools.ormcache('templates')
    Find an account that matches the template.
  • find_account_group_by_templates(self, templates)
    @tools.ormcache('templates')
    Find an account groups that matches the template.
  • find_accounts_by_templates(self, templates)
    @tools.ormcache('templates')
  • find_fp_account_by_templates(self, templates, current_fp_accounts)
    @tools.ormcache('templates', 'current_fp_accounts')
  • find_fp_by_templates(self, templates)
    @tools.ormcache('templates')
    Find a real fiscal position from a template.
  • find_fp_tax_by_templates(self, templates, current_fp_taxes)
    @tools.ormcache('templates', 'current_fp_taxes')
  • find_repartition_by_templates(self, templates, current_repartition, tax, inverse_name)
    @tools.ormcache('templates', 'current_repartition')
  • find_tax_by_templates(self, templates)
    @tools.ormcache('templates')
    Find a tax that matches the template.
  • find_taxes_by_templates(self, templates)
    @tools.ormcache('templates')
  • missing_xml_id(self, template, real_obj)
    @tools.ormcache('self', 'template', 'real_obj')
  • padded_code(self, code)
    @api.model@tools.ormcache('code')
    Return a right-zero-padded code with the chosen digits.
  • recreate_xml_id(self, template, real_obj)

New fields (6)
  • account_id Many2one → account.account.template
    comodel_name='account.account.template' required=True string='Account template'
  • notes Text
    readonly=True
  • recreate_xml_ids Boolean
    related='update_chart_wizard_id.recreate_xml_ids'
  • type Selection
    readonly=False selection=[('new', 'New template'), ('updated', 'Updated template')]
  • update_account_id Many2one → account.account
    comodel_name='account.account' ondelete='set null' required=False string='Account to update'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
Public methods (0)

No public methods.

New fields (6)
  • account_group_id Many2one → account.group.template
    comodel_name='account.group.template' required=True string='Account group template'
  • notes Text
    readonly=True
  • recreate_xml_ids Boolean
    related='update_chart_wizard_id.recreate_xml_ids' string='Recreate missing XML-IDs'
  • type Selection
    readonly=False selection=[('new', 'New template'), ('updated', 'Updated template')]
  • update_account_group_id Many2one → account.group
    comodel_name='account.group' ondelete='set null' required=False string='Account group to update'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
Public methods (0)

No public methods.

New fields (6)
  • fiscal_position_id Many2one → account.fiscal.position.template
    comodel_name='account.fiscal.position.template' required=True string='Fiscal position template'
  • notes Text
    readonly=True
  • recreate_xml_ids Boolean
    related='update_chart_wizard_id.recreate_xml_ids' string='Recreate missing XML-IDs'
  • type Selection
    readonly=False selection=[('new', 'New template'), ('updated', 'Updated template')]
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • update_fiscal_position_id Many2one → account.fiscal.position
    comodel_name='account.fiscal.position' ondelete='set null' required=False string='Fiscal position to update'
Public methods (0)

No public methods.

New fields (7)
  • notes Text
    readonly=True
  • recreate_xml_ids Boolean
    related='update_chart_wizard_id.recreate_xml_ids'
  • tax_id Many2one → account.tax.template
    comodel_name='account.tax.template' ondelete='set null' string='Tax template'
  • type Selection
    readonly=False selection=[('new', 'New template'), ('updated', 'Updated template'), ('deleted', 'Tax to deactivate')]
  • type_tax_use Selection
    readonly=True related='tax_id.type_tax_use'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • update_tax_id Many2one → account.tax
    comodel_name='account.tax' ondelete='set null' required=False string='Tax to update'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/account-financial-tools
GIT
GIThttps://github.com/OCA/account-financial-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-financial-tools/tree/14.0/account_chart_update
VERSION
VERSION 2.1.2
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), BCIM, Okia
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), BCIM, Okia
COMMITTERS
COMMITTERSPedro M. Baeza, Enric Tobella, Lois Rilo, OCA Transbot, Miquel Raïch, oca-travis, Weblate, OCA-git-bot, sergiocorato, oca-ci, Reyes4711
WEBSITE
WEBSITEhttps://github.com/OCA/account-financial-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:00
ODOO DEPENDENCIES
ODOO DEPENDENCIES 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 (2)
XML IDNameModelTypeStatus
res_config_settings_view_form Open Account Chart Update Wizard 2 res.config.settings div Inherits account.res_config_settings_view_form
view_update_multi_chart Update Chart of Accounts from a Chart Template wizard.update.charts.accounts form New
Models touched (11)

New fields (0)

No new fields.

Public methods (1)
  • name_get(self)
    Return special label when showing fields in chart update wizard.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • matching_value Selection
    selection='_get_matching_selection'
  • sequence Integer
    default=1 required=True
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (38)
  • account_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_account_fields_rel' string='Account fields'
  • account_group_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_account_group_fields_rel' string='Account fields'
  • account_group_ids One2many → wizard.update.charts.accounts.account.group
    comodel_name='wizard.update.charts.accounts.account.group' inverse_name='update_chart_wizard_id' string='Account Groups'
  • account_group_matching_ids One2many → wizard.account.group.matching
    comodel_name='wizard.account.group.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Account groups matching'
  • account_ids One2many → wizard.update.charts.accounts.account
    comodel_name='wizard.update.charts.accounts.account' inverse_name='update_chart_wizard_id' string='Accounts'
  • account_matching_ids One2many → wizard.account.matching
    comodel_name='wizard.account.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Accounts matching'
  • chart_template_id Many2one → account.chart.template
    comodel_name='account.chart.template' ondelete='cascade' required=True string='Chart Template'
  • chart_template_ids Many2many → account.chart.template
    compute='_compute_chart_template_ids' help='Includes all chart templates.' string='Chart Templates' args: 'account.chart.template'
  • code_digits Integer
    related='chart_template_id.code_digits'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True string='Company'
  • continue_on_errors Boolean
    default=False help='If set, the wizard will continue to the next step even if there are minor errors.' string='Continue on errors'
  • deleted_taxes Integer
    compute='_compute_deleted_taxes_count' string='Deactivated taxes'
  • fiscal_position_ids One2many → wizard.update.charts.accounts.fiscal.position
    comodel_name='wizard.update.charts.accounts.fiscal.position' inverse_name='update_chart_wizard_id' string='Fiscal positions'
  • fp_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_fp_fields_rel' string='Fiscal position fields'
  • fp_matching_ids One2many → wizard.fp.matching
    comodel_name='wizard.fp.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Fiscal positions matching'
  • lang Selection
    default=<expr> help='For records searched by name (taxes, fiscal positions), the template name will be matched against the record name on this language.' required=True args: <expr>, 'Language'
  • log Text
    readonly=True string='Messages and Errors'
  • new_account_groups Integer
    compute='_compute_new_account_groups_count' string='New account groups'
  • new_accounts Integer
    compute='_compute_new_accounts_count' string='New accounts'
  • new_fps Integer
    compute='_compute_new_fps_count' string='New fiscal positions'
  • new_taxes Integer
    compute='_compute_new_taxes_count' string='New taxes'
  • recreate_xml_ids Boolean
    string='Recreate missing XML-IDs'
  • rejected_new_account_number Integer
  • rejected_updated_account_number Integer
  • state Selection
    default='init' readonly=True selection=[('init', 'Configuration'), ('ready', 'Select records to update'), ('done', 'Wizard completed')] string='Status'
  • tax_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_tax_fields_rel' string='Tax fields'
  • tax_ids One2many → wizard.update.charts.accounts.tax
    comodel_name='wizard.update.charts.accounts.tax' inverse_name='update_chart_wizard_id' string='Taxes'
  • tax_matching_ids One2many → wizard.tax.matching
    comodel_name='wizard.tax.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Taxes matching'
  • update_account Boolean
    default=True help='Existing accounts are updated. Accounts are searched by code.' string='Update accounts'
  • update_account_group Boolean
    default=True help='Existing account groups are updated. Account groups are searched by prefix_code_start.' string='Update account groups'
  • update_fiscal_position Boolean
    default=True help='Existing fiscal positions are updated. Fiscal positions are searched by name.' string='Update fiscal positions'
  • update_tax Boolean
    default=True help='Existing taxes are updated. Taxes are searched by name.' string='Update taxes'
  • update_tax_repartition_line_account Boolean
    default=True help='Update account_id field on existing Tax repartition lines' string='Update Tax Accounts'
  • update_tax_repartition_line_tags Boolean
    default=True help='Update tag_ids field on existing Tax repartition lines' string='Update Tax Tags'
  • updated_account_groups Integer
    compute='_compute_updated_account_groups_count' string='Updated accounts'
  • updated_accounts Integer
    compute='_compute_updated_accounts_count' string='Updated accounts'
  • updated_fps Integer
    compute='_compute_updated_fps_count' string='Updated fiscal positions'
  • updated_taxes Integer
    compute='_compute_updated_taxes_count' string='Updated taxes'
Public methods (18)
  • action_find_records(self)
    Searchs for records to update/create and shows them.
  • action_init(self)
    Initial action that sets the initial state.
  • action_update_records(self)
    Action that creates/updates/deletes the selected elements.
  • diff_fields(self, template, real)
    @api.model
    Get fields that are different in template and real records. :param odoo.models.Model template: Template record. :param odoo.models.Model real: Real record. :return dict: Fields that are different in both records, and the expected value.
  • diff_notes(self, template, real)
    @api.model
    Get notes for humans on why is this record going to be updated. :param openerp.models.Model template: Template record. :param openerp.models.Model real: Real record. :return str: Notes result.
  • fields_to_ignore(self, name)
    @api.model@tools.ormcache('name')
    Get fields that will not be used when checking differences. :param str template: A template record. :param str name: The name of the template model. :return set: Fields to ignore in diff.
  • find_account_by_templates(self, templates)
    @tools.ormcache('templates')
    Find an account that matches the template.
  • find_account_group_by_templates(self, templates)
    @tools.ormcache('templates')
    Find an account that matches the template.
  • find_accounts_by_templates(self, templates)
    @tools.ormcache('templates')
  • find_fp_account_by_templates(self, templates, current_fp_accounts)
    @tools.ormcache('templates', 'current_fp_accounts')
  • find_fp_by_templates(self, templates)
    @tools.ormcache('templates')
    Find a real fiscal position from a template.
  • find_fp_tax_by_templates(self, templates, current_fp_taxes)
    @tools.ormcache('templates', 'current_fp_taxes')
  • find_repartition_by_templates(self, templates, current_repartition, tax, inverse_name)
    @tools.ormcache('templates', 'current_repartition')
  • find_tax_by_templates(self, templates)
    @tools.ormcache('templates')
    Find a tax that matches the template.
  • find_taxes_by_templates(self, templates)
    @tools.ormcache('templates')
  • missing_xml_id(self, template, real_obj)
    @tools.ormcache('self', 'template', 'real_obj')
  • padded_code(self, code)
    @api.model@tools.ormcache('code')
    Return a right-zero-padded code with the chosen digits.
  • recreate_xml_id(self, template, real_obj)

New fields (6)
  • account_id Many2one → account.account.template
    comodel_name='account.account.template' required=True string='Account template'
  • notes Text
    readonly=True args: 'Notes'
  • recreate_xml_ids Boolean
    related='update_chart_wizard_id.recreate_xml_ids' string='Recreate missing XML-IDs'
  • type Selection
    readonly=False selection=[('new', 'New template'), ('updated', 'Updated template')] string='Type'
  • update_account_id Many2one → account.account
    comodel_name='account.account' ondelete='set null' required=False string='Account to update'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
Public methods (0)

No public methods.

New fields (6)
  • account_group_id Many2one → account.group.template
    comodel_name='account.group.template' required=True string='Account group template'
  • notes Text
    readonly=True args: 'Notes'
  • recreate_xml_ids Boolean
    related='update_chart_wizard_id.recreate_xml_ids' string='Recreate missing XML-IDs'
  • type Selection
    readonly=False selection=[('new', 'New template'), ('updated', 'Updated template')] string='Type'
  • update_account_group_id Many2one → account.group
    comodel_name='account.group' ondelete='set null' required=False string='Account group to update'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
Public methods (0)

No public methods.

New fields (6)
  • fiscal_position_id Many2one → account.fiscal.position.template
    comodel_name='account.fiscal.position.template' required=True string='Fiscal position template'
  • notes Text
    readonly=True args: 'Notes'
  • recreate_xml_ids Boolean
    related='update_chart_wizard_id.recreate_xml_ids' string='Recreate missing XML-IDs'
  • type Selection
    readonly=False selection=[('new', 'New template'), ('updated', 'Updated template')] string='Type'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • update_fiscal_position_id Many2one → account.fiscal.position
    comodel_name='account.fiscal.position' ondelete='set null' required=False string='Fiscal position to update'
Public methods (0)

No public methods.

New fields (7)
  • notes Text
    readonly=True args: 'Notes'
  • recreate_xml_ids Boolean
    related='update_chart_wizard_id.recreate_xml_ids' string='Recreate missing XML-IDs'
  • tax_id Many2one → account.tax.template
    comodel_name='account.tax.template' ondelete='set null' string='Tax template'
  • type Selection
    readonly=False selection=[('new', 'New template'), ('updated', 'Updated template'), ('deleted', 'Tax to deactivate')] string='Type'
  • type_tax_use Selection
    readonly=True related='tax_id.type_tax_use'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • update_tax_id Many2one → account.tax
    comodel_name='account.tax' ondelete='set null' required=False string='Tax to update'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/account-financial-tools
GIT
GIThttps://github.com/OCA/account-financial-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-financial-tools/tree/13.0/account_chart_update
VERSION
VERSION 2.0.1
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), BCIM, Okia
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), BCIM, Okia
COMMITTERS
COMMITTERSPedro M. Baeza, Luc De Meyer, OCA Transbot, João Marques, oca-travis, Weblate, OCA-git-bot, gaikaz, ps-tubtim, ernestotejeda
WEBSITE
WEBSITEhttps://github.com/OCA/account-financial-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:13
ODOO DEPENDENCIES
ODOO DEPENDENCIES 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 (2)
XML IDNameModelTypeStatus
res_config_settings_view_form Open Account Chart Update Wizard 2 res.config.settings div Inherits account.res_config_settings_view_form
view_update_multi_chart Update Chart of Accounts from a Chart Template wizard.update.charts.accounts form New
Models touched (9)

New fields (0)

No new fields.

Public methods (1)
  • name_get(self)
    Return special label when showing fields in chart update wizard.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • matching_value Selection
    selection='_get_matching_selection'
  • sequence Integer
    default=1 required=True
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (32)
  • account_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_account_fields_rel' string='Account fields'
  • account_ids One2many → wizard.update.charts.accounts.account
    comodel_name='wizard.update.charts.accounts.account' inverse_name='update_chart_wizard_id' ondelete='cascade' string='Accounts'
  • account_matching_ids One2many → wizard.account.matching
    comodel_name='wizard.account.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Accounts matching'
  • chart_template_id Many2one → account.chart.template
    comodel_name='account.chart.template' ondelete='cascade' required=True string='Chart Template'
  • chart_template_ids Many2many → account.chart.template
    compute='_compute_chart_template_ids' help='Includes all chart templates.' string='Chart Templates' args: 'account.chart.template'
  • code_digits Integer
    related='chart_template_id.code_digits'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True string='Company'
  • continue_on_errors Boolean
    default=False help='If set, the wizard will continue to the next step even if there are minor errors.' string='Continue on errors'
  • deleted_taxes Integer
    compute='_compute_deleted_taxes_count' string='Deactivated taxes'
  • fiscal_position_ids One2many → wizard.update.charts.accounts.fiscal.position
    comodel_name='wizard.update.charts.accounts.fiscal.position' inverse_name='update_chart_wizard_id' ondelete='cascade' string='Fiscal positions'
  • fp_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_fp_fields_rel' string='Fiscal position fields'
  • fp_matching_ids One2many → wizard.fp.matching
    comodel_name='wizard.fp.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Fiscal positions matching'
  • lang Selection
    default=<expr> help='For records searched by name (taxes, fiscal positions), the template name will be matched against the record name on this language.' required=True size=5 args: <expr>, 'Language'
  • log Text
    readonly=True string='Messages and Errors'
  • new_accounts Integer
    compute='_compute_new_accounts_count' string='New accounts'
  • new_fps Integer
    compute='_compute_new_fps_count' string='New fiscal positions'
  • new_taxes Integer
    compute='_compute_new_taxes_count' string='New taxes'
  • recreate_xml_ids Boolean
    string='Recreate missing XML-IDs'
  • rejected_new_account_number Integer
  • rejected_updated_account_number Integer
  • state Selection
    default='init' readonly=True selection=[('init', 'Configuration'), ('ready', 'Select records to update'), ('done', 'Wizard completed')] string='Status'
  • tax_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_tax_fields_rel' string='Tax fields'
  • tax_ids One2many → wizard.update.charts.accounts.tax
    comodel_name='wizard.update.charts.accounts.tax' inverse_name='update_chart_wizard_id' ondelete='cascade' string='Taxes'
  • tax_matching_ids One2many → wizard.tax.matching
    comodel_name='wizard.tax.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Taxes matching'
  • update_account Boolean
    default=True help='Existing accounts are updated. Accounts are searched by code.' string='Update accounts'
  • update_fiscal_position Boolean
    default=True help='Existing fiscal positions are updated. Fiscal positions are searched by name.' string='Update fiscal positions'
  • update_tax Boolean
    default=True help='Existing taxes are updated. Taxes are searched by name.' string='Update taxes'
  • update_tax_repartition_line_account Boolean
    default=True help='Update account_id field on existing Tax repartition lines' string='Update Tax Accounts'
  • update_tax_repartition_line_tags Boolean
    default=True help='Update tag_ids field on existing Tax repartition lines' string='Update Tax Tags'
  • updated_accounts Integer
    compute='_compute_updated_accounts_count' string='Updated accounts'
  • updated_fps Integer
    compute='_compute_updated_fps_count' string='Updated fiscal positions'
  • updated_taxes Integer
    compute='_compute_updated_taxes_count' string='Updated taxes'
Public methods (17)
  • action_find_records(self)
    Searchs for records to update/create and shows them.
  • action_init(self)
    Initial action that sets the initial state.
  • action_update_records(self)
    Action that creates/updates/deletes the selected elements.
  • diff_fields(self, template, real)
    @api.model
    Get fields that are different in template and real records. :param odoo.models.Model template: Template record. :param odoo.models.Model real: Real record. :return dict: Fields that are different in both records, and the expected value.
  • diff_notes(self, template, real)
    @api.model
    Get notes for humans on why is this record going to be updated. :param openerp.models.Model template: Template record. :param openerp.models.Model real: Real record. :return str: Notes result.
  • fields_to_ignore(self, name)
    @api.model@tools.ormcache('name')
    Get fields that will not be used when checking differences. :param str template: A template record. :param str name: The name of the template model. :return set: Fields to ignore in diff.
  • find_account_by_templates(self, templates)
    @tools.ormcache('templates')
    Find an account that matches the template.
  • find_accounts_by_templates(self, templates)
    @tools.ormcache('templates')
  • find_fp_account_by_templates(self, templates, current_fp_accounts)
    @tools.ormcache('templates', 'current_fp_accounts')
  • find_fp_by_templates(self, templates)
    @tools.ormcache('templates')
    Find a real fiscal position from a template.
  • find_fp_tax_by_templates(self, templates, current_fp_taxes)
    @tools.ormcache('templates', 'current_fp_taxes')
  • find_repartition_by_templates(self, templates, current_repartition, tax, inverse_name)
    @tools.ormcache('templates', 'current_repartition')
  • find_tax_by_templates(self, templates)
    @tools.ormcache('templates')
    Find a tax that matches the template.
  • find_taxes_by_templates(self, templates)
    @tools.ormcache('templates')
  • missing_xml_id(self, template, real_obj)
    @tools.ormcache('self', 'template', 'real_obj')
  • padded_code(self, code)
    @api.model@tools.ormcache('code')
    Return a right-zero-padded code with the chosen digits.
  • recreate_xml_id(self, template, real_obj)

New fields (5)
  • account_id Many2one → account.account.template
    comodel_name='account.account.template' required=True string='Account template'
  • notes Text
    readonly=True args: 'Notes'
  • type Selection
    readonly=True selection=[('new', 'New template'), ('updated', 'Updated template')] string='Type'
  • update_account_id Many2one → account.account
    comodel_name='account.account' ondelete='set null' required=False string='Account to update'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
Public methods (0)

No public methods.

New fields (5)
  • fiscal_position_id Many2one → account.fiscal.position.template
    comodel_name='account.fiscal.position.template' required=True string='Fiscal position template'
  • notes Text
    readonly=True args: 'Notes'
  • type Selection
    readonly=True required=True selection=[('new', 'New template'), ('updated', 'Updated template')] string='Type'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • update_fiscal_position_id Many2one → account.fiscal.position
    comodel_name='account.fiscal.position' ondelete='set null' required=False string='Fiscal position to update'
Public methods (0)

No public methods.

New fields (6)
  • notes Text
    readonly=True args: 'Notes'
  • tax_id Many2one → account.tax.template
    comodel_name='account.tax.template' ondelete='set null' string='Tax template'
  • type Selection
    readonly=True selection=[('new', 'New template'), ('updated', 'Updated template'), ('deleted', 'Tax to deactivate')] string='Type'
  • type_tax_use Selection
    readonly=True related='tax_id.type_tax_use'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • update_tax_id Many2one → account.tax
    comodel_name='account.tax' ondelete='set null' required=False string='Tax to update'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/account-financial-tools
GIT
GIThttps://github.com/OCA/account-financial-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-financial-tools/tree/12.0/account_chart_update
VERSION
VERSION 1.0.3
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), BCIM, Okia
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), BCIM, Okia
COMMITTERS
COMMITTERSPedro M. Baeza, Enric Tobella, OCA Transbot, oca-travis, Weblate, OCA-git-bot, sergiocorato, ernesto
WEBSITE
WEBSITEhttps://github.com/OCA/account-financial-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:18
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - http_routing
    - digest
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
res_config_settings_view_form Open Account Chart Update Wizard 2 res.config.settings div Inherits account.res_config_settings_view_form
view_update_multi_chart Update Chart of Accounts from a Chart Template wizard.update.charts.accounts form New
Models touched (9)

New fields (0)

No new fields.

Public methods (1)
  • name_get(self)
    Return special label when showing fields in chart update wizard.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • matching_value Selection
    selection='_get_matching_selection'
  • sequence Integer
    default=1 required=True
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (30)
  • account_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_account_fields_rel' string='Account fields'
  • account_ids One2many → wizard.update.charts.accounts.account
    comodel_name='wizard.update.charts.accounts.account' inverse_name='update_chart_wizard_id' ondelete='cascade' string='Accounts'
  • account_matching_ids One2many → wizard.account.matching
    comodel_name='wizard.account.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Accounts matching'
  • chart_template_id Many2one → account.chart.template
    comodel_name='account.chart.template' ondelete='cascade' required=True string='Chart Template'
  • chart_template_ids Many2many → account.chart.template
    compute='_compute_chart_template_ids' help='Includes all chart templates.' string='Chart Templates' args: 'account.chart.template'
  • code_digits Integer
    related='chart_template_id.code_digits'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> ondelete='set null' required=True string='Company'
  • continue_on_errors Boolean
    default=False help='If set, the wizard will continue to the next step even if there are minor errors.' string='Continue on errors'
  • deleted_taxes Integer
    compute='_compute_deleted_taxes_count' string='Deactivated taxes'
  • fiscal_position_ids One2many → wizard.update.charts.accounts.fiscal.position
    comodel_name='wizard.update.charts.accounts.fiscal.position' inverse_name='update_chart_wizard_id' ondelete='cascade' string='Fiscal positions'
  • fp_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_fp_fields_rel' string='Fiscal position fields'
  • fp_matching_ids One2many → wizard.fp.matching
    comodel_name='wizard.fp.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Fiscal positions matching'
  • lang Selection
    default=<expr> help='For records searched by name (taxes, fiscal positions), the template name will be matched against the record name on this language.' required=True size=5 args: <expr>, 'Language'
  • log Text
    readonly=True string='Messages and Errors'
  • new_accounts Integer
    compute='_compute_new_accounts_count' string='New accounts'
  • new_fps Integer
    compute='_compute_new_fps_count' string='New fiscal positions'
  • new_taxes Integer
    compute='_compute_new_taxes_count' string='New taxes'
  • recreate_xml_ids Boolean
    string='Recreate missing XML-IDs'
  • rejected_new_account_number Integer
  • rejected_updated_account_number Integer
  • state Selection
    default='init' readonly=True selection=[('init', 'Configuration'), ('ready', 'Select records to update'), ('done', 'Wizard completed')] string='Status'
  • tax_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_tax_fields_rel' string='Tax fields'
  • tax_ids One2many → wizard.update.charts.accounts.tax
    comodel_name='wizard.update.charts.accounts.tax' inverse_name='update_chart_wizard_id' ondelete='cascade' string='Taxes'
  • tax_matching_ids One2many → wizard.tax.matching
    comodel_name='wizard.tax.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Taxes matching'
  • update_account Boolean
    default=True help='Existing accounts are updated. Accounts are searched by code.' string='Update accounts'
  • update_fiscal_position Boolean
    default=True help='Existing fiscal positions are updated. Fiscal positions are searched by name.' string='Update fiscal positions'
  • update_tax Boolean
    default=True help='Existing taxes are updated. Taxes are searched by name.' string='Update taxes'
  • updated_accounts Integer
    compute='_compute_updated_accounts_count' string='Updated accounts'
  • updated_fps Integer
    compute='_compute_updated_fps_count' string='Updated fiscal positions'
  • updated_taxes Integer
    compute='_compute_updated_taxes_count' string='Updated taxes'
Public methods (14)
  • action_find_records(self)
    @api.multi
    Searchs for records to update/create and shows them.
  • action_init(self)
    @api.multi
    Initial action that sets the initial state.
  • action_update_records(self)
    @api.multi
    Action that creates/updates/deletes the selected elements.
  • diff_fields(self, template, real)
    @api.model
    Get fields that are different in template and real records. :param odoo.models.Model template: Template record. :param odoo.models.Model real: Real record. :return dict: Fields that are different in both records, and the expected value.
  • diff_notes(self, template, real)
    @api.model
    Get notes for humans on why is this record going to be updated. :param openerp.models.Model template: Template record. :param openerp.models.Model real: Real record. :return str: Notes result.
  • fields_to_ignore(self, name)
    @api.model@tools.ormcache('name')
    Get fields that will not be used when checking differences. :param str template: A template record. :param str name: The name of the template model. :return set: Fields to ignore in diff.
  • find_account_by_templates(self, templates)
    @api.multi@tools.ormcache('templates')
    Find an account that matches the template.
  • find_fp_account_by_templates(self, templates, current_fp_accounts)
    @api.multi@tools.ormcache('templates', 'current_fp_accounts')
  • find_fp_by_templates(self, templates)
    @api.multi@tools.ormcache('templates')
    Find a real fiscal position from a template.
  • find_fp_tax_by_templates(self, templates, current_fp_taxes)
    @api.multi@tools.ormcache('templates', 'current_fp_taxes')
  • find_tax_by_templates(self, templates)
    @api.multi@tools.ormcache('templates')
    Find a tax that matches the template.
  • missing_xml_id(self, template, real_obj)
    @tools.ormcache('self', 'template', 'real_obj')
  • padded_code(self, code)
    @api.model@tools.ormcache('code')
    Return a right-zero-padded code with the chosen digits.
  • recreate_xml_id(self, template, real_obj)

New fields (5)
  • account_id Many2one → account.account.template
    comodel_name='account.account.template' ondelete='set null' required=True string='Account template'
  • notes Text
    readonly=True args: 'Notes'
  • type Selection
    readonly=True selection=[('new', 'New template'), ('updated', 'Updated template')] string='Type'
  • update_account_id Many2one → account.account
    comodel_name='account.account' ondelete='set null' required=False string='Account to update'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
Public methods (0)

No public methods.

New fields (5)
  • fiscal_position_id Many2one → account.fiscal.position.template
    comodel_name='account.fiscal.position.template' ondelete='set null' required=True string='Fiscal position template'
  • notes Text
    readonly=True args: 'Notes'
  • type Selection
    readonly=True required=True selection=[('new', 'New template'), ('updated', 'Updated template')] string='Type'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • update_fiscal_position_id Many2one → account.fiscal.position
    comodel_name='account.fiscal.position' ondelete='set null' required=False string='Fiscal position to update'
Public methods (0)

No public methods.

New fields (6)
  • notes Text
    readonly=True args: 'Notes'
  • tax_id Many2one → account.tax.template
    comodel_name='account.tax.template' ondelete='set null' string='Tax template'
  • type Selection
    readonly=True selection=[('new', 'New template'), ('updated', 'Updated template'), ('deleted', 'Tax to deactivate')] string='Type'
  • type_tax_use Selection
    readonly=True related='tax_id.type_tax_use'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • update_tax_id Many2one → account.tax
    comodel_name='account.tax' ondelete='set null' required=False string='Tax to update'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/account-financial-tools
GIT
GIThttps://github.com/OCA/account-financial-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-financial-tools/tree/11.0/account_chart_update
VERSION
VERSION 2.1.0
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), BCIM, Okia
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), BCIM, Okia
COMMITTERS
COMMITTERSPedro M. Baeza, OCA Transbot, oca-travis, Weblate, OCA-git-bot, OCA Git Bot, ernesto
WEBSITE
WEBSITEhttp://github.com/OCA/account-financial-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:23:58
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - analytic
    - web_planner
    - portal
    - http_routing
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
view_res_config_settings Open Account Chart Update Wizard res.config.settings div Inherits account.res_config_settings_view_form
view_update_multi_chart Update Chart of Accounts from a Chart Template wizard.update.charts.accounts form New
Models touched (9)

New fields (0)

No new fields.

Public methods (1)
  • name_get(self)
    Return special label when showing fields in chart update wizard.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • matching_value Selection
    selection='_get_matching_selection'
  • sequence Integer
    default=1 required=True
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (30)
  • account_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_account_fields_rel' string='Account fields'
  • account_ids One2many → wizard.update.charts.accounts.account
    comodel_name='wizard.update.charts.accounts.account' inverse_name='update_chart_wizard_id' ondelete='cascade' string='Accounts'
  • account_matching_ids One2many → wizard.account.matching
    comodel_name='wizard.account.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Taxes matching'
  • chart_template_id Many2one → account.chart.template
    comodel_name='account.chart.template' ondelete='cascade' required=True string='Chart Template'
  • chart_template_ids Many2many → account.chart.template
    compute='_compute_chart_template_ids' help='Includes all chart templates.' string='Chart Templates' args: 'account.chart.template'
  • code_digits Integer
    help='No. of digits to use for account code. Make sure it is the same number as existing accounts.' required=True string='# of digits'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> ondelete='set null' required=True string='Company'
  • continue_on_errors Boolean
    default=False help='If set, the wizard will continue to the next step even if there are minor errors.' string='Continue on errors'
  • deleted_taxes Integer
    compute='_compute_deleted_taxes_count' string='Deactivated taxes'
  • fiscal_position_ids One2many → wizard.update.charts.accounts.fiscal.position
    comodel_name='wizard.update.charts.accounts.fiscal.position' inverse_name='update_chart_wizard_id' ondelete='cascade' string='Fiscal positions'
  • fp_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_fp_fields_rel' string='Fiscal position fields'
  • fp_matching_ids One2many → wizard.fp.matching
    comodel_name='wizard.fp.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Taxes matching'
  • lang Selection
    default=<expr> help='For records searched by name (taxes, fiscal positions), the template name will be matched against the record name on this language.' required=True size=5 args: <expr>, 'Language'
  • log Text
    readonly=True string='Messages and Errors'
  • new_accounts Integer
    compute='_compute_new_accounts_count' string='New accounts'
  • new_fps Integer
    compute='_compute_new_fps_count' string='New fiscal positions'
  • new_taxes Integer
    compute='_compute_new_taxes_count' string='New taxes'
  • recreate_xml_ids Boolean
    string='Recreate missing XML-IDs'
  • rejected_new_account_number Integer
  • rejected_updated_account_number Integer
  • state Selection
    default='init' readonly=True selection=[('init', 'Configuration'), ('ready', 'Select records to update'), ('done', 'Wizard completed')] string='Status'
  • tax_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_tax_fields_rel' string='Tax fields'
  • tax_ids One2many → wizard.update.charts.accounts.tax
    comodel_name='wizard.update.charts.accounts.tax' inverse_name='update_chart_wizard_id' ondelete='cascade' string='Taxes'
  • tax_matching_ids One2many → wizard.tax.matching
    comodel_name='wizard.tax.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Taxes matching'
  • update_account Boolean
    default=True help='Existing accounts are updated. Accounts are searched by code.' string='Update accounts'
  • update_fiscal_position Boolean
    default=True help='Existing fiscal positions are updated. Fiscal positions are searched by name.' string='Update fiscal positions'
  • update_tax Boolean
    default=True help='Existing taxes are updated. Taxes are searched by name.' string='Update taxes'
  • updated_accounts Integer
    compute='_compute_updated_accounts_count' string='Updated accounts'
  • updated_fps Integer
    compute='_compute_updated_fps_count' string='Updated fiscal positions'
  • updated_taxes Integer
    compute='_compute_updated_taxes_count' string='Updated taxes'
Public methods (15)
  • action_find_records(self)
    @api.multi
    Searchs for records to update/create and shows them.
  • action_init(self)
    @api.multi
    Initial action that sets the initial state.
  • action_update_records(self)
    @api.multi
    Action that creates/updates/deletes the selected elements.
  • diff_fields(self, template, real)
    @api.model
    Get fields that are different in template and real records. :param odoo.models.Model template: Template record. :param odoo.models.Model real: Real record. :return dict: Fields that are different in both records, and the expected value.
  • diff_notes(self, template, real)
    @api.model
    Get notes for humans on why is this record going to be updated. :param openerp.models.Model template: Template record. :param openerp.models.Model real: Real record. :return str: Notes result.
  • fields_to_ignore(self, name)
    @api.model@tools.ormcache('name')
    Get fields that will not be used when checking differences. :param str template: A template record. :param str name: The name of the template model. :return set: Fields to ignore in diff.
  • find_account_by_templates(self, templates)
    @api.multi@tools.ormcache('templates')
    Find an account that matches the template.
  • find_fp_account_by_templates(self, templates, current_fp_accounts)
    @api.multi@tools.ormcache('templates', 'current_fp_accounts')
  • find_fp_by_templates(self, templates)
    @api.multi@tools.ormcache('templates')
    Find a real fiscal position from a template.
  • find_fp_tax_by_templates(self, templates, current_fp_taxes)
    @api.multi@tools.ormcache('templates', 'current_fp_taxes')
  • find_tax_by_templates(self, templates)
    @api.multi@tools.ormcache('templates')
    Find a tax that matches the template.
  • missing_xml_id(self, real_obj)
  • onchange_company_id(self)
    @api.onchange('company_id')
    Update the code digits when the company changes
  • padded_code(self, code)
    @api.model@tools.ormcache('code')
    Return a right-zero-padded code with the chosen digits.
  • recreate_xml_id(self, template, real_obj)

New fields (5)
  • account_id Many2one → account.account.template
    comodel_name='account.account.template' ondelete='set null' required=True string='Account template'
  • notes Text
    readonly=True args: 'Notes'
  • type Selection
    readonly=True selection=[('new', 'New template'), ('updated', 'Updated template')] string='Type'
  • update_account_id Many2one → account.account
    comodel_name='account.account' ondelete='set null' required=False string='Account to update'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
Public methods (0)

No public methods.

New fields (5)
  • fiscal_position_id Many2one → account.fiscal.position.template
    comodel_name='account.fiscal.position.template' ondelete='set null' required=True string='Fiscal position template'
  • notes Text
    readonly=True args: 'Notes'
  • type Selection
    readonly=True required=True selection=[('new', 'New template'), ('updated', 'Updated template')] string='Type'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • update_fiscal_position_id Many2one → account.fiscal.position
    comodel_name='account.fiscal.position' ondelete='set null' required=False string='Fiscal position to update'
Public methods (0)

No public methods.

New fields (6)
  • notes Text
    readonly=True args: 'Notes'
  • tax_id Many2one → account.tax.template
    comodel_name='account.tax.template' ondelete='set null' string='Tax template'
  • type Selection
    readonly=True selection=[('new', 'New template'), ('updated', 'Updated template'), ('deleted', 'Tax to deactivate')] string='Type'
  • type_tax_use Selection
    readonly=True related='tax_id.type_tax_use'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • update_tax_id Many2one → account.tax
    comodel_name='account.tax' ondelete='set null' required=False string='Tax to update'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/account-financial-tools
GIT
GIThttps://github.com/OCA/account-financial-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-financial-tools/tree/10.0/account_chart_update
VERSION
VERSION 3.1.0
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), BCIM, Okia
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), BCIM, Okia
COMMITTERS
COMMITTERSPedro M. Baeza, GitHub, OCA Transbot, oca-travis, Weblate, OCA-git-bot, ernesto
WEBSITE
WEBSITEhttp://odoo-community.org
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:19:57
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - report
    - analytic
    - web_planner
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
view_account_config_settings Open Account Chart Update Wizard account.config.settings xpath Inherits account.view_account_config_settings
view_update_multi_chart Update Chart of Accounts from a Chart Template wizard.update.charts.accounts form New
Models touched (9)

New fields (0)

No new fields.

Public methods (1)
  • name_get(self)
    Return special label when showing fields in chart update wizard.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • matching_value Selection
    readonly=True selection='_get_matching_selection'
  • sequence Integer
    default=1 required=True
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (30)
  • account_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_account_fields_rel' string='Account fields'
  • account_ids One2many → wizard.update.charts.accounts.account
    comodel_name='wizard.update.charts.accounts.account' inverse_name='update_chart_wizard_id' ondelete='cascade' string='Accounts'
  • account_matching_ids One2many → wizard.account.matching
    comodel_name='wizard.account.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Taxes matching'
  • chart_template_id Many2one → account.chart.template
    comodel_name='account.chart.template' ondelete='cascade' required=True string='Chart Template'
  • chart_template_ids Many2many → account.chart.template
    compute='_compute_chart_template_ids' help='Includes all chart templates.' string='Chart Templates' args: 'account.chart.template'
  • code_digits Integer
    help='No. of digits to use for account code. Make sure it is the same number as existing accounts.' required=True string='# of digits'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> ondelete='set null' required=True string='Company'
  • continue_on_errors Boolean
    default=False help='If set, the wizard will continue to the next step even if there are minor errors.' string='Continue on errors'
  • deleted_taxes Integer
    compute='_compute_deleted_taxes_count' string='Deactivated taxes'
  • fiscal_position_ids One2many → wizard.update.charts.accounts.fiscal.position
    comodel_name='wizard.update.charts.accounts.fiscal.position' inverse_name='update_chart_wizard_id' ondelete='cascade' string='Fiscal positions'
  • fp_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_fp_fields_rel' string='Fiscal position fields'
  • fp_matching_ids One2many → wizard.fp.matching
    comodel_name='wizard.fp.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Taxes matching'
  • lang Selection
    default=<expr> help='For records searched by name (taxes, fiscal positions), the template name will be matched against the record name on this language.' required=True size=5 args: <expr>, 'Language'
  • log Text
    readonly=True string='Messages and Errors'
  • new_accounts Integer
    compute='_compute_new_accounts_count' string='New accounts'
  • new_fps Integer
    compute='_compute_new_fps_count' string='New fiscal positions'
  • new_taxes Integer
    compute='_compute_new_taxes_count' string='New taxes'
  • recreate_xml_ids Boolean
    string='Recreate missing XML-IDs'
  • rejected_new_account_number Integer
  • rejected_updated_account_number Integer
  • state Selection
    default='init' readonly=True selection=[('init', 'Configuration'), ('ready', 'Select records to update'), ('done', 'Wizard completed')] string='Status'
  • tax_field_ids Many2many → ir.model.fields
    comodel_name='ir.model.fields' default=<expr> domain=<expr> relation='wizard_update_charts_tax_fields_rel' string='Tax fields'
  • tax_ids One2many → wizard.update.charts.accounts.tax
    comodel_name='wizard.update.charts.accounts.tax' inverse_name='update_chart_wizard_id' ondelete='cascade' string='Taxes'
  • tax_matching_ids One2many → wizard.tax.matching
    comodel_name='wizard.tax.matching' default=<expr> inverse_name='update_chart_wizard_id' string='Taxes matching'
  • update_account Boolean
    default=True help='Existing accounts are updated. Accounts are searched by code.' string='Update accounts'
  • update_fiscal_position Boolean
    default=True help='Existing fiscal positions are updated. Fiscal positions are searched by name.' string='Update fiscal positions'
  • update_tax Boolean
    default=True help='Existing taxes are updated. Taxes are searched by name.' string='Update taxes'
  • updated_accounts Integer
    compute='_compute_updated_accounts_count' string='Updated accounts'
  • updated_fps Integer
    compute='_compute_updated_fps_count' string='Updated fiscal positions'
  • updated_taxes Integer
    compute='_compute_updated_taxes_count' string='Updated taxes'
Public methods (15)
  • action_find_records(self)
    @api.multi
    Searchs for records to update/create and shows them.
  • action_init(self)
    @api.multi
    Initial action that sets the initial state.
  • action_update_records(self)
    @api.multi
    Action that creates/updates/deletes the selected elements.
  • diff_fields(self, template, real)
    @api.model
    Get fields that are different in template and real records. :param odoo.models.Model template: Template record. :param odoo.models.Model real: Real record. :return dict: Fields that are different in both records, and the expected value.
  • diff_notes(self, template, real)
    @api.model
    Get notes for humans on why is this record going to be updated. :param openerp.models.Model template: Template record. :param openerp.models.Model real: Real record. :return str: Notes result.
  • fields_to_ignore(self, name)
    @api.model@tools.ormcache('name')
    Get fields that will not be used when checking differences. :param str template: A template record. :param str name: The name of the template model. :return set: Fields to ignore in diff.
  • find_account_by_templates(self, templates)
    @api.multi@tools.ormcache('templates')
    Find an account that matches the template.
  • find_fp_account_by_templates(self, templates, current_fp_accounts)
    @api.multi@tools.ormcache('templates', 'current_fp_accounts')
  • find_fp_by_templates(self, templates)
    @api.multi@tools.ormcache('templates')
    Find a real fiscal position from a template.
  • find_fp_tax_by_templates(self, templates, current_fp_taxes)
    @api.multi@tools.ormcache('templates', 'current_fp_taxes')
  • find_tax_by_templates(self, templates)
    @api.multi@tools.ormcache('templates')
    Find a tax that matches the template.
  • missing_xml_id(self, real_obj)
  • onchange_company_id(self)
    @api.onchange('company_id')
    Update the code digits when the company changes
  • padded_code(self, code)
    @api.model@tools.ormcache('code')
    Return a right-zero-padded code with the chosen digits.
  • recreate_xml_id(self, template, real_obj)

New fields (5)
  • account_id Many2one → account.account.template
    comodel_name='account.account.template' ondelete='set null' required=True string='Account template'
  • notes Text
    readonly=True args: 'Notes'
  • type Selection
    readonly=True selection=[('new', 'New template'), ('updated', 'Updated template')] string='Type'
  • update_account_id Many2one → account.account
    comodel_name='account.account' ondelete='set null' required=False string='Account to update'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
Public methods (0)

No public methods.

New fields (5)
  • fiscal_position_id Many2one → account.fiscal.position.template
    comodel_name='account.fiscal.position.template' ondelete='set null' required=True string='Fiscal position template'
  • notes Text
    readonly=True args: 'Notes'
  • type Selection
    readonly=True required=True selection=[('new', 'New template'), ('updated', 'Updated template')] string='Type'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • update_fiscal_position_id Many2one → account.fiscal.position
    comodel_name='account.fiscal.position' ondelete='set null' required=False string='Fiscal position to update'
Public methods (0)

No public methods.

New fields (6)
  • notes Text
    readonly=True args: 'Notes'
  • tax_id Many2one → account.tax.template
    comodel_name='account.tax.template' ondelete='set null' string='Tax template'
  • type Selection
    readonly=True selection=[('new', 'New template'), ('updated', 'Updated template'), ('deleted', 'Tax to deactivate')] string='Type'
  • type_tax_use Selection
    readonly=True related='tax_id.type_tax_use'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • update_tax_id Many2one → account.tax
    comodel_name='account.tax' ondelete='set null' required=False string='Tax to update'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/account-financial-tools
GIT
GIThttps://github.com/OCA/account-financial-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-financial-tools/tree/9.0/account_chart_update
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYAccounting & Finance
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), BCIM
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), BCIM
COMMITTERS
COMMITTERSPedro M. Baeza, Stéphane Bidoul (ACSONE), OCA Transbot, oca-travis, Weblate
WEBSITE
WEBSITEhttp://odoo-community.org
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:20
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - report
    - analytic
    - web_tip
    - web_planner
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
view_account_config_settings Open Account Chart Update Wizard account.config.settings xpath Inherits account.view_account_config_settings
view_update_multi_chart Update Chart of Accounts from a Chart Template wizard.update.charts.accounts form New
Models touched (4)

New fields (21)
  • account_ids One2many → wizard.update.charts.accounts.account
    comodel_name='wizard.update.charts.accounts.account' inverse_name='update_chart_wizard_id' ondelete='cascade' string='Accounts'
  • chart_template_id Many2one → account.chart.template
    comodel_name='account.chart.template' ondelete='cascade' required=True string='Chart Template'
  • chart_template_ids Many2many → account.chart.template
    compute='_compute_chart_template_ids' help='Includes all chart templates.' string='Chart Templates' args: 'account.chart.template'
  • code_digits Integer
    help='No. of digits to use for account code. Make sure it is the same number as existing accounts.' required=True string='# of digits'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> ondelete='set null' required=True string='Company'
  • continue_on_errors Boolean
    default=False help='If set, the wizard will continue to the next step even if there are minor errors.' string='Continue on errors'
  • deleted_taxes Integer
    compute='_compute_deleted_taxes_count' string='Deactivated taxes'
  • fiscal_position_ids One2many → wizard.update.charts.accounts.fiscal.position
    comodel_name='wizard.update.charts.accounts.fiscal.position' inverse_name='update_chart_wizard_id' ondelete='cascade' string='Fiscal positions'
  • lang Selection
    default=<expr> help='For records searched by name (taxes, fiscal positions), the template name will be matched against the record name on this language.' required=True size=5 args: <expr>, 'Language'
  • log Text
    readonly=True string='Messages and Errors'
  • new_accounts Integer
    compute='_compute_new_accounts_count' string='New accounts'
  • new_fps Integer
    compute='_compute_new_fps_count' string='New fiscal positions'
  • new_taxes Integer
    compute='_compute_new_taxes_count' string='New taxes'
  • state Selection
    default='init' readonly=True selection=[('init', 'Configuration'), ('ready', 'Select records to update'), ('done', 'Wizard completed')] string='Status'
  • tax_ids One2many → wizard.update.charts.accounts.tax
    comodel_name='wizard.update.charts.accounts.tax' inverse_name='update_chart_wizard_id' ondelete='cascade' string='Taxes'
  • update_account Boolean
    default=True help='Existing accounts are updated. Accounts are searched by code.' string='Update accounts'
  • update_fiscal_position Boolean
    default=True help='Existing fiscal positions are updated. Fiscal positions are searched by name.' string='Update fiscal positions'
  • update_tax Boolean
    default=True help='Existing taxes are updated. Taxes are searched by name.' string='Update taxes'
  • updated_accounts Integer
    compute='_compute_updated_accounts_count' string='Updated accounts'
  • updated_fps Integer
    compute='_compute_updated_fps_count' string='Updated fiscal positions'
  • updated_taxes Integer
    compute='_compute_updated_taxes_count' string='Updated taxes'
Public methods (13)
  • action_find_records(self)
    @api.multi
    Searchs for records to update/create and shows them.
  • action_init(self)
    @api.multi
    Initial action that sets the initial state.
  • action_update_records(self)
    @api.multi
    Action that creates/updates/deletes the selected elements.
  • diff_fields(self, template, real)
    @api.model
    Get fields that are different in template and real records. :param openerp.models.Model template: Template record. :param openerp.models.Model real: Real record. :return dict: Fields that are different in both records, and the expected value.
  • diff_notes(self, template, real)
    @api.model
    Get notes for humans on why is this record going to be updated. :param openerp.models.Model template: Template record. :param openerp.models.Model real: Real record. :return str: Notes result.
  • fields_to_ignore(self, template)
    @api.model@tools.ormcache('template')
    Get fields that will not be used when checking differences. :param str template: The template record. :return set: Fields to ignore in diff.
  • find_account_by_templates(self, templates)
    @api.multi@tools.ormcache('templates')
    Find an account that matches the template.
  • find_fp_account_by_templates(self, templates, current_fp_accounts)
    @api.multi@tools.ormcache('templates', 'current_fp_accounts')
  • find_fp_by_templates(self, templates)
    @api.multi@tools.ormcache('templates')
    Find a real fiscal position from a template.
  • find_fp_tax_by_templates(self, templates, current_fp_taxes)
    @api.multi@tools.ormcache('templates', 'current_fp_taxes')
  • find_tax_by_templates(self, templates)
    @api.multi@tools.ormcache('templates')
    Find a tax that matches the template.
  • onchange_company_id(self)
    @api.onchange('company_id')
    Update the code digits when the company changes
  • padded_code(self, code)
    @api.model@tools.ormcache('code')
    Return a right-zero-padded code with the chosen digits.

New fields (5)
  • account_id Many2one → account.account.template
    comodel_name='account.account.template' ondelete='set null' required=True string='Account template'
  • notes Text
    readonly=True args: 'Notes'
  • type Selection
    readonly=True selection=[('new', 'New template'), ('updated', 'Updated template')] string='Type'
  • update_account_id Many2one → account.account
    comodel_name='account.account' ondelete='set null' required=False string='Account to update'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
Public methods (0)

No public methods.

New fields (5)
  • fiscal_position_id Many2one → account.fiscal.position.template
    comodel_name='account.fiscal.position.template' ondelete='set null' required=True string='Fiscal position template'
  • notes Text
    readonly=True args: 'Notes'
  • type Selection
    readonly=True required=True selection=[('new', 'New template'), ('updated', 'Updated template')] string='Type'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • update_fiscal_position_id Many2one → account.fiscal.position
    comodel_name='account.fiscal.position' ondelete='set null' required=False string='Fiscal position to update'
Public methods (0)

No public methods.

New fields (6)
  • notes Text
    readonly=True args: 'Notes'
  • tax_id Many2one → account.tax.template
    comodel_name='account.tax.template' ondelete='set null' string='Tax template'
  • type Selection
    readonly=True selection=[('new', 'New template'), ('updated', 'Updated template'), ('deleted', 'Tax to deactivate')] string='Type'
  • type_tax_use Selection
    readonly=True related='tax_id.type_tax_use'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • update_tax_id Many2one → account.tax
    comodel_name='account.tax' ondelete='set null' required=False string='Tax to update'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/account-financial-tools
GIT
GIThttps://github.com/OCA/account-financial-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-financial-tools/tree/8.0/account_chart_update
VERSION
VERSION 1.2.0
CATEGORY
CATEGORYGeneric Modules/Accounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Pexego, Serv. Tecnol. Avanzados - Pedro M. Baeza, Zikzakmedia SL, ACSONE A/V
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Pexego, Serv. Tecnol. Avanzados - Pedro M. Baeza, Zikzakmedia SL, ACSONE A/V
COMMITTERS
COMMITTERSStéphane Bidoul, Guewen Baconnier, Alexandre Fayolle, Leonardo Pistone, Pedro M. Baeza, Nicolas Bessi, Stéphane Bidoul (ACSONE), Angel Moya, OCA Transbot, Adrien Peiffer, PabloCM, oca-travis, Weblate, Antonio Espinosa
WEBSITE
WEBSITEhttp://odoo-community.org
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:22
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - decimal_precision
    - mail
    - report
    - analytic
    - board
    - edi
    - email_template
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
view_tax_code_form_active account.tax.code.form.active account.tax.code field Inherits account.view_tax_code_form
view_update_multi_chart Update Chart of Accounts from a Chart Template wizard.update.charts.accounts form New
Models touched (7)

New fields (1)
  • active Boolean
    default=True args: 'Active'
Public methods (0)

No public methods.

New fields (28)
  • account_ids One2many → wizard.update.charts.accounts.account
    comodel_name='wizard.update.charts.accounts.account' inverse_name='update_chart_wizard_id' ondelete='cascade' string='Accounts'
  • chart_template_id Many2one → account.chart.template
    comodel_name='account.chart.template' default=_get_chart ondelete='cascade' required=True string='Chart Template'
  • code_digits Integer
    help='No. of digits to use for account code. Make sure it is the same number as existing accounts.' required=True string='# of digits'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> ondelete='set null' required=True string='Company'
  • continue_on_errors Boolean
    default=False help="If set, the wizard will continue to the next step even if there are minor errors (for example the parent account of a new account couldn't be set)." string='Continue on errors'
  • deleted_tax_codes Integer
    compute='_get_deleted_tax_codes_count' readonly=True string='Deactivated tax codes'
  • deleted_taxes Integer
    compute='_get_deleted_taxes_count' readonly=True string='Deactivated taxes'
  • financial_report_ids One2many → wizard.update.charts.accounts.financial.report
    comodel_name='wizard.update.charts.accounts.financial.report' inverse_name='update_chart_wizard_id' ondelete='cascade' string='Financial reports'
  • fiscal_position_ids One2many → wizard.update.charts.accounts.fiscal.position
    comodel_name='wizard.update.charts.accounts.fiscal.position' inverse_name='update_chart_wizard_id' ondelete='cascade' string='Fiscal positions'
  • lang Selection
    default=<expr> help='For records searched by name (taxes, tax codes, fiscal positions), the template name will be matched against the record name on this language.' size=5 args: _get_lang_selection_options, 'Language'
  • log Text
    readonly=True string='Messages and Errors'
  • new_accounts Integer
    compute='_get_new_accounts_count' readonly=True string='New accounts'
  • new_fps Integer
    compute='_get_new_fps_count' readonly=True string='New fiscal positions'
  • new_tax_codes Integer
    compute='_get_new_tax_codes_count' readonly=True string='New tax codes'
  • new_taxes Integer
    compute='_get_new_taxes_count' readonly=True string='New taxes'
  • state Selection
    default='init' readonly=True selection=[('init', 'Step 1'), ('ready', 'Step 2'), ('done', 'Wizard completed')] string='Status'
  • tax_code_ids One2many → wizard.update.charts.accounts.tax.code
    comodel_name='wizard.update.charts.accounts.tax.code' inverse_name='update_chart_wizard_id' ondelete='cascade' string='Tax codes'
  • tax_ids One2many → wizard.update.charts.accounts.tax
    comodel_name='wizard.update.charts.accounts.tax' inverse_name='update_chart_wizard_id' ondelete='cascade' string='Taxes'
  • update_account Boolean
    default=True help='Existing accounts are updated. Accounts are searched by code.' string='Update accounts'
  • update_children_accounts_parent Boolean
    default=True help='Update the parent of accounts that seem (based on the code) to be children of the newly created ones. If you had an account 430 with a child 4300000, and a 4300 account is created, the 4300000 parent will be set to 4300.' string='Update children accounts parent'
  • update_financial_reports Boolean
    default=True help='Update the financial reports mapping the accounts' string='Update financial report accounts'
  • update_fiscal_position Boolean
    default=True help='Existing fiscal positions are updated. Fiscal positions are searched by name.' string='Update fiscal positions'
  • update_tax Boolean
    default=True help='Existing taxes are updated. Taxes are searched by name.' string='Update taxes'
  • update_tax_code Boolean
    default=True help='Existing tax codes are updated. Tax codes are searched by name.' string='Update tax codes'
  • updated_accounts Integer
    compute='_get_updated_accounts_count' readonly=True string='Updated accounts'
  • updated_fps Integer
    compute='_get_updated_fps_count' readonly=True string='Updated fiscal positions'
  • updated_tax_codes Integer
    compute='_get_updated_tax_codes_count' readonly=True string='Updated tax codes'
  • updated_taxes Integer
    compute='_get_updated_taxes_count' readonly=True string='Updated taxes'
Public methods (10)
  • action_find_records(self)
    @api.multi
    Searchs for records to update/create and shows them.
  • action_init(self)
    @api.multi
    Initial action that sets the initial state.
  • action_update_records(self)
    @api.multi
    Action that creates/updates the selected elements.
  • map_account_template(self, account_template, mapping_accounts)
    @api.multi
    Adds an account template -> account id to the mapping.
  • map_fp_template(self, fp_template, mapping_fps)
    @api.multi
    Adds a fiscal position template -> fiscal position id to the mapping.
  • map_tax_code_template(self, tax_code_template, mapping_tax_codes)
    @api.multi
    Adds a tax code template -> tax code id to the mapping.
  • map_tax_template(self, tax_template, mapping_taxes)
    @api.multi
    Adds a tax template -> tax id to the mapping.
  • name_get(self)
    @api.multi
    Use the company name and template as name.
  • name_search(self, name, args=None, operator='ilike', limit=80)
    @api.model
    Redefine the search to search by company name.
  • onchange_company_id(self)
    @api.onchange('company_id')
    Update the code digits when the company changes

New fields (5)
  • account_id Many2one → account.account.template
    comodel_name='account.account.template' ondelete='set null' required=True string='Account template'
  • notes Text
    args: 'Notes'
  • type Selection
    selection=[('new', 'New template'), ('updated', 'Updated template')] string='Type'
  • update_account_id Many2one → account.account
    comodel_name='account.account' ondelete='set null' required=False string='Account to update'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
Public methods (0)

No public methods.

New fields (5)
  • account_id Many2one → account.account
    comodel_name='account.account' ondelete='set null' required=False string='Account to change on financial report'
  • financial_report_id Many2one → account.financial.report
    comodel_name='account.financial.report' ondelete='set null' required=True string='Financial report to update'
  • notes Text
    args: 'Notes'
  • type Selection
    selection=[('new', 'Add account'), ('deleted', 'Remove account'), ('warn', 'Warning')] string='Type'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
Public methods (0)

No public methods.

New fields (5)
  • fiscal_position_id Many2one → account.fiscal.position.template
    comodel_name='account.fiscal.position.template' ondelete='set null' required=True string='Fiscal position template'
  • notes Text
    args: 'Notes'
  • type Selection
    selection=[('new', 'New template'), ('updated', 'Updated template')] string='Type'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • update_fiscal_position_id Many2one → account.fiscal.position
    comodel_name='account.fiscal.position' ondelete='set null' required=False string='Fiscal position to update'
Public methods (0)

No public methods.

New fields (5)
  • notes Text
    args: 'Notes'
  • tax_id Many2one → account.tax.template
    comodel_name='account.tax.template' ondelete='set null' string='Tax template'
  • type Selection
    selection=[('new', 'New template'), ('updated', 'Updated template'), ('deleted', 'Tax to deactivate')] string='Type'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • update_tax_id Many2one → account.tax
    comodel_name='account.tax' ondelete='set null' required=False string='Tax to update'
Public methods (0)

No public methods.

New fields (5)
  • notes Text
    args: 'Notes'
  • tax_code_id Many2one → account.tax.code.template
    comodel_name='account.tax.code.template' ondelete='set null' string='Tax code template'
  • type Selection
    selection=[('new', 'New tax code'), ('updated', 'Updated tax code'), ('deleted', 'Tax code to deactivate')] string='Type'
  • update_chart_wizard_id Many2one → wizard.update.charts.accounts
    comodel_name='wizard.update.charts.accounts' ondelete='cascade' required=True string='Update chart wizard'
  • update_tax_code_id Many2one → account.tax.code
    comodel_name='account.tax.code' ondelete='set null' required=False string='Tax code to update'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/account-financial-tools
GIT
GIThttps://github.com/OCA/account-financial-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-financial-tools/tree/7.0/account_chart_update
VERSION
VERSION 1.2
CATEGORY
CATEGORYGeneric Modules/Accounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ACSONE SA/NV, Serv. Tecnol. Avanzados - Pedro M. Baeza, Zikzakmedia SL, Joaquín Gutierrez, invitu
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ACSONE SA/NV, Serv. Tecnol. Avanzados - Pedro M. Baeza, Zikzakmedia SL, Joaquín Gutierrez, invitu
COMMITTERS
COMMITTERSStéphane Bidoul, Yannick Vaucher, Guewen Baconnier, Lorenzo Battistini, Alexandre Fayolle, Pedro M. Baeza, Nicolas Bessi, Yann Papouin, Launchpad Translations on behalf of account-core-editors, Invitu, OCA Transbot, Joaquin Gutierrez, Rudolf Schnapka
WEBSITE
WEBSITEwww.zikzakmedia.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:07:14
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - process
    - decimal_precision
    - mail
    - analytic
    - board
    - edi
    - email_template
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Adds a wizard to update a company account chart from a chart template.
======================================================================

This is a pretty useful tool to update OpenERP installations after tax reforms
on the official charts of accounts, or to apply fixes performed on the chart
template.

The wizard:

- Allows the user to compare a chart and a template showing differences
  on accounts, taxes, tax codes and fiscal positions.
- It may create the new account, taxes, tax codes and fiscal positions detected
  on the template.
- It can also update (overwrite) the accounts, taxes, tax codes and fiscal
  positions that got modified on the template.

The wizard lets the user select what kind of objects must be checked/updated,
and whether old records must be checked for changes and updates.
It will display all the accounts to be created / updated with some information
about the detected differences, and allow the user to exclude records
individually.

Any problem found while updating will be shown on the last step.

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
view_tax_code_form_active account.tax.code.form.active account.tax.code field Inherits account.view_tax_code_form
view_update_multi_chart Update Chart of Accounts from a Chart Template wizard.update.charts.accounts form New
Models touched (1)

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/account-financial-tools
GIT
GIThttps://github.com/OCA/account-financial-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-financial-tools/tree/6.1/account_chart_update
VERSION
VERSION 6.1
CATEGORY
CATEGORYGeneric Modules/Accounting
LICENSE
LICENSEGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Zikzakmedia SL
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Zikzakmedia SL
COMMITTERS
COMMITTERSOlivier Dony, Alexandre Fayolle, Cubic ERP, Raphaël Valyi, Maxime Chambreuil, Yann Papouin, Omar (pexego), Omar (Pexego), unknown, ksa (Open ERP), Borja L.S.
WEBSITE
WEBSITEwww.zikzakmedia.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:04:06
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - product
    - process
    - decimal_precision
    - analytic
    - board
    - edi
    - email_template
    - mail
    - base_tools
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Adds a wizard to update a company account chart from a chart template.

This is a pretty useful tool to update OpenERP instalations after tax reforms
on the oficial charts of accounts, or to apply fixes performed on the chart
template.

The wizard:

- Allows the user to compare a chart and a template showing differences
    on accounts, taxes, tax codes and fiscal positions.
- It may create the new account, taxes, tax codes and fiscal positions detected
    on the template.
- It can also update (overwrite) the accounts, taxes, tax codes and fiscal
    positions that got modified on the template.

The wizard lets the user select what kind of objects must be checked/updated,
and whether old records must be checked for changes and updated.
It will display all the accounts to be created / updated with some information
about the detected differences, and allow the user to exclude records
individually.
Any problem found while updating will be shown on the last step.

Authors:
    Jordi Esteve (Zikzakmedia) <jesteve@zikzakmedia.com>
    Borja López Soilán (Pexego) <borjals@pexego.es>

Code Analysis

Views touched (1)
XML IDNameModelTypeStatus
view_update_multi_chart Update Chart of Accounts from a Chart Template wizard.update.charts.accounts form New
Models touched (0)

No models found for this module.