TIP: You can type at any time to perform a new search.
Detect changes and update the Account Chart from a template
account_chart_update · OCA/account-financial-tools
- Repository
- OCA/account-financial-tools · module folder · Try on Runboat
- Module version
- 1.1.5
- Category
- Accounting
- Folder size
- 2.62 MB
- License
- AGPL-3
- Application
- No
- Auto-installable
- No
- Website
- https://github.com/OCA/account-financial-tools
- Last tracking update
- 2026-08-07 09:06:24
- Authors
- Odoo Community Association (OCA), Tecnativa, BCIM, Okia
- Maintainers
- Odoo Community Association (OCA), Tecnativa, BCIM, Okia
- Committers
- Pedro M. Baeza, Jairo Llopis, Weblate, OCA-git-bot, Raf Ven, oca-ci, Andrii9090-tecnativa
- Odoo dependencies
- Python dependencies
- None
- System dependencies
- None
- Required by
- None
- 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 ID | Name | Model | Type | Status |
|---|---|---|---|---|
res_config_settings_view_form |
Open Account Chart Update Wizard 2 | res.config.settings | form | 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 |
HTTP endpoints (0)
No HTTP endpoints found for this module.
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_valueSelectionselection='_get_matching_selection' -
sequenceIntegerdefault=1required=True -
update_chart_wizard_idMany2one → wizard.update.charts.accountscomodel_name='wizard.update.charts.accounts'ondelete='cascade'required=Truestring='Update chart wizard'
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_idsMany2many → ir.model.fieldscomodel_name='ir.model.fields'default=<expr>domain=<expr>relation='wizard_update_charts_account_fields_rel'string='Account fields' -
account_group_field_idsMany2many → ir.model.fieldscomodel_name='ir.model.fields'default=<expr>domain=<expr>relation='wizard_update_charts_account_group_fields_rel'string='Account groups fields' -
account_group_idsOne2many → wizard.update.charts.accounts.account.groupcomodel_name='wizard.update.charts.accounts.account.group'inverse_name='update_chart_wizard_id'string='Account Groups' -
account_group_matching_idsOne2many → wizard.account.group.matchingcomodel_name='wizard.account.group.matching'default=<expr>inverse_name='update_chart_wizard_id'string='Account groups matching' -
account_idsOne2many → wizard.update.charts.accounts.accountcomodel_name='wizard.update.charts.accounts.account'inverse_name='update_chart_wizard_id'string='Accounts' -
account_matching_idsOne2many → wizard.account.matchingcomodel_name='wizard.account.matching'default=<expr>inverse_name='update_chart_wizard_id'string='Accounts matching' -
chart_templateSelectionrequired=Trueselection='_chart_template_selection' -
code_digitsInteger -
company_idMany2one → res.companycomodel_name='res.company'default=<expr>required=Truestring='Company' -
deleted_taxesIntegercompute='_compute_deleted_taxes_count'string='Deactivated taxes' -
fiscal_position_idsOne2many → wizard.update.charts.accounts.fiscal.positioncomodel_name='wizard.update.charts.accounts.fiscal.position'inverse_name='update_chart_wizard_id'string='Fiscal positions' -
fp_field_idsMany2many → ir.model.fieldscomodel_name='ir.model.fields'default=<expr>domain=<expr>relation='wizard_update_charts_fp_fields_rel'string='Fiscal position fields' -
fp_matching_idsOne2many → wizard.fp.matchingcomodel_name='wizard.fp.matching'default=<expr>inverse_name='update_chart_wizard_id'string='Fiscal positions matching' -
logTextreadonly=Truestring='Messages and Errors' -
new_account_groupsIntegercompute='_compute_new_account_groups_count' -
new_accountsIntegercompute='_compute_new_accounts_count' -
new_fpsIntegercompute='_compute_new_fps_count'string='New fiscal positions' -
new_tax_groupsIntegercompute='_compute_new_tax_group_count' -
new_taxesIntegercompute='_compute_new_taxes_count' -
rejected_new_account_numberInteger -
rejected_updated_account_numberInteger -
stateSelectiondefault='init'readonly=Trueselection=[('init', 'Configuration'), ('ready', 'Select records to update'), ('done', 'Wizard completed')]string='Status' -
tax_field_idsMany2many → ir.model.fieldscomodel_name='ir.model.fields'default=<expr>domain=<expr>relation='wizard_update_charts_tax_fields_rel'string='Tax fields' -
tax_group_field_idsMany2many → ir.model.fieldscomodel_name='ir.model.fields'default=<expr>domain=<expr>relation='wizard_update_charts_tax_group_fields_rel'string='Tax group fields' -
tax_group_idsOne2many → wizard.update.charts.accounts.tax.groupcomodel_name='wizard.update.charts.accounts.tax.group'inverse_name='update_chart_wizard_id'string='Taxe Groups' -
tax_group_matching_idsOne2many → wizard.tax.group.matchingcomodel_name='wizard.tax.group.matching'default=<expr>inverse_name='update_chart_wizard_id'string='Tax goups matching' -
tax_idsOne2many → wizard.update.charts.accounts.taxcomodel_name='wizard.update.charts.accounts.tax'inverse_name='update_chart_wizard_id'string='Taxes' -
tax_matching_idsOne2many → wizard.tax.matchingcomodel_name='wizard.tax.matching'default=<expr>inverse_name='update_chart_wizard_id'string='Taxes matching' -
update_accountBooleandefault=Truehelp='Existing accounts are updated. Accounts are searched by code.'string='Update accounts' -
update_account_groupBooleandefault=Truehelp='Existing account groups are updated. Account groups are searched by prefix_code_start.'string='Update account groups' -
update_fiscal_positionBooleandefault=Truehelp='Existing fiscal positions are updated. Fiscal positions are searched by name.'string='Update fiscal positions' -
update_taxBooleandefault=Truehelp='Existing taxes are updated. Taxes are searched by name.'string='Update taxes' -
update_tax_groupBooleandefault=Truehelp='Existing tax groups are updated. Tax group are searched by name.'string='Update tax groups' -
updated_account_groupsIntegercompute='_compute_updated_account_groups_count' -
updated_accountsIntegercompute='_compute_updated_accounts_count' -
updated_fpsIntegercompute='_compute_updated_fps_count'string='Updated fiscal positions' -
updated_tax_groupsIntegercompute='_compute_updated_tax_groups_count' -
updated_taxesIntegercompute='_compute_updated_taxes_count'
-
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.modelGet 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.modelGet 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.modelGet 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)
-
notesTextreadonly=True -
typeSelectionreadonly=Falseselection=[('new', 'New account'), ('updated', 'Updated account')] -
update_account_idMany2one → account.accountcomodel_name='account.account'ondelete='set null'required=Falsestring='Account to update' -
update_chart_wizard_idMany2one → wizard.update.charts.accountscomodel_name='wizard.update.charts.accounts'ondelete='cascade'required=Truestring='Update chart wizard' -
xml_idChar
No public methods.
New fields (5)
-
notesTextreadonly=True -
typeSelectionreadonly=Falseselection=[('new', 'New account group'), ('updated', 'Updated accoung group')] -
update_account_group_idMany2one → account.groupcomodel_name='account.group'ondelete='set null'required=Falsestring='Account group to update' -
update_chart_wizard_idMany2one → wizard.update.charts.accountscomodel_name='wizard.update.charts.accounts'ondelete='cascade'required=Truestring='Update chart wizard' -
xml_idChar
No public methods.
New fields (5)
-
notesTextreadonly=True -
typeSelectionreadonly=Falseselection=[('new', 'New fiscal position'), ('updated', 'Updated fiscal position')] -
update_chart_wizard_idMany2one → wizard.update.charts.accountscomodel_name='wizard.update.charts.accounts'ondelete='cascade'required=Truestring='Update chart wizard' -
update_fiscal_position_idMany2one → account.fiscal.positioncomodel_name='account.fiscal.position'ondelete='set null'required=Falsestring='Fiscal position to update' -
xml_idChar
No public methods.
New fields (6)
-
notesTextreadonly=True -
typeSelectionreadonly=Falseselection=[('new', 'New tax'), ('updated', 'Updated tax'), ('deleted', 'Tax to deactivate')] -
type_tax_useSelectionreadonly=Trueselection='_get_account_tax_type_tax_uses' -
update_chart_wizard_idMany2one → wizard.update.charts.accountscomodel_name='wizard.update.charts.accounts'ondelete='cascade'required=Truestring='Update chart wizard' -
update_tax_idMany2one → account.taxcomodel_name='account.tax'ondelete='set null'required=Falsestring='Tax to update' -
xml_idChar
No public methods.
New fields (5)
-
notesTextreadonly=True -
typeSelectionreadonly=Falseselection=[('new', 'New tax group'), ('updated', 'Updated tax group')] -
update_chart_wizard_idMany2one → wizard.update.charts.accountscomodel_name='wizard.update.charts.accounts'ondelete='cascade'required=Truestring='Update chart wizard' -
update_tax_group_idMany2one → account.tax.groupcomodel_name='account.tax.group'ondelete='set null'required=Falsestring='Tax group to update' -
xml_idChar
No public methods.
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…