Bank Account Reconciliation

account_banking_reconciliation
REPOSITORY
REPOSITORYOCA/account-reconcile
GIT
GIThttps://github.com/OCA/account-reconcile.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-reconcile/tree/12.0/account_banking_reconciliation
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYAccounting and Financial Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Open Source Integrators, NovaPoint Group LLC
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Open Source Integrators, NovaPoint Group LLC
COMMITTERS
COMMITTERSOCA Transbot, Miquel Raïch, oca-travis, Weblate, OCA-git-bot, Murtuza Saleh
WEBSITE
WEBSITEhttps://github.com/OCA/account-reconcile
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:24
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account_voucher
    - account
    - base_setup
    - base
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - http_routing
    - digest
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
report_bank_statement_detail report_bank_statement_detail ir.ui.view qweb New
report_bank_statement_detail_doc report_bank_statement_detail_doc ir.ui.view qweb New
report_bank_statement_summary report_bank_statement_summary ir.ui.view qweb New
report_bank_statement_summary_doc report_bank_statement_summary_doc ir.ui.view qweb New
view_account_move_line_bank_acc_rec_statement_id account.move.line account.move.line field Inherits account.view_account_move_line_filter
view_account_move_line_bank_acc_rec_statement_id_form account.move.line.form account.move.line field Inherits account.view_move_line_form
view_bank_acc_rec_statement_filter bank.acc.rec.statement.select bank.acc.rec.statement search New
view_bank_acc_rec_statement_form bank.acc.rec.statement.form bank.acc.rec.statement form New
view_bank_acc_rec_statement_tree bank.acc.rec.statement.tree bank.acc.rec.statement tree New
Models touched (3)

New fields (3)
  • bank_acc_rec_statement_id Many2one → bank.acc.rec.statement
    help='The Bank Acc Rec Statement linked with the journal item' string='Bank Acc Rec Statement' args: 'bank.acc.rec.statement'
  • cleared_bank_account Boolean
    help='Check if the transaction has cleared from the bank' string='Cleared? '
  • draft_assigned_to_statement Boolean
    help='Check if the move line is assigned to statement lines' string='Assigned to Statement? '
Public methods (0)

No public methods.

New fields (32)
  • account_id Many2one → account.account
    domain="[('company_id', '=', company_id)]" help='The Bank/Gl Account that is being reconciled.' required=True states={'done': [('readonly', True)]} args: 'account.account', 'Account'
  • cleared_balance Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total Sum of the Deposit Amount Cleared – Total Sum of Checks, Withdrawals, Debits, and Service Charges Amount Cleared' string='Cleared Balance'
  • cleared_balance_cur Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total Sum of the Deposit Amount Cleared – Total Sum of Checks, Withdrawals, Debits, and Service Charges Amount Cleared' string='Cleared Balance (Cur)'
  • company_id Many2one → res.company
    default=get_default_company_id help='The Company for which the deposit ticket is made to' readonly=True required=True args: 'res.company', 'Company'
  • credit_move_line_ids One2many → bank.acc.rec.statement.line
    copy=False domain=[('type', '=', 'cr')] states={'done': [('readonly', True)]} args: 'bank.acc.rec.statement.line', 'statement_id', 'Credits'
  • debit_move_line_ids One2many → bank.acc.rec.statement.line
    copy=False domain=[('type', '=', 'dr')] states={'done': [('readonly', True)]} args: 'bank.acc.rec.statement.line', 'statement_id', 'Debits'
  • difference Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='(Ending Balance – Beginning Balance) - Cleared Balance.' string='Difference'
  • difference_cur Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='(Ending Balance – Beginning Balance) - Cleared Balance.' string='Difference (Cur)'
  • ending_balance Float
    digits=dp.get_precision('Account') help='The Ending Balance on your bank statement.' required=True states={'done': [('readonly', True)]} args: 'Ending Balance'
  • ending_date Date
    default=time.strftime('%Y-%m-%d') help='The ending date of your bank statement.' required=True states={'done': [('readonly', True)]} args: 'Ending Date'
  • last_ending_date Date
    help='The previous statement date of your bank statement.' args: 'Last Stmt Date'
  • name Char
    help='This is a unique name identifying the statement (e.g. Bank X January 2012).' required=True size=64 states={'done': [('readonly', True)]} args: 'Name'
  • notes Text
    args: 'Notes'
  • starting_balance Float
    digits=dp.get_precision('Account') help='The Starting Balance on your bank statement.' required=True states={'done': [('readonly', True)]} args: 'Starting Balance'
  • state Selection
    default='draft' index=True readonly=True args: [('draft', 'Draft'), ('to_be_reviewed', 'Ready for Review'), ('done', 'Done'), ('cancel', 'Cancelled')], 'State'
  • sum_of_credits Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total SUM of Amts of lines with Cleared = True' string='Checks, Withdrawals, Debits, and Service Charges Amount' type='float'
  • sum_of_credits_cur Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total SUM of Amts of lines with Cleared = True' string='Checks, Withdrawals, Debits, and Service Charges Amount (Cur)'
  • sum_of_credits_lines Integer
    compute='_compute_get_balance' help='Total of number of lines with Cleared = True' string='Checks, Withdrawals,\n Debits, and Service Charges # of\n Items'
  • sum_of_debits Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total SUM of Amts of lines with Cleared = True' string='Deposits, Credits, and Interest Amount'
  • sum_of_debits_cur Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total SUM of Amts of lines with Cleared = True' string='Deposits, Credits, and Interest Amount (Cur)'
  • sum_of_debits_lines Integer
    compute='_compute_get_balance' help='Total of number of lines with Cleared = True' string='Deposits, Credits, and\n Interest # of Items'
  • sum_of_ucredits Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total SUM of Amts of lines with Cleared = False' string='Uncleared - Checks, Withdrawals, Debits, and Service Charges Amount'
  • sum_of_ucredits_cur Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total SUM of Amts of lines with Cleared = False' string='Uncleared - Checks, Withdrawals, Debits, and Service Charges Amount (Cur)'
  • sum_of_ucredits_lines Integer
    compute='_compute_get_balance' help='Total of number of lines with Cleared = False' string='Uncleared - Checks, Withdrawals, Debits, and Service Charges # of Items'
  • sum_of_udebits Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total SUM of Amts of lines with Cleared = False' string='Uncleared - Deposits, Credits, and Interest Amount'
  • sum_of_udebits_cur Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total SUM of Amts of lines with Cleared = False' string='Uncleared - Deposits, Credits, and Interest Amount (Cur)'
  • sum_of_udebits_lines Integer
    compute='_compute_get_balance' help='Total of number of lines with Cleared = False' string='Uncleared - Deposits,\n Credits, and Interest # of Items'
  • suppress_ending_date_filter Boolean
    help='If this is checked then the Statement End Date filter on the transactions below will not occur. All transactions would come over.' args: 'Remove Ending Date Filter'
  • uncleared_balance Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total Sum of the Deposit Amount Uncleared – Total Sum of Checks, Withdrawals, Debits, and Service Charges Amount Uncleared' string='Uncleared Balance'
  • uncleared_balance_cur Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total Sum of the Deposit Amount Uncleared – Total Sum of Checks, Withdrawals, Debits, and Service Charges Amount Uncleared' string='Unleared Balance (Cur)'
  • verified_by_user_id Many2one → res.users
    copy=False help='Entered automatically by the “last user” who saved it. System generated.' states={'done': [('readonly', True)]} args: 'res.users', 'Verified By'
  • verified_date Date
    copy=False help='Date in which Deposit Ticket was verified.' states={'done': [('readonly', True)]} args: 'Verified Date'
Public methods (15)
  • action_cancel(self)
    @api.multi
    Cancel the the statement.
  • action_cancel_draft(self)
    @api.multi
    Reset the statement to draft and perform resetting operations.
  • action_process(self)
    @api.multi
    Set the account move lines as 'Cleared' and Assign 'Bank Acc Rec Statement ID' for the statement lines which are marked as 'Cleared'.
  • action_review(self)
    @api.multi
    Change the status of statement from 'draft' to 'to_be_reviewed'.
  • action_select_all(self)
    @api.multi
    Mark all the statement lines as 'Cleared'.
  • action_unselect_all(self)
    @api.multi
    Reset 'Cleared' in all the statement lines.
  • check_difference_balance(self)
    @api.multi
  • check_group(self)
    @api.multi
    Check if following security constraints are implemented for groups: Bank Statement Preparer– they can create, view and delete any of the Bank Statements provided the Bank Statement is not in the DONE state, or the Ready for Review state. Bank Statement Verifier – they can create, view, edit, and delete any of the Bank Statements information at any time. NOTE: DONE Bank Statements are only allowed to be deleted by a Bank Statement Verifier.
  • copy(self, default=None)
    @api.multi
  • get_default_company_id(self)
  • get_starting_balance(self, account_id, ending_date)
    @api.multi
  • onchange_account_id(self)
    @api.onchange('account_id', 'ending_date', 'suppress_ending_date_filter')
  • refresh_record(self)
    @api.multi
  • unlink(self)
    @api.multi
    Check if the user is allowed to perform the action
  • write(self, vals)
    @api.multi

New fields (12)
  • amount Float
    digits=dp.get_precision('Account') help="Derived from the 'debit' amount from related Journal Item." args: 'Amount'
  • amountcur Float
    digits=dp.get_precision('Account') help="Derived from the 'amount currency' amount from related Journal Item." args: 'Amount in Currency'
  • cleared_bank_account Boolean
    help='Check if the transaction has cleared from the bank' args: 'Cleared? '
  • currency_id Many2one → res.currency
    help='The optional other currency if it is a multi-currency entry.' args: 'res.currency', 'Currency'
  • date Date
    help='Derived from related Journal Item.' required=True args: 'Date'
  • move_line_id Many2one → account.move.line
    help='Related Journal Item.' args: 'account.move.line', 'Journal Item'
  • name Char
    help='Derived from the related Journal Item.' required=True size=64 args: 'Name'
  • partner_id Many2one → res.partner
    help='Derived from related Journal Item.' string='Partner' args: 'res.partner'
  • ref Char
    help='Derived from related Journal Item.' size=64 args: 'Reference'
  • research_required Boolean
    help='Check if the transaction should be researched by Accounting personal' args: 'Research Required? '
  • statement_id Many2one → bank.acc.rec.statement
    ondelete='cascade' required=True args: 'bank.acc.rec.statement', 'Statement'
  • type Selection
    args: [('dr', 'Debit'), ('cr', 'Credit')], 'Cr/Dr'
Public methods (2)
  • create(self, vals)
    @api.model
  • unlink(self)
    @api.multi
REPOSITORY
REPOSITORYOCA/account-reconcile
GIT
GIThttps://github.com/OCA/account-reconcile.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-reconcile/tree/11.0/account_banking_reconciliation
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYAccounting and Financial Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Open Source Integrators, NovaPoint Group LLC
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Open Source Integrators, NovaPoint Group LLC
COMMITTERS
COMMITTERSoca-travis, OCA-git-bot, Murtuza Saleh
WEBSITE
WEBSITEhttps://github.com/OCA/account-reconcile
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:24:01
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account_invoicing
    - account
    - base_setup
    - base
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - analytic
    - web_planner
    - portal
    - http_routing
    - account_voucher
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
report_bank_statement_detail report_bank_statement_detail ir.ui.view qweb New
report_bank_statement_detail_doc report_bank_statement_detail_doc ir.ui.view qweb New
report_bank_statement_summary report_bank_statement_summary ir.ui.view qweb New
report_bank_statement_summary_doc report_bank_statement_summary_doc ir.ui.view qweb New
view_account_move_line_bank_acc_rec_statement_id account.move.line account.move.line field Inherits account.view_account_move_line_filter
view_account_move_line_bank_acc_rec_statement_id_form account.move.line.form account.move.line field Inherits account.view_move_line_form
view_bank_acc_rec_statement_filter bank.acc.rec.statement.select bank.acc.rec.statement search New
view_bank_acc_rec_statement_form bank.acc.rec.statement.form bank.acc.rec.statement form New
view_bank_acc_rec_statement_tree bank.acc.rec.statement.tree bank.acc.rec.statement tree New
Models touched (3)

New fields (3)
  • bank_acc_rec_statement_id Many2one → bank.acc.rec.statement
    help='The Bank Acc Rec Statement linked with the journal item' string='Bank Acc Rec Statement' args: 'bank.acc.rec.statement'
  • cleared_bank_account Boolean
    help='Check if the transaction has cleared from the bank' string='Cleared? '
  • draft_assigned_to_statement Boolean
    help='Check if the move line is assigned to statement lines' string='Assigned to Statement? '
Public methods (0)

No public methods.

New fields (32)
  • account_id Many2one → account.account
    domain="[('company_id', '=', company_id)]" help='The Bank/Gl Account that is being reconciled.' required=True states={'done': [('readonly', True)]} args: 'account.account', 'Account'
  • cleared_balance Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total Sum of the Deposit Amount Cleared – Total Sum of Checks, Withdrawals, Debits, and Service Charges Amount Cleared' string='Cleared Balance'
  • cleared_balance_cur Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total Sum of the Deposit Amount Cleared – Total Sum of Checks, Withdrawals, Debits, and Service Charges Amount Cleared' string='Cleared Balance (Cur)'
  • company_id Many2one → res.company
    default=get_default_company_id help='The Company for which the deposit ticket is made to' readonly=True required=True args: 'res.company', 'Company'
  • credit_move_line_ids One2many → bank.acc.rec.statement.line
    copy=False domain=[('type', '=', 'cr')] states={'done': [('readonly', True)]} args: 'bank.acc.rec.statement.line', 'statement_id', 'Credits'
  • debit_move_line_ids One2many → bank.acc.rec.statement.line
    copy=False domain=[('type', '=', 'dr')] states={'done': [('readonly', True)]} args: 'bank.acc.rec.statement.line', 'statement_id', 'Debits'
  • difference Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='(Ending Balance – Beginning Balance) - Cleared Balance.' string='Difference'
  • difference_cur Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='(Ending Balance – Beginning Balance) - Cleared Balance.' string='Difference (Cur)'
  • ending_balance Float
    digits=dp.get_precision('Account') help='The Ending Balance on your bank statement.' required=True states={'done': [('readonly', True)]} args: 'Ending Balance'
  • ending_date Date
    default=time.strftime('%Y-%m-%d') help='The ending date of your bank statement.' required=True states={'done': [('readonly', True)]} args: 'Ending Date'
  • last_ending_date Date
    help='The previous statement date of your bank statement.' args: 'Last Stmt Date'
  • name Char
    help='This is a unique name identifying the statement (e.g. Bank X January 2012).' required=True size=64 states={'done': [('readonly', True)]} args: 'Name'
  • notes Text
    args: 'Notes'
  • starting_balance Float
    digits=dp.get_precision('Account') help='The Starting Balance on your bank statement.' required=True states={'done': [('readonly', True)]} args: 'Starting Balance'
  • state Selection
    default='draft' index=True readonly=True args: [('draft', 'Draft'), ('to_be_reviewed', 'Ready for Review'), ('done', 'Done'), ('cancel', 'Cancelled')], 'State'
  • sum_of_credits Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total SUM of Amts of lines with Cleared = True' string='Checks, Withdrawals, Debits, and Service Charges Amount' type='float'
  • sum_of_credits_cur Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total SUM of Amts of lines with Cleared = True' string='Checks, Withdrawals, Debits, and Service Charges Amount (Cur)'
  • sum_of_credits_lines Integer
    compute='_compute_get_balance' help='Total of number of lines with Cleared = True' string='Checks, Withdrawals,\n Debits, and Service Charges # of\n Items'
  • sum_of_debits Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total SUM of Amts of lines with Cleared = True' string='Deposits, Credits, and Interest Amount'
  • sum_of_debits_cur Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total SUM of Amts of lines with Cleared = True' string='Deposits, Credits, and Interest Amount (Cur)'
  • sum_of_debits_lines Integer
    compute='_compute_get_balance' help='Total of number of lines with Cleared = True' string='Deposits, Credits, and\n Interest # of Items'
  • sum_of_ucredits Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total SUM of Amts of lines with Cleared = False' string='Uncleared - Checks, Withdrawals, Debits, and Service Charges Amount'
  • sum_of_ucredits_cur Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total SUM of Amts of lines with Cleared = False' string='Uncleared - Checks, Withdrawals, Debits, and Service Charges Amount (Cur)'
  • sum_of_ucredits_lines Integer
    compute='_compute_get_balance' help='Total of number of lines with Cleared = False' string='Uncleared - Checks, Withdrawals, Debits, and Service Charges # of Items'
  • sum_of_udebits Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total SUM of Amts of lines with Cleared = False' string='Uncleared - Deposits, Credits, and Interest Amount'
  • sum_of_udebits_cur Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total SUM of Amts of lines with Cleared = False' string='Uncleared - Deposits, Credits, and Interest Amount (Cur)'
  • sum_of_udebits_lines Integer
    compute='_compute_get_balance' help='Total of number of lines with Cleared = False' string='Uncleared - Deposits,\n Credits, and Interest # of Items'
  • suppress_ending_date_filter Boolean
    help='If this is checked then the Statement End Date filter on the transactions below will not occur. All transactions would come over.' args: 'Remove Ending Date Filter'
  • uncleared_balance Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total Sum of the Deposit Amount Uncleared – Total Sum of Checks, Withdrawals, Debits, and Service Charges Amount Uncleared' string='Uncleared Balance'
  • uncleared_balance_cur Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total Sum of the Deposit Amount Uncleared – Total Sum of Checks, Withdrawals, Debits, and Service Charges Amount Uncleared' string='Unleared Balance (Cur)'
  • verified_by_user_id Many2one → res.users
    copy=False help='Entered automatically by the “last user” who saved it. System generated.' states={'done': [('readonly', True)]} args: 'res.users', 'Verified By'
  • verified_date Date
    copy=False help='Date in which Deposit Ticket was verified.' states={'done': [('readonly', True)]} args: 'Verified Date'
Public methods (15)
  • action_cancel(self)
    @api.multi
    Cancel the the statement.
  • action_cancel_draft(self)
    @api.multi
    Reset the statement to draft and perform resetting operations.
  • action_process(self)
    @api.multi
    Set the account move lines as 'Cleared' and Assign 'Bank Acc Rec Statement ID' for the statement lines which are marked as 'Cleared'.
  • action_review(self)
    @api.multi
    Change the status of statement from 'draft' to 'to_be_reviewed'.
  • action_select_all(self)
    @api.multi
    Mark all the statement lines as 'Cleared'.
  • action_unselect_all(self)
    @api.multi
    Reset 'Cleared' in all the statement lines.
  • check_difference_balance(self)
    @api.multi
  • check_group(self)
    @api.multi
    Check if following security constraints are implemented for groups: Bank Statement Preparer– they can create, view and delete any of the Bank Statements provided the Bank Statement is not in the DONE state, or the Ready for Review state. Bank Statement Verifier – they can create, view, edit, and delete any of the Bank Statements information at any time. NOTE: DONE Bank Statements are only allowed to be deleted by a Bank Statement Verifier.
  • copy(self, default=None)
    @api.multi
  • get_default_company_id(self)
  • get_starting_balance(self, account_id, ending_date)
    @api.multi
  • onchange_account_id(self)
    @api.onchange('account_id', 'ending_date', 'suppress_ending_date_filter')
  • refresh_record(self)
    @api.multi
  • unlink(self)
    @api.multi
    Check if the user is allowed to perform the action
  • write(self, vals)
    @api.multi

New fields (12)
  • amount Float
    digits=dp.get_precision('Account') help="Derived from the 'debit' amount from related Journal Item." args: 'Amount'
  • amountcur Float
    digits=dp.get_precision('Account') help="Derived from the 'amount currency' amount from related Journal Item." args: 'Amount in Currency'
  • cleared_bank_account Boolean
    help='Check if the transaction has cleared from the bank' args: 'Cleared? '
  • currency_id Many2one → res.currency
    help='The optional other currency if it is a multi-currency entry.' args: 'res.currency', 'Currency'
  • date Date
    help='Derived from related Journal Item.' required=True args: 'Date'
  • move_line_id Many2one → account.move.line
    help='Related Journal Item.' args: 'account.move.line', 'Journal Item'
  • name Char
    help='Derived from the related Journal Item.' required=True size=64 args: 'Name'
  • partner_id Many2one → res.partner
    help='Derived from related Journal Item.' string='Partner' args: 'res.partner'
  • ref Char
    help='Derived from related Journal Item.' size=64 args: 'Reference'
  • research_required Boolean
    help='Check if the transaction should be researched by Accounting personal' args: 'Research Required? '
  • statement_id Many2one → bank.acc.rec.statement
    ondelete='cascade' required=True args: 'bank.acc.rec.statement', 'Statement'
  • type Selection
    args: [('dr', 'Debit'), ('cr', 'Credit')], 'Cr/Dr'
Public methods (2)
  • create(self, vals)
    @api.model
  • unlink(self)
    @api.multi
REPOSITORY
REPOSITORYOCA/account-reconcile
GIT
GIThttps://github.com/OCA/account-reconcile.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-reconcile/tree/10.0/account_banking_reconciliation
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYAccounting and Financial Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Open Source Integrators, NovaPoint Group LLC
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Open Source Integrators, NovaPoint Group LLC
COMMITTERS
COMMITTERSAlexandre Fayolle, Maxime Chambreuil, Bhavesh Odedra, OCA Transbot, oca-travis, Sandip Mangukiya
WEBSITE
WEBSITEhttps://github.com/OCA/account-reconcile
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:20:01
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account_voucher
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - report
    - analytic
    - web_planner
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
report_bank_statement_detail report_bank_statement_detail ir.ui.view qweb New
report_bank_statement_detail_doc report_bank_statement_detail_doc ir.ui.view qweb New
report_bank_statement_summary report_bank_statement_summary ir.ui.view qweb New
report_bank_statement_summary_doc report_bank_statement_summary_doc ir.ui.view qweb New
view_account_move_line_bank_acc_rec_statement_id account.move.line.bank.acc.rec.statement.id account.move.line field Inherits account.view_account_move_line_filter
view_account_move_line_bank_acc_rec_statement_id_form account.move.line.bank.acc.rec.statement.id.form account.move.line field Inherits account.view_move_line_form
view_bank_acc_rec_statement_filter bank.acc.rec.statement.select bank.acc.rec.statement search New
view_bank_acc_rec_statement_form bank.acc.rec.statement.form bank.acc.rec.statement form New
view_bank_acc_rec_statement_tree bank.acc.rec.statement.tree bank.acc.rec.statement tree New
Models touched (3)

New fields (3)
  • bank_acc_rec_statement_id Many2one → bank.acc.rec.statement
    help='The Bank Acc Rec Statement linked with the journal item' string='Bank Acc Rec Statement' args: 'bank.acc.rec.statement'
  • cleared_bank_account Boolean
    help='Check if the transaction has cleared from the bank' string='Cleared? '
  • draft_assigned_to_statement Boolean
    help='Check if the move line is assigned to statement lines' string='Assigned to Statement? '
Public methods (0)

No public methods.

New fields (32)
  • account_id Many2one → account.account
    domain="[('company_id', '=', company_id)]" help='The Bank/Gl Account that is being reconciled.' required=True states={'done': [('readonly', True)]} args: 'account.account', 'Account'
  • cleared_balance Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total Sum of the Deposit Amount Cleared – Total Sum of Checks, Withdrawals, Debits, and Service Charges Amount Cleared' string='Cleared Balance'
  • cleared_balance_cur Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total Sum of the Deposit Amount Cleared – Total Sum of Checks, Withdrawals, Debits, and Service Charges Amount Cleared' string='Cleared Balance (Cur)'
  • company_id Many2one → res.company
    default=get_default_company_id help='The Company for which the deposit ticket is made to' readonly=True required=True args: 'res.company', 'Company'
  • credit_move_line_ids One2many → bank.acc.rec.statement.line
    domain=[('type', '=', 'cr')] states={'done': [('readonly', True)]} args: 'bank.acc.rec.statement.line', 'statement_id', 'Credits'
  • debit_move_line_ids One2many → bank.acc.rec.statement.line
    domain=[('type', '=', 'dr')] states={'done': [('readonly', True)]} args: 'bank.acc.rec.statement.line', 'statement_id', 'Debits'
  • difference Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='(Ending Balance – Beginning Balance) - Cleared Balance.' string='Difference'
  • difference_cur Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='(Ending Balance – Beginning Balance) - Cleared Balance.' string='Difference (Cur)'
  • ending_balance Float
    digits=dp.get_precision('Account') help='The Ending Balance on your bank statement.' required=True states={'done': [('readonly', True)]} args: 'Ending Balance'
  • ending_date Date
    default=time.strftime('%Y-%m-%d') help='The ending date of your bank statement.' required=True states={'done': [('readonly', True)]} args: 'Ending Date'
  • last_ending_date Date
    help='The previous statement date of your bank statement.' args: 'Last Stmt Date'
  • name Char
    help='This is a unique name identifying the statement (e.g. Bank X January 2012).' required=True size=64 states={'done': [('readonly', True)]} args: 'Name'
  • notes Text
    args: 'Notes'
  • starting_balance Float
    digits=dp.get_precision('Account') help='The Starting Balance on your bank statement.' required=True states={'done': [('readonly', True)]} args: 'Starting Balance'
  • state Selection
    default='draft' index=True readonly=True args: [('draft', 'Draft'), ('to_be_reviewed', 'Ready for Review'), ('done', 'Done'), ('cancel', 'Cancel')], 'State'
  • sum_of_credits Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total SUM of Amts of lines with Cleared = True' string='Checks, Withdrawals, Debits, and Service Charges Amount' type='float'
  • sum_of_credits_cur Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total SUM of Amts of lines with Cleared = True' string='Checks, Withdrawals, Debits, and Service Charges Amount (Cur)'
  • sum_of_credits_lines Float
    compute='_compute_get_balance' help='Total of number of lines with Cleared = True' string='Checks, Withdrawals, Debits, and Service Charges # of Items'
  • sum_of_debits Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total SUM of Amts of lines with Cleared = True' string='Deposits, Credits, and Interest Amount'
  • sum_of_debits_cur Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total SUM of Amts of lines with Cleared = True' string='Deposits, Credits, and Interest Amount (Cur)'
  • sum_of_debits_lines Float
    compute='_compute_get_balance' help='Total of number of lines with Cleared = True' string='Deposits, Credits, and Interest # of Items'
  • sum_of_ucredits Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total SUM of Amts of lines with Cleared = False' string='Uncleared - Checks, Withdrawals, Debits, and Service Charges Amount'
  • sum_of_ucredits_cur Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total SUM of Amts of lines with Cleared = False' string='Uncleared - Checks, Withdrawals, Debits, and Service Charges Amount (Cur)'
  • sum_of_ucredits_lines Float
    compute='_compute_get_balance' help='Total of number of lines with Cleared = False' string='Uncleared - Checks, Withdrawals, Debits, and Service Charges # of Items'
  • sum_of_udebits Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total SUM of Amts of lines with Cleared = False' string='Uncleared - Deposits, Credits, and Interest Amount'
  • sum_of_udebits_cur Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total SUM of Amts of lines with Cleared = False' string='Uncleared - Deposits, Credits, and Interest Amount (Cur)'
  • sum_of_udebits_lines Float
    compute='_compute_get_balance' help='Total of number of lines with Cleared = False' string='Uncleared - Deposits, Credits, and Interest # of Items'
  • suppress_ending_date_filter Boolean
    help='If this is checked then the Statement End Date filter on the transactions below will not occur. All transactions would come over.' args: 'Remove Ending Date Filter'
  • uncleared_balance Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total Sum of the Deposit Amount Uncleared – Total Sum of Checks, Withdrawals, Debits, and Service Charges Amount Uncleared' string='Uncleared Balance'
  • uncleared_balance_cur Float
    compute='_compute_get_balance' digits=dp.get_precision('Account') help='Total Sum of the Deposit Amount Uncleared – Total Sum of Checks, Withdrawals, Debits, and Service Charges Amount Uncleared' string='Unleared Balance (Cur)'
  • verified_by_user_id Many2one → res.users
    help='Entered automatically by the “last user” who saved it. System generated.' states={'done': [('readonly', True)]} args: 'res.users', 'Verified By'
  • verified_date Date
    help='Date in which Deposit Ticket was verified.' states={'done': [('readonly', True)]} args: 'Verified Date'
Public methods (15)
  • action_cancel(self)
    @api.multi
    Cancel the the statement.
  • action_cancel_draft(self)
    @api.multi
    Reset the statement to draft and perform resetting operations.
  • action_process(self)
    @api.multi
    Set the account move lines as 'Cleared' and Assign 'Bank Acc Rec Statement ID' for the statement lines which are marked as 'Cleared'.
  • action_review(self)
    @api.multi
    Change the status of statement from 'draft' to 'to_be_reviewed'.
  • action_select_all(self)
    @api.multi
    Mark all the statement lines as 'Cleared'.
  • action_unselect_all(self)
    @api.multi
    Reset 'Cleared' in all the statement lines.
  • check_difference_balance(self)
    @api.multi
  • check_group(self)
    @api.multi
    Check if following security constraints are implemented for groups: Bank Statement Preparer– they can create, view and delete any of the Bank Statements provided the Bank Statement is not in the DONE state, or the Ready for Review state. Bank Statement Verifier – they can create, view, edit, and delete any of the Bank Statements information at any time. NOTE: DONE Bank Statements are only allowed to be deleted by a Bank Statement Verifier.
  • copy(self, default=None)
    @api.multi
  • get_default_company_id(self)
  • get_starting_balance(self, account_id, ending_date)
    @api.multi
  • onchange_account_id(self)
    @api.onchange('account_id', 'ending_date', 'suppress_ending_date_filter')
  • refresh_record(self)
    @api.multi
  • unlink(self)
    @api.model
    Reset the related account.move.line to be re-assigned later to statement.
  • write(self, vals)
    @api.multi

New fields (12)
  • amount Float
    digits=dp.get_precision('Account') help="Derived from the 'debit' amount from related Journal Item." args: 'Amount'
  • amountcur Float
    digits=dp.get_precision('Account') help="Derived from the 'amount currency' amount from related Journal Item." args: 'Amount in Currency'
  • cleared_bank_account Boolean
    help='Check if the transaction has cleared from the bank' args: 'Cleared? '
  • currency_id Many2one → res.currency
    help='The optional other currency if it is a multi-currency entry.' args: 'res.currency', 'Currency'
  • date Date
    help='Derived from related Journal Item.' required=True args: 'Date'
  • move_line_id Many2one → account.move.line
    help='Related Journal Item.' args: 'account.move.line', 'Journal Item'
  • name Char
    help='Derived from the related Journal Item.' required=True size=64 args: 'Name'
  • partner_id Many2one → res.partner
    help='Derived from related Journal Item.' string='Partner' args: 'res.partner'
  • ref Char
    help='Derived from related Journal Item.' size=64 args: 'Reference'
  • research_required Boolean
    help='Check if the transaction should be researched by Accounting personal' args: 'Research Required? '
  • statement_id Many2one → bank.acc.rec.statement
    ondelete='cascade' required=True args: 'bank.acc.rec.statement', 'Statement'
  • type Selection
    args: [('dr', 'Debit'), ('cr', 'Credit')], 'Cr/Dr'
Public methods (2)
  • create(self, vals)
    @api.model
  • unlink(self)
    @api.model
REPOSITORY
REPOSITORYOCA/bank-payment
GIT
GIThttps://github.com/OCA/bank-payment.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/bank-payment/tree/7.0/account_banking_reconciliation
VERSION
VERSION 1.7
CATEGORY
CATEGORYAccounting and Financial Management
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSNovaPoint Group LLC
MAINTAINERS
MAINTAINERSNovaPoint Group LLC
COMMITTERS
COMMITTERSJoao Alfredo Gama Batista, Sandy Carter, Maxime Chambreuil, OCA Transbot, Maxime Chambreuil - http://www.savoirfairelinux.com, Agathe Mollé
WEBSITE
WEBSITE http://www.novapointgroup.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:07:16
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-closing:
    - account_cutoff_base
odoo/odoo:
    - account_accountant
    - account_voucher
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - process
    - decimal_precision
    - mail
    - analytic
    - board
    - edi
    - email_template
    - report_webkit
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

This module is designed to provide an easy method in which OpenERP
accounting users can manually reconcile/validate their financial
transactions from their financial institution/transaction providers
(e.g. Paypal, A financial institution, google wallet, etc) against
OpenERP GL Chart of Account bank accounts.

Users will be able to validate and indicate if a transaction has
"Cleared the Bank" using a checkmark on a new Reconcile Financial
Account Statement view on each individual financial transaction.
Users will also be able to mark transactions on a bank account for
future research.

The idea is that as a first step users will manually look at their
paper statement and line-by-line check off which financial
transactions have cleared the bank in OpenERP using the new Bank
Reconciliation Wizard. These changes will be displayed on the  new
Reconcile Financial Account Statement tree view screen. This is the
process in which many companies reconcile (aka Audit) their bank
account statements and accounting system today and represents good
segregation of duties

Users can save their in-process reconciliations.

BACKGROUND
Using the search view filters - users will also be able to effectively
sort, filter the transactions on a particular GL Financial Account.
This new screen will display the journal items associated with a
particular bank account. Several of the field labels have been
relabeled to a more common vernacular.

(Future) Phase II of the project - will extend this module to include
a wizard to pre-filter the tree view, and include additional reports
for accountants. And include the ability to execute quick entry of
common statement related transactions such as recording bank service
fees (an Expense), and Interest Income Earned on the bank account
(Income), when allowed by law. Often, companies will print their
reconciliation, staple it to their bank statement and file the documents
for future review and audit.

(Future) Phase III of the project will extend this module to include
more information to add further clarity throughout OpenERP for financial
transactions, and include the ability to quickly compare an imported bank
statement with a GL Bank Account's recorded transaction, including
autoreconciling them - and providing the information available for review

The need for this module is driven by the following:
OpenERP's default functionality doesn't support the typical "BANK" account
reconciliation process found in many countries (e.g. the US)

Users want to easily record whether bank transactions sent to their bank
have "cleared the bank"- definition of "cleared the bank":  presented to
the bank for payment and paid by the bank - added/subtracted funds on
a bank account.

Users want the ability to validate if the bank processed the transactions
them correctly (e.g. properly encoded transaction - e.g. company sent a
payment of $20.20 to the bank. Was it processed for $20.20?). This can
be considered "Auditing the bank statement". We don't assume the bank
correctly processed any transaction.

Users want to understand what payments they've made are still outstanding
and have not been paid by the bank.
The financial auditing segregation standard of separating the duties of:
recording customer payments and making deposits; recording supplier payments
and writing checks; and monitoring bank account activity. This segregation
of duties is necessary to monitor and help prevent fraud.

Assumptions:
1. Companies using OpenERP have setup a One-to-one relationship between
   their bank accounts and their OpenERP GL accounts. Each bank account
   should have a corresponding GL account that is not shared with another
   account.

    Example:

    OpenERP GL Account #        Corresponding Bank Account
    10100                Bank (AR) Account Checking 5434
                         (held at Institution A)
    10200                Master Bank Account 2343 (held at Institution A)
    10300                Bank Payable Account Checking  5678
                         (held at Institution A)
    10400                Bank Payroll Account 6656 (held at Institution B)
    10500                Paypal Account 3343 (held at Paypal)
    10600                Google Wallet Account 6788
    10700                AMEX Corporate Card Account 9989


2. Companies have included a Non-Deposited Funds Account in their GL account
   (typically in current assets in their bank account areas). This account
   is used to store payments that have been recorded in OpenERP - but not
   yet deposited into the financial institution. (NOTE: this account is
   important to have if the user "batches check deposits"- which is the
   process of making a large single deposits of customer payment into the
   bank (e.g. $20,000USD), but it is made up of smaller checks
   (e.g. 20 checks of $1,000 each). Many banks just record the total deposit
   amount ($20,000) and don¬タルt provide the breakdown of the individual
   checks that make up the larger deposit. This setup approach enables users
   to drill down and see the individual checks that make up a larger deposit.

Recommendations:
From a cash management and financial control perspective it is recommended
that users establish the following four(4) bank accounts at their financial
institution at a minimum to handle financial transactions.
(NOTE: we recommend users place the last 4 digits of their bank account in
the GL account name of the account. It helps accountants in their management
of the system):

Bank (AR) Account Checking 5434
This is a checking account designated as the account where payments made to
the company are deposited (e.g. a customer payment made by check is
deposited here, or a customer paying by electronic transaction EFT/ACH is
deposited into this GL).

Master Bank Account 2343
This is the master account in which the company keeps the majority of their
funds. Often with the most limited access.

Bank Payable Account Checking  5678
This is a checking account designated for the company to pay their expenses
from. (e.g. Company writes a check to pay a supplier for their office
supplies).

Bank Payroll Account 6656
This is a checking account designated for a company to pay their
employees and payroll.

NOTE: There has been common confusion in the OpenERP community about
managing bank statements in the base OpenERP system. This module
hopes to alleviate this gap and provide users with a sound alternative
to maintain fiscal control, be easy to understand, and allow for
future growth.

Why this approach? Users in OpenERP have several options in which to
record financial transactions that affect the balances of a bank account
(GL Bank Account entries). We believe our approach allows these to work
in conjunction with each other: Import Electronic Bank Statements to enter
payments (this approach follows the philosophy that you first find out
that a transaction has occurred from your bank ¬タモ which is very common in
Europe due to the electronic nature of transactions).

Payment Order Payments (using the direct Method) - Payments are instantly
recorded and financial transactions posted into the GL
Voucher Payments - Payments are instantly recorded and financial transactions
posted into the GL Sales Receipts/Refunds
Transfers between accounts (a new module is being developed to help
manage this)
Funds moved from the Undeposited Funds GL account to a Bank Account GL account.
Direct Journal Entries

Contributors
------------
* Mathieu Benoit (mathieu.benoit@savoirfairelinux.com)
* Vincent Vinet (vincent.vinet@savoirfairelinux.com)

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
view_account_move_line_bank_acc_rec_statement_id account.move.line.bank.acc.rec.statement.id account.move.line field Inherits account.view_account_move_line_filter
view_account_move_line_bank_acc_rec_statement_id_form account.move.line.bank.acc.rec.statement.id.form account.move.line field Inherits account.view_move_line_form
view_bank_acc_rec_statement_filter bank.acc.rec.statement.select bank.acc.rec.statement search New
view_bank_acc_rec_statement_form bank.acc.rec.statement.form bank.acc.rec.statement form New
view_bank_acc_rec_statement_tree bank.acc.rec.statement.tree bank.acc.rec.statement tree New
Models touched (3)

New fields (0)

No new fields.

Public methods (1)
  • copy_data(self, cr, uid, id, default=None, context=None)

New fields (0)

No new fields.

Public methods (18)
  • action_adjust_ending_balance(self, cr, uid, ids, context=None)
  • action_cancel(self, cr, uid, ids, context=None)
    Cancel the the statement.
  • action_cancel_draft(self, cr, uid, ids, context=None)
    Reset the statement to draft and perform resetting operations.
  • action_process(self, cr, uid, ids, context=None)
    Set the account move lines as 'Cleared' and Assign 'Bank Acc Rec Statement ID' for the statement lines which are marked as 'Cleared'.
  • action_review(self, cr, uid, ids, context=None)
    Change the status of statement from 'draft' to 'to_be_reviewed'.
  • action_select_all(self, cr, uid, ids, context=None)
    Mark all the statement lines as 'Cleared'.
  • action_unselect_all(self, cr, uid, ids, context=None)
    Reset 'Cleared' in all the statement lines.
  • check_difference_balance(self, cr, uid, ids, context=None)
    Check if difference balance is zero or not.
  • check_group(self, cr, uid, ids, context=None)
    Check if following security constraints are implemented for groups. Bank Statement Preparer - they can create, view and delete any of the Bank Statements provided the Bank Statement is not in the DONE state, or the Ready for Review state. Bank Statement Verifier - they can create, view, edit, and delete any of the Bank Statements information at any time. NOTE: DONE Bank Statements are only allowed to be deleted by a Bank Statement Verifier.
  • copy(self, cr, uid, id, default=None, context=None)
  • create(self, cr, uid, vals, context=None)
  • is_b_a_r_s_state_done(self, cr, uid, move_line_id, context=None)
  • onchange_account_id(self, cr, uid, ids, account_id, ending_date, suppress_ending_date_filter, keep_previous_uncleared_entries, context=None)
  • onchange_currency_rate(self, cr, uid, ids, exchange_rate, start_balance, end_balance, context=None)
  • onchange_exchange_date(self, cr, uid, ids, exchange_date, account_id, context=None)
  • refresh_record(self, cr, uid, ids, context=None)
  • unlink(self, cr, uid, ids, context=None)
    Reset the related account.move.line to be re-assigned later to statement.
  • write(self, cr, uid, ids, vals, context=None)

New fields (0)

No new fields.

Public methods (2)
  • create(self, cr, uid, vals, context=None)
  • unlink(self, cr, uid, ids, context=None)
STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/account-reconcile
PULL REQUEST
PULL REQUEST[13.0][MIG] account_banking_reconciliation (#506)