Account Financial Reports

account_financial_report
REPOSITORY
REPOSITORYOCA/account-financial-reporting
GIT
GIThttps://github.com/OCA/account-financial-reporting.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-financial-reporting/tree/19.0/account_financial_report
VERSION
VERSION 0.0.15
CATEGORY
CATEGORYReporting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ForgeFlow, Camptocamp, initOS GmbH, redCOR AG
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ForgeFlow, Camptocamp, initOS GmbH, redCOR AG
COMMITTERS
COMMITTERSPedro M. Baeza, Víctor Martínez, Weblate, OCA-git-bot, micheledic, oca-ci, Andrii9090-tecnativa, adrip-s73, eduezerouali-tecnativa, maciej-wichowski, Reyes4711-S73, Michele Di Croce
WEBSITE
WEBSITEhttps://github.com/OCA/account-financial-reporting
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:40:49
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/reporting-engine:
    - report_xlsx
OCA/server-ux:
    - date_range
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 xlrd
xlsxwriter
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module adds a set of financial reports. They are accessible under
Invoicing / Reporting / OCA accounting reports.

- General ledger
- Trial Balance
- Open Items
- Aged Partner Balance
- VAT Report
- Journal Ledger

Currently General ledger, Trial Balance and Open Items are fully
compatible with a foreign currency set up in account in order to display
balances. Moreover, any foreign currency used in account move lines is
properly shown.

In case that in an account has not been configured a second currency
foreign currency balances are not available.

Invoicing / Settings / Invoicing / OCA Aged Report Configuration you will be able to set
dynamic intervals that will appear on the Aged Partner Balance.
For further information, check CONFIGURE.rst

Code Analysis

Views touched (56)
XML IDNameModelTypeStatus
account_financial_report.html_container account_financial_report.html_container ir.ui.view qweb New
account_financial_report.internal_layout account_financial_report.internal_layout ir.ui.view qweb New
account_financial_report.report_general_ledger_ending_cumul account_financial_report.report_general_ledger_ending_cumul ir.ui.view qweb New
account_financial_report.report_general_ledger_filters account_financial_report.report_general_ledger_filters ir.ui.view qweb New
account_financial_report.report_general_ledger_lines account_financial_report.report_general_ledger_lines ir.ui.view qweb New
account_financial_report.report_journal_all account_financial_report.report_journal_all ir.ui.view qweb New
account_financial_report.report_journal_all_taxes account_financial_report.report_journal_all_taxes ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal account_financial_report.report_journal_ledger_journal ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal_first_line account_financial_report.report_journal_ledger_journal_first_line ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal_table_header account_financial_report.report_journal_ledger_journal_table_header ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal_taxes account_financial_report.report_journal_ledger_journal_taxes ir.ui.view qweb New
account_financial_report.report_journal_move account_financial_report.report_journal_move ir.ui.view qweb New
account_financial_report.report_journal_move_line account_financial_report.report_journal_move_line ir.ui.view qweb New
account_financial_report.report_open_items_base account_financial_report.report_open_items_base ir.ui.view qweb New
account_financial_report.report_open_items_ending_cumul account_financial_report.report_open_items_ending_cumul ir.ui.view qweb New
account_financial_report.report_open_items_filters account_financial_report.report_open_items_filters ir.ui.view qweb New
account_financial_report.report_open_items_lines account_financial_report.report_open_items_lines ir.ui.view qweb New
account_financial_report.report_open_items_lines_header account_financial_report.report_open_items_lines_header ir.ui.view qweb New
account_financial_report.report_trial_balance_account_footer account_financial_report.report_trial_balance_account_footer ir.ui.view qweb New
account_financial_report.report_trial_balance_filters account_financial_report.report_trial_balance_filters ir.ui.view qweb New
account_financial_report.report_trial_balance_line account_financial_report.report_trial_balance_line ir.ui.view qweb New
account_financial_report.report_trial_balance_lines_header account_financial_report.report_trial_balance_lines_header ir.ui.view qweb New
account_financial_report.report_vat_report_base account_financial_report.report_vat_report_base ir.ui.view qweb New
account_financial_report.report_vat_report_filters account_financial_report.report_vat_report_filters ir.ui.view qweb New
aged_partner_balance aged_partner_balance ir.ui.view qweb New
aged_partner_balance_wizard Aged Partner Balance aged.partner.balance.report.wizard form New
aged_partner_report_configuration_form Age partner report configuration form account.age.report.configuration form New
aged_partner_report_configuration_tree Age partner report configuration list account.age.report.configuration list New
general_ledger general_ledger ir.ui.view qweb New
general_ledger_wizard General Ledger general.ledger.report.wizard form New
journal_ledger journal_ledger ir.ui.view qweb New
journal_ledger_wizard Journal Ledger journal.ledger.report.wizard form New
open_items open_items ir.ui.view qweb New
open_items_wizard Open Items open.items.report.wizard form New
report_aged_partner_balance report_aged_partner_balance ir.ui.view qweb New
report_aged_partner_balance_account_ending_cumul report_aged_partner_balance_account_ending_cumul ir.ui.view qweb New
report_aged_partner_balance_base report_aged_partner_balance_base ir.ui.view qweb New
report_aged_partner_balance_filters report_aged_partner_balance_filters ir.ui.view qweb New
report_aged_partner_balance_lines report_aged_partner_balance_lines ir.ui.view qweb New
report_aged_partner_balance_lines_header report_aged_partner_balance_lines_header ir.ui.view qweb New
report_aged_partner_balance_move_lines report_aged_partner_balance_move_lines ir.ui.view qweb New
report_aged_partner_balance_partner_ending_cumul report_aged_partner_balance_partner_ending_cumul ir.ui.view qweb New
report_general_ledger report_general_ledger ir.ui.view qweb New
report_general_ledger_base report_general_ledger_base ir.ui.view qweb New
report_journal_ledger report_journal_ledger ir.ui.view qweb New
report_journal_ledger_base report_journal_ledger_base ir.ui.view qweb New
report_open_items report_open_items ir.ui.view qweb New
report_trial_balance report_trial_balance ir.ui.view qweb New
report_trial_balance_base report_trial_balance_base ir.ui.view qweb New
report_vat_report report_vat_report ir.ui.view qweb New
res_config_settings_view_form res.config.settings xpath Inherits account.res_config_settings_view_form
trial_balance trial_balance ir.ui.view qweb New
trial_balance_wizard Trial Balance trial.balance.report.wizard form New
vat_report vat_report ir.ui.view qweb New
vat_report_wizard vat_report_wizard_view vat.report.wizard form New
view_account_specific_form account.account.form.inherit account.account field Inherits account.view_account_form
Models touched (28)

New fields (1)
  • centralized Boolean
    help='If flagged, no details will be displayed in the General Ledger report (the webkit one only), only centralized amounts per period.'
Public methods (0)

No public methods.

New fields (3)
  • company_id Many2one → res.company
    default=<expr> readonly=True args: 'res.company'
  • line_ids One2many → account.age.report.configuration.line
    args: 'account.age.report.configuration.line', 'account_age_report_config_id'
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (3)
  • account_age_report_config_id Many2one → account.age.report.configuration
    args: 'account.age.report.configuration'
  • inferior_limit Integer
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (6)
  • account_ids One2many → account.account
    comodel_name='account.account' compute='_compute_account_ids' store=False string='Accounts'
  • complete_code Char
    compute='_compute_complete_code' recursive=True args: 'Full Code'
  • complete_name Char
    compute='_compute_complete_name' recursive=True args: 'Full Name'
  • compute_account_ids Many2many → account.account
    compute='_compute_group_accounts' recursive=True store=False string='Compute accounts' args: 'account.account'
  • group_child_ids One2many → account.group
    comodel_name='account.group' inverse_name='parent_id' string='Child Groups'
  • level Integer
    compute='_compute_level' recursive=True
Public methods (0)

No public methods.

New fields (1)
  • analytic_account_ids Many2many → account.analytic.account
    compute='_compute_analytic_account_ids' store=True args: 'account.analytic.account'
Public methods (2)
  • init(self)
    The join between accounts_partners subquery and account_move_line can be heavy to compute on big databases. Join sample: JOIN account_move_line ml ON ap.account_id = ml.account_id AND ml.date < '2018-12-30' AND ap.partner_id = ml.partner_id AND ap.include_initial_balance = TRUE By adding the following index, performances are strongly increased. :return:
  • search_count(self, domain, limit=None)
    @api.model

New fields (2)
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=False string='Company'
  • label_text_limit Integer
    default=40
Public methods (3)
  • button_export_html(self)
  • button_export_pdf(self)
  • button_export_xlsx(self)

New fields (11)
  • account_code_from Many2one → account.account
    comodel_name='account.account' help='Starting account in a range'
  • account_code_to Many2one → account.account
    comodel_name='account.account' help='Ending account in a range'
  • account_ids Many2many → account.account
    comodel_name='account.account' domain=[('reconcile', '=', True)] required=True string='Filter accounts'
  • age_partner_config_id Many2one → account.age.report.configuration
    string='Intervals configuration' args: 'account.age.report.configuration'
  • date_at Date
    default=fields.Date.context_today required=True
  • date_from Date
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • show_move_line_details Boolean
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
Public methods (4)
  • on_change_account_range(self)
    @api.onchange('account_code_from', 'account_code_to')
  • onchange_account_ids(self)
    @api.onchange('account_ids')
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (21)
  • account_code_from Many2one → account.account
    comodel_name='account.account' help='Starting account in a range'
  • account_code_to Many2one → account.account
    comodel_name='account.account' help='Ending account in a range'
  • account_ids Many2many → account.account
    comodel_name='account.account' string='Filter accounts'
  • account_journal_ids Many2many → account.journal
    comodel_name='account.journal' string='Filter journals'
  • centralize Boolean
    default=True string='Activate centralization'
  • cost_center_ids Many2many → account.analytic.account
    comodel_name='account.analytic.account' string='Filter cost centers'
  • date_from Date
    default=<expr> required=True
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    default=fields.Date.context_today required=True
  • domain Char
    default=[] help='This domain will be used to select specific domain for Journal Items' string='Journal Items Domain'
  • foreign_currency Boolean
    default=<expr> help='Display foreign currency for move lines, unless account currency is not setup through chart of accounts will display initial and final balance in that currency.' string='Show foreign currency'
  • fy_start_date Date
    compute='_compute_fy_start_date'
  • grouped_by Selection
    default='partners' required=True selection=[('none', 'None'), ('partners', 'Partners'), ('taxes', 'Taxes')]
  • hide_account_at_0 Boolean
    help='Use this filter to hide an account or a partner with an ending balance at 0. If partners are filtered, debits and credits totals will not match the trial balance.' string='Hide account ending balance at 0'
  • only_one_unaffected_earnings_account Boolean
    default=<expr> readonly=True
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' default=<expr> string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • show_cost_center Boolean
    default=True string='Show Analytic Account'
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
  • unaffected_earnings_account Many2one → account.account
    comodel_name='account.account' compute='_compute_unaffected_earnings_account' store=True
Public methods (5)
  • on_change_account_range(self)
    @api.onchange('account_code_from', 'account_code_to')
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')
    Handle date range change.
  • onchange_partner_ids(self)
    @api.onchange('partner_ids')
    Handle partners change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (10)
  • date_from Date
    required=True string='Start date'
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    required=True string='End date'
  • foreign_currency Boolean
  • group_option Selection
    default='journal' required=True selection='_get_group_options' string='Group entries by'
  • journal_ids Many2many → account.journal
    comodel_name='account.journal' required=False string='Journals'
  • move_target Selection
    default='posted' required=True selection='_get_move_targets'
  • sort_option Selection
    default='move_name' required=True selection='_get_sort_options' string='Sort entries by'
  • with_account_name Boolean
    default=False
  • with_auto_sequence Boolean
    default=False string='Show Auto Sequence'
Public methods (2)
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')

New fields (13)
  • account_code_from Many2one → account.account
    comodel_name='account.account'
  • account_code_to Many2one → account.account
    comodel_name='account.account' help='Ending account in a range'
  • account_ids Many2many → account.account
    comodel_name='account.account' domain=[('reconcile', '=', True)] required=True string='Filter accounts'
  • date_at Date
    default=fields.Date.context_today required=True
  • date_from Date
  • foreign_currency Boolean
    default=<expr> help='Display foreign currency for move lines, unless account currency is not setup through chart of accounts will display initial and final balance in that currency.' string='Show foreign currency'
  • grouped_by Selection
    default='partners' selection=[('partners', 'Partners'), ('salesperson', 'Partner Salesperson')]
  • hide_account_at_0 Boolean
    default=True help='Use this filter to hide an account or a partner with an ending balance at 0. If partners are filtered, debits and credits totals will not match the trial balance.' string='Hide account ending balance at 0'
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' default=<expr> string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • show_partner_details Boolean
    default=True
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
Public methods (4)
  • on_change_account_range(self)
    @api.onchange('account_code_from', 'account_code_to')
  • onchange_account_ids(self)
    @api.onchange('account_ids')
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (0)

No new fields.

Public methods (2)
  • write_account_footer_from_dict(self, report, account, label, field_name, string_format, amount_format, amount_is_percent, report_data)
    Specific function to write account footer for Aged Partner Balance
  • write_ending_balance_from_dict(self, my_object, report_data)
    Specific function to write ending partner balance for Aged Partner Balance

New fields (0)

No new fields.

Public methods (2)
  • write_ending_balance_from_dict(self, my_object, report_data)
    Specific function to write ending balance for General Ledger
  • write_initial_balance_from_dict(self, my_object, report_data)
    Specific function to write initial balance for General Ledger

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • write_ending_balance_from_dict(self, my_object, type_object, total_amount, report_data, account_id=False, partner_id=False)
    Specific function to write ending balance for Open Items

New fields (0)

No new fields.

Public methods (3)
  • write_account_footer(self, account, name_value, report_data)
    Specific function to write account footer for Trial Balance
  • write_line(self, line_object, type_object, report_data)
    Write a line on current line using all defined columns field name. Columns are defined with `_get_report_columns` method.
  • write_line_from_dict_order(self, total_amount, partner_data, report_data)

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 (8)
  • generate_xlsx_report(self, workbook, data, objects)
  • get_workbook_options(self)
  • write_array_header(self, report_data)
    Write array header on current line using all defined columns name. Columns are defined with `_get_report_columns` method.
  • write_array_title(self, title, report_data)
    Write array title on current line using all defined columns width. Columns are defined with `_get_report_columns` method.
  • write_ending_balance_from_dict(self, my_object, name, label, report_data)
    Write a specific ending balance line on current line using defined columns field_final_balance name. Columns are defined with `_get_report_columns` method.
  • write_initial_balance_from_dict(self, my_object, label, report_data)
    Write a specific initial balance line on current line using defined columns field_initial_balance name. Columns are defined with `_get_report_columns` method.
  • write_line_from_dict(self, line_dict, report_data)
    Write a line on current line
  • write_non_standard_column(self, cell_type, col_pos, value)
    Write columns out of the columns type defined here.

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 (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • age_partner_config_id Many2one → account.age.report.configuration
    string='Intervals configuration' args: 'account.age.report.configuration'
Public methods (2)
  • get_values(self)
    @api.model
  • set_values(self)

New fields (22)
  • account_code_from Many2one → account.account
    comodel_name='account.account' help='Starting account in a range'
  • account_code_to Many2one → account.account
    comodel_name='account.account' help='Ending account in a range'
  • account_ids Many2many → account.account
    comodel_name='account.account' string='Filter accounts'
  • date_from Date
    required=True
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    required=True
  • foreign_currency Boolean
    help='Display foreign currency for move lines, unless account currency is not setup through chart of accounts will display initial and final balance in that currency.' string='Show foreign currency'
  • fy_start_date Date
    compute='_compute_fy_start_date'
  • grouped_by Selection
    default=False selection=[('analytic_account', 'Analytic Account')]
  • hide_account_at_0 Boolean
    default=True help='When this option is enabled, the trial balance will not display accounts that have initial balance = debit = credit = end balance = 0' string='Hide accounts at 0'
  • hide_parent_hierarchy_level Boolean
    default=False args: 'Do not display parent levels'
  • journal_ids Many2many → account.journal
    comodel_name='account.journal'
  • limit_hierarchy_level Boolean
    args: 'Limit hierarchy levels'
  • only_one_unaffected_earnings_account Boolean
    default=<expr> readonly=True
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • show_hierarchy Boolean
    help='Use when your account groups are hierarchical' string='Show hierarchy'
  • show_hierarchy_level Integer
    default=1 args: 'Hierarchy Levels to display'
  • show_partner_details Boolean
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
  • unaffected_earnings_account Many2one → account.account
    comodel_name='account.account' compute='_compute_unaffected_earnings_account' store=True
Public methods (6)
  • on_change_account_range(self)
    @api.onchange('account_code_from', 'account_code_to')
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')
    Handle date range change.
  • onchange_grouped_by(self)
    @api.onchange('grouped_by')
  • onchange_show_partner_details(self)
    @api.onchange('show_partner_details')
    Handle partners change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (6)
  • based_on Selection
    default='taxtags' required=True args: [('taxtags', 'Tax Tags'), ('taxgroups', 'Tax Groups')]
  • date_from Date
    required=True args: 'Start Date'
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    required=True args: 'End Date'
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
  • tax_detail Boolean
    args: 'Detail Taxes'
Public methods (2)
  • onchange_company_id(self)
    @api.onchange('company_id')
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')
    Handle date range change.
REPOSITORY
REPOSITORYOCA/account-financial-reporting
GIT
GIThttps://github.com/OCA/account-financial-reporting.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-financial-reporting/tree/18.0/account_financial_report
VERSION
VERSION 1.4.20
CATEGORY
CATEGORYReporting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ForgeFlow, Camptocamp, initOS GmbH, redCOR AG
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ForgeFlow, Camptocamp, initOS GmbH, redCOR AG
COMMITTERS
COMMITTERSAlexis de Lattre, Pedro M. Baeza, Carlos Dauden, Enric Tobella, Luc De Meyer, Jordi Ballester Alomar, Víctor Martínez, Alexandre D. Díaz, Hugo Santos, Florian da Costa, Weblate, OCA-git-bot, micheledic, oca-ci, David Ramia, Andrii9090-tecnativa, david-s73, Anjeel Haria, Benoît, adrip-s73, anusrinps96, bobrador, eduezerouali-tecnativa, Christoph Abenthung, Bhavesh Heliconia, chaule97, Bonnerue
WEBSITE
WEBSITEhttps://github.com/OCA/account-financial-reporting
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:16
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/reporting-engine:
    - report_xlsx
OCA/server-ux:
    - date_range
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 module adds a set of financial reports. They are accessible under
Invoicing / Reporting / OCA accounting reports.

- General ledger
- Trial Balance
- Open Items
- Aged Partner Balance
- VAT Report
- Journal Ledger

Currently General ledger, Trial Balance and Open Items are fully
compatible with a foreign currency set up in account in order to display
balances. Moreover, any foreign currency used in account move lines is
properly shown.

In case that in an account has not been configured a second currency
foreign currency balances are not available.

Invoicing / Settings / Invoicing / OCA Aged Report Configuration you will be able to set
dynamic intervals that will appear on the Aged Partner Balance.
For further information, check CONFIGURE.rst

Code Analysis

Views touched (56)
XML IDNameModelTypeStatus
account_financial_report.html_container account_financial_report.html_container ir.ui.view qweb New
account_financial_report.internal_layout account_financial_report.internal_layout ir.ui.view qweb New
account_financial_report.report_general_ledger_ending_cumul account_financial_report.report_general_ledger_ending_cumul ir.ui.view qweb New
account_financial_report.report_general_ledger_filters account_financial_report.report_general_ledger_filters ir.ui.view qweb New
account_financial_report.report_general_ledger_lines account_financial_report.report_general_ledger_lines ir.ui.view qweb New
account_financial_report.report_journal_all account_financial_report.report_journal_all ir.ui.view qweb New
account_financial_report.report_journal_all_taxes account_financial_report.report_journal_all_taxes ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal account_financial_report.report_journal_ledger_journal ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal_first_line account_financial_report.report_journal_ledger_journal_first_line ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal_table_header account_financial_report.report_journal_ledger_journal_table_header ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal_taxes account_financial_report.report_journal_ledger_journal_taxes ir.ui.view qweb New
account_financial_report.report_journal_move account_financial_report.report_journal_move ir.ui.view qweb New
account_financial_report.report_journal_move_line account_financial_report.report_journal_move_line ir.ui.view qweb New
account_financial_report.report_open_items_base account_financial_report.report_open_items_base ir.ui.view qweb New
account_financial_report.report_open_items_ending_cumul account_financial_report.report_open_items_ending_cumul ir.ui.view qweb New
account_financial_report.report_open_items_filters account_financial_report.report_open_items_filters ir.ui.view qweb New
account_financial_report.report_open_items_lines account_financial_report.report_open_items_lines ir.ui.view qweb New
account_financial_report.report_open_items_lines_header account_financial_report.report_open_items_lines_header ir.ui.view qweb New
account_financial_report.report_trial_balance_account_footer account_financial_report.report_trial_balance_account_footer ir.ui.view qweb New
account_financial_report.report_trial_balance_filters account_financial_report.report_trial_balance_filters ir.ui.view qweb New
account_financial_report.report_trial_balance_line account_financial_report.report_trial_balance_line ir.ui.view qweb New
account_financial_report.report_trial_balance_lines_header account_financial_report.report_trial_balance_lines_header ir.ui.view qweb New
account_financial_report.report_vat_report_base account_financial_report.report_vat_report_base ir.ui.view qweb New
account_financial_report.report_vat_report_filters account_financial_report.report_vat_report_filters ir.ui.view qweb New
aged_partner_balance aged_partner_balance ir.ui.view qweb New
aged_partner_balance_wizard Aged Partner Balance aged.partner.balance.report.wizard form New
aged_partner_report_configuration_form Age partner report configuration form account.age.report.configuration form New
aged_partner_report_configuration_tree Age partner report configuration list account.age.report.configuration list New
general_ledger general_ledger ir.ui.view qweb New
general_ledger_wizard General Ledger general.ledger.report.wizard form New
journal_ledger journal_ledger ir.ui.view qweb New
journal_ledger_wizard Journal Ledger journal.ledger.report.wizard form New
open_items open_items ir.ui.view qweb New
open_items_wizard Open Items open.items.report.wizard form New
report_aged_partner_balance report_aged_partner_balance ir.ui.view qweb New
report_aged_partner_balance_account_ending_cumul report_aged_partner_balance_account_ending_cumul ir.ui.view qweb New
report_aged_partner_balance_base report_aged_partner_balance_base ir.ui.view qweb New
report_aged_partner_balance_filters report_aged_partner_balance_filters ir.ui.view qweb New
report_aged_partner_balance_lines report_aged_partner_balance_lines ir.ui.view qweb New
report_aged_partner_balance_lines_header report_aged_partner_balance_lines_header ir.ui.view qweb New
report_aged_partner_balance_move_lines report_aged_partner_balance_move_lines ir.ui.view qweb New
report_aged_partner_balance_partner_ending_cumul report_aged_partner_balance_partner_ending_cumul ir.ui.view qweb New
report_general_ledger report_general_ledger ir.ui.view qweb New
report_general_ledger_base report_general_ledger_base ir.ui.view qweb New
report_journal_ledger report_journal_ledger ir.ui.view qweb New
report_journal_ledger_base report_journal_ledger_base ir.ui.view qweb New
report_open_items report_open_items ir.ui.view qweb New
report_trial_balance report_trial_balance ir.ui.view qweb New
report_trial_balance_base report_trial_balance_base ir.ui.view qweb New
report_vat_report report_vat_report ir.ui.view qweb New
res_config_settings_view_form res.config.settings xpath Inherits account.res_config_settings_view_form
trial_balance trial_balance ir.ui.view qweb New
trial_balance_wizard Trial Balance trial.balance.report.wizard form New
vat_report vat_report ir.ui.view qweb New
vat_report_wizard vat_report_wizard_view vat.report.wizard form New
view_account_specific_form account.account.form.inherit account.account field Inherits account.view_account_form
Models touched (28)

New fields (1)
  • centralized Boolean
    help='If flagged, no details will be displayed in the General Ledger report (the webkit one only), only centralized amounts per period.'
Public methods (0)

No public methods.

New fields (3)
  • company_id Many2one → res.company
    default=<expr> readonly=True args: 'res.company'
  • line_ids One2many → account.age.report.configuration.line
    args: 'account.age.report.configuration.line', 'account_age_report_config_id'
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (3)
  • account_age_report_config_id Many2one → account.age.report.configuration
    args: 'account.age.report.configuration'
  • inferior_limit Integer
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (6)
  • account_ids One2many → account.account
    comodel_name='account.account' compute='_compute_account_ids' search='_search_account_ids' store=False string='Accounts'
  • complete_code Char
    compute='_compute_complete_code' recursive=True args: 'Full Code'
  • complete_name Char
    compute='_compute_complete_name' recursive=True args: 'Full Name'
  • compute_account_ids Many2many → account.account
    compute='_compute_group_accounts' recursive=True store=False string='Compute accounts' args: 'account.account'
  • group_child_ids One2many → account.group
    comodel_name='account.group' inverse_name='parent_id' string='Child Groups'
  • level Integer
    compute='_compute_level' recursive=True
Public methods (0)

No public methods.

New fields (1)
  • analytic_account_ids Many2many → account.analytic.account
    compute='_compute_analytic_account_ids' store=True args: 'account.analytic.account'
Public methods (2)
  • init(self)
    The join between accounts_partners subquery and account_move_line can be heavy to compute on big databases. Join sample: JOIN account_move_line ml ON ap.account_id = ml.account_id AND ml.date < '2018-12-30' AND ap.partner_id = ml.partner_id AND ap.include_initial_balance = TRUE By adding the following index, performances are strongly increased. :return:
  • search_count(self, domain, limit=None)
    @api.model

New fields (2)
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=False string='Company'
  • label_text_limit Integer
    default=40
Public methods (3)
  • button_export_html(self)
  • button_export_pdf(self)
  • button_export_xlsx(self)

New fields (11)
  • account_code_from Many2one → account.account
    comodel_name='account.account' help='Starting account in a range'
  • account_code_to Many2one → account.account
    comodel_name='account.account' help='Ending account in a range'
  • account_ids Many2many → account.account
    comodel_name='account.account' domain=[('reconcile', '=', True)] required=True string='Filter accounts'
  • age_partner_config_id Many2one → account.age.report.configuration
    string='Intervals configuration' args: 'account.age.report.configuration'
  • date_at Date
    default=fields.Date.context_today required=True
  • date_from Date
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • show_move_line_details Boolean
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
Public methods (4)
  • on_change_account_range(self)
    @api.onchange('account_code_from', 'account_code_to')
  • onchange_account_ids(self)
    @api.onchange('account_ids')
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (21)
  • account_code_from Many2one → account.account
    comodel_name='account.account' help='Starting account in a range'
  • account_code_to Many2one → account.account
    comodel_name='account.account' help='Ending account in a range'
  • account_ids Many2many → account.account
    comodel_name='account.account' string='Filter accounts'
  • account_journal_ids Many2many → account.journal
    comodel_name='account.journal' string='Filter journals'
  • centralize Boolean
    default=True string='Activate centralization'
  • cost_center_ids Many2many → account.analytic.account
    comodel_name='account.analytic.account' string='Filter cost centers'
  • date_from Date
    default=<expr> required=True
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    default=fields.Date.context_today required=True
  • domain Char
    default=[] help='This domain will be used to select specific domain for Journal Items' string='Journal Items Domain'
  • foreign_currency Boolean
    default=<expr> help='Display foreign currency for move lines, unless account currency is not setup through chart of accounts will display initial and final balance in that currency.' string='Show foreign currency'
  • fy_start_date Date
    compute='_compute_fy_start_date'
  • grouped_by Selection
    default='partners' required=True selection=[('none', 'None'), ('partners', 'Partners'), ('taxes', 'Taxes')]
  • hide_account_at_0 Boolean
    help='Use this filter to hide an account or a partner with an ending balance at 0. If partners are filtered, debits and credits totals will not match the trial balance.' string='Hide account ending balance at 0'
  • only_one_unaffected_earnings_account Boolean
    default=<expr> readonly=True
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' default=<expr> string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • show_cost_center Boolean
    default=True string='Show Analytic Account'
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
  • unaffected_earnings_account Many2one → account.account
    comodel_name='account.account' compute='_compute_unaffected_earnings_account' store=True
Public methods (5)
  • on_change_account_range(self)
    @api.onchange('account_code_from', 'account_code_to')
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')
    Handle date range change.
  • onchange_partner_ids(self)
    @api.onchange('partner_ids')
    Handle partners change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (10)
  • date_from Date
    required=True string='Start date'
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    required=True string='End date'
  • foreign_currency Boolean
  • group_option Selection
    default='journal' required=True selection='_get_group_options' string='Group entries by'
  • journal_ids Many2many → account.journal
    comodel_name='account.journal' required=False string='Journals'
  • move_target Selection
    default='posted' required=True selection='_get_move_targets'
  • sort_option Selection
    default='move_name' required=True selection='_get_sort_options' string='Sort entries by'
  • with_account_name Boolean
    default=False
  • with_auto_sequence Boolean
    default=False string='Show Auto Sequence'
Public methods (2)
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')

New fields (13)
  • account_code_from Many2one → account.account
    comodel_name='account.account'
  • account_code_to Many2one → account.account
    comodel_name='account.account' help='Ending account in a range'
  • account_ids Many2many → account.account
    comodel_name='account.account' domain=[('reconcile', '=', True)] required=True string='Filter accounts'
  • date_at Date
    default=fields.Date.context_today required=True
  • date_from Date
  • foreign_currency Boolean
    default=<expr> help='Display foreign currency for move lines, unless account currency is not setup through chart of accounts will display initial and final balance in that currency.' string='Show foreign currency'
  • grouped_by Selection
    default='partners' selection=[('partners', 'Partners'), ('salesperson', 'Partner Salesperson')]
  • hide_account_at_0 Boolean
    default=True help='Use this filter to hide an account or a partner with an ending balance at 0. If partners are filtered, debits and credits totals will not match the trial balance.' string='Hide account ending balance at 0'
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' default=<expr> string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • show_partner_details Boolean
    default=True
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
Public methods (4)
  • on_change_account_range(self)
    @api.onchange('account_code_from', 'account_code_to')
  • onchange_account_ids(self)
    @api.onchange('account_ids')
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (0)

No new fields.

Public methods (2)
  • write_account_footer_from_dict(self, report, account, label, field_name, string_format, amount_format, amount_is_percent, report_data)
    Specific function to write account footer for Aged Partner Balance
  • write_ending_balance_from_dict(self, my_object, report_data)
    Specific function to write ending partner balance for Aged Partner Balance

New fields (0)

No new fields.

Public methods (2)
  • write_ending_balance_from_dict(self, my_object, report_data)
    Specific function to write ending balance for General Ledger
  • write_initial_balance_from_dict(self, my_object, report_data)
    Specific function to write initial balance for General Ledger

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • write_ending_balance_from_dict(self, my_object, type_object, total_amount, report_data, account_id=False, partner_id=False)
    Specific function to write ending balance for Open Items

New fields (0)

No new fields.

Public methods (3)
  • write_account_footer(self, account, name_value, report_data)
    Specific function to write account footer for Trial Balance
  • write_line(self, line_object, type_object, report_data)
    Write a line on current line using all defined columns field name. Columns are defined with `_get_report_columns` method.
  • write_line_from_dict_order(self, total_amount, partner_data, report_data)

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 (8)
  • generate_xlsx_report(self, workbook, data, objects)
  • get_workbook_options(self)
  • write_array_header(self, report_data)
    Write array header on current line using all defined columns name. Columns are defined with `_get_report_columns` method.
  • write_array_title(self, title, report_data)
    Write array title on current line using all defined columns width. Columns are defined with `_get_report_columns` method.
  • write_ending_balance_from_dict(self, my_object, name, label, report_data)
    Write a specific ending balance line on current line using defined columns field_final_balance name. Columns are defined with `_get_report_columns` method.
  • write_initial_balance_from_dict(self, my_object, label, report_data)
    Write a specific initial balance line on current line using defined columns field_initial_balance name. Columns are defined with `_get_report_columns` method.
  • write_line_from_dict(self, line_dict, report_data)
    Write a line on current line
  • write_non_standard_column(self, cell_type, col_pos, value)
    Write columns out of the columns type defined here.

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 (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • age_partner_config_id Many2one → account.age.report.configuration
    string='Intervals configuration' args: 'account.age.report.configuration'
Public methods (2)
  • get_values(self)
    @api.model
  • set_values(self)

New fields (22)
  • account_code_from Many2one → account.account
    comodel_name='account.account' help='Starting account in a range'
  • account_code_to Many2one → account.account
    comodel_name='account.account' help='Ending account in a range'
  • account_ids Many2many → account.account
    comodel_name='account.account' string='Filter accounts'
  • date_from Date
    required=True
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    required=True
  • foreign_currency Boolean
    help='Display foreign currency for move lines, unless account currency is not setup through chart of accounts will display initial and final balance in that currency.' string='Show foreign currency'
  • fy_start_date Date
    compute='_compute_fy_start_date'
  • grouped_by Selection
    default=False selection=[('analytic_account', 'Analytic Account')]
  • hide_account_at_0 Boolean
    default=True help='When this option is enabled, the trial balance will not display accounts that have initial balance = debit = credit = end balance = 0' string='Hide accounts at 0'
  • hide_parent_hierarchy_level Boolean
    default=False args: 'Do not display parent levels'
  • journal_ids Many2many → account.journal
    comodel_name='account.journal'
  • limit_hierarchy_level Boolean
    args: 'Limit hierarchy levels'
  • only_one_unaffected_earnings_account Boolean
    default=<expr> readonly=True
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • show_hierarchy Boolean
    help='Use when your account groups are hierarchical' string='Show hierarchy'
  • show_hierarchy_level Integer
    default=1 args: 'Hierarchy Levels to display'
  • show_partner_details Boolean
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
  • unaffected_earnings_account Many2one → account.account
    comodel_name='account.account' compute='_compute_unaffected_earnings_account' store=True
Public methods (6)
  • on_change_account_range(self)
    @api.onchange('account_code_from', 'account_code_to')
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')
    Handle date range change.
  • onchange_grouped_by(self)
    @api.onchange('grouped_by')
  • onchange_show_partner_details(self)
    @api.onchange('show_partner_details')
    Handle partners change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (6)
  • based_on Selection
    default='taxtags' required=True args: [('taxtags', 'Tax Tags'), ('taxgroups', 'Tax Groups')]
  • date_from Date
    required=True args: 'Start Date'
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    required=True args: 'End Date'
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
  • tax_detail Boolean
    args: 'Detail Taxes'
Public methods (2)
  • onchange_company_id(self)
    @api.onchange('company_id')
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')
    Handle date range change.
REPOSITORY
REPOSITORYOCA/account-financial-reporting
GIT
GIThttps://github.com/OCA/account-financial-reporting.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-financial-reporting/tree/17.0/account_financial_report
VERSION
VERSION 1.9.9
CATEGORY
CATEGORYReporting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ForgeFlow, Camptocamp, initOS GmbH, redCOR AG
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ForgeFlow, Camptocamp, initOS GmbH, redCOR AG
COMMITTERS
COMMITTERSAlexis de Lattre, Pedro M. Baeza, Carlos Dauden, Víctor Martínez, Hugo Santos, Florian da Costa, Weblate, OCA-git-bot, SilvioC2C, Maxence Groine, oca-ci, Vincent Van Rossem, David Ramia, Saran440, pilarvargas-tecnativa, Carolina Fernandez, Andrii9090-tecnativa, Henrik Norlin, anusrinps96, bobrador, eduezerouali-tecnativa
WEBSITE
WEBSITEhttps://github.com/OCA/account-financial-reporting
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:08
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/reporting-engine:
    - report_xlsx
OCA/server-ux:
    - date_range
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 xlrd
xlsxwriter
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module adds a set of financial reports. They are accessible under
Invoicing / Reporting / OCA accounting reports.

- General ledger
- Trial Balance
- Open Items
- Aged Partner Balance
- VAT Report
- Journal Ledger

Currently General ledger, Trial Balance and Open Items are fully
compatible with a foreign currency set up in account in order to display
balances. Moreover, any foreign currency used in account move lines is
properly shown.

In case that in an account has not been configured a second currency
foreign currency balances are not available.

Invoicing / Settings / Invoicing / OCA Aged Report Configuration you will be able to set
dynamic intervals that will appear on the Aged Partner Balance.
For further information, check CONFIGURE.rst

Code Analysis

Views touched (56)
XML IDNameModelTypeStatus
account_financial_report.html_container account_financial_report.html_container ir.ui.view qweb New
account_financial_report.internal_layout account_financial_report.internal_layout ir.ui.view qweb New
account_financial_report.report_general_ledger_ending_cumul account_financial_report.report_general_ledger_ending_cumul ir.ui.view qweb New
account_financial_report.report_general_ledger_filters account_financial_report.report_general_ledger_filters ir.ui.view qweb New
account_financial_report.report_general_ledger_lines account_financial_report.report_general_ledger_lines ir.ui.view qweb New
account_financial_report.report_journal_all account_financial_report.report_journal_all ir.ui.view qweb New
account_financial_report.report_journal_all_taxes account_financial_report.report_journal_all_taxes ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal account_financial_report.report_journal_ledger_journal ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal_first_line account_financial_report.report_journal_ledger_journal_first_line ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal_table_header account_financial_report.report_journal_ledger_journal_table_header ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal_taxes account_financial_report.report_journal_ledger_journal_taxes ir.ui.view qweb New
account_financial_report.report_journal_move account_financial_report.report_journal_move ir.ui.view qweb New
account_financial_report.report_journal_move_line account_financial_report.report_journal_move_line ir.ui.view qweb New
account_financial_report.report_open_items_base account_financial_report.report_open_items_base ir.ui.view qweb New
account_financial_report.report_open_items_ending_cumul account_financial_report.report_open_items_ending_cumul ir.ui.view qweb New
account_financial_report.report_open_items_filters account_financial_report.report_open_items_filters ir.ui.view qweb New
account_financial_report.report_open_items_lines account_financial_report.report_open_items_lines ir.ui.view qweb New
account_financial_report.report_open_items_lines_header account_financial_report.report_open_items_lines_header ir.ui.view qweb New
account_financial_report.report_trial_balance_account_footer account_financial_report.report_trial_balance_account_footer ir.ui.view qweb New
account_financial_report.report_trial_balance_filters account_financial_report.report_trial_balance_filters ir.ui.view qweb New
account_financial_report.report_trial_balance_line account_financial_report.report_trial_balance_line ir.ui.view qweb New
account_financial_report.report_trial_balance_lines_header account_financial_report.report_trial_balance_lines_header ir.ui.view qweb New
account_financial_report.report_vat_report_base account_financial_report.report_vat_report_base ir.ui.view qweb New
account_financial_report.report_vat_report_filters account_financial_report.report_vat_report_filters ir.ui.view qweb New
aged_partner_balance aged_partner_balance ir.ui.view qweb New
aged_partner_balance_wizard Aged Partner Balance aged.partner.balance.report.wizard form New
aged_partner_report_configuration_form Age partner report configuration form account.age.report.configuration form New
aged_partner_report_configuration_tree Age partner report configuration tree account.age.report.configuration tree New
general_ledger general_ledger ir.ui.view qweb New
general_ledger_wizard General Ledger general.ledger.report.wizard form New
journal_ledger journal_ledger ir.ui.view qweb New
journal_ledger_wizard Journal Ledger journal.ledger.report.wizard form New
open_items open_items ir.ui.view qweb New
open_items_wizard Open Items open.items.report.wizard form New
report_aged_partner_balance report_aged_partner_balance ir.ui.view qweb New
report_aged_partner_balance_account_ending_cumul report_aged_partner_balance_account_ending_cumul ir.ui.view qweb New
report_aged_partner_balance_base report_aged_partner_balance_base ir.ui.view qweb New
report_aged_partner_balance_filters report_aged_partner_balance_filters ir.ui.view qweb New
report_aged_partner_balance_lines report_aged_partner_balance_lines ir.ui.view qweb New
report_aged_partner_balance_lines_header report_aged_partner_balance_lines_header ir.ui.view qweb New
report_aged_partner_balance_move_lines report_aged_partner_balance_move_lines ir.ui.view qweb New
report_aged_partner_balance_partner_ending_cumul report_aged_partner_balance_partner_ending_cumul ir.ui.view qweb New
report_general_ledger report_general_ledger ir.ui.view qweb New
report_general_ledger_base report_general_ledger_base ir.ui.view qweb New
report_journal_ledger report_journal_ledger ir.ui.view qweb New
report_journal_ledger_base report_journal_ledger_base ir.ui.view qweb New
report_open_items report_open_items ir.ui.view qweb New
report_trial_balance report_trial_balance ir.ui.view qweb New
report_trial_balance_base report_trial_balance_base ir.ui.view qweb New
report_vat_report report_vat_report ir.ui.view qweb New
res_config_settings_view_form res.config.settings xpath Inherits account.res_config_settings_view_form
trial_balance trial_balance ir.ui.view qweb New
trial_balance_wizard Trial Balance trial.balance.report.wizard form New
vat_report vat_report ir.ui.view qweb New
vat_report_wizard vat_report_wizard_view vat.report.wizard form New
view_account_specific_form account.account.form.inherit account.account field Inherits account.view_account_form
Models touched (28)

New fields (1)
  • centralized Boolean
    help='If flagged, no details will be displayed in the General Ledger report (the webkit one only), only centralized amounts per period.'
Public methods (0)

No public methods.

New fields (3)
  • company_id Many2one → res.company
    default=<expr> readonly=True args: 'res.company'
  • line_ids One2many → account.age.report.configuration.line
    args: 'account.age.report.configuration.line', 'account_age_report_config_id'
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (3)
  • account_age_report_config_id Many2one → account.age.report.configuration
    args: 'account.age.report.configuration'
  • inferior_limit Integer
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (6)
  • account_ids One2many → account.account
    comodel_name='account.account' inverse_name='group_id' string='Accounts'
  • complete_code Char
    compute='_compute_complete_code' recursive=True args: 'Full Code'
  • complete_name Char
    compute='_compute_complete_name' recursive=True args: 'Full Name'
  • compute_account_ids Many2many → account.account
    compute='_compute_group_accounts' recursive=True store=True string='Compute accounts' args: 'account.account'
  • group_child_ids One2many → account.group
    comodel_name='account.group' inverse_name='parent_id' string='Child Groups'
  • level Integer
    compute='_compute_level' recursive=True
Public methods (0)

No public methods.

New fields (1)
  • analytic_account_ids Many2many → account.analytic.account
    compute='_compute_analytic_account_ids' store=True args: 'account.analytic.account'
Public methods (2)
  • init(self)
    The join between accounts_partners subquery and account_move_line can be heavy to compute on big databases. Join sample: JOIN account_move_line ml ON ap.account_id = ml.account_id AND ml.date < '2018-12-30' AND ap.partner_id = ml.partner_id AND ap.include_initial_balance = TRUE By adding the following index, performances are strongly increased. :return:
  • search_count(self, domain, limit=None)
    @api.model

New fields (2)
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=False string='Company'
  • label_text_limit Integer
    default=40
Public methods (3)
  • button_export_html(self)
  • button_export_pdf(self)
  • button_export_xlsx(self)

New fields (11)
  • account_code_from Many2one → account.account
    comodel_name='account.account' help='Starting account in a range'
  • account_code_to Many2one → account.account
    comodel_name='account.account' help='Ending account in a range'
  • account_ids Many2many → account.account
    comodel_name='account.account' domain=[('reconcile', '=', True)] required=True string='Filter accounts'
  • age_partner_config_id Many2one → account.age.report.configuration
    string='Intervals configuration' args: 'account.age.report.configuration'
  • date_at Date
    default=fields.Date.context_today required=True
  • date_from Date
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • show_move_line_details Boolean
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
Public methods (4)
  • on_change_account_range(self)
    @api.onchange('account_code_from', 'account_code_to')
  • onchange_account_ids(self)
    @api.onchange('account_ids')
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (21)
  • account_code_from Many2one → account.account
    comodel_name='account.account' help='Starting account in a range'
  • account_code_to Many2one → account.account
    comodel_name='account.account' help='Ending account in a range'
  • account_ids Many2many → account.account
    comodel_name='account.account' string='Filter accounts'
  • account_journal_ids Many2many → account.journal
    comodel_name='account.journal' string='Filter journals'
  • centralize Boolean
    default=True string='Activate centralization'
  • cost_center_ids Many2many → account.analytic.account
    comodel_name='account.analytic.account' string='Filter cost centers'
  • date_from Date
    default=<expr> required=True
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    default=fields.Date.context_today required=True
  • domain Char
    default=[] help='This domain will be used to select specific domain for Journal Items' string='Journal Items Domain'
  • foreign_currency Boolean
    default=<expr> help='Display foreign currency for move lines, unless account currency is not setup through chart of accounts will display initial and final balance in that currency.' string='Show foreign currency'
  • fy_start_date Date
    compute='_compute_fy_start_date'
  • grouped_by Selection
    default='partners' required=True selection=[('none', 'None'), ('partners', 'Partners'), ('taxes', 'Taxes')]
  • hide_account_at_0 Boolean
    help='Use this filter to hide an account or a partner with an ending balance at 0. If partners are filtered, debits and credits totals will not match the trial balance.' string='Hide account ending balance at 0'
  • only_one_unaffected_earnings_account Boolean
    default=<expr> readonly=True
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' default=<expr> string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • show_cost_center Boolean
    default=True string='Show Analytic Account'
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
  • unaffected_earnings_account Many2one → account.account
    comodel_name='account.account' compute='_compute_unaffected_earnings_account' store=True
Public methods (5)
  • on_change_account_range(self)
    @api.onchange('account_code_from', 'account_code_to')
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')
    Handle date range change.
  • onchange_partner_ids(self)
    @api.onchange('partner_ids')
    Handle partners change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (10)
  • date_from Date
    required=True string='Start date'
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    required=True string='End date'
  • foreign_currency Boolean
  • group_option Selection
    default='journal' required=True selection='_get_group_options' string='Group entries by'
  • journal_ids Many2many → account.journal
    comodel_name='account.journal' required=False string='Journals'
  • move_target Selection
    default='posted' required=True selection='_get_move_targets'
  • sort_option Selection
    default='move_name' required=True selection='_get_sort_options' string='Sort entries by'
  • with_account_name Boolean
    default=False
  • with_auto_sequence Boolean
    default=False string='Show Auto Sequence'
Public methods (2)
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')

New fields (13)
  • account_code_from Many2one → account.account
    comodel_name='account.account'
  • account_code_to Many2one → account.account
    comodel_name='account.account' help='Ending account in a range'
  • account_ids Many2many → account.account
    comodel_name='account.account' domain=[('reconcile', '=', True)] required=True string='Filter accounts'
  • date_at Date
    default=fields.Date.context_today required=True
  • date_from Date
  • foreign_currency Boolean
    default=<expr> help='Display foreign currency for move lines, unless account currency is not setup through chart of accounts will display initial and final balance in that currency.' string='Show foreign currency'
  • grouped_by Selection
    default='partners' selection=[('partners', 'Partners'), ('salesperson', 'Partner Salesperson')]
  • hide_account_at_0 Boolean
    default=True help='Use this filter to hide an account or a partner with an ending balance at 0. If partners are filtered, debits and credits totals will not match the trial balance.' string='Hide account ending balance at 0'
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' default=<expr> string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • show_partner_details Boolean
    default=True
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
Public methods (4)
  • on_change_account_range(self)
    @api.onchange('account_code_from', 'account_code_to')
  • onchange_account_ids(self)
    @api.onchange('account_ids')
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (0)

No new fields.

Public methods (2)
  • write_account_footer_from_dict(self, report, account, label, field_name, string_format, amount_format, amount_is_percent, report_data)
    Specific function to write account footer for Aged Partner Balance
  • write_ending_balance_from_dict(self, my_object, report_data)
    Specific function to write ending partner balance for Aged Partner Balance

New fields (0)

No new fields.

Public methods (2)
  • write_ending_balance_from_dict(self, my_object, report_data)
    Specific function to write ending balance for General Ledger
  • write_initial_balance_from_dict(self, my_object, report_data)
    Specific function to write initial balance for General Ledger

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • write_ending_balance_from_dict(self, my_object, type_object, total_amount, report_data, account_id=False, partner_id=False)
    Specific function to write ending balance for Open Items

New fields (0)

No new fields.

Public methods (3)
  • write_account_footer(self, account, name_value, report_data)
    Specific function to write account footer for Trial Balance
  • write_line(self, line_object, type_object, report_data)
    Write a line on current line using all defined columns field name. Columns are defined with `_get_report_columns` method.
  • write_line_from_dict_order(self, total_amount, partner_data, report_data)

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 (11)
  • generate_xlsx_report(self, workbook, data, objects)
  • get_workbook_options(self)
  • write_array_header(self, report_data)
    Write array header on current line using all defined columns name. Columns are defined with `_get_report_columns` method.
  • write_array_title(self, title, report_data)
    Write array title on current line using all defined columns width. Columns are defined with `_get_report_columns` method.
  • write_ending_balance(self, my_object, name, label, report_data)
    Write a specific ending balance line on current line using defined columns field_final_balance name. Columns are defined with `_get_report_columns` method.
  • write_ending_balance_from_dict(self, my_object, name, label, report_data)
    Write a specific ending balance line on current line using defined columns field_final_balance name. Columns are defined with `_get_report_columns` method.
  • write_initial_balance(self, my_object, label, report_data)
    Write a specific initial balance line on current line using defined columns field_initial_balance name. Columns are defined with `_get_report_columns` method.
  • write_initial_balance_from_dict(self, my_object, label, report_data)
    Write a specific initial balance line on current line using defined columns field_initial_balance name. Columns are defined with `_get_report_columns` method.
  • write_line(self, line_object, report_data)
    Write a line on current line using all defined columns field name. Columns are defined with `_get_report_columns` method.
  • write_line_from_dict(self, line_dict, report_data)
    Write a line on current line
  • write_non_standard_column(self, cell_type, col_pos, value)
    Write columns out of the columns type defined here.

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 (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • age_partner_config_id Many2one → account.age.report.configuration
    string='Intervals configuration' args: 'account.age.report.configuration'
Public methods (2)
  • get_values(self)
    @api.model
  • set_values(self)

New fields (22)
  • account_code_from Many2one → account.account
    comodel_name='account.account' help='Starting account in a range'
  • account_code_to Many2one → account.account
    comodel_name='account.account' help='Ending account in a range'
  • account_ids Many2many → account.account
    comodel_name='account.account' string='Filter accounts'
  • date_from Date
    required=True
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    required=True
  • foreign_currency Boolean
    help='Display foreign currency for move lines, unless account currency is not setup through chart of accounts will display initial and final balance in that currency.' string='Show foreign currency'
  • fy_start_date Date
    compute='_compute_fy_start_date'
  • grouped_by Selection
    default=False selection=[('analytic_account', 'Analytic Account')]
  • hide_account_at_0 Boolean
    default=True help='When this option is enabled, the trial balance will not display accounts that have initial balance = debit = credit = end balance = 0' string='Hide accounts at 0'
  • hide_parent_hierarchy_level Boolean
    default=False args: 'Do not display parent levels'
  • journal_ids Many2many → account.journal
    comodel_name='account.journal'
  • limit_hierarchy_level Boolean
    args: 'Limit hierarchy levels'
  • only_one_unaffected_earnings_account Boolean
    default=<expr> readonly=True
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • show_hierarchy Boolean
    help='Use when your account groups are hierarchical' string='Show hierarchy'
  • show_hierarchy_level Integer
    default=1 args: 'Hierarchy Levels to display'
  • show_partner_details Boolean
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
  • unaffected_earnings_account Many2one → account.account
    comodel_name='account.account' compute='_compute_unaffected_earnings_account' store=True
Public methods (6)
  • on_change_account_range(self)
    @api.onchange('account_code_from', 'account_code_to')
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')
    Handle date range change.
  • onchange_grouped_by(self)
    @api.onchange('grouped_by')
  • onchange_show_partner_details(self)
    @api.onchange('show_partner_details')
    Handle partners change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (6)
  • based_on Selection
    default='taxtags' required=True args: [('taxtags', 'Tax Tags'), ('taxgroups', 'Tax Groups')]
  • date_from Date
    required=True args: 'Start Date'
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    required=True args: 'End Date'
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
  • tax_detail Boolean
    args: 'Detail Taxes'
Public methods (2)
  • onchange_company_id(self)
    @api.onchange('company_id')
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')
    Handle date range change.
REPOSITORY
REPOSITORYOCA/account-financial-reporting
GIT
GIThttps://github.com/OCA/account-financial-reporting.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-financial-reporting/tree/16.0/account_financial_report
VERSION
VERSION 1.17.0
CATEGORY
CATEGORYReporting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), ForgeFlow, Camptocamp, initOS GmbH, redCOR AG
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), ForgeFlow, Camptocamp, initOS GmbH, redCOR AG
COMMITTERS
COMMITTERSAlexis de Lattre, Alexandre Fayolle, eLBati, Pedro M. Baeza, Jairo Llopis, Carlos Dauden, Akim Juillerat, Miquel Raïch, Víctor Martínez, Hugo Santos, Florian da Costa, Weblate, OCA-git-bot, Simone Rubino, ferran-73, oca-ci, Vincent Van Rossem, Aritz Olea, Docker @ kuntrawant, David Ramia, Saran440, pilarvargas-tecnativa, Carolina Fernandez, Andrii9090-tecnativa, Reyes4711, Eduard Brahas, anusrinps96, josep-tecnativa, Christoph Abenthung, Sergio Bustamante, aritzolea-factorlibre
WEBSITE
WEBSITEhttps://github.com/OCA/account-financial-reporting
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:54
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/reporting-engine:
    - report_xlsx
OCA/server-ux:
    - date_range
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 (58)
XML IDNameModelTypeStatus
account_financial_report.html_container account_financial_report.html_container ir.ui.view qweb New
account_financial_report.internal_layout account_financial_report.internal_layout ir.ui.view qweb New
account_financial_report.report_general_ledger_ending_cumul account_financial_report.report_general_ledger_ending_cumul ir.ui.view qweb New
account_financial_report.report_general_ledger_filters account_financial_report.report_general_ledger_filters ir.ui.view qweb New
account_financial_report.report_general_ledger_lines account_financial_report.report_general_ledger_lines ir.ui.view qweb New
account_financial_report.report_journal_all account_financial_report.report_journal_all ir.ui.view qweb New
account_financial_report.report_journal_all_taxes account_financial_report.report_journal_all_taxes ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal account_financial_report.report_journal_ledger_journal ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal_first_line account_financial_report.report_journal_ledger_journal_first_line ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal_table_header account_financial_report.report_journal_ledger_journal_table_header ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal_taxes account_financial_report.report_journal_ledger_journal_taxes ir.ui.view qweb New
account_financial_report.report_journal_move account_financial_report.report_journal_move ir.ui.view qweb New
account_financial_report.report_journal_move_line account_financial_report.report_journal_move_line ir.ui.view qweb New
account_financial_report.report_open_items_base account_financial_report.report_open_items_base ir.ui.view qweb New
account_financial_report.report_open_items_ending_cumul account_financial_report.report_open_items_ending_cumul ir.ui.view qweb New
account_financial_report.report_open_items_filters account_financial_report.report_open_items_filters ir.ui.view qweb New
account_financial_report.report_open_items_lines account_financial_report.report_open_items_lines ir.ui.view qweb New
account_financial_report.report_open_items_lines_header account_financial_report.report_open_items_lines_header ir.ui.view qweb New
account_financial_report.report_trial_balance_account_footer account_financial_report.report_trial_balance_account_footer ir.ui.view qweb New
account_financial_report.report_trial_balance_filters account_financial_report.report_trial_balance_filters ir.ui.view qweb New
account_financial_report.report_trial_balance_line account_financial_report.report_trial_balance_line ir.ui.view qweb New
account_financial_report.report_trial_balance_lines_header account_financial_report.report_trial_balance_lines_header ir.ui.view qweb New
account_financial_report.report_vat_report_base account_financial_report.report_vat_report_base ir.ui.view qweb New
account_financial_report.report_vat_report_filters account_financial_report.report_vat_report_filters ir.ui.view qweb New
aged_partner_balance aged_partner_balance ir.ui.view qweb New
aged_partner_balance_wizard Aged Partner Balance aged.partner.balance.report.wizard form New
aged_partner_report_configuration_form Age partner report configuration form account.age.report.configuration form New
aged_partner_report_configuration_tree Age partner report configuration tree account.age.report.configuration tree New
general_ledger general_ledger ir.ui.view qweb New
general_ledger_wizard General Ledger general.ledger.report.wizard form New
journal_ledger journal_ledger ir.ui.view qweb New
journal_ledger_wizard Journal Ledger journal.ledger.report.wizard form New
open_items open_items ir.ui.view qweb New
open_items_wizard Open Items open.items.report.wizard form New
report_aged_partner_balance report_aged_partner_balance ir.ui.view qweb New
report_aged_partner_balance_account_ending_cumul report_aged_partner_balance_account_ending_cumul ir.ui.view qweb New
report_aged_partner_balance_base report_aged_partner_balance_base ir.ui.view qweb New
report_aged_partner_balance_filters report_aged_partner_balance_filters ir.ui.view qweb New
report_aged_partner_balance_lines report_aged_partner_balance_lines ir.ui.view qweb New
report_aged_partner_balance_lines_header report_aged_partner_balance_lines_header ir.ui.view qweb New
report_aged_partner_balance_move_lines report_aged_partner_balance_move_lines ir.ui.view qweb New
report_aged_partner_balance_partner_ending_cumul report_aged_partner_balance_partner_ending_cumul ir.ui.view qweb New
report_general_ledger report_general_ledger ir.ui.view qweb New
report_general_ledger_base report_general_ledger_base ir.ui.view qweb New
report_journal_ledger report_journal_ledger ir.ui.view qweb New
report_journal_ledger_base report_journal_ledger_base ir.ui.view qweb New
report_open_items report_open_items ir.ui.view qweb New
report_trial_balance report_trial_balance ir.ui.view qweb New
report_trial_balance_base report_trial_balance_base ir.ui.view qweb New
report_vat_report report_vat_report ir.ui.view qweb New
res_config_settings_view_form res.config.settings xpath Inherits account.res_config_settings_view_form
trial_balance trial_balance ir.ui.view qweb New
trial_balance_wizard Trial Balance trial.balance.report.wizard form New
vat_report vat_report ir.ui.view qweb New
vat_report_wizard vat_report_wizard_view vat.report.wizard form New
view_account_financial_report_column_form account.financial.report.column.form.inherit account.financial.report.column form New
view_account_financial_report_column_tree account.financial.report.column.tree account.financial.report.column tree New
view_account_specific_form account.account.form.inherit account.account field Inherits account.view_account_form
Models touched (29)

New fields (1)
  • centralized Boolean
    help='If flagged, no details will be displayed in the General Ledger report (the webkit one only), only centralized amounts per period.'
Public methods (0)

No public methods.

New fields (3)
  • company_id Many2one → res.company
    default=<expr> readonly=True args: 'res.company'
  • line_ids One2many → account.age.report.configuration.line
    args: 'account.age.report.configuration.line', 'account_age_report_config_id'
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (3)
  • account_age_report_config_id Many2one → account.age.report.configuration
    args: 'account.age.report.configuration'
  • inferior_limit Integer
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (7)
  • expression_label Char
    required=True
  • field_type Char
  • is_visible Boolean
    default=True string='Show'
  • limit Integer
  • name Char
    required=True translate=True
  • res_model Char
  • sequence Integer
Public methods (0)

No public methods.

New fields (6)
  • account_ids One2many → account.account
    comodel_name='account.account' inverse_name='group_id' string='Accounts'
  • complete_code Char
    compute='_compute_complete_code' recursive=True args: 'Full Code'
  • complete_name Char
    compute='_compute_complete_name' recursive=True args: 'Full Name'
  • compute_account_ids Many2many → account.account
    compute='_compute_group_accounts' recursive=True store=True string='Compute accounts' args: 'account.account'
  • group_child_ids One2many → account.group
    comodel_name='account.group' inverse_name='parent_id' string='Child Groups'
  • level Integer
    compute='_compute_level' recursive=True
Public methods (0)

No public methods.

New fields (1)
  • analytic_account_ids Many2many → account.analytic.account
    compute='_compute_analytic_account_ids' store=True args: 'account.analytic.account'
Public methods (2)
  • init(self)
    The join between accounts_partners subquery and account_move_line can be heavy to compute on big databases. Join sample: JOIN account_move_line ml ON ap.account_id = ml.account_id AND ml.date < '2018-12-30' AND ap.partner_id = ml.partner_id AND ap.include_initial_balance = TRUE By adding the following index, performances are strongly increased. :return:
  • search_count(self, domain, limit=None)
    @api.model

New fields (2)
  • column_ids Many2many → account.financial.report.column
    comodel_name='account.financial.report.column' inverse=<expr> store=False
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=False string='Company'
Public methods (4)
  • button_export_html(self)
  • button_export_pdf(self)
  • button_export_xlsx(self)
  • default_get(self, fields)
    @api.model

New fields (11)
  • account_code_from Many2one → account.account
    comodel_name='account.account' help='Starting account in a range'
  • account_code_to Many2one → account.account
    comodel_name='account.account' help='Ending account in a range'
  • account_ids Many2many → account.account
    comodel_name='account.account' domain=[('reconcile', '=', True)] required=True string='Filter accounts'
  • age_partner_config_id Many2one → account.age.report.configuration
    string='Intervals configuration' args: 'account.age.report.configuration'
  • date_at Date
    default=fields.Date.context_today required=True
  • date_from Date
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • show_move_line_details Boolean
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
Public methods (4)
  • on_change_account_range(self)
    @api.onchange('account_code_from', 'account_code_to')
  • onchange_account_ids(self)
    @api.onchange('account_ids')
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (21)
  • account_code_from Many2one → account.account
    comodel_name='account.account' help='Starting account in a range'
  • account_code_to Many2one → account.account
    comodel_name='account.account' help='Ending account in a range'
  • account_ids Many2many → account.account
    comodel_name='account.account' string='Filter accounts'
  • account_journal_ids Many2many → account.journal
    comodel_name='account.journal' string='Filter journals'
  • centralize Boolean
    default=True string='Activate centralization'
  • cost_center_ids Many2many → account.analytic.account
    comodel_name='account.analytic.account' string='Filter cost centers'
  • date_from Date
    default=<expr> required=True
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    default=fields.Date.context_today required=True
  • domain Char
    default=[] help='This domain will be used to select specific domain for Journal Items' string='Journal Items Domain'
  • foreign_currency Boolean
    default=<expr> help='Display foreign currency for move lines, unless account currency is not setup through chart of accounts will display initial and final balance in that currency.' string='Show foreign currency'
  • fy_start_date Date
    compute='_compute_fy_start_date'
  • grouped_by Selection
    default='partners' required=True selection=[('none', 'None'), ('partners', 'Partners'), ('taxes', 'Taxes')]
  • hide_account_at_0 Boolean
    help='Use this filter to hide an account or a partner with an ending balance at 0. If partners are filtered, debits and credits totals will not match the trial balance.' string='Hide account ending balance at 0'
  • not_only_one_unaffected_earnings_account Boolean
    readonly=True
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' default=<expr> string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • show_cost_center Boolean
    default=True string='Show Analytic Account'
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
  • unaffected_earnings_account Many2one → account.account
    comodel_name='account.account' compute='_compute_unaffected_earnings_account' store=True
Public methods (5)
  • on_change_account_range(self)
    @api.onchange('account_code_from', 'account_code_to')
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')
    Handle date range change.
  • onchange_partner_ids(self)
    @api.onchange('partner_ids')
    Handle partners change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (10)
  • date_from Date
    required=True string='Start date'
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    required=True string='End date'
  • foreign_currency Boolean
  • group_option Selection
    default='journal' required=True selection='_get_group_options' string='Group entries by'
  • journal_ids Many2many → account.journal
    comodel_name='account.journal' required=False string='Journals'
  • move_target Selection
    default='posted' required=True selection='_get_move_targets'
  • sort_option Selection
    default='move_name' required=True selection='_get_sort_options' string='Sort entries by'
  • with_account_name Boolean
    default=False
  • with_auto_sequence Boolean
    default=False string='Show Auto Sequence'
Public methods (2)
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')

New fields (13)
  • account_code_from Many2one → account.account
    comodel_name='account.account'
  • account_code_to Many2one → account.account
    comodel_name='account.account' help='Ending account in a range'
  • account_ids Many2many → account.account
    comodel_name='account.account' domain=[('reconcile', '=', True)] required=True string='Filter accounts'
  • date_at Date
    default=fields.Date.context_today required=True
  • date_from Date
  • foreign_currency Boolean
    default=<expr> help='Display foreign currency for move lines, unless account currency is not setup through chart of accounts will display initial and final balance in that currency.' string='Show foreign currency'
  • grouped_by Selection
    default='partners' selection=[('partners', 'Partners'), ('salesperson', 'Partner Salesperson')]
  • hide_account_at_0 Boolean
    default=True help='Use this filter to hide an account or a partner with an ending balance at 0. If partners are filtered, debits and credits totals will not match the trial balance.' string='Hide account ending balance at 0'
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' default=<expr> string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • show_partner_details Boolean
    default=True
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
Public methods (4)
  • on_change_account_range(self)
    @api.onchange('account_code_from', 'account_code_to')
  • onchange_account_ids(self)
    @api.onchange('account_ids')
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (0)

No new fields.

Public methods (2)
  • write_account_footer_from_dict(self, report, account, label, field_name, string_format, amount_format, amount_is_percent, report_data)
    Specific function to write account footer for Aged Partner Balance
  • write_ending_balance_from_dict(self, my_object, report_data)
    Specific function to write ending partner balance for Aged Partner Balance

New fields (0)

No new fields.

Public methods (2)
  • write_ending_balance_from_dict(self, my_object, report_data)
    Specific function to write ending balance for General Ledger
  • write_initial_balance_from_dict(self, my_object, report_data)
    Specific function to write initial balance for General Ledger

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • write_ending_balance_from_dict(self, my_object, type_object, total_amount, report_data, account_id=False, partner_id=False)
    Specific function to write ending balance for Open Items

New fields (0)

No new fields.

Public methods (3)
  • write_account_footer(self, account, name_value, report_data)
    Specific function to write account footer for Trial Balance
  • write_line(self, line_object, type_object, report_data)
    Write a line on current line using all defined columns field name. Columns are defined with `_get_report_columns` method.
  • write_line_from_dict_order(self, total_amount, partner_data, report_data)

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 (11)
  • generate_xlsx_report(self, workbook, data, objects)
  • get_workbook_options(self)
  • write_array_header(self, report_data)
    Write array header on current line using all defined columns name. Columns are defined with `_get_report_columns` method.
  • write_array_title(self, title, report_data)
    Write array title on current line using all defined columns width. Columns are defined with `_get_report_columns` method.
  • write_ending_balance(self, my_object, name, label, report_data)
    Write a specific ending balance line on current line using defined columns field_final_balance name. Columns are defined with `_get_report_columns` method.
  • write_ending_balance_from_dict(self, my_object, name, label, report_data)
    Write a specific ending balance line on current line using defined columns field_final_balance name. Columns are defined with `_get_report_columns` method.
  • write_initial_balance(self, my_object, label, report_data)
    Write a specific initial balance line on current line using defined columns field_initial_balance name. Columns are defined with `_get_report_columns` method.
  • write_initial_balance_from_dict(self, my_object, label, report_data)
    Write a specific initial balance line on current line using defined columns field_initial_balance name. Columns are defined with `_get_report_columns` method.
  • write_line(self, line_object, report_data)
    Write a line on current line using all defined columns field name. Columns are defined with `_get_report_columns` method.
  • write_line_from_dict(self, line_dict, report_data)
    Write a line on current line
  • write_non_standard_column(self, cell_type, col_pos, value)
    Write columns out of the columns type defined here.

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 (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • age_partner_config_id Many2one → account.age.report.configuration
    string='Intervals configuration' args: 'account.age.report.configuration'
Public methods (2)
  • get_values(self)
    @api.model
  • set_values(self)

New fields (22)
  • account_code_from Many2one → account.account
    comodel_name='account.account' help='Starting account in a range'
  • account_code_to Many2one → account.account
    comodel_name='account.account' help='Ending account in a range'
  • account_ids Many2many → account.account
    comodel_name='account.account' string='Filter accounts'
  • date_from Date
    required=True
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    required=True
  • foreign_currency Boolean
    help='Display foreign currency for move lines, unless account currency is not setup through chart of accounts will display initial and final balance in that currency.' string='Show foreign currency'
  • fy_start_date Date
    compute='_compute_fy_start_date'
  • grouped_by Selection
    default=False selection=[('analytic_account', 'Analytic Account')]
  • hide_account_at_0 Boolean
    default=True help='When this option is enabled, the trial balance will not display accounts that have initial balance = debit = credit = end balance = 0' string='Hide accounts at 0'
  • hide_parent_hierarchy_level Boolean
    default=False args: 'Do not display parent levels'
  • journal_ids Many2many → account.journal
    comodel_name='account.journal'
  • limit_hierarchy_level Boolean
    args: 'Limit hierarchy levels'
  • not_only_one_unaffected_earnings_account Boolean
    readonly=True
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • show_hierarchy Boolean
    help='Use when your account groups are hierarchical' string='Show hierarchy'
  • show_hierarchy_level Integer
    default=1 args: 'Hierarchy Levels to display'
  • show_partner_details Boolean
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
  • unaffected_earnings_account Many2one → account.account
    comodel_name='account.account' compute='_compute_unaffected_earnings_account' store=True
Public methods (6)
  • on_change_account_range(self)
    @api.onchange('account_code_from', 'account_code_to')
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')
    Handle date range change.
  • onchange_grouped_by(self)
    @api.onchange('grouped_by')
  • onchange_show_partner_details(self)
    @api.onchange('show_partner_details')
    Handle partners change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (6)
  • based_on Selection
    default='taxtags' required=True args: [('taxtags', 'Tax Tags'), ('taxgroups', 'Tax Groups')]
  • date_from Date
    required=True args: 'Start Date'
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    required=True args: 'End Date'
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
  • tax_detail Boolean
    args: 'Detail Taxes'
Public methods (2)
  • onchange_company_id(self)
    @api.onchange('company_id')
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')
    Handle date range change.
REPOSITORY
REPOSITORYOCA/account-financial-reporting
GIT
GIThttps://github.com/OCA/account-financial-reporting.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-financial-reporting/tree/15.0/account_financial_report
VERSION
VERSION 3.3.4
CATEGORY
CATEGORYReporting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), ForgeFlow, Camptocamp, initOS GmbH, redCOR AG
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), ForgeFlow, Camptocamp, initOS GmbH, redCOR AG
COMMITTERS
COMMITTERSAlexis de Lattre, Pedro M. Baeza, Carlos Dauden, Lois Rilo, OCA Transbot, Miquel Raïch, sergio-teruel, Víctor Martínez, AaronHForgeFlow, Alexandre D. Díaz, Florian da Costa, Weblate, OCA-git-bot, Simone Rubino, oca-ci, Vincent Van Rossem, David Ramia, Saran440, pilarvargas-tecnativa, Carolina Fernandez, Jasmin Solanki, LauraCForgeFlow, Reyes4711, josep-tecnativa, Justinas Orechovas, Christoph Abenthung, Marc Tormo
WEBSITE
WEBSITEhttps://github.com/OCA/account-financial-reporting
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:39
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/reporting-engine:
    - report_xlsx
OCA/server-ux:
    - date_range
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 xlrd
xlsxwriter
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (58)
XML IDNameModelTypeStatus
account_financial_report.html_container account_financial_report.html_container ir.ui.view qweb New
account_financial_report.internal_layout account_financial_report.internal_layout ir.ui.view qweb New
account_financial_report.report_general_ledger_ending_cumul account_financial_report.report_general_ledger_ending_cumul ir.ui.view qweb New
account_financial_report.report_general_ledger_filters account_financial_report.report_general_ledger_filters ir.ui.view qweb New
account_financial_report.report_general_ledger_lines account_financial_report.report_general_ledger_lines ir.ui.view qweb New
account_financial_report.report_journal_all account_financial_report.report_journal_all ir.ui.view qweb New
account_financial_report.report_journal_all_taxes account_financial_report.report_journal_all_taxes ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal account_financial_report.report_journal_ledger_journal ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal_first_line account_financial_report.report_journal_ledger_journal_first_line ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal_table_header account_financial_report.report_journal_ledger_journal_table_header ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal_taxes account_financial_report.report_journal_ledger_journal_taxes ir.ui.view qweb New
account_financial_report.report_journal_move account_financial_report.report_journal_move ir.ui.view qweb New
account_financial_report.report_journal_move_line account_financial_report.report_journal_move_line ir.ui.view qweb New
account_financial_report.report_open_items_base account_financial_report.report_open_items_base ir.ui.view qweb New
account_financial_report.report_open_items_ending_cumul account_financial_report.report_open_items_ending_cumul ir.ui.view qweb New
account_financial_report.report_open_items_filters account_financial_report.report_open_items_filters ir.ui.view qweb New
account_financial_report.report_open_items_lines account_financial_report.report_open_items_lines ir.ui.view qweb New
account_financial_report.report_open_items_lines_header account_financial_report.report_open_items_lines_header ir.ui.view qweb New
account_financial_report.report_trial_balance_account_footer account_financial_report.report_trial_balance_account_footer ir.ui.view qweb New
account_financial_report.report_trial_balance_filters account_financial_report.report_trial_balance_filters ir.ui.view qweb New
account_financial_report.report_trial_balance_line account_financial_report.report_trial_balance_line ir.ui.view qweb New
account_financial_report.report_trial_balance_lines_header account_financial_report.report_trial_balance_lines_header ir.ui.view qweb New
account_financial_report.report_vat_report_base account_financial_report.report_vat_report_base ir.ui.view qweb New
account_financial_report.report_vat_report_filters account_financial_report.report_vat_report_filters ir.ui.view qweb New
aged_partner_balance aged_partner_balance ir.ui.view qweb New
aged_partner_balance_wizard Aged Partner Balance aged.partner.balance.report.wizard form New
aged_partner_report_configuration_form Age partner report configuration form account.age.report.configuration form New
aged_partner_report_configuration_tree Age partner report configuration tree account.age.report.configuration tree New
general_ledger general_ledger ir.ui.view qweb New
general_ledger_wizard General Ledger general.ledger.report.wizard form New
journal_ledger journal_ledger ir.ui.view qweb New
journal_ledger_wizard Journal Ledger journal.ledger.report.wizard form New
open_items open_items ir.ui.view qweb New
open_items_wizard Open Items open.items.report.wizard form New
report_aged_partner_balance report_aged_partner_balance ir.ui.view qweb New
report_aged_partner_balance_account_ending_cumul report_aged_partner_balance_account_ending_cumul ir.ui.view qweb New
report_aged_partner_balance_base report_aged_partner_balance_base ir.ui.view qweb New
report_aged_partner_balance_filters report_aged_partner_balance_filters ir.ui.view qweb New
report_aged_partner_balance_lines report_aged_partner_balance_lines ir.ui.view qweb New
report_aged_partner_balance_lines_header report_aged_partner_balance_lines_header ir.ui.view qweb New
report_aged_partner_balance_move_lines report_aged_partner_balance_move_lines ir.ui.view qweb New
report_aged_partner_balance_partner_ending_cumul report_aged_partner_balance_partner_ending_cumul ir.ui.view qweb New
report_general_ledger report_general_ledger ir.ui.view qweb New
report_general_ledger_base report_general_ledger_base ir.ui.view qweb New
report_journal_ledger report_journal_ledger ir.ui.view qweb New
report_journal_ledger_base report_journal_ledger_base ir.ui.view qweb New
report_open_items report_open_items ir.ui.view qweb New
report_trial_balance report_trial_balance ir.ui.view qweb New
report_trial_balance_base report_trial_balance_base ir.ui.view qweb New
report_vat_report report_vat_report ir.ui.view qweb New
res_config_settings_view_form res.config.settings xpath Inherits account.res_config_settings_view_form
trial_balance trial_balance ir.ui.view qweb New
trial_balance_wizard Trial Balance trial.balance.report.wizard form New
vat_report vat_report ir.ui.view qweb New
vat_report_wizard vat_report_wizard_view vat.report.wizard form New
view_account_financial_report_column_form account.financial.report.column.form.inherit account.financial.report.column form New
view_account_financial_report_column_tree account.financial.report.column.tree account.financial.report.column tree New
view_account_specific_form account.account.form.inherit account.account field Inherits account.view_account_form
Models touched (29)

New fields (1)
  • centralized Boolean
    help='If flagged, no details will be displayed in the General Ledger report (the webkit one only), only centralized amounts per period.'
Public methods (0)

No public methods.

New fields (3)
  • company_id Many2one → res.company
    default=<expr> readonly=True args: 'res.company'
  • line_ids One2many → account.age.report.configuration.line
    args: 'account.age.report.configuration.line', 'account_age_report_config_id'
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (3)
  • account_age_report_config_id Many2one → account.age.report.configuration
    args: 'account.age.report.configuration'
  • inferior_limit Integer
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (7)
  • expression_label Char
    required=True
  • field_type Char
  • is_visible Boolean
    default=True string='Show'
  • limit Integer
  • name Char
    required=True translate=True
  • res_model Char
  • sequence Integer
Public methods (0)

No public methods.

New fields (6)
  • account_ids One2many → account.account
    comodel_name='account.account' inverse_name='group_id' string='Accounts'
  • complete_code Char
    compute='_compute_complete_code' recursive=True args: 'Full Code'
  • complete_name Char
    compute='_compute_complete_name' recursive=True args: 'Full Name'
  • compute_account_ids Many2many → account.account
    compute='_compute_group_accounts' store=True string='Compute accounts' args: 'account.account'
  • group_child_ids One2many → account.group
    comodel_name='account.group' inverse_name='parent_id' string='Child Groups'
  • level Integer
    compute='_compute_level' recursive=True
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • init(self)
    The join between accounts_partners subquery and account_move_line can be heavy to compute on big databases. Join sample: JOIN account_move_line ml ON ap.account_id = ml.account_id AND ml.date < '2018-12-30' AND ap.partner_id = ml.partner_id AND ap.include_initial_balance = TRUE By adding the following index, performances are strongly increased. :return:
  • search_count(self, args)
    @api.model

New fields (2)
  • column_ids Many2many → account.financial.report.column
    comodel_name='account.financial.report.column' compute='_compute_column_ids' inverse=<expr>
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=False string='Company'
Public methods (3)
  • button_export_html(self)
  • button_export_pdf(self)
  • button_export_xlsx(self)

New fields (14)
  • account_code_from Many2one → account.account
    comodel_name='account.account' help='Starting account in a range'
  • account_code_to Many2one → account.account
    comodel_name='account.account' help='Ending account in a range'
  • account_ids Many2many → account.account
    comodel_name='account.account' domain=[('reconcile', '=', True)] required=True string='Filter accounts'
  • age_partner_config_id Many2one → account.age.report.configuration
    string='Intervals configuration' args: 'account.age.report.configuration'
  • all_analytic Boolean
    args: 'All analytic items'
  • analytic_account_ids Many2many → account.analytic.account
    comodel_name='account.analytic.account' string='Filter analytic accounts'
  • date_at Date
    default=fields.Date.context_today required=True
  • date_from Date
  • no_analytic Boolean
    args: 'Only no analytic items'
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • show_move_line_details Boolean
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
Public methods (5)
  • on_change_account_range(self)
    @api.onchange('account_code_from', 'account_code_to')
  • on_change_all_analytic(self)
    @api.onchange('all_analytic', 'no_analytic')
  • onchange_account_ids(self)
    @api.onchange('account_ids')
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (23)
  • account_code_from Many2one → account.account
    comodel_name='account.account' help='Starting account in a range'
  • account_code_to Many2one → account.account
    comodel_name='account.account' help='Ending account in a range'
  • account_ids Many2many → account.account
    comodel_name='account.account' string='Filter accounts'
  • account_journal_ids Many2many → account.journal
    comodel_name='account.journal' string='Filter journals'
  • analytic_tag_ids Many2many → account.analytic.tag
    comodel_name='account.analytic.tag' string='Filter analytic tags'
  • centralize Boolean
    default=True string='Activate centralization'
  • cost_center_ids Many2many → account.analytic.account
    comodel_name='account.analytic.account' string='Filter cost centers'
  • date_from Date
    default=<expr> required=True
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    default=fields.Date.context_today required=True
  • domain Char
    default=[] help='This domain will be used to select specific domain for Journal Items' string='Journal Items Domain'
  • foreign_currency Boolean
    default=<expr> help='Display foreign currency for move lines, unless account currency is not setup through chart of accounts will display initial and final balance in that currency.' string='Show foreign currency'
  • fy_start_date Date
    compute='_compute_fy_start_date'
  • grouped_by Selection
    default='partners' selection=[('', 'None'), ('partners', 'Partners'), ('taxes', 'Taxes')]
  • hide_account_at_0 Boolean
    help='Use this filter to hide an account or a partner with an ending balance at 0. If partners are filtered, debits and credits totals will not match the trial balance.' string='Hide account ending balance at 0'
  • not_only_one_unaffected_earnings_account Boolean
    readonly=True
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' default=<expr> string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • show_analytic_tags Boolean
  • show_cost_center Boolean
    default=True string='Show Analytic Account'
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
  • unaffected_earnings_account Many2one → account.account
    comodel_name='account.account' compute='_compute_unaffected_earnings_account' store=True
Public methods (5)
  • on_change_account_range(self)
    @api.onchange('account_code_from', 'account_code_to')
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')
    Handle date range change.
  • onchange_partner_ids(self)
    @api.onchange('partner_ids')
    Handle partners change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (10)
  • date_from Date
    required=True string='Start date'
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    required=True string='End date'
  • foreign_currency Boolean
  • group_option Selection
    default='journal' required=True selection='_get_group_options' string='Group entries by'
  • journal_ids Many2many → account.journal
    comodel_name='account.journal' required=False string='Journals'
  • move_target Selection
    default='posted' required=True selection='_get_move_targets'
  • sort_option Selection
    default='move_name' required=True selection='_get_sort_options' string='Sort entries by'
  • with_account_name Boolean
    default=False
  • with_auto_sequence Boolean
    default=False string='Show Auto Sequence'
Public methods (2)
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')

New fields (17)
  • account_code_from Many2one → account.account
    comodel_name='account.account'
  • account_code_to Many2one → account.account
    comodel_name='account.account' help='Ending account in a range'
  • account_ids Many2many → account.account
    comodel_name='account.account' domain=[('reconcile', '=', True)] required=True string='Filter accounts'
  • all_analytic Boolean
    args: 'All analytic items'
  • analytic_account_ids Many2many → account.analytic.account
    comodel_name='account.analytic.account' string='Filter analytic accounts'
  • date_at Date
    default=fields.Date.context_today required=True
  • date_from Date
  • foreign_currency Boolean
    default=<expr> help='Display foreign currency for move lines, unless account currency is not setup through chart of accounts will display initial and final balance in that currency.' string='Show foreign currency'
  • grouped_by Selection
    default='partners' selection=[('partners', 'Partners'), ('salesperson', 'Partner Salesperson')]
  • hide_account_at_0 Boolean
    default=True help='Use this filter to hide an account or a partner with an ending balance at 0. If partners are filtered, debits and credits totals will not match the trial balance.' string='Hide account ending balance at 0'
  • no_analytic Boolean
    args: 'Only no analytic items'
  • only_analytic Boolean
    args: 'Only analytic items'
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' default=<expr> string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • show_partner_details Boolean
    default=True
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
Public methods (5)
  • on_change_account_range(self)
    @api.onchange('account_code_from', 'account_code_to')
  • on_change_all_analytic(self)
    @api.onchange('all_analytic', 'no_analytic')
  • onchange_account_ids(self)
    @api.onchange('account_ids')
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (0)

No new fields.

Public methods (2)
  • write_account_footer_from_dict(self, report, account, label, field_name, string_format, amount_format, amount_is_percent, report_data)
    Specific function to write account footer for Aged Partner Balance
  • write_ending_balance_from_dict(self, my_object, report_data)
    Specific function to write ending partner balance for Aged Partner Balance

New fields (0)

No new fields.

Public methods (2)
  • write_ending_balance_from_dict(self, my_object, report_data)
    Specific function to write ending balance for General Ledger
  • write_initial_balance_from_dict(self, my_object, report_data)
    Specific function to write initial balance for General Ledger

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • write_ending_balance_from_dict(self, my_object, type_object, total_amount, report_data, account_id=False, partner_id=False)
    Specific function to write ending balance for Open Items

New fields (0)

No new fields.

Public methods (3)
  • write_account_footer(self, account, name_value, report_data)
    Specific function to write account footer for Trial Balance
  • write_line(self, line_object, type_object, report_data)
    Write a line on current line using all defined columns field name. Columns are defined with `_get_report_columns` method.
  • write_line_from_dict_order(self, total_amount, partner_data, report_data)

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 (11)
  • generate_xlsx_report(self, workbook, data, objects)
  • get_workbook_options(self)
  • write_array_header(self, report_data)
    Write array header on current line using all defined columns name. Columns are defined with `_get_report_columns` method.
  • write_array_title(self, title, report_data)
    Write array title on current line using all defined columns width. Columns are defined with `_get_report_columns` method.
  • write_ending_balance(self, my_object, name, label, report_data)
    Write a specific ending balance line on current line using defined columns field_final_balance name. Columns are defined with `_get_report_columns` method.
  • write_ending_balance_from_dict(self, my_object, name, label, report_data)
    Write a specific ending balance line on current line using defined columns field_final_balance name. Columns are defined with `_get_report_columns` method.
  • write_initial_balance(self, my_object, label, report_data)
    Write a specific initial balance line on current line using defined columns field_initial_balance name. Columns are defined with `_get_report_columns` method.
  • write_initial_balance_from_dict(self, my_object, label, report_data)
    Write a specific initial balance line on current line using defined columns field_initial_balance name. Columns are defined with `_get_report_columns` method.
  • write_line(self, line_object, report_data)
    Write a line on current line using all defined columns field name. Columns are defined with `_get_report_columns` method.
  • write_line_from_dict(self, line_dict, report_data)
    Write a line on current line
  • write_non_standard_column(self, cell_type, col_pos, value)
    Write columns out of the columns type defined here.

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 (1)
  • get_analytic_domain(self, domain, analytic_account_ids, no_analytic)

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 (1)
  • default_age_partner_config_id Many2one → account.age.report.configuration
    default_model='aged.partner.balance.report.wizard' string='Intervals configuration' args: 'account.age.report.configuration'
Public methods (0)

No public methods.

New fields (22)
  • account_code_from Many2one → account.account
    comodel_name='account.account' help='Starting account in a range'
  • account_code_to Many2one → account.account
    comodel_name='account.account' help='Ending account in a range'
  • account_ids Many2many → account.account
    comodel_name='account.account' string='Filter accounts'
  • date_from Date
    required=True
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    required=True
  • foreign_currency Boolean
    help='Display foreign currency for move lines, unless account currency is not setup through chart of accounts will display initial and final balance in that currency.' string='Show foreign currency'
  • fy_start_date Date
    compute='_compute_fy_start_date'
  • grouped_by Selection
    default=False selection=[('analytic_account', 'Analytic Account')]
  • hide_account_at_0 Boolean
    default=True help='When this option is enabled, the trial balance will not display accounts that have initial balance = debit = credit = end balance = 0' string='Hide accounts at 0'
  • hide_parent_hierarchy_level Boolean
    default=False args: 'Do not display parent levels'
  • journal_ids Many2many → account.journal
    comodel_name='account.journal'
  • limit_hierarchy_level Boolean
    args: 'Limit hierarchy levels'
  • not_only_one_unaffected_earnings_account Boolean
    readonly=True
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • show_hierarchy Boolean
    help='Use when your account groups are hierarchical' string='Show hierarchy'
  • show_hierarchy_level Integer
    default=1 args: 'Hierarchy Levels to display'
  • show_partner_details Boolean
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
  • unaffected_earnings_account Many2one → account.account
    comodel_name='account.account' compute='_compute_unaffected_earnings_account' store=True
Public methods (6)
  • on_change_account_range(self)
    @api.onchange('account_code_from', 'account_code_to')
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')
    Handle date range change.
  • onchange_grouped_by(self)
    @api.onchange('grouped_by')
  • onchange_show_partner_details(self)
    @api.onchange('show_partner_details')
    Handle partners change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (6)
  • based_on Selection
    default='taxtags' required=True args: [('taxtags', 'Tax Tags'), ('taxgroups', 'Tax Groups')]
  • date_from Date
    required=True args: 'Start Date'
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    required=True args: 'End Date'
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
  • tax_detail Boolean
    args: 'Detail Taxes'
Public methods (2)
  • onchange_company_id(self)
    @api.onchange('company_id')
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')
    Handle date range change.
REPOSITORY
REPOSITORYOCA/account-financial-reporting
GIT
GIThttps://github.com/OCA/account-financial-reporting.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-financial-reporting/tree/14.0/account_financial_report
VERSION
VERSION
CATEGORY
CATEGORYReporting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ForgeFlow, Camptocamp, initOS GmbH, redCOR AG
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ForgeFlow, Camptocamp, initOS GmbH, redCOR AG
COMMITTERS
COMMITTERSAlexis de Lattre, Pedro M. Baeza, mreficent, Enric Tobella, Lois Rilo, Cas Vissers, Jordi Ballester, manu, OCA Transbot, Víctor Martínez, Ernesto Tejeda, AaronHForgeFlow, João Marques, Alexandre D. Díaz, Omar (Comunitea), Florian da Costa, oca-travis, Weblate, OCA-git-bot, Abraham Anes, SimoRubi, Simone Rubino, Alfredo Zamora, Iryna Vyshnevska, Ethan Hildick, valen, ferran-73, oca-ci, Vincent Van Rossem, Docker @ kuntrawant, David Ramia, Saran440, Wesley Oliveira, miguels73, Jérémy Didderen, oca-git-bot, Reyes4711, Alberto Re, Eduard Brahas, KV, adrip-s73, Rachid Alassir, Didderen Jérémy
WEBSITE
WEBSITEhttps://github.com/OCA/account-financial-reporting
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 14:51:45
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/reporting-engine:
    - report_xlsx
OCA/server-ux:
    - date_range
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 (54)
XML IDNameModelTypeStatus
account_financial_report.internal_layout account_financial_report.internal_layout ir.ui.view qweb New
account_financial_report.report_general_ledger_ending_cumul account_financial_report.report_general_ledger_ending_cumul ir.ui.view qweb New
account_financial_report.report_general_ledger_filters account_financial_report.report_general_ledger_filters ir.ui.view qweb New
account_financial_report.report_general_ledger_lines account_financial_report.report_general_ledger_lines ir.ui.view qweb New
account_financial_report.report_journal_all account_financial_report.report_journal_all ir.ui.view qweb New
account_financial_report.report_journal_all_taxes account_financial_report.report_journal_all_taxes ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal account_financial_report.report_journal_ledger_journal ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal_first_line account_financial_report.report_journal_ledger_journal_first_line ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal_table_header account_financial_report.report_journal_ledger_journal_table_header ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal_taxes account_financial_report.report_journal_ledger_journal_taxes ir.ui.view qweb New
account_financial_report.report_journal_move account_financial_report.report_journal_move ir.ui.view qweb New
account_financial_report.report_journal_move_line account_financial_report.report_journal_move_line ir.ui.view qweb New
account_financial_report.report_open_items_base account_financial_report.report_open_items_base ir.ui.view qweb New
account_financial_report.report_open_items_ending_cumul account_financial_report.report_open_items_ending_cumul ir.ui.view qweb New
account_financial_report.report_open_items_filters account_financial_report.report_open_items_filters ir.ui.view qweb New
account_financial_report.report_open_items_lines account_financial_report.report_open_items_lines ir.ui.view qweb New
account_financial_report.report_open_items_lines_header account_financial_report.report_open_items_lines_header ir.ui.view qweb New
account_financial_report.report_trial_balance_account_footer account_financial_report.report_trial_balance_account_footer ir.ui.view qweb New
account_financial_report.report_trial_balance_filters account_financial_report.report_trial_balance_filters ir.ui.view qweb New
account_financial_report.report_trial_balance_line account_financial_report.report_trial_balance_line ir.ui.view qweb New
account_financial_report.report_trial_balance_lines_header account_financial_report.report_trial_balance_lines_header ir.ui.view qweb New
account_financial_report.report_vat_report_base account_financial_report.report_vat_report_base ir.ui.view qweb New
account_financial_report.report_vat_report_filters account_financial_report.report_vat_report_filters ir.ui.view qweb New
account_financial_report_assets_backend account_financial_report assets_backend ir.ui.view qweb Inherits web.assets_backend
account_financial_report_assets_common account_financial_report report_assets ir.ui.view qweb Inherits web.report_assets_common
aged_partner_balance aged_partner_balance ir.ui.view qweb New
aged_partner_balance_wizard Aged Partner Balance aged.partner.balance.report.wizard form New
general_ledger general_ledger ir.ui.view qweb New
general_ledger_wizard General Ledger general.ledger.report.wizard form New
journal_ledger journal_ledger ir.ui.view qweb New
journal_ledger_wizard Journal Ledger journal.ledger.report.wizard form New
open_items open_items ir.ui.view qweb New
open_items_wizard Open Items open.items.report.wizard form New
report_aged_partner_balance report_aged_partner_balance ir.ui.view qweb New
report_aged_partner_balance_account_ending_cumul report_aged_partner_balance_account_ending_cumul ir.ui.view qweb New
report_aged_partner_balance_base report_aged_partner_balance_base ir.ui.view qweb New
report_aged_partner_balance_filters report_aged_partner_balance_filters ir.ui.view qweb New
report_aged_partner_balance_lines report_aged_partner_balance_lines ir.ui.view qweb New
report_aged_partner_balance_lines_header report_aged_partner_balance_lines_header ir.ui.view qweb New
report_aged_partner_balance_move_lines report_aged_partner_balance_move_lines ir.ui.view qweb New
report_aged_partner_balance_partner_ending_cumul report_aged_partner_balance_partner_ending_cumul ir.ui.view qweb New
report_general_ledger report_general_ledger ir.ui.view qweb New
report_general_ledger_base report_general_ledger_base ir.ui.view qweb New
report_journal_ledger report_journal_ledger ir.ui.view qweb New
report_journal_ledger_base report_journal_ledger_base ir.ui.view qweb New
report_open_items report_open_items ir.ui.view qweb New
report_trial_balance report_trial_balance ir.ui.view qweb New
report_trial_balance_base report_trial_balance_base ir.ui.view qweb New
report_vat_report report_vat_report ir.ui.view qweb New
trial_balance trial_balance ir.ui.view qweb New
trial_balance_wizard Trial Balance trial.balance.report.wizard form New
vat_report vat_report ir.ui.view qweb New
vat_report_wizard vat_report_wizard_view vat.report.wizard form New
view_account_specific_form account.account.form.inherit account.account field Inherits account.view_account_form
Models touched (25)

New fields (1)
  • centralized Boolean
    help='If flagged, no details will be displayed in the General Ledger report (the webkit one only), only centralized amounts per period.' args: 'Centralized'
Public methods (0)

No public methods.

New fields (6)
  • account_ids One2many → account.account
    comodel_name='account.account' inverse_name='group_id' string='Accounts'
  • complete_code Char
    compute='_compute_complete_code' recursive=True args: 'Full Code'
  • complete_name Char
    compute='_compute_complete_name' recursive=True args: 'Full Name'
  • compute_account_ids Many2many → account.account
    compute='_compute_group_accounts' store=True string='Compute accounts' args: 'account.account'
  • group_child_ids One2many → account.group
    comodel_name='account.group' inverse_name='parent_id' string='Child Groups'
  • level Integer
    compute='_compute_level' string='Level'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • init(self)
    The join between accounts_partners subquery and account_move_line can be heavy to compute on big databases. Join sample: JOIN account_move_line ml ON ap.account_id = ml.account_id AND ml.date < '2018-12-30' AND ap.partner_id = ml.partner_id AND ap.include_initial_balance = TRUE By adding the following index, performances are strongly increased. :return:
  • search_count(self, args)
    @api.model

New fields (1)
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=False string='Company'
Public methods (3)
  • button_export_html(self)
  • button_export_pdf(self)
  • button_export_xlsx(self)

New fields (10)
  • account_code_from Many2one → account.account
    comodel_name='account.account' help='Starting account in a range' string='Account Code From'
  • account_code_to Many2one → account.account
    comodel_name='account.account' help='Ending account in a range' string='Account Code To'
  • account_ids Many2many → account.account
    comodel_name='account.account' domain=[('reconcile', '=', True)] required=True string='Filter accounts'
  • date_at Date
    default=fields.Date.context_today required=True
  • date_from Date
    string='Date From'
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • show_move_line_details Boolean
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
Public methods (4)
  • on_change_account_range(self)
    @api.onchange('account_code_from', 'account_code_to')
  • onchange_account_ids(self)
    @api.onchange('account_ids')
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (26)
  • account_code_from Many2one → account.account
    comodel_name='account.account' help='Starting account in a range' string='Account Code From'
  • account_code_to Many2one → account.account
    comodel_name='account.account' help='Ending account in a range' string='Account Code To'
  • account_ids Many2many → account.account
    comodel_name='account.account' string='Filter accounts'
  • account_journal_ids Many2many → account.journal
    comodel_name='account.journal' string='Filter journals'
  • account_type_ids Many2many → account.account.type
    comodel_name='account.account.type' string='Account Types'
  • aggregated_payment_term_lines Boolean
    help='Move lines that are generated by a payment term will be shown as one line.' string='Aggregate payment term lines'
  • analytic_tag_ids Many2many → account.analytic.tag
    comodel_name='account.analytic.tag' string='Filter analytic tags'
  • centralize Boolean
    default=True string='Activate centralization'
  • cost_center_ids Many2many → account.analytic.account
    comodel_name='account.analytic.account' string='Filter cost centers'
  • date_from Date
    default=<expr> required=True
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    default=fields.Date.context_today required=True
  • domain Char
    default=[] help='This domain will be used to select specific domain for Journal Items' string='Journal Items Domain'
  • foreign_currency Boolean
    default=<expr> help='Display foreign currency for move lines, unless account currency is not setup through chart of accounts will display initial and final balance in that currency.' string='Show foreign currency'
  • fy_start_date Date
    compute='_compute_fy_start_date'
  • grouped_by Selection
    default='partners' selection=[('', 'None'), ('partners', 'Partners'), ('taxes', 'Taxes')] string='Grouped by'
  • hide_account_at_0 Boolean
    help='Use this filter to hide an account or a partner with an initial balance at 0 and no movements. ' string='Hide account with initial balance at 0 and no movements'
  • hide_account_at_end_0 Boolean
    help='When this option is enabled, the general ledger will not display accounts or partners that have 0 ending balance.' string='Hide accounts with 0 end balance'
  • not_only_one_unaffected_earnings_account Boolean
    readonly=True string='Not only one unaffected earnings account'
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' default=<expr> string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • show_analytic_tags Boolean
    string='Show analytic tags'
  • show_cost_center Boolean
    default=True string='Show Analytic Account'
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
  • unaffected_earnings_account Many2one → account.account
    comodel_name='account.account' compute='_compute_unaffected_earnings_account' store=True
Public methods (5)
  • on_change_account_range(self)
    @api.onchange('account_code_from', 'account_code_to')
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')
    Handle date range change.
  • onchange_partner_ids(self)
    @api.onchange('partner_ids')
    Handle partners change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (10)
  • date_from Date
    required=True string='Start date'
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    required=True string='End date'
  • foreign_currency Boolean
  • group_option Selection
    default='journal' required=True selection='_get_group_options' string='Group entries by'
  • journal_ids Many2many → account.journal
    comodel_name='account.journal' required=False string='Journals'
  • move_target Selection
    default='posted' required=True selection='_get_move_targets'
  • sort_option Selection
    default='move_name' required=True selection='_get_sort_options' string='Sort entries by'
  • with_account_name Boolean
    default=False
  • with_auto_sequence Boolean
    default=False string='Show Auto Sequence'
Public methods (2)
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')

New fields (12)
  • account_code_from Many2one → account.account
    comodel_name='account.account' help='Starting account in a range' string='Account Code From'
  • account_code_to Many2one → account.account
    comodel_name='account.account' help='Ending account in a range' string='Account Code To'
  • account_ids Many2many → account.account
    comodel_name='account.account' domain=[('reconcile', '=', True)] required=True string='Filter accounts'
  • date_at Date
    default=fields.Date.context_today required=True
  • date_from Date
    string='Date From'
  • foreign_currency Boolean
    default=<expr> help='Display foreign currency for move lines, unless account currency is not setup through chart of accounts will display initial and final balance in that currency.' string='Show foreign currency'
  • hide_account_at_0 Boolean
    default=True help='Use this filter to hide an account or a partner with an ending balance at 0. If partners are filtered, debits and credits totals will not match the trial balance.' string='Hide account ending balance at 0'
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' default=<expr> string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • show_partner_details Boolean
    default=True string='Show Partner Details'
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
Public methods (4)
  • on_change_account_range(self)
    @api.onchange('account_code_from', 'account_code_to')
  • onchange_account_ids(self)
    @api.onchange('account_ids')
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (0)

No new fields.

Public methods (2)
  • write_account_footer_from_dict(self, report, account, label, field_name, string_format, amount_format, amount_is_percent, report_data)
    Specific function to write account footer for Aged Partner Balance
  • write_ending_balance_from_dict(self, my_object, report_data)
    Specific function to write ending partner balance for Aged Partner Balance

New fields (0)

No new fields.

Public methods (2)
  • write_ending_balance_from_dict(self, my_object, report_data)
    Specific function to write ending balance for General Ledger
  • write_initial_balance_from_dict(self, my_object, report_data)
    Specific function to write initial balance for General Ledger

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • write_ending_balance_from_dict(self, my_object, type_object, total_amount, report_data, account_id=False, partner_id=False)
    Specific function to write ending balance for Open Items

New fields (0)

No new fields.

Public methods (3)
  • write_account_footer(self, account, name_value, report_data)
    Specific function to write account footer for Trial Balance
  • write_line(self, line_object, type_object, report_data)
    Write a line on current line using all defined columns field name. Columns are defined with `_get_report_columns` method.
  • write_line_from_dict_order(self, total_amount, partner_data, report_data)

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 (11)
  • generate_xlsx_report(self, workbook, data, objects)
  • get_workbook_options(self)
  • write_array_header(self, report_data)
    Write array header on current line using all defined columns name. Columns are defined with `_get_report_columns` method.
  • write_array_title(self, title, report_data)
    Write array title on current line using all defined columns width. Columns are defined with `_get_report_columns` method.
  • write_ending_balance(self, my_object, name, label, report_data)
    Write a specific ending balance line on current line using defined columns field_final_balance name. Columns are defined with `_get_report_columns` method.
  • write_ending_balance_from_dict(self, my_object, name, label, report_data)
    Write a specific ending balance line on current line using defined columns field_final_balance name. Columns are defined with `_get_report_columns` method.
  • write_initial_balance(self, my_object, label, report_data)
    Write a specific initial balance line on current line using defined columns field_initial_balance name. Columns are defined with `_get_report_columns` method.
  • write_initial_balance_from_dict(self, my_object, label, report_data)
    Write a specific initial balance line on current line using defined columns field_initial_balance name. Columns are defined with `_get_report_columns` method.
  • write_line(self, line_object, report_data)
    Write a line on current line using all defined columns field name. Columns are defined with `_get_report_columns` method.
  • write_line_from_dict(self, line_dict, report_data)
    Write a line on current line
  • write_non_standard_column(self, cell_type, col_pos, value)
    Write columns out of the columns type defined here.

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 (0)

No new fields.

Public methods (0)

No public methods.

New fields (22)
  • account_code_from Many2one → account.account
    comodel_name='account.account' help='Starting account in a range' string='Account Code From'
  • account_code_to Many2one → account.account
    comodel_name='account.account' help='Ending account in a range' string='Account Code To'
  • account_ids Many2many → account.account
    comodel_name='account.account' string='Filter accounts'
  • date_from Date
    required=True
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    required=True
  • foreign_currency Boolean
    help='Display foreign currency for move lines, unless account currency is not setup through chart of accounts will display initial and final balance in that currency.' string='Show foreign currency'
  • fy_start_date Date
    compute='_compute_fy_start_date'
  • hide_account_at_0 Boolean
    default=True help='When this option is enabled, the trial balance will not display accounts that have initial balance = debit = credit = end balance = 0' string='Hide accounts at 0'
  • hide_account_at_end_0 Boolean
    help='When this option is enabled, the trial balance will not display accounts that have end balance = 0' string='Hide accounts with 0 end balance'
  • hide_parent_hierarchy_level Boolean
    default=False args: 'Do not display parent levels'
  • journal_ids Many2many → account.journal
    comodel_name='account.journal'
  • limit_hierarchy_level Boolean
    args: 'Limit hierarchy levels'
  • not_only_one_unaffected_earnings_account Boolean
    readonly=True string='Not only one unaffected earnings account'
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • show_hierarchy Boolean
    help='Use when your account groups are hierarchical' string='Show hierarchy'
  • show_hierarchy_level Integer
    default=1 args: 'Hierarchy Levels to display'
  • show_partner_details Boolean
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
  • unaffected_earnings_account Many2one → account.account
    comodel_name='account.account' compute='_compute_unaffected_earnings_account' store=True
Public methods (5)
  • on_change_account_range(self)
    @api.onchange('account_code_from', 'account_code_to')
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')
    Handle date range change.
  • onchange_show_partner_details(self)
    @api.onchange('show_partner_details')
    Handle partners change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (6)
  • based_on Selection
    default='taxtags' required=True string='Based On' args: [('taxtags', 'Tax Tags'), ('taxgroups', 'Tax Groups')]
  • date_from Date
    required=True args: 'Start Date'
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    required=True args: 'End Date'
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
  • tax_detail Boolean
    args: 'Detail Taxes'
Public methods (2)
  • onchange_company_id(self)
    @api.onchange('company_id')
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')
    Handle date range change.
REPOSITORY
REPOSITORYOCA/account-financial-reporting
GIT
GIThttps://github.com/OCA/account-financial-reporting.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-financial-reporting/tree/13.0/account_financial_report
VERSION
VERSION 2.7.1
CATEGORY
CATEGORYReporting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ForgeFlow, Camptocamp, initOS GmbH, redCOR AG
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ForgeFlow, Camptocamp, initOS GmbH, redCOR AG
COMMITTERS
COMMITTERSStefan Rijnhart, Pedro M. Baeza, GitHub, mreficent, Carlos Dauden, Andrea, Lois Rilo, Tonow-c2c, Jordi Ballester, OCA Transbot, Víctor Martínez, JordiMForgeFlow, Ernesto Tejeda, AaronHForgeFlow, João Marques, Alexandre D. Díaz, oca-travis, Weblate, OCA-git-bot, SimoRubi, valen, Isaac Gallart Bochons, oca-ci, Vincent Van Rossem, David Ramia, Joan Sisquella, Mateu Griful, Travis Waelbroeck, Vincent Hatakeyama
WEBSITE
WEBSITEhttps://github.com/OCA/account-financial-reporting
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:17
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/reporting-engine:
    - report_xlsx
OCA/server-ux:
    - date_range
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 (54)
XML IDNameModelTypeStatus
account_financial_report.internal_layout account_financial_report.internal_layout ir.ui.view qweb New
account_financial_report.report_general_ledger_ending_cumul account_financial_report.report_general_ledger_ending_cumul ir.ui.view qweb New
account_financial_report.report_general_ledger_filters account_financial_report.report_general_ledger_filters ir.ui.view qweb New
account_financial_report.report_general_ledger_lines account_financial_report.report_general_ledger_lines ir.ui.view qweb New
account_financial_report.report_journal_all account_financial_report.report_journal_all ir.ui.view qweb New
account_financial_report.report_journal_all_taxes account_financial_report.report_journal_all_taxes ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal account_financial_report.report_journal_ledger_journal ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal_first_line account_financial_report.report_journal_ledger_journal_first_line ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal_table_header account_financial_report.report_journal_ledger_journal_table_header ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal_taxes account_financial_report.report_journal_ledger_journal_taxes ir.ui.view qweb New
account_financial_report.report_journal_move account_financial_report.report_journal_move ir.ui.view qweb New
account_financial_report.report_journal_move_line account_financial_report.report_journal_move_line ir.ui.view qweb New
account_financial_report.report_open_items_base account_financial_report.report_open_items_base ir.ui.view qweb New
account_financial_report.report_open_items_ending_cumul account_financial_report.report_open_items_ending_cumul ir.ui.view qweb New
account_financial_report.report_open_items_filters account_financial_report.report_open_items_filters ir.ui.view qweb New
account_financial_report.report_open_items_lines account_financial_report.report_open_items_lines ir.ui.view qweb New
account_financial_report.report_open_items_lines_header account_financial_report.report_open_items_lines_header ir.ui.view qweb New
account_financial_report.report_trial_balance_account_footer account_financial_report.report_trial_balance_account_footer ir.ui.view qweb New
account_financial_report.report_trial_balance_filters account_financial_report.report_trial_balance_filters ir.ui.view qweb New
account_financial_report.report_trial_balance_line account_financial_report.report_trial_balance_line ir.ui.view qweb New
account_financial_report.report_trial_balance_lines_header account_financial_report.report_trial_balance_lines_header ir.ui.view qweb New
account_financial_report.report_vat_report_base account_financial_report.report_vat_report_base ir.ui.view qweb New
account_financial_report.report_vat_report_filters account_financial_report.report_vat_report_filters ir.ui.view qweb New
account_financial_report_assets_backend account_financial_report assets_backend ir.ui.view qweb Inherits web.assets_backend
account_financial_report_assets_common account_financial_report report_assets ir.ui.view qweb Inherits web.report_assets_common
aged_partner_balance aged_partner_balance ir.ui.view qweb New
aged_partner_balance_wizard Aged Partner Balance aged.partner.balance.report.wizard form New
general_ledger general_ledger ir.ui.view qweb New
general_ledger_wizard General Ledger general.ledger.report.wizard form New
journal_ledger journal_ledger ir.ui.view qweb New
journal_ledger_wizard Journal Ledger journal.ledger.report.wizard form New
open_items open_items ir.ui.view qweb New
open_items_wizard Open Items open.items.report.wizard form New
report_aged_partner_balance report_aged_partner_balance ir.ui.view qweb New
report_aged_partner_balance_account_ending_cumul report_aged_partner_balance_account_ending_cumul ir.ui.view qweb New
report_aged_partner_balance_base report_aged_partner_balance_base ir.ui.view qweb New
report_aged_partner_balance_filters report_aged_partner_balance_filters ir.ui.view qweb New
report_aged_partner_balance_lines report_aged_partner_balance_lines ir.ui.view qweb New
report_aged_partner_balance_lines_header report_aged_partner_balance_lines_header ir.ui.view qweb New
report_aged_partner_balance_move_lines report_aged_partner_balance_move_lines ir.ui.view qweb New
report_aged_partner_balance_partner_ending_cumul report_aged_partner_balance_partner_ending_cumul ir.ui.view qweb New
report_general_ledger report_general_ledger ir.ui.view qweb New
report_general_ledger_base report_general_ledger_base ir.ui.view qweb New
report_journal_ledger report_journal_ledger ir.ui.view qweb New
report_journal_ledger_base report_journal_ledger_base ir.ui.view qweb New
report_open_items report_open_items ir.ui.view qweb New
report_trial_balance report_trial_balance ir.ui.view qweb New
report_trial_balance_base report_trial_balance_base ir.ui.view qweb New
report_vat_report report_vat_report ir.ui.view qweb New
trial_balance trial_balance ir.ui.view qweb New
trial_balance_wizard Trial Balance trial.balance.report.wizard form New
vat_report vat_report ir.ui.view qweb New
vat_report_wizard vat_report_wizard_view vat.report.wizard form New
view_account_specific_form account.account.form.inherit account.account field Inherits account.view_account_form
Models touched (25)

New fields (1)
  • centralized Boolean
    help='If flagged, no details will be displayed in the General Ledger report (the webkit one only), only centralized amounts per period.' args: 'Centralized'
Public methods (0)

No public methods.

New fields (6)
  • account_ids One2many → account.account
    comodel_name='account.account' inverse_name='group_id' string='Accounts'
  • complete_code Char
    compute='_compute_complete_code' args: 'Full Code'
  • complete_name Char
    compute='_compute_complete_name' args: 'Full Name'
  • compute_account_ids Many2many → account.account
    compute='_compute_group_accounts' store=True string='Compute accounts' args: 'account.account'
  • group_child_ids One2many → account.group
    comodel_name='account.group' inverse_name='parent_id' string='Child Groups'
  • level Integer
    compute='_compute_level' store=True string='Level'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • init(self)
    The join between accounts_partners subquery and account_move_line can be heavy to compute on big databases. Join sample: JOIN account_move_line ml ON ap.account_id = ml.account_id AND ml.date < '2018-12-30' AND ap.partner_id = ml.partner_id AND ap.include_initial_balance = TRUE By adding the following index, performances are strongly increased. :return:
  • search_count(self, args)
    @api.model

New fields (1)
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> domain=<expr> required=False string='Company'
Public methods (3)
  • button_export_html(self)
  • button_export_pdf(self)
  • button_export_xlsx(self)

New fields (10)
  • account_code_from Many2one → account.account
    comodel_name='account.account' help='Starting account in a range' string='Account Code From'
  • account_code_to Many2one → account.account
    comodel_name='account.account' help='Ending account in a range' string='Account Code To'
  • account_ids Many2many → account.account
    comodel_name='account.account' domain=[('reconcile', '=', True)] required=True string='Filter accounts'
  • date_at Date
    default=fields.Date.context_today required=True
  • date_from Date
    string='Date From'
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • show_move_line_details Boolean
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
Public methods (4)
  • on_change_account_range(self)
    @api.onchange('account_code_from', 'account_code_to')
  • onchange_account_ids(self)
    @api.onchange('account_ids')
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (23)
  • account_code_from Many2one → account.account
    comodel_name='account.account' help='Starting account in a range' string='Account Code From'
  • account_code_to Many2one → account.account
    comodel_name='account.account' help='Ending account in a range' string='Account Code To'
  • account_ids Many2many → account.account
    comodel_name='account.account' string='Filter accounts'
  • account_journal_ids Many2many → account.journal
    comodel_name='account.journal' string='Filter journals'
  • analytic_tag_ids Many2many → account.analytic.tag
    comodel_name='account.analytic.tag' string='Filter analytic tags'
  • centralize Boolean
    default=True string='Activate centralization'
  • cost_center_ids Many2many → account.analytic.account
    comodel_name='account.analytic.account' string='Filter cost centers'
  • date_from Date
    default=<expr> required=True
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    default=fields.Date.context_today required=True
  • domain Char
    default=[] help='This domain will be used to select specific domain for Journal Items' string='Journal Items Domain'
  • foreign_currency Boolean
    default=<expr> help='Display foreign currency for move lines, unless account currency is not setup through chart of accounts will display initial and final balance in that currency.' string='Show foreign currency'
  • fy_start_date Date
    compute='_compute_fy_start_date'
  • grouped_by Selection
    default='partners' selection=[('', 'None'), ('partners', 'Partners'), ('taxes', 'Taxes')] string='Grouped by'
  • hide_account_at_0 Boolean
    help='Use this filter to hide an account or a partner with an ending balance at 0. If partners are filtered, debits and credits totals will not match the trial balance.' string='Hide account ending balance at 0'
  • not_only_one_unaffected_earnings_account Boolean
    readonly=True string='Not only one unaffected earnings account'
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' default=<expr> string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • show_analytic_tags Boolean
    string='Show analytic tags'
  • show_cost_center Boolean
    default=True string='Show Analytic Account'
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
  • unaffected_earnings_account Many2one → account.account
    comodel_name='account.account' compute='_compute_unaffected_earnings_account' store=True
Public methods (5)
  • on_change_account_range(self)
    @api.onchange('account_code_from', 'account_code_to')
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')
    Handle date range change.
  • onchange_partner_ids(self)
    @api.onchange('partner_ids')
    Handle partners change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (0)

No new fields.

Public methods (2)
  • render_qweb_html(self, docids, data=None)
    @api.model
  • render_xlsx(self, docids, data)
    @api.model

New fields (10)
  • date_from Date
    required=True string='Start date'
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    required=True string='End date'
  • foreign_currency Boolean
  • group_option Selection
    default='journal' required=True selection='_get_group_options' string='Group entries by'
  • journal_ids Many2many → account.journal
    comodel_name='account.journal' required=False string='Journals'
  • move_target Selection
    default='posted' required=True selection='_get_move_targets'
  • sort_option Selection
    default='move_name' required=True selection='_get_sort_options' string='Sort entries by'
  • with_account_name Boolean
    default=False
  • with_auto_sequence Boolean
    default=False string='Show Auto Sequence'
Public methods (2)
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')

New fields (12)
  • account_code_from Many2one → account.account
    comodel_name='account.account' help='Starting account in a range' string='Account Code From'
  • account_code_to Many2one → account.account
    comodel_name='account.account' help='Ending account in a range' string='Account Code To'
  • account_ids Many2many → account.account
    comodel_name='account.account' domain=[('reconcile', '=', True)] required=True string='Filter accounts'
  • date_at Date
    default=fields.Date.context_today required=True
  • date_from Date
    string='Date From'
  • foreign_currency Boolean
    default=<expr> help='Display foreign currency for move lines, unless account currency is not setup through chart of accounts will display initial and final balance in that currency.' string='Show foreign currency'
  • hide_account_at_0 Boolean
    default=True help='Use this filter to hide an account or a partner with an ending balance at 0. If partners are filtered, debits and credits totals will not match the trial balance.' string='Hide account ending balance at 0'
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' default=<expr> string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • show_partner_details Boolean
    default=True string='Show Partner Details'
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
Public methods (4)
  • on_change_account_range(self)
    @api.onchange('account_code_from', 'account_code_to')
  • onchange_account_ids(self)
    @api.onchange('account_ids')
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (0)

No new fields.

Public methods (2)
  • write_account_footer_from_dict(self, report, account, label, field_name, string_format, amount_format, amount_is_percent)
    Specific function to write account footer for Aged Partner Balance
  • write_ending_balance_from_dict(self, my_object)
    Specific function to write ending partner balance for Aged Partner Balance

New fields (0)

No new fields.

Public methods (2)
  • write_ending_balance_from_dict(self, my_object)
    Specific function to write ending balance for General Ledger
  • write_initial_balance_from_dict(self, my_object)
    Specific function to write initial balance for General Ledger

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • write_ending_balance_from_dict(self, my_object, type_object, total_amount, account_id=False, partner_id=False)
    Specific function to write ending balance for Open Items

New fields (0)

No new fields.

Public methods (3)
  • write_account_footer(self, account, name_value)
    Specific function to write account footer for Trial Balance
  • write_line(self, line_object, type_object)
    Write a line on current line using all defined columns field name. Columns are defined with `_get_report_columns` method.
  • write_line_from_dict_order(self, total_amount, partner_data)

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 (11)
  • generate_xlsx_report(self, workbook, data, objects)
  • get_workbook_options(self)
  • write_array_header(self)
    Write array header on current line using all defined columns name. Columns are defined with `_get_report_columns` method.
  • write_array_title(self, title)
    Write array title on current line using all defined columns width. Columns are defined with `_get_report_columns` method.
  • write_ending_balance(self, my_object, name, label)
    Write a specific ending balance line on current line using defined columns field_final_balance name. Columns are defined with `_get_report_columns` method.
  • write_ending_balance_from_dict(self, my_object, name, label)
    Write a specific ending balance line on current line using defined columns field_final_balance name. Columns are defined with `_get_report_columns` method.
  • write_initial_balance(self, my_object, label)
    Write a specific initial balance line on current line using defined columns field_initial_balance name. Columns are defined with `_get_report_columns` method.
  • write_initial_balance_from_dict(self, my_object, label)
    Write a specific initial balance line on current line using defined columns field_initial_balance name. Columns are defined with `_get_report_columns` method.
  • write_line(self, line_object)
    Write a line on current line using all defined columns field name. Columns are defined with `_get_report_columns` method.
  • write_line_from_dict(self, line_dict)
    Write a line on current line
  • write_non_standard_column(self, cell_type, col_pos, value)
    Write columns out of the columns type defined here.

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 (0)

No new fields.

Public methods (0)

No public methods.

New fields (21)
  • account_code_from Many2one → account.account
    comodel_name='account.account' help='Starting account in a range' string='Account Code From'
  • account_code_to Many2one → account.account
    comodel_name='account.account' help='Ending account in a range' string='Account Code To'
  • account_ids Many2many → account.account
    comodel_name='account.account' string='Filter accounts'
  • date_from Date
    required=True
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    required=True
  • foreign_currency Boolean
    help='Display foreign currency for move lines, unless account currency is not setup through chart of accounts will display initial and final balance in that currency.' string='Show foreign currency'
  • fy_start_date Date
    compute='_compute_fy_start_date'
  • hide_account_at_0 Boolean
    default=True help='When this option is enabled, the trial balance will not display accounts that have initial balance = debit = credit = end balance = 0' string='Hide accounts at 0'
  • hide_parent_hierarchy_level Boolean
    default=False args: 'Do not display parent levels'
  • hierarchy_on Selection
    default='none' help='Computed Accounts: Use when the account group have codes\n that represent prefixes of the actual accounts.\n\n Child Accounts: Use when your account groups are hierarchical.\n\n No hierarchy: Use to display just the accounts, without any grouping.\n ' required=True string='Hierarchy On' args: [('computed', 'Computed Accounts'), ('relation', 'Child Accounts'), ('none', 'No hierarchy')]
  • journal_ids Many2many → account.journal
    comodel_name='account.journal'
  • limit_hierarchy_level Boolean
    args: 'Limit hierarchy levels'
  • not_only_one_unaffected_earnings_account Boolean
    readonly=True string='Not only one unaffected earnings account'
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • show_hierarchy_level Integer
    default=1 args: 'Hierarchy Levels to display'
  • show_partner_details Boolean
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
  • unaffected_earnings_account Many2one → account.account
    comodel_name='account.account' compute='_compute_unaffected_earnings_account' store=True
Public methods (5)
  • on_change_account_range(self)
    @api.onchange('account_code_from', 'account_code_to')
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')
    Handle date range change.
  • onchange_show_partner_details(self)
    @api.onchange('show_partner_details')
    Handle partners change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (6)
  • based_on Selection
    default='taxtags' required=True string='Based On' args: [('taxtags', 'Tax Tags'), ('taxgroups', 'Tax Groups')]
  • date_from Date
    required=True args: 'Start Date'
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    required=True args: 'End Date'
  • target_move Selection
    default='posted' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
  • tax_detail Boolean
    args: 'Detail Taxes'
Public methods (2)
  • onchange_company_id(self)
    @api.onchange('company_id')
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')
    Handle date range change.
REPOSITORY
REPOSITORYOCA/account-financial-reporting
GIT
GIThttps://github.com/OCA/account-financial-reporting.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-financial-reporting/tree/12.0/account_financial_report
VERSION
VERSION 1.5.4
CATEGORY
CATEGORYReporting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp, initOS GmbH, Eficent, redCOR AG
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp, initOS GmbH, Eficent, redCOR AG
COMMITTERS
COMMITTERSeLBati, Holger Brunn, Pedro M. Baeza, Carlos Dauden, Andrea, tafaRU, sbejaoui, OCA Transbot, David Dufresne, oca-travis, Weblate, OCA-git-bot, Iván Todorovich, SimoRubi, sergiocorato, Simone Rubino, Carmen Bianca BAKKER, Jan Verbeek, Vincent Van Rossem, Timon Tschanz, gaikaz
WEBSITE
WEBSITEhttps://github.com/OCA/account-financial-reporting
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:22
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/reporting-engine:
    - report_xlsx
OCA/server-ux:
    - date_range
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - http_routing
    - digest
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES xlrd
xlsxwriter
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (53)
XML IDNameModelTypeStatus
account_financial_report.internal_layout account_financial_report.internal_layout ir.ui.view qweb New
account_financial_report.report_general_ledger_ending_cumul account_financial_report.report_general_ledger_ending_cumul ir.ui.view qweb New
account_financial_report.report_general_ledger_filters account_financial_report.report_general_ledger_filters ir.ui.view qweb New
account_financial_report.report_general_ledger_lines account_financial_report.report_general_ledger_lines ir.ui.view qweb New
account_financial_report.report_journal_all account_financial_report.report_journal_all ir.ui.view qweb New
account_financial_report.report_journal_all_taxes account_financial_report.report_journal_all_taxes ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal account_financial_report.report_journal_ledger_journal ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal_first_line account_financial_report.report_journal_ledger_journal_first_line ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal_table_header account_financial_report.report_journal_ledger_journal_table_header ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal_taxes account_financial_report.report_journal_ledger_journal_taxes ir.ui.view qweb New
account_financial_report.report_journal_move account_financial_report.report_journal_move ir.ui.view qweb New
account_financial_report.report_journal_move_line account_financial_report.report_journal_move_line ir.ui.view qweb New
account_financial_report.report_open_items_base account_financial_report.report_open_items_base ir.ui.view qweb New
account_financial_report.report_open_items_ending_cumul account_financial_report.report_open_items_ending_cumul ir.ui.view qweb New
account_financial_report.report_open_items_filters account_financial_report.report_open_items_filters ir.ui.view qweb New
account_financial_report.report_open_items_lines account_financial_report.report_open_items_lines ir.ui.view qweb New
account_financial_report.report_open_items_qweb account_financial_report.report_open_items_qweb ir.ui.view qweb New
account_financial_report.report_trial_balance_account_footer account_financial_report.report_trial_balance_account_footer ir.ui.view qweb New
account_financial_report.report_trial_balance_base account_financial_report.report_trial_balance_base ir.ui.view qweb New
account_financial_report.report_trial_balance_filters account_financial_report.report_trial_balance_filters ir.ui.view qweb New
account_financial_report.report_trial_balance_line account_financial_report.report_trial_balance_line ir.ui.view qweb New
account_financial_report.report_trial_balance_lines_header account_financial_report.report_trial_balance_lines_header ir.ui.view qweb New
account_financial_report.report_trial_balance_qweb account_financial_report.report_trial_balance_qweb ir.ui.view qweb New
account_financial_report.report_vat_report_base account_financial_report.report_vat_report_base ir.ui.view qweb New
account_financial_report.report_vat_report_filters account_financial_report.report_vat_report_filters ir.ui.view qweb New
account_financial_report.report_vat_report_qweb account_financial_report.report_vat_report_qweb ir.ui.view qweb New
account_financial_report_assets_backend account_financial_report assets ir.ui.view qweb Inherits web.assets_backend
aged_partner_balance_wizard Aged Partner Balance aged.partner.balance.wizard form New
general_ledger_wizard General Ledger general.ledger.report.wizard form New
journal_ledger_wizard Journal Ledger journal.ledger.report.wizard form New
open_items_wizard Open Items open.items.report.wizard form New
report_aged_partner_balance report_aged_partner_balance ir.ui.view qweb New
report_aged_partner_balance_account_ending_cumul report_aged_partner_balance_account_ending_cumul ir.ui.view qweb New
report_aged_partner_balance_base report_aged_partner_balance_base ir.ui.view qweb New
report_aged_partner_balance_filters report_aged_partner_balance_filters ir.ui.view qweb New
report_aged_partner_balance_lines report_aged_partner_balance_lines ir.ui.view qweb New
report_aged_partner_balance_lines_header report_aged_partner_balance_lines_header ir.ui.view qweb New
report_aged_partner_balance_move_lines report_aged_partner_balance_move_lines ir.ui.view qweb New
report_aged_partner_balance_partner_ending_cumul report_aged_partner_balance_partner_ending_cumul ir.ui.view qweb New
report_aged_partner_balance_qweb report_aged_partner_balance_qweb ir.ui.view qweb New
report_buttons report_buttons ir.ui.view qweb New
report_general_ledger report_general_ledger ir.ui.view qweb New
report_general_ledger_base report_general_ledger_base ir.ui.view qweb New
report_general_ledger_qweb report_general_ledger_qweb ir.ui.view qweb New
report_journal_ledger report_journal_ledger ir.ui.view qweb New
report_journal_ledger_base report_journal_ledger_base ir.ui.view qweb New
report_journal_ledger_qweb report_journal_ledger_qweb ir.ui.view qweb New
report_open_items report_open_items ir.ui.view qweb New
report_trial_balance report_trial_balance ir.ui.view qweb New
report_vat_report report_vat_report ir.ui.view qweb New
trial_balance_wizard Trial Balance trial.balance.report.wizard form New
vat_report_wizard vat_report_wizard_view vat.report.wizard form New
view_account_specific_form account.account.form.inherit account.account field Inherits account.view_account_form
Models touched (48)

New fields (1)
  • centralized Boolean
    help='If flagged, no details will be displayed in the General Ledger report (the webkit one only), only centralized amounts per period.' args: 'Centralized'
Public methods (0)

No public methods.

New fields (4)
  • account_ids One2many → account.account
    comodel_name='account.account' inverse_name='group_id' string='Accounts'
  • compute_account_ids Many2many → account.account
    compute='_compute_group_accounts' store=True string='Compute accounts' args: 'account.account'
  • group_child_ids One2many → account.group
    comodel_name='account.group' inverse_name='parent_id' string='Child Groups'
  • level Integer
    compute='_compute_level' store=True string='Level'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • init(self)
    @api.model_cr
    The join between accounts_partners subquery and account_move_line can be heavy to compute on big databases. Join sample: JOIN account_move_line ml ON ap.account_id = ml.account_id AND ml.date < '2018-12-30' AND ap.partner_id = ml.partner_id AND ap.include_initial_balance = TRUE By adding the following index, performances are strongly increased. :return:

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 (8)
  • account_ids Many2many → account.account
    comodel_name='account.account' string='Filter accounts'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=False string='Company'
  • date_at Date
    default=fields.Date.context_today required=True
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • show_move_line_details Boolean
  • target_move Selection
    default='all' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
Public methods (5)
  • button_export_html(self)
    @api.multi
  • button_export_pdf(self)
    @api.multi
  • button_export_xlsx(self)
    @api.multi
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (18)
  • account_ids Many2many → account.account
    comodel_name='account.account' string='Filter accounts'
  • account_journal_ids Many2many → account.journal
    comodel_name='account.journal' string='Filter journals'
  • account_type_ids Many2many → account.account.type
    string='Account Types' args: 'account.account.type'
  • analytic_tag_ids Many2many → account.analytic.tag
    comodel_name='account.analytic.tag' string='Filter analytic tags'
  • centralize Boolean
    default=True string='Activate centralization'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=False string='Company'
  • cost_center_ids Many2many → account.analytic.account
    comodel_name='account.analytic.account' string='Filter cost centers'
  • date_from Date
    default=<expr> required=True
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    default=fields.Date.context_today required=True
  • foreign_currency Boolean
    default=<expr> help='Display foreign currency for move lines, unless account currency is not setup through chart of accounts will display initial and final balance in that currency.' string='Show foreign currency'
  • fy_start_date Date
    compute='_compute_fy_start_date'
  • hide_account_at_0 Boolean
    help='Use this filter to hide an account or a partner with an ending balance at 0. If partners are filtered, debits and credits totals will not match the trial balance.' string='Hide account ending balance at 0'
  • not_only_one_unaffected_earnings_account Boolean
    readonly=True string='Not only one unaffected earnings account'
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' default=<expr> string='Filter partners'
  • partner_ungrouped Boolean
    help='If set moves are not grouped by partner in any case' string='Partner ungrouped'
  • show_analytic_tags Boolean
    string='Show analytic tags'
  • target_move Selection
    default='all' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
Public methods (6)
  • button_export_html(self)
    @api.multi
  • button_export_pdf(self)
    @api.multi
  • button_export_xlsx(self)
    @api.multi
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')
    Handle date range change.
  • onchange_partner_ids(self)
    @api.onchange('partner_ids')
    Handle partners change.

New fields (10)
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> ondelete='cascade' required=False string='Company'
  • date_from Date
    required=True string='Start date'
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    required=True string='End date'
  • foreign_currency Boolean
  • group_option Selection
    default='journal' required=True selection='_get_group_options' string='Group entries by'
  • journal_ids Many2many → account.journal
    comodel_name='account.journal' required=False string='Journals'
  • move_target Selection
    default='all' required=True selection='_get_move_targets'
  • sort_option Selection
    default='move_name' required=True selection='_get_sort_options' string='Sort entries by'
  • with_account_name Boolean
    default=False
Public methods (5)
  • button_export_html(self)
    @api.multi
  • button_export_pdf(self)
    @api.multi
  • button_export_xlsx(self)
    @api.multi
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')

New fields (9)
  • account_ids Many2many → account.account
    comodel_name='account.account' domain=[('reconcile', '=', True)] string='Filter accounts'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=False string='Company'
  • date_at Date
    default=fields.Date.context_today required=True
  • foreign_currency Boolean
    default=<expr> help='Display foreign currency for move lines, unless account currency is not setup through chart of accounts will display initial and final balance in that currency.' string='Show foreign currency'
  • hide_account_at_0 Boolean
    default=True help='Use this filter to hide an account or a partner with an ending balance at 0. If partners are filtered, debits and credits totals will not match the trial balance.' string='Hide account ending balance at 0'
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' default=<expr> string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • target_move Selection
    default='all' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
Public methods (5)
  • button_export_html(self)
    @api.multi
  • button_export_pdf(self)
    @api.multi
  • button_export_xlsx(self)
    @api.multi
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (0)

No new fields.

Public methods (2)
  • write_account_footer(self, report, account, label, field_name, string_format, amount_format, amount_is_percent)
    Specific function to write account footer for Aged Partner Balance
  • write_ending_balance(self, my_object)
    Specific function to write ending partner balance for Aged Partner Balance

New fields (0)

No new fields.

Public methods (2)
  • write_ending_balance(self, my_object)
    Specific function to write ending balance for General Ledger
  • write_initial_balance(self, my_object)
    Specific function to write initial balance for General Ledger

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • write_ending_balance(self, my_object, type_object)
    Specific function to write ending balance for Open Items

New fields (0)

No new fields.

Public methods (2)
  • write_account_footer(self, account, name_value)
    Specific function to write account footer for Trial Balance
  • write_line(self, line_object, type_object)
    Write a line on current line using all defined columns field name. Columns are defined with `_get_report_columns` method.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (7)
  • generate_xlsx_report(self, workbook, data, objects)
  • get_workbook_options(self)
  • write_array_header(self)
    Write array header on current line using all defined columns name. Columns are defined with `_get_report_columns` method.
  • write_array_title(self, title)
    Write array title on current line using all defined columns width. Columns are defined with `_get_report_columns` method.
  • write_ending_balance(self, my_object, name, label)
    Write a specific ending balance line on current line using defined columns field_final_balance name. Columns are defined with `_get_report_columns` method.
  • write_initial_balance(self, my_object, label)
    Write a specific initial balance line on current line using defined columns field_initial_balance name. Columns are defined with `_get_report_columns` method.
  • write_line(self, line_object)
    Write a line on current line using all defined columns field name. Columns are defined with `_get_report_columns` method.

New fields (8)
  • account_ids One2many → report_aged_partner_balance_account
    comodel_name='report_aged_partner_balance_account' inverse_name='report_id'
  • company_id Many2one → res.company
    comodel_name='res.company'
  • date_at Date
  • filter_account_ids Many2many → account.account
    comodel_name='account.account'
  • filter_partner_ids Many2many → res.partner
    comodel_name='res.partner'
  • only_posted_moves Boolean
  • open_items_id Many2one → report_open_items
    comodel_name='report_open_items'
  • show_move_line_details Boolean
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • compute_data_for_report(self)
    @api.multi
  • get_html(self, given_context=None)
    @api.model
  • print_report(self, report_type)
    @api.multi

New fields (18)
  • account_id Many2one → account.account
    index=True args: 'account.account'
  • code Char
  • cumul_age_120_days Float
    digits=(16, 2)
  • cumul_age_30_days Float
    digits=(16, 2)
  • cumul_age_60_days Float
    digits=(16, 2)
  • cumul_age_90_days Float
    digits=(16, 2)
  • cumul_amount_residual Float
    digits=(16, 2)
  • cumul_current Float
    digits=(16, 2)
  • cumul_older Float
    digits=(16, 2)
  • name Char
  • partner_ids One2many → report_aged_partner_balance_partner
    comodel_name='report_aged_partner_balance_partner' inverse_name='report_account_id'
  • percent_age_120_days Float
    digits=(16, 2)
  • percent_age_30_days Float
    digits=(16, 2)
  • percent_age_60_days Float
    digits=(16, 2)
  • percent_age_90_days Float
    digits=(16, 2)
  • percent_current Float
    digits=(16, 2)
  • percent_older Float
    digits=(16, 2)
  • report_id Many2one → report_aged_partner_balance
    comodel_name='report_aged_partner_balance' index=True ondelete='cascade'
Public methods (0)

No public methods.

New fields (9)
  • age_120_days Float
    digits=(16, 2)
  • age_30_days Float
    digits=(16, 2)
  • age_60_days Float
    digits=(16, 2)
  • age_90_days Float
    digits=(16, 2)
  • amount_residual Float
    digits=(16, 2)
  • current Float
    digits=(16, 2)
  • older Float
    digits=(16, 2)
  • partner Char
  • report_partner_id Many2one → report_aged_partner_balance_partner
    comodel_name='report_aged_partner_balance_partner' index=True ondelete='cascade'
Public methods (0)

No public methods.

New fields (16)
  • account Char
  • age_120_days Float
    digits=(16, 2)
  • age_30_days Float
    digits=(16, 2)
  • age_60_days Float
    digits=(16, 2)
  • age_90_days Float
    digits=(16, 2)
  • amount_residual Float
    digits=(16, 2)
  • current Float
    digits=(16, 2)
  • date Date
  • date_due Date
  • entry Char
  • journal Char
  • label Char
  • move_line_id Many2one → account.move.line
    args: 'account.move.line'
  • older Float
    digits=(16, 2)
  • partner Char
  • report_partner_id Many2one → report_aged_partner_balance_partner
    comodel_name='report_aged_partner_balance_partner' index=True ondelete='cascade'
Public methods (0)

No public methods.

New fields (5)
  • line_ids One2many → report_aged_partner_balance_line
    comodel_name='report_aged_partner_balance_line' inverse_name='report_partner_id'
  • move_line_ids One2many → report_aged_partner_balance_move_line
    comodel_name='report_aged_partner_balance_move_line' inverse_name='report_partner_id'
  • name Char
  • partner_id Many2one → res.partner
    index=True args: 'res.partner'
  • report_account_id Many2one → report_aged_partner_balance_account
    comodel_name='report_aged_partner_balance_account' index=True ondelete='cascade'
Public methods (0)

No public methods.

New fields (18)
  • account_ids One2many → report_general_ledger_account
    comodel_name='report_general_ledger_account' inverse_name='report_id'
  • centralize Boolean
  • company_id Many2one → res.company
    comodel_name='res.company'
  • date_from Date
  • date_to Date
  • filter_account_ids Many2many → account.account
    comodel_name='account.account'
  • filter_analytic_tag_ids Many2many → account.analytic.tag
    comodel_name='account.analytic.tag'
  • filter_cost_center_ids Many2many → account.analytic.account
    comodel_name='account.analytic.account'
  • filter_journal_ids Many2many → account.journal
    comodel_name='account.journal'
  • filter_partner_ids Many2many → res.partner
    comodel_name='res.partner'
  • foreign_currency Boolean
  • fy_start_date Date
  • hide_account_at_0 Boolean
  • only_posted_moves Boolean
  • partner_ungrouped Boolean
    help='If set moves are not grouped by partner in any case' string='Partner ungrouped'
  • show_analytic_tags Boolean
  • show_cost_center Boolean
    default=<expr>
  • unaffected_earnings_account Many2one → account.account
    comodel_name='account.account' compute='_compute_unaffected_earnings_account' store=True
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • compute_data_for_report(self, with_line_details=True, with_partners=True)
    @api.multi
  • get_html(self, given_context=None)
    @api.model
  • print_report(self, report_type)
    @api.multi

New fields (16)
  • account_id Many2one → account.account
    index=True args: 'account.account'
  • code Char
  • currency_id Many2one → res.currency
    args: 'res.currency'
  • final_balance Float
    digits=(16, 2)
  • final_balance_foreign_currency Float
    digits=(16, 2)
  • final_credit Float
    digits=(16, 2)
  • final_debit Float
    digits=(16, 2)
  • initial_balance Float
    digits=(16, 2)
  • initial_balance_foreign_currency Float
    digits=(16, 2)
  • initial_credit Float
    digits=(16, 2)
  • initial_debit Float
    digits=(16, 2)
  • is_partner_account Boolean
  • move_line_ids One2many → report_general_ledger_move_line
    comodel_name='report_general_ledger_move_line' inverse_name='report_account_id'
  • name Char
  • partner_ids One2many → report_general_ledger_partner
    comodel_name='report_general_ledger_partner' inverse_name='report_account_id'
  • report_id Many2one → report_general_ledger
    comodel_name='report_general_ledger' index=True ondelete='cascade'
Public methods (0)

No public methods.

New fields (18)
  • account Char
  • amount_currency Float
    digits=(16, 2)
  • cost_center Char
  • credit Float
    digits=(16, 2)
  • cumul_balance Float
    digits=(16, 2)
  • currency_id Many2one → res.currency
    args: 'res.currency'
  • date Date
  • debit Float
    digits=(16, 2)
  • entry Char
  • journal Char
  • label Char
  • matching_number Char
  • move_line_id Many2one → account.move.line
    args: 'account.move.line'
  • partner Char
  • report_account_id Many2one → report_general_ledger_account
    comodel_name='report_general_ledger_account' index=True ondelete='cascade'
  • report_partner_id Many2one → report_general_ledger_partner
    comodel_name='report_general_ledger_partner' index=True ondelete='cascade'
  • tags Char
  • taxes_description Char
Public methods (0)

No public methods.

New fields (13)
  • currency_id Many2one → res.currency
    args: 'res.currency'
  • final_balance Float
    digits=(16, 2)
  • final_balance_foreign_currency Float
    digits=(16, 2)
  • final_credit Float
    digits=(16, 2)
  • final_debit Float
    digits=(16, 2)
  • initial_balance Float
    digits=(16, 2)
  • initial_balance_foreign_currency Float
    digits=(16, 2)
  • initial_credit Float
    digits=(16, 2)
  • initial_debit Float
    digits=(16, 2)
  • move_line_ids One2many → report_general_ledger_move_line
    comodel_name='report_general_ledger_move_line' inverse_name='report_partner_id'
  • name Char
  • partner_id Many2one → res.partner
    index=True args: 'res.partner'
  • report_account_id Many2one → report_general_ledger_account
    comodel_name='report_general_ledger_account' index=True ondelete='cascade'
Public methods (0)

No public methods.

New fields (14)
  • company_id Many2one → res.company
    comodel_name='res.company' ondelete='cascade' required=True
  • date_from Date
    required=True
  • date_to Date
    required=True
  • foreign_currency Boolean
  • group_option Selection
    default='journal' required=True selection='_get_group_options'
  • journal_ids Many2many → account.journal
    comodel_name='account.journal' required=True
  • move_target Selection
    default='all' required=True selection='_get_move_targets'
  • report_journal_ledger_ids One2many → report_journal_ledger_journal
    comodel_name='report_journal_ledger_journal' inverse_name='report_id'
  • report_journal_ledger_tax_line_ids One2many → report_journal_ledger_journal_tax_line
    comodel_name='report_journal_ledger_journal_tax_line' inverse_name='report_id'
  • report_move_ids One2many → report_journal_ledger_move
    comodel_name='report_journal_ledger_move' inverse_name='report_id'
  • report_move_line_ids One2many → report_journal_ledger_move_line
    comodel_name='report_journal_ledger_move_line' inverse_name='report_id'
  • report_tax_line_ids One2many → report_journal_ledger_report_tax_line
    comodel_name='report_journal_ledger_report_tax_line' inverse_name='report_id'
  • sort_option Selection
    default='move_name' required=True selection='_get_sort_options'
  • with_account_name Boolean
Public methods (3)
  • compute_data_for_report(self)
    @api.multi
  • get_html(self, given_context=None)
    @api.model
  • print_report(self, report_type)
    @api.multi

New fields (10)
  • code Char
  • company_id Many2one → res.company
    comodel_name='res.company' ondelete='cascade' required=True
  • credit Float
    digits=DIGITS
  • currency_id Many2one → res.currency
    comodel_name='res.currency'
  • debit Float
    digits=DIGITS
  • journal_id Many2one → account.journal
    comodel_name='account.journal' ondelete='cascade' required=True
  • name Char
    required=True
  • report_id Many2one → report_journal_ledger
    comodel_name='report_journal_ledger' ondelete='cascade' required=True
  • report_move_ids One2many → report_journal_ledger_move
    comodel_name='report_journal_ledger_move' inverse_name='report_journal_ledger_id'
  • report_tax_line_ids One2many → report_journal_ledger_journal_tax_line
    comodel_name='report_journal_ledger_journal_tax_line' inverse_name='report_journal_ledger_id'
Public methods (0)

No public methods.

New fields (1)
  • report_journal_ledger_id Many2one → report_journal_ledger_journal
    comodel_name='report_journal_ledger_journal' ondelete='cascade' required=True
Public methods (0)

No public methods.

New fields (6)
  • company_id Many2one → res.company
    comodel_name='res.company' ondelete='cascade' required=True
  • move_id Many2one → account.move
    comodel_name='account.move' ondelete='cascade' required=True
  • name Char
  • report_id Many2one → report_journal_ledger
    comodel_name='report_journal_ledger' ondelete='cascade' required=True
  • report_journal_ledger_id Many2one → report_journal_ledger_journal
    comodel_name='report_journal_ledger_journal' ondelete='cascade' required=True
  • report_move_line_ids One2many → report_journal_ledger_move_line
    comodel_name='report_journal_ledger_move_line' inverse_name='report_move_id'
Public methods (0)

No public methods.

New fields (22)
  • account Char
  • account_code Char
  • account_id Many2one → account.account
    comodel_name='account.account' string='Account ID'
  • account_type Char
  • amount_currency Monetary
    currency_field='currency_id'
  • company_currency_id Many2one → res.currency
    comodel_name='res.currency'
  • company_id Many2one → res.company
    comodel_name='res.company' ondelete='cascade' required=True
  • credit Float
    digits=DIGITS
  • currency_id Many2one → res.currency
    comodel_name='res.currency'
  • currency_name Char
  • date Date
  • debit Float
    digits=DIGITS
  • entry Char
  • label Char
  • move_line_id Many2one → account.move.line
    comodel_name='account.move.line' ondelete='cascade' required=True
  • partner Char
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Partner ID'
  • report_id Many2one → report_journal_ledger
    comodel_name='report_journal_ledger' ondelete='cascade' required=True
  • report_journal_ledger_id Many2one → report_journal_ledger_journal
    comodel_name='report_journal_ledger_journal' ondelete='cascade' required=True
  • report_move_id Many2one → report_journal_ledger_move
    comodel_name='report_journal_ledger_move' index=True ondelete='cascade' required=True
  • tax_id Many2one → account.tax
    comodel_name='account.tax'
  • taxes_description Char
Public methods (0)

No public methods.

New fields (10)
  • base_balance Float
    compute='_compute_base_balance' digits=DIGITS
  • base_credit Float
    digits=DIGITS
  • base_debit Float
    digits=DIGITS
  • report_id Many2one → report_journal_ledger
    comodel_name='report_journal_ledger' ondelete='cascade' required=True
  • tax_balance Float
    compute='_compute_tax_balance' digits=DIGITS
  • tax_code Char
  • tax_credit Float
    digits=DIGITS
  • tax_debit Float
    digits=DIGITS
  • tax_id Many2one → account.tax
    comodel_name='account.tax'
  • tax_name Char
Public methods (0)

No public methods.

New fields (8)
  • account_ids One2many → report_open_items_account
    comodel_name='report_open_items_account' inverse_name='report_id'
  • company_id Many2one → res.company
    comodel_name='res.company'
  • date_at Date
  • filter_account_ids Many2many → account.account
    comodel_name='account.account'
  • filter_partner_ids Many2many → res.partner
    comodel_name='res.partner'
  • foreign_currency Boolean
  • hide_account_at_0 Boolean
  • only_posted_moves Boolean
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • compute_data_for_report(self)
    @api.multi
  • get_html(self, given_context=None)
    @api.model
  • print_report(self, report_type)
    @api.multi

New fields (10)
  • account_id Many2one → account.account
    index=True args: 'account.account'
  • code Char
  • currency_id Many2one → res.currency
    args: 'res.currency'
  • final_amount_residual Float
    digits=(16, 2)
  • final_amount_residual_currency Float
    digits=(16, 2)
  • final_amount_total_due Float
    digits=(16, 2)
  • final_amount_total_due_currency Float
    digits=(16, 2)
  • name Char
  • partner_ids One2many → report_open_items_partner
    comodel_name='report_open_items_partner' inverse_name='report_account_id'
  • report_id Many2one → report_open_items
    comodel_name='report_open_items' index=True ondelete='cascade'
Public methods (0)

No public methods.

New fields (14)
  • account Char
  • amount_residual Float
    digits=(16, 2)
  • amount_residual_currency Float
    digits=(16, 2)
  • amount_total_due Float
    digits=(16, 2)
  • amount_total_due_currency Float
    digits=(16, 2)
  • currency_id Many2one → res.currency
    args: 'res.currency'
  • date Date
  • date_due Date
  • entry Char
  • journal Char
  • label Char
  • move_line_id Many2one → account.move.line
    args: 'account.move.line'
  • partner Char
  • report_partner_id Many2one → report_open_items_partner
    comodel_name='report_open_items_partner' index=True ondelete='cascade'
Public methods (0)

No public methods.

New fields (9)
  • currency_id Many2one → res.currency
    args: 'res.currency'
  • final_amount_residual Float
    digits=(16, 2)
  • final_amount_residual_currency Float
    digits=(16, 2)
  • final_amount_total_due Float
    digits=(16, 2)
  • final_amount_total_due_currency Float
    digits=(16, 2)
  • move_line_ids One2many → report_open_items_move_line
    comodel_name='report_open_items_move_line' inverse_name='report_partner_id'
  • name Char
  • partner_id Many2one → res.partner
    index=True args: 'res.partner'
  • report_account_id Many2one → report_open_items_account
    comodel_name='report_open_items_account' index=True ondelete='cascade'
Public methods (0)

No public methods.

New fields (17)
  • account_ids One2many → report_trial_balance_account
    comodel_name='report_trial_balance_account' inverse_name='report_id'
  • company_id Many2one → res.company
    comodel_name='res.company'
  • date_from Date
  • date_to Date
  • filter_account_ids Many2many → account.account
    comodel_name='account.account'
  • filter_journal_ids Many2many → account.journal
    comodel_name='account.journal'
  • filter_partner_ids Many2many → res.partner
    comodel_name='res.partner'
  • foreign_currency Boolean
  • fy_start_date Date
  • general_ledger_id Many2one → report_general_ledger
    comodel_name='report_general_ledger'
  • hide_account_at_0 Boolean
  • hide_parent_hierarchy_level Boolean
    default=False args: 'Do not display parent levels'
  • hierarchy_on Selection
    default='computed' help='Computed Accounts: Use when the account group have codes\n that represent prefixes of the actual accounts.\n\n Child Accounts: Use when your account groups are hierarchical.\n\n No hierarchy: Use to display just the accounts, without any grouping.\n ' required=True string='Hierarchy On' args: [('computed', 'Computed Accounts'), ('relation', 'Child Accounts'), ('none', 'No hierarchy')]
  • limit_hierarchy_level Boolean
    args: 'Limit hierarchy levels'
  • only_posted_moves Boolean
  • show_hierarchy_level Integer
    default=1 args: 'Hierarchy Levels to display'
  • show_partner_details Boolean
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • compute_data_for_report(self)
    @api.multi
  • get_html(self, given_context=None)
    @api.model
  • print_report(self, report_type)
    @api.multi

New fields (20)
  • account_group_id Many2one → account.group
    index=True args: 'account.group'
  • account_id Many2one → account.account
    index=True args: 'account.account'
  • child_account_ids Char
    string='Child accounts'
  • code Char
  • compute_account_ids Many2many → account.account
    store=True string='Compute accounts' args: 'account.account'
  • credit Float
    digits=(16, 2)
  • currency_id Many2one → res.currency
    args: 'res.currency'
  • debit Float
    digits=(16, 2)
  • final_balance Float
    digits=(16, 2)
  • final_balance_foreign_currency Float
    digits=(16, 2)
  • hide_line Boolean
    compute='_compute_hide_line'
  • initial_balance Float
    digits=(16, 2)
  • initial_balance_foreign_currency Float
    digits=(16, 2)
  • level Integer
    default=1 index=True
  • name Char
  • parent_id Many2one → account.group
    index=True args: 'account.group'
  • partner_ids One2many → report_trial_balance_partner
    comodel_name='report_trial_balance_partner' inverse_name='report_account_id'
  • period_balance Float
    digits=(16, 2)
  • report_id Many2one → report_trial_balance
    comodel_name='report_trial_balance' index=True ondelete='cascade'
  • sequence Char
    default='1' index=True
Public methods (0)

No public methods.

New fields (11)
  • credit Float
    digits=(16, 2)
  • currency_id Many2one → res.currency
    args: 'res.currency'
  • debit Float
    digits=(16, 2)
  • final_balance Float
    digits=(16, 2)
  • final_balance_foreign_currency Float
    digits=(16, 2)
  • initial_balance Float
    digits=(16, 2)
  • initial_balance_foreign_currency Float
    digits=(16, 2)
  • name Char
  • partner_id Many2one → res.partner
    index=True args: 'res.partner'
  • period_balance Float
    digits=(16, 2)
  • report_account_id Many2one → report_trial_balance_account
    comodel_name='report_trial_balance_account' index=True ondelete='cascade'
Public methods (0)

No public methods.

New fields (6)
  • based_on Selection
    default='taxtags' required=True string='Based On' args: [('taxtags', 'Tax Tags'), ('taxgroups', 'Tax Groups')]
  • company_id Many2one → res.company
    comodel_name='res.company'
  • date_from Date
  • date_to Date
  • tax_detail Boolean
    args: 'Tax Detail'
  • taxtags_ids One2many → report_vat_report_taxtag
    comodel_name='report_vat_report_taxtag' inverse_name='report_id'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • compute_data_for_report(self)
    @api.multi
  • get_html(self, given_context=None)
    @api.model
  • print_report(self, report_type='qweb')
    @api.multi

New fields (6)
  • code Char
  • name Char
  • net Float
    digits=(16, 2)
  • report_tax_id Many2one → report_vat_report_taxtag
    comodel_name='report_vat_report_taxtag' index=True ondelete='cascade'
  • tax Float
    digits=(16, 2)
  • tax_id Many2one → account.tax
    index=True string='Tax ID' args: 'account.tax'
Public methods (0)

No public methods.

New fields (8)
  • code Char
  • name Char
  • net Float
    digits=(16, 2)
  • report_id Many2one → report_vat_report
    comodel_name='report_vat_report' index=True ondelete='cascade'
  • tax Float
    digits=(16, 2)
  • tax_ids One2many → report_vat_report_tax
    comodel_name='report_vat_report_tax' inverse_name='report_tax_id' string='Taxes'
  • taxgroup_id Many2one → account.tax.group
    index=True args: 'account.tax.group'
  • taxtag_id Many2one → account.account.tag
    index=True args: 'account.account.tag'
Public methods (0)

No public methods.

New fields (19)
  • account_ids Many2many → account.account
    comodel_name='account.account' string='Filter accounts'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=False string='Company'
  • date_from Date
    required=True
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    required=True
  • foreign_currency Boolean
    help='Display foreign currency for move lines, unless account currency is not setup through chart of accounts will display initial and final balance in that currency.' string='Show foreign currency'
  • fy_start_date Date
    compute='_compute_fy_start_date'
  • hide_account_at_0 Boolean
    default=True help='When this option is enabled, the trial balance will not display accounts that have initial balance = debit = credit = end balance = 0' string='Hide accounts at 0'
  • hide_parent_hierarchy_level Boolean
    default=False args: 'Do not display parent levels'
  • hierarchy_on Selection
    default='computed' help='Computed Accounts: Use when the account group have codes\n that represent prefixes of the actual accounts.\n\n Child Accounts: Use when your account groups are hierarchical.\n\n No hierarchy: Use to display just the accounts, without any grouping.\n ' required=True string='Hierarchy On' args: [('computed', 'Computed Accounts'), ('relation', 'Child Accounts'), ('none', 'No hierarchy')]
  • journal_ids Many2many → account.journal
    comodel_name='account.journal'
  • limit_hierarchy_level Boolean
    args: 'Limit hierarchy levels'
  • not_only_one_unaffected_earnings_account Boolean
    readonly=True string='Not only one unaffected earnings account'
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • show_hierarchy_level Integer
    default=1 args: 'Hierarchy Levels to display'
  • show_partner_details Boolean
  • target_move Selection
    default='all' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
Public methods (7)
  • button_export_html(self)
    @api.multi
  • button_export_pdf(self)
    @api.multi
  • button_export_xlsx(self)
    @api.multi
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')
    Handle date range change.
  • onchange_show_partner_details(self)
    @api.onchange('show_partner_details')
    Handle partners change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (6)
  • based_on Selection
    default='taxtags' required=True string='Based On' args: [('taxtags', 'Tax Tags'), ('taxgroups', 'Tax Groups')]
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=False string='Company'
  • date_from Date
    required=True args: 'Start Date'
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    required=True args: 'End Date'
  • tax_detail Boolean
    args: 'Detail Taxes'
Public methods (5)
  • button_export_html(self)
    @api.multi
  • button_export_pdf(self)
    @api.multi
  • button_export_xlsx(self)
    @api.multi
  • onchange_company_id(self)
    @api.onchange('company_id')
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')
    Handle date range change.
REPOSITORY
REPOSITORYOCA/account-financial-reporting
GIT
GIThttps://github.com/OCA/account-financial-reporting.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-financial-reporting/tree/11.0/account_financial_report
VERSION
VERSION 2.6.0
CATEGORY
CATEGORYReporting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp, initOS GmbH, Eficent, redCOR AG
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp, initOS GmbH, Eficent, redCOR AG
COMMITTERS
COMMITTERSStefan Rijnhart, Pedro M. Baeza, GitHub, mreficent, Andrea, Stéphane Bidoul (ACSONE), Jordi Ballester Alomar, cubells, Jordi Ballester, OCA Transbot, Denis Leemann, oca-travis, Weblate, OCA-git-bot, Lara Baggio, mpanarin, Iryna Vyshnevska, Isaac Gallart Bochons, rgarnau, Adrià Gil Sorribes, Vincent Van Rossem, hveficent, Eloi Cousinet
WEBSITE
WEBSITEhttps://odoo-community.org/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:24:00
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/reporting-engine:
    - report_xlsx
OCA/server-ux:
    - date_range
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - analytic
    - web_planner
    - portal
    - http_routing
    - account_invoicing
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES xlrd
xlsxwriter
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (53)
XML IDNameModelTypeStatus
account_financial_report.internal_layout account_financial_report.internal_layout ir.ui.view qweb New
account_financial_report.report_general_ledger_ending_cumul account_financial_report.report_general_ledger_ending_cumul ir.ui.view qweb New
account_financial_report.report_general_ledger_filters account_financial_report.report_general_ledger_filters ir.ui.view qweb New
account_financial_report.report_general_ledger_lines account_financial_report.report_general_ledger_lines ir.ui.view qweb New
account_financial_report.report_journal_all account_financial_report.report_journal_all ir.ui.view qweb New
account_financial_report.report_journal_all_taxes account_financial_report.report_journal_all_taxes ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal account_financial_report.report_journal_ledger_journal ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal_first_line account_financial_report.report_journal_ledger_journal_first_line ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal_table_header account_financial_report.report_journal_ledger_journal_table_header ir.ui.view qweb New
account_financial_report.report_journal_ledger_journal_taxes account_financial_report.report_journal_ledger_journal_taxes ir.ui.view qweb New
account_financial_report.report_journal_move account_financial_report.report_journal_move ir.ui.view qweb New
account_financial_report.report_journal_move_line account_financial_report.report_journal_move_line ir.ui.view qweb New
account_financial_report.report_open_items_base account_financial_report.report_open_items_base ir.ui.view qweb New
account_financial_report.report_open_items_ending_cumul account_financial_report.report_open_items_ending_cumul ir.ui.view qweb New
account_financial_report.report_open_items_filters account_financial_report.report_open_items_filters ir.ui.view qweb New
account_financial_report.report_open_items_lines account_financial_report.report_open_items_lines ir.ui.view qweb New
account_financial_report.report_open_items_qweb account_financial_report.report_open_items_qweb ir.ui.view qweb New
account_financial_report.report_trial_balance_account_footer account_financial_report.report_trial_balance_account_footer ir.ui.view qweb New
account_financial_report.report_trial_balance_base account_financial_report.report_trial_balance_base ir.ui.view qweb New
account_financial_report.report_trial_balance_filters account_financial_report.report_trial_balance_filters ir.ui.view qweb New
account_financial_report.report_trial_balance_line account_financial_report.report_trial_balance_line ir.ui.view qweb New
account_financial_report.report_trial_balance_lines_header account_financial_report.report_trial_balance_lines_header ir.ui.view qweb New
account_financial_report.report_trial_balance_qweb account_financial_report.report_trial_balance_qweb ir.ui.view qweb New
account_financial_report.report_vat_report_base account_financial_report.report_vat_report_base ir.ui.view qweb New
account_financial_report.report_vat_report_filters account_financial_report.report_vat_report_filters ir.ui.view qweb New
account_financial_report.report_vat_report_qweb account_financial_report.report_vat_report_qweb ir.ui.view qweb New
account_financial_report_assets_backend account_financial_report assets ir.ui.view qweb Inherits web.assets_backend
aged_partner_balance_wizard Aged Partner Balance aged.partner.balance.wizard form New
general_ledger_wizard General Ledger general.ledger.report.wizard form New
journal_ledger_wizard Journal Ledger journal.ledger.report.wizard form New
open_items_wizard Open Items open.items.report.wizard form New
report_aged_partner_balance report_aged_partner_balance ir.ui.view qweb New
report_aged_partner_balance_account_ending_cumul report_aged_partner_balance_account_ending_cumul ir.ui.view qweb New
report_aged_partner_balance_base report_aged_partner_balance_base ir.ui.view qweb New
report_aged_partner_balance_filters report_aged_partner_balance_filters ir.ui.view qweb New
report_aged_partner_balance_lines report_aged_partner_balance_lines ir.ui.view qweb New
report_aged_partner_balance_lines_header report_aged_partner_balance_lines_header ir.ui.view qweb New
report_aged_partner_balance_move_lines report_aged_partner_balance_move_lines ir.ui.view qweb New
report_aged_partner_balance_partner_ending_cumul report_aged_partner_balance_partner_ending_cumul ir.ui.view qweb New
report_aged_partner_balance_qweb report_aged_partner_balance_qweb ir.ui.view qweb New
report_buttons report_buttons ir.ui.view qweb New
report_general_ledger report_general_ledger ir.ui.view qweb New
report_general_ledger_base report_general_ledger_base ir.ui.view qweb New
report_general_ledger_qweb report_general_ledger_qweb ir.ui.view qweb New
report_journal_ledger report_journal_ledger ir.ui.view qweb New
report_journal_ledger_base report_journal_ledger_base ir.ui.view qweb New
report_journal_ledger_qweb report_journal_ledger_qweb ir.ui.view qweb New
report_open_items report_open_items ir.ui.view qweb New
report_trial_balance report_trial_balance ir.ui.view qweb New
report_vat_report report_vat_report ir.ui.view qweb New
trial_balance_wizard Trial Balance trial.balance.report.wizard form New
vat_report_wizard vat_report_wizard_view vat.report.wizard form New
view_account_specific_form account.account.form.inherit account.account field Inherits account.view_account_form
Models touched (47)

New fields (1)
  • centralized Boolean
    help='If flagged, no details will be displayed in the General Ledger report (the webkit one only), only centralized amounts per period.' args: 'Centralized'
Public methods (0)

No public methods.

New fields (4)
  • account_ids One2many → account.account
    comodel_name='account.account' inverse_name='group_id' string='Accounts'
  • compute_account_ids Many2many → account.account
    compute='_compute_group_accounts' store=True string='Accounts' args: 'account.account'
  • group_child_ids One2many → account.group
    comodel_name='account.group' inverse_name='parent_id' string='Child Groups'
  • level Integer
    compute='_compute_level' store=True string='Level'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • init(self)
    @api.model_cr
    The join between accounts_partners subquery and account_move_line can be heavy to compute on big databases. Join sample: JOIN account_move_line ml ON ap.account_id = ml.account_id AND ml.date < '2018-12-30' AND ap.partner_id = ml.partner_id AND ap.include_initial_balance = TRUE By adding the following index, performances are strongly increased. :return:

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (8)
  • account_ids Many2many → account.account
    comodel_name='account.account' string='Filter accounts'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=False string='Company'
  • date_at Date
    default=fields.Date.context_today required=True
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • show_move_line_details Boolean
  • target_move Selection
    default='all' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
Public methods (5)
  • button_export_html(self)
    @api.multi
  • button_export_pdf(self)
    @api.multi
  • button_export_xlsx(self)
    @api.multi
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (18)
  • account_ids Many2many → account.account
    comodel_name='account.account' string='Filter accounts'
  • account_journal_ids Many2many → account.journal
    comodel_name='account.journal' string='Filter journals'
  • analytic_tag_ids Many2many → account.analytic.tag
    comodel_name='account.analytic.tag' string='Filter accounts'
  • centralize Boolean
    default=True string='Activate centralization'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=False string='Company'
  • cost_center_ids Many2many → account.analytic.account
    comodel_name='account.analytic.account' string='Filter cost centers'
  • date_from Date
    default=<expr> required=True
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    default=fields.Date.context_today required=True
  • foreign_currency Boolean
    default=<expr> help='Display foreign currency for move lines, unless account currency is not setup through chart of accounts will display initial and final balance in that currency.' string='Show foreign currency'
  • fy_start_date Date
    compute='_compute_fy_start_date'
  • hide_account_at_0 Boolean
    help='Use this filter to hide an account or a partner with an ending balance at 0. If partners are filtered, debits and credits totals will not match the trial balance.' string='Hide account ending balance at 0'
  • not_only_one_unaffected_earnings_account Boolean
    readonly=True string='Not only one unaffected earnings account'
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' default=<expr> string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • show_analytic_tags Boolean
    string='Show analytic tags'
  • target_move Selection
    default='all' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
Public methods (7)
  • button_export_html(self)
    @api.multi
  • button_export_pdf(self)
    @api.multi
  • button_export_xlsx(self)
    @api.multi
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')
    Handle date range change.
  • onchange_partner_ids(self)
    @api.onchange('partner_ids')
    Handle partners change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (10)
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> ondelete='cascade' required=False string='Company'
  • date_from Date
    required=True string='Start date'
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    required=True string='End date'
  • foreign_currency Boolean
  • group_option Selection
    default='journal' required=True selection='_get_group_options' string='Group entries by'
  • journal_ids Many2many → account.journal
    comodel_name='account.journal' required=False string='Journals'
  • move_target Selection
    default='all' required=True selection='_get_move_targets'
  • sort_option Selection
    default='move_name' required=True selection='_get_sort_options' string='Sort entries by'
  • with_account_name Boolean
    default=False
Public methods (5)
  • button_export_html(self)
    @api.multi
  • button_export_pdf(self)
    @api.multi
  • button_export_xlsx(self)
    @api.multi
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')

New fields (9)
  • account_ids Many2many → account.account
    comodel_name='account.account' domain=[('reconcile', '=', True)] string='Filter accounts'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=False string='Company'
  • date_at Date
    default=fields.Date.context_today required=True
  • foreign_currency Boolean
    default=<expr> help='Display foreign currency for move lines, unless account currency is not setup through chart of accounts will display initial and final balance in that currency.' string='Show foreign currency'
  • hide_account_at_0 Boolean
    default=True help='Use this filter to hide an account or a partner with an ending balance at 0. If partners are filtered, debits and credits totals will not match the trial balance.' string='Hide account ending balance at 0'
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' default=<expr> string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • target_move Selection
    default='all' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
Public methods (5)
  • button_export_html(self)
    @api.multi
  • button_export_pdf(self)
    @api.multi
  • button_export_xlsx(self)
    @api.multi
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (0)

No new fields.

Public methods (2)
  • write_account_footer(self, report, account, label, field_name, string_format, amount_format, amount_is_percent)
    Specific function to write account footer for Aged Partner Balance
  • write_ending_balance(self, my_object)
    Specific function to write ending partner balance for Aged Partner Balance

New fields (0)

No new fields.

Public methods (2)
  • write_ending_balance(self, my_object)
    Specific function to write ending balance for General Ledger
  • write_initial_balance(self, my_object)
    Specific function to write initial balance for General Ledger

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • write_ending_balance(self, my_object, type_object)
    Specific function to write ending balance for Open Items

New fields (0)

No new fields.

Public methods (2)
  • write_account_footer(self, account, name_value)
    Specific function to write account footer for Trial Balance
  • write_line(self, line_object, type_object)
    Write a line on current line using all defined columns field name. Columns are defined with `_get_report_columns` method.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (7)
  • generate_xlsx_report(self, workbook, data, objects)
  • get_workbook_options(self)
  • write_array_header(self)
    Write array header on current line using all defined columns name. Columns are defined with `_get_report_columns` method.
  • write_array_title(self, title)
    Write array title on current line using all defined columns width. Columns are defined with `_get_report_columns` method.
  • write_ending_balance(self, my_object, name, label)
    Write a specific ending balance line on current line using defined columns field_final_balance name. Columns are defined with `_get_report_columns` method.
  • write_initial_balance(self, my_object, label)
    Write a specific initial balance line on current line using defined columns field_initial_balance name. Columns are defined with `_get_report_columns` method.
  • write_line(self, line_object)
    Write a line on current line using all defined columns field name. Columns are defined with `_get_report_columns` method.

New fields (8)
  • account_ids One2many → report_aged_partner_balance_account
    comodel_name='report_aged_partner_balance_account' inverse_name='report_id'
  • company_id Many2one → res.company
    comodel_name='res.company'
  • date_at Date
  • filter_account_ids Many2many → account.account
    comodel_name='account.account'
  • filter_partner_ids Many2many → res.partner
    comodel_name='res.partner'
  • only_posted_moves Boolean
  • open_items_id Many2one → report_open_items
    comodel_name='report_open_items'
  • show_move_line_details Boolean
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • compute_data_for_report(self)
    @api.multi
  • get_html(self, given_context=None)
    @api.model
  • print_report(self, report_type)
    @api.multi

New fields (18)
  • account_id Many2one → account.account
    index=True args: 'account.account'
  • code Char
  • cumul_age_120_days Float
    digits=(16, 2)
  • cumul_age_30_days Float
    digits=(16, 2)
  • cumul_age_60_days Float
    digits=(16, 2)
  • cumul_age_90_days Float
    digits=(16, 2)
  • cumul_amount_residual Float
    digits=(16, 2)
  • cumul_current Float
    digits=(16, 2)
  • cumul_older Float
    digits=(16, 2)
  • name Char
  • partner_ids One2many → report_aged_partner_balance_partner
    comodel_name='report_aged_partner_balance_partner' inverse_name='report_account_id'
  • percent_age_120_days Float
    digits=(16, 2)
  • percent_age_30_days Float
    digits=(16, 2)
  • percent_age_60_days Float
    digits=(16, 2)
  • percent_age_90_days Float
    digits=(16, 2)
  • percent_current Float
    digits=(16, 2)
  • percent_older Float
    digits=(16, 2)
  • report_id Many2one → report_aged_partner_balance
    comodel_name='report_aged_partner_balance' index=True ondelete='cascade'
Public methods (0)

No public methods.

New fields (9)
  • age_120_days Float
    digits=(16, 2)
  • age_30_days Float
    digits=(16, 2)
  • age_60_days Float
    digits=(16, 2)
  • age_90_days Float
    digits=(16, 2)
  • amount_residual Float
    digits=(16, 2)
  • current Float
    digits=(16, 2)
  • older Float
    digits=(16, 2)
  • partner Char
  • report_partner_id Many2one → report_aged_partner_balance_partner
    comodel_name='report_aged_partner_balance_partner' index=True ondelete='cascade'
Public methods (0)

No public methods.

New fields (16)
  • account Char
  • age_120_days Float
    digits=(16, 2)
  • age_30_days Float
    digits=(16, 2)
  • age_60_days Float
    digits=(16, 2)
  • age_90_days Float
    digits=(16, 2)
  • amount_residual Float
    digits=(16, 2)
  • current Float
    digits=(16, 2)
  • date Date
  • date_due Date
  • entry Char
  • journal Char
  • label Char
  • move_line_id Many2one → account.move.line
    args: 'account.move.line'
  • older Float
    digits=(16, 2)
  • partner Char
  • report_partner_id Many2one → report_aged_partner_balance_partner
    comodel_name='report_aged_partner_balance_partner' index=True ondelete='cascade'
Public methods (0)

No public methods.

New fields (5)
  • line_ids One2many → report_aged_partner_balance_line
    comodel_name='report_aged_partner_balance_line' inverse_name='report_partner_id'
  • move_line_ids One2many → report_aged_partner_balance_move_line
    comodel_name='report_aged_partner_balance_move_line' inverse_name='report_partner_id'
  • name Char
  • partner_id Many2one → res.partner
    index=True args: 'res.partner'
  • report_account_id Many2one → report_aged_partner_balance_account
    comodel_name='report_aged_partner_balance_account' index=True ondelete='cascade'
Public methods (0)

No public methods.

New fields (17)
  • account_ids One2many → report_general_ledger_account
    comodel_name='report_general_ledger_account' inverse_name='report_id'
  • centralize Boolean
  • company_id Many2one → res.company
    comodel_name='res.company'
  • date_from Date
  • date_to Date
  • filter_account_ids Many2many → account.account
    comodel_name='account.account'
  • filter_analytic_tag_ids Many2many → account.analytic.tag
    comodel_name='account.analytic.tag'
  • filter_cost_center_ids Many2many → account.analytic.account
    comodel_name='account.analytic.account'
  • filter_journal_ids Many2many → account.journal
    comodel_name='account.journal'
  • filter_partner_ids Many2many → res.partner
    comodel_name='res.partner'
  • foreign_currency Boolean
  • fy_start_date Date
  • hide_account_at_0 Boolean
  • only_posted_moves Boolean
  • show_analytic_tags Boolean
  • show_cost_center Boolean
    default=<expr>
  • unaffected_earnings_account Many2one → account.account
    comodel_name='account.account' compute='_compute_unaffected_earnings_account' store=True
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • compute_data_for_report(self, with_line_details=True, with_partners=True)
    @api.multi
  • get_html(self, given_context=None)
    @api.model
  • print_report(self, report_type)
    @api.multi

New fields (16)
  • account_id Many2one → account.account
    index=True args: 'account.account'
  • code Char
  • currency_id Many2one → res.currency
    args: 'res.currency'
  • final_balance Float
    digits=(16, 2)
  • final_balance_foreign_currency Float
    digits=(16, 2)
  • final_credit Float
    digits=(16, 2)
  • final_debit Float
    digits=(16, 2)
  • initial_balance Float
    digits=(16, 2)
  • initial_balance_foreign_currency Float
    digits=(16, 2)
  • initial_credit Float
    digits=(16, 2)
  • initial_debit Float
    digits=(16, 2)
  • is_partner_account Boolean
  • move_line_ids One2many → report_general_ledger_move_line
    comodel_name='report_general_ledger_move_line' inverse_name='report_account_id'
  • name Char
  • partner_ids One2many → report_general_ledger_partner
    comodel_name='report_general_ledger_partner' inverse_name='report_account_id'
  • report_id Many2one → report_general_ledger
    comodel_name='report_general_ledger' index=True ondelete='cascade'
Public methods (0)

No public methods.

New fields (18)
  • account Char
  • amount_currency Float
    digits=(16, 2)
  • cost_center Char
  • credit Float
    digits=(16, 2)
  • cumul_balance Float
    digits=(16, 2)
  • currency_id Many2one → res.currency
    args: 'res.currency'
  • date Date
  • debit Float
    digits=(16, 2)
  • entry Char
  • journal Char
  • label Char
  • matching_number Char
  • move_line_id Many2one → account.move.line
    args: 'account.move.line'
  • partner Char
  • report_account_id Many2one → report_general_ledger_account
    comodel_name='report_general_ledger_account' index=True ondelete='cascade'
  • report_partner_id Many2one → report_general_ledger_partner
    comodel_name='report_general_ledger_partner' index=True ondelete='cascade'
  • tags Char
  • taxes_description Char
Public methods (0)

No public methods.

New fields (13)
  • currency_id Many2one → res.currency
    args: 'res.currency'
  • final_balance Float
    digits=(16, 2)
  • final_balance_foreign_currency Float
    digits=(16, 2)
  • final_credit Float
    digits=(16, 2)
  • final_debit Float
    digits=(16, 2)
  • initial_balance Float
    digits=(16, 2)
  • initial_balance_foreign_currency Float
    digits=(16, 2)
  • initial_credit Float
    digits=(16, 2)
  • initial_debit Float
    digits=(16, 2)
  • move_line_ids One2many → report_general_ledger_move_line
    comodel_name='report_general_ledger_move_line' inverse_name='report_partner_id'
  • name Char
  • partner_id Many2one → res.partner
    index=True args: 'res.partner'
  • report_account_id Many2one → report_general_ledger_account
    comodel_name='report_general_ledger_account' index=True ondelete='cascade'
Public methods (0)

No public methods.

New fields (14)
  • company_id Many2one → res.company
    comodel_name='res.company' ondelete='cascade' required=True
  • date_from Date
    required=True
  • date_to Date
    required=True
  • foreign_currency Boolean
  • group_option Selection
    default='journal' required=True selection='_get_group_options'
  • journal_ids Many2many → account.journal
    comodel_name='account.journal' required=True
  • move_target Selection
    default='all' required=True selection='_get_move_targets'
  • report_journal_ledger_ids One2many → report_journal_ledger_journal
    comodel_name='report_journal_ledger_journal' inverse_name='report_id'
  • report_journal_ledger_tax_line_ids One2many → report_journal_ledger_journal_tax_line
    comodel_name='report_journal_ledger_journal_tax_line' inverse_name='report_id'
  • report_move_ids One2many → report_journal_ledger_move
    comodel_name='report_journal_ledger_move' inverse_name='report_id'
  • report_move_line_ids One2many → report_journal_ledger_move_line
    comodel_name='report_journal_ledger_move_line' inverse_name='report_id'
  • report_tax_line_ids One2many → report_journal_ledger_report_tax_line
    comodel_name='report_journal_ledger_report_tax_line' inverse_name='report_id'
  • sort_option Selection
    default='move_name' required=True selection='_get_sort_options'
  • with_account_name Boolean
Public methods (3)
  • compute_data_for_report(self)
    @api.multi
  • get_html(self, given_context=None)
    @api.model
  • print_report(self, report_type)
    @api.multi

New fields (10)
  • code Char
  • company_id Many2one → res.company
    comodel_name='res.company' ondelete='cascade' required=True
  • credit Float
    digits=DIGITS
  • currency_id Many2one → res.currency
    comodel_name='res.currency'
  • debit Float
    digits=DIGITS
  • journal_id Many2one → account.journal
    comodel_name='account.journal' ondelete='cascade' required=True
  • name Char
    required=True
  • report_id Many2one → report_journal_ledger
    comodel_name='report_journal_ledger' ondelete='cascade' required=True
  • report_move_ids One2many → report_journal_ledger_move
    comodel_name='report_journal_ledger_move' inverse_name='report_journal_ledger_id'
  • report_tax_line_ids One2many → report_journal_ledger_journal_tax_line
    comodel_name='report_journal_ledger_journal_tax_line' inverse_name='report_journal_ledger_id'
Public methods (0)

No public methods.

New fields (1)
  • report_journal_ledger_id Many2one → report_journal_ledger_journal
    comodel_name='report_journal_ledger_journal' ondelete='cascade' required=True
Public methods (0)

No public methods.

New fields (6)
  • company_id Many2one → res.company
    comodel_name='res.company' ondelete='cascade' required=True
  • move_id Many2one → account.move
    comodel_name='account.move' ondelete='cascade' required=True
  • name Char
  • report_id Many2one → report_journal_ledger
    comodel_name='report_journal_ledger' ondelete='cascade' required=True
  • report_journal_ledger_id Many2one → report_journal_ledger_journal
    comodel_name='report_journal_ledger_journal' ondelete='cascade' required=True
  • report_move_line_ids One2many → report_journal_ledger_move_line
    comodel_name='report_journal_ledger_move_line' inverse_name='report_move_id'
Public methods (0)

No public methods.

New fields (22)
  • account Char
  • account_code Char
  • account_id Many2one → account.account
    comodel_name='account.account'
  • account_type Char
  • amount_currency Monetary
    currency_field='currency_id'
  • company_currency_id Many2one → res.currency
    comodel_name='res.currency'
  • company_id Many2one → res.company
    comodel_name='res.company' ondelete='cascade' required=True
  • credit Float
    digits=DIGITS
  • currency_id Many2one → res.currency
    comodel_name='res.currency'
  • currency_name Char
  • date Date
  • debit Float
    digits=DIGITS
  • entry Char
  • label Char
  • move_line_id Many2one → account.move.line
    comodel_name='account.move.line' ondelete='cascade' required=True
  • partner Char
  • partner_id Many2one → res.partner
    comodel_name='res.partner'
  • report_id Many2one → report_journal_ledger
    comodel_name='report_journal_ledger' ondelete='cascade' required=True
  • report_journal_ledger_id Many2one → report_journal_ledger_journal
    comodel_name='report_journal_ledger_journal' ondelete='cascade' required=True
  • report_move_id Many2one → report_journal_ledger_move
    comodel_name='report_journal_ledger_move' ondelete='cascade' required=True
  • tax_id Many2one → account.tax
    comodel_name='account.tax'
  • taxes_description Char
Public methods (0)

No public methods.

New fields (10)
  • base_balance Float
    compute='_compute_base_balance' digits=DIGITS
  • base_credit Float
    digits=DIGITS
  • base_debit Float
    digits=DIGITS
  • report_id Many2one → report_journal_ledger
    comodel_name='report_journal_ledger' ondelete='cascade' required=True
  • tax_balance Float
    compute='_compute_tax_balance' digits=DIGITS
  • tax_code Char
  • tax_credit Float
    digits=DIGITS
  • tax_debit Float
    digits=DIGITS
  • tax_id Many2one → account.tax
    comodel_name='account.tax'
  • tax_name Char
Public methods (0)

No public methods.

New fields (8)
  • account_ids One2many → report_open_items_account
    comodel_name='report_open_items_account' inverse_name='report_id'
  • company_id Many2one → res.company
    comodel_name='res.company'
  • date_at Date
  • filter_account_ids Many2many → account.account
    comodel_name='account.account'
  • filter_partner_ids Many2many → res.partner
    comodel_name='res.partner'
  • foreign_currency Boolean
  • hide_account_at_0 Boolean
  • only_posted_moves Boolean
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • compute_data_for_report(self)
    @api.multi
  • get_html(self, given_context=None)
    @api.model
  • print_report(self, report_type)
    @api.multi

New fields (10)
  • account_id Many2one → account.account
    index=True args: 'account.account'
  • code Char
  • currency_id Many2one → res.currency
    args: 'res.currency'
  • final_amount_residual Float
    digits=(16, 2)
  • final_amount_residual_currency Float
    digits=(16, 2)
  • final_amount_total_due Float
    digits=(16, 2)
  • final_amount_total_due_currency Float
    digits=(16, 2)
  • name Char
  • partner_ids One2many → report_open_items_partner
    comodel_name='report_open_items_partner' inverse_name='report_account_id'
  • report_id Many2one → report_open_items
    comodel_name='report_open_items' index=True ondelete='cascade'
Public methods (0)

No public methods.

New fields (14)
  • account Char
  • amount_residual Float
    digits=(16, 2)
  • amount_residual_currency Float
    digits=(16, 2)
  • amount_total_due Float
    digits=(16, 2)
  • amount_total_due_currency Float
    digits=(16, 2)
  • currency_id Many2one → res.currency
    args: 'res.currency'
  • date Date
  • date_due Date
  • entry Char
  • journal Char
  • label Char
  • move_line_id Many2one → account.move.line
    args: 'account.move.line'
  • partner Char
  • report_partner_id Many2one → report_open_items_partner
    comodel_name='report_open_items_partner' index=True ondelete='cascade'
Public methods (0)

No public methods.

New fields (9)
  • currency_id Many2one → res.currency
    args: 'res.currency'
  • final_amount_residual Float
    digits=(16, 2)
  • final_amount_residual_currency Float
    digits=(16, 2)
  • final_amount_total_due Float
    digits=(16, 2)
  • final_amount_total_due_currency Float
    digits=(16, 2)
  • move_line_ids One2many → report_open_items_move_line
    comodel_name='report_open_items_move_line' inverse_name='report_partner_id'
  • name Char
  • partner_id Many2one → res.partner
    index=True args: 'res.partner'
  • report_account_id Many2one → report_open_items_account
    comodel_name='report_open_items_account' index=True ondelete='cascade'
Public methods (0)

No public methods.

New fields (17)
  • account_ids One2many → report_trial_balance_account
    comodel_name='report_trial_balance_account' inverse_name='report_id'
  • company_id Many2one → res.company
    comodel_name='res.company'
  • date_from Date
  • date_to Date
  • filter_account_ids Many2many → account.account
    comodel_name='account.account'
  • filter_journal_ids Many2many → account.journal
    comodel_name='account.journal'
  • filter_partner_ids Many2many → res.partner
    comodel_name='res.partner'
  • foreign_currency Boolean
  • fy_start_date Date
  • general_ledger_id Many2one → report_general_ledger
    comodel_name='report_general_ledger'
  • hide_account_at_0 Boolean
  • hide_parent_hierarchy_level Boolean
    default=False args: 'Do not display parent levels'
  • hierarchy_on Selection
    default='computed' help='Computed Accounts: Use when the account group have codes\n that represent prefixes of the actual accounts.\n\n Child Accounts: Use when your account groups are hierarchical.\n\n No hierarchy: Use to display just the accounts, without any grouping.\n ' required=True string='Hierarchy On' args: [('computed', 'Computed Accounts'), ('relation', 'Child Accounts'), ('none', 'No hierarchy')]
  • limit_hierarchy_level Boolean
    args: 'Limit hierarchy levels'
  • only_posted_moves Boolean
  • show_hierarchy_level Integer
    default=1 args: 'Hierarchy Levels to display'
  • show_partner_details Boolean
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • compute_data_for_report(self)
    @api.multi
  • get_html(self, given_context=None)
    @api.model
  • print_report(self, report_type)
    @api.multi

New fields (20)
  • account_group_id Many2one → account.group
    index=True args: 'account.group'
  • account_id Many2one → account.account
    index=True args: 'account.account'
  • child_account_ids Char
    string='Accounts'
  • code Char
  • compute_account_ids Many2many → account.account
    store=True string='Accounts' args: 'account.account'
  • credit Float
    digits=(16, 2)
  • currency_id Many2one → res.currency
    args: 'res.currency'
  • debit Float
    digits=(16, 2)
  • final_balance Float
    digits=(16, 2)
  • final_balance_foreign_currency Float
    digits=(16, 2)
  • hide_line Boolean
    compute='_compute_hide_line'
  • initial_balance Float
    digits=(16, 2)
  • initial_balance_foreign_currency Float
    digits=(16, 2)
  • level Integer
    default=1 index=True
  • name Char
  • parent_id Many2one → account.group
    index=True args: 'account.group'
  • partner_ids One2many → report_trial_balance_partner
    comodel_name='report_trial_balance_partner' inverse_name='report_account_id'
  • period_balance Float
    digits=(16, 2)
  • report_id Many2one → report_trial_balance
    comodel_name='report_trial_balance' index=True ondelete='cascade'
  • sequence Integer
    default=1 index=True
Public methods (0)

No public methods.

New fields (11)
  • credit Float
    digits=(16, 2)
  • currency_id Many2one → res.currency
    args: 'res.currency'
  • debit Float
    digits=(16, 2)
  • final_balance Float
    digits=(16, 2)
  • final_balance_foreign_currency Float
    digits=(16, 2)
  • initial_balance Float
    digits=(16, 2)
  • initial_balance_foreign_currency Float
    digits=(16, 2)
  • name Char
  • partner_id Many2one → res.partner
    index=True args: 'res.partner'
  • period_balance Float
    digits=(16, 2)
  • report_account_id Many2one → report_trial_balance_account
    comodel_name='report_trial_balance_account' index=True ondelete='cascade'
Public methods (0)

No public methods.

New fields (6)
  • based_on Selection
    default='taxtags' required=True string='Based On' args: [('taxtags', 'Tax Tags'), ('taxgroups', 'Tax Groups')]
  • company_id Many2one → res.company
    comodel_name='res.company'
  • date_from Date
  • date_to Date
  • tax_detail Boolean
    args: 'Tax Detail'
  • taxtags_ids One2many → report_vat_report_taxtag
    comodel_name='report_vat_report_taxtag' inverse_name='report_id'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • compute_data_for_report(self)
    @api.multi
  • get_html(self, given_context=None)
    @api.model
  • print_report(self, report_type='qweb')
    @api.multi

New fields (6)
  • code Char
  • name Char
  • net Float
    digits=(16, 2)
  • report_tax_id Many2one → report_vat_report_taxtag
    comodel_name='report_vat_report_taxtag' index=True ondelete='cascade'
  • tax Float
    digits=(16, 2)
  • tax_id Many2one → account.tax
    index=True args: 'account.tax'
Public methods (0)

No public methods.

New fields (8)
  • code Char
  • name Char
  • net Float
    digits=(16, 2)
  • report_id Many2one → report_vat_report
    comodel_name='report_vat_report' index=True ondelete='cascade'
  • tax Float
    digits=(16, 2)
  • tax_ids One2many → report_vat_report_tax
    comodel_name='report_vat_report_tax' inverse_name='report_tax_id'
  • taxgroup_id Many2one → account.tax.group
    index=True args: 'account.tax.group'
  • taxtag_id Many2one → account.account.tag
    index=True args: 'account.account.tag'
Public methods (0)

No public methods.

New fields (19)
  • account_ids Many2many → account.account
    comodel_name='account.account' string='Filter accounts'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=False string='Company'
  • date_from Date
    required=True
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    required=True
  • foreign_currency Boolean
    help='Display foreign currency for move lines, unless account currency is not setup through chart of accounts will display initial and final balance in that currency.' string='Show foreign currency'
  • fy_start_date Date
    compute='_compute_fy_start_date'
  • hide_account_at_0 Boolean
    default=True help='When this option is enabled, the trial balance will not display accounts that have initial balance = debit = credit = end balance = 0' string='Hide accounts at 0'
  • hide_parent_hierarchy_level Boolean
    default=False args: 'Do not display parent levels'
  • hierarchy_on Selection
    default='computed' help='Computed Accounts: Use when the account group have codes\n that represent prefixes of the actual accounts.\n\n Child Accounts: Use when your account groups are hierarchical.\n\n No hierarchy: Use to display just the accounts, without any grouping.\n ' required=True string='Hierarchy On' args: [('computed', 'Computed Accounts'), ('relation', 'Child Accounts'), ('none', 'No hierarchy')]
  • journal_ids Many2many → account.journal
    comodel_name='account.journal'
  • limit_hierarchy_level Boolean
    args: 'Limit hierarchy levels'
  • not_only_one_unaffected_earnings_account Boolean
    readonly=True string='Not only one unaffected earnings account'
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' string='Filter partners'
  • payable_accounts_only Boolean
  • receivable_accounts_only Boolean
  • show_hierarchy_level Integer
    default=1 args: 'Hierarchy Levels to display'
  • show_partner_details Boolean
  • target_move Selection
    default='all' required=True string='Target Moves' args: [('posted', 'All Posted Entries'), ('all', 'All Entries')]
Public methods (7)
  • button_export_html(self)
    @api.multi
  • button_export_pdf(self)
    @api.multi
  • button_export_xlsx(self)
    @api.multi
  • onchange_company_id(self)
    @api.onchange('company_id')
    Handle company change.
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')
    Handle date range change.
  • onchange_show_partner_details(self)
    @api.onchange('show_partner_details')
    Handle partners change.
  • onchange_type_accounts_only(self)
    @api.onchange('receivable_accounts_only', 'payable_accounts_only')
    Handle receivable/payable accounts only change.

New fields (6)
  • based_on Selection
    default='taxtags' required=True string='Based On' args: [('taxtags', 'Tax Tags'), ('taxgroups', 'Tax Groups')]
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=False string='Company'
  • date_from Date
    required=True args: 'Start Date'
  • date_range_id Many2one → date.range
    comodel_name='date.range' string='Date range'
  • date_to Date
    required=True args: 'End Date'
  • tax_detail Boolean
    args: 'Detail Taxes'
Public methods (5)
  • button_export_html(self)
    @api.multi
  • button_export_pdf(self)
    @api.multi
  • button_export_xlsx(self)
    @api.multi
  • onchange_company_id(self)
    @api.onchange('company_id')
  • onchange_date_range_id(self)
    @api.onchange('date_range_id')
    Handle date range change.
REPOSITORY
REPOSITORYOCA/account-financial-reporting
GIT
GIThttps://github.com/OCA/account-financial-reporting.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-financial-reporting/tree/8.0/account_financial_report
VERSION
VERSION 2.0.1
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEGPL-3 or any later version
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Vauxoo
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Vauxoo
COMMITTERS
COMMITTERSStéphane Bidoul, Alexandre Fayolle, Holger Brunn, Gelu
WEBSITE
WEBSITEhttp://www.vauxoo.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:25
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - account
    - base_setup
    - 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
Multiporpuse Accounting report generator.
=========================================

From the wizard you will be asked to provide information needed to create your
report.

Not only you can set the option within the wizard you can create your own
Customized Account Financial Reports, in here, you will be able to create
Templates for generating Two types of Reports: Balance Sheets and Income
Statements, incluiding Analytic Ledgers. Besides, you can select within a set
of choices to get better detailed report, be it that you ask it by one or
several periods, by months (12 Months + YTD), or by quarters (4QRT's + YTD).
Even you can get your reports in currencies other than the one set on your
company.

In the [ Account's Sign on Reports ] Section in the Company will be able to
set the sign conventions for the Accounts, so that you will be able to see in
positives Values in your reports for those accounts with Accreditable nature
where appropriate

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
account_financial_report_tree Account Financial Report (Template) afr tree New
account_financial_report_view Account Financial Report (Template) afr form New
view_company_credit_account_form res.company.form.inherit res.company notebook Inherits base.view_company_form
wizard_report_view Account Financial Report (Template) wizard.report form New
Models touched (2)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (7)
  • onchange_afr_id(self, cr, uid, ids, afr_id, context=None)
  • onchange_analytic_ledger(self, cr, uid, ids, company_id, analytic_ledger, context=None)
  • onchange_columns(self, cr, uid, ids, columns, fiscalyear, periods, context=None)
  • onchange_company_id(self, cr, uid, ids, company_id, context=None)
  • onchange_inf_type(self, cr, uid, ids, inf_type, context=None)
  • period_span(self, cr, uid, ids, fy_id, context=None)
  • print_report(self, cr, uid, ids, data, context=None)
REPOSITORY
REPOSITORYOCA/account-financial-reporting
GIT
GIThttps://github.com/OCA/account-financial-reporting.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-financial-reporting/tree/7.0/account_financial_report
VERSION
VERSION 2.0
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Vauxoo
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Vauxoo
COMMITTERS
COMMITTERSNhomar Hernandez, Guewen Baconnier, Alexandre Fayolle, Leonardo Pistone, Yanina Aular, Pedro M. Baeza, Humberto Arocha, Rudolf Schnapka, Marc Cassuto, Jorge Angel Naranjo Rogel, laetitia.gangloff@acsone.eu, Luis Escobar, Fernando.rangel
WEBSITE
WEBSITEhttp://www.vauxoo.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:07:15
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - account
    - base_setup
    - 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
Multiporpuse Accounting report generator.
=========================================

From the wizard you will be asked to provide information needed to create your
report.

Not only you can set the option within the wizard you can create your own
Customized Account Financial Reports, in here, you will be able to create
Templates for generating Two types of Reports: Balance Sheets and Income
Statements, incluiding Analytic Ledgers. Besides, you can select within a set
of choices to get better detailed report, be it that you ask it by one or
several periods, by months (12 Months + YTD), or by quarters (4QRT's + YTD).
Even you can get your reports in currencies other than the one set on your
company.

In the [ Account's Sign on Reports ] Section in the Company will be able to
set the sign conventions for the Accounts, so that you will be able to see in
positives Values in your reports for those accounts with Accreditable nature
where appropriate

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
account_financial_report_tree Account Financial Report (Template) afr tree New
account_financial_report_view Account Financial Report (Template) afr form New
view_company_credit_account_form res.company.form.inherit res.company notebook Inherits base.view_company_form
wizard_report_view Account Financial Report (Template) wizard.report form New
Models touched (1)

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/account-financial-reporting
GIT
GIThttps://github.com/OCA/account-financial-reporting.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-financial-reporting/tree/6.1/account_financial_report
VERSION
VERSION 2.0
CATEGORY
CATEGORYLocalisation/Accounting
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSVauxoo
MAINTAINERS
MAINTAINERSVauxoo
COMMITTERS
COMMITTERS
WEBSITE
WEBSITEhttp://www.vauxoo.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:04:06
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - account
    - base_setup
    - 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
This modules is a multiporpuse report generator.

From the wizard you will be asked to provide information needed to create your report.

Not only you can set the option within the wizard you can create your own Customized Account Financial Reports, in here, you will be able to create Templates for generating Two types of Reports: Balance Sheets and Income Statements, incluiding Analytic Ledgers. Besides, you can select within a set of choices to get better detailed report, be it that you ask it by one or several periods, by months (12 Months + YTD), or by quarters (4QRT's + YTD). Even you can get your reports in currencies other than the one set on your company.

In the [ Account's Sign on Reports ] Section in the Company will be able to set the sign conventions for the Accounts, so that you will be able to see in positives Values in your reports for those accounts with Accreditable nature where appropriate

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
account_financial_report_tree Account Financial Report (Template) afr tree New
account_financial_report_view Account Financial Report (Template) afr form New
view_account_search_padre account.account.search.padre account.account xpath Inherits account.view_account_search
view_company_credit_account_form res.company.form.inherit res.company notebook Inherits base.view_company_form
wizard_report_view Account Financial Report (Template) wizard.report form New
Models touched (0)

No models found for this module.