From 253b8db6d4ebfa928f1ff59b5d3e76aae9e187a9 Mon Sep 17 00:00:00 2001 From: Murtuza Saleh Date: Sat, 25 May 2019 15:51:10 +0530 Subject: [PATCH] [WIP][MIG][11.0] account_banking_reconciliation --- account_banking_reconciliation/README.rst | 89 ++- account_banking_reconciliation/__init__.py | 4 - .../__manifest__.py | 7 +- .../models/__init__.py | 4 - .../models/account_banking_reconciliation.py | 65 +- .../models/account_move_line.py | 4 +- .../readme/CONTRIBUTORS.rst | 5 + .../readme/DESCRIPTION.rst | 129 ++++ .../static/description/index.html | 565 ++++++++++++++++++ .../views/account_banking_reconciliation.xml | 127 ++-- .../views/account_move_line.xml | 3 +- .../views/report_bank_statement_detail.xml | 6 +- .../views/report_bank_statement_summary.xml | 6 +- 13 files changed, 851 insertions(+), 163 deletions(-) create mode 100644 account_banking_reconciliation/readme/CONTRIBUTORS.rst create mode 100644 account_banking_reconciliation/readme/DESCRIPTION.rst create mode 100644 account_banking_reconciliation/static/description/index.html diff --git a/account_banking_reconciliation/README.rst b/account_banking_reconciliation/README.rst index 6dfd81ae..405e35c5 100644 --- a/account_banking_reconciliation/README.rst +++ b/account_banking_reconciliation/README.rst @@ -1,10 +1,29 @@ -.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg +=========================== +Bank Account Reconciliation +=========================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Faccount--reconcile-lightgray.png?logo=github + :target: https://github.com/OCA/account-reconcile/tree/11.0/account_banking_reconciliation + :alt: OCA/account-reconcile +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/account-reconcile-11-0/account-reconcile-11-0-account_banking_reconciliation + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/98/11.0 + :alt: Try me on Runbot -============================= -Bank Statement Reconciliation -============================= +|badge1| |badge2| |badge3| |badge4| |badge5| This module is designed to provide an easy method in which Odoo accounting users can manually reconcile/validate their financial transactions from their financial @@ -136,72 +155,52 @@ common in Europe due to the electronic nature of transactions). * Funds moved from the Undeposited Funds GL account to a Bank Account GL account. * Direct Journal Entries -Usage -===== +**Table of contents** -* Go to Accounting - -.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas - :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/98/10.0 - -Roadmap -======= - -* 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. -* Include more information to add further clarity throughout Odoo 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. +.. contents:: + :local: Bug Tracker =========== -Bugs are tracked on `GitHub Issues -`_. In case of trouble, please -check there if your issue has already been reported. If you spotted it first, -help us smash it by providing detailed and welcomed feedback. +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. Credits ======= -Images ------- +Authors +~~~~~~~ -* Odoo Community Association: `Icon `_. +* NovaPoint Group LLC +* Open Source Integrators Contributors ------------- +~~~~~~~~~~~~ * Nova Point Group * Balaji Kannan * Bhavesh Odedra * Sandeep Mangukiya +* Serpent Consulting Services Pvt. Ltd. -Funders -------- +Maintainers +~~~~~~~~~~~ -The development of this module has been financially supported by: - -* Nova Point Group -* Open Source Integrators - -Maintainer ----------- +This module is maintained by the OCA. .. image:: https://odoo-community.org/logo.png :alt: Odoo Community Association :target: https://odoo-community.org -This module is maintained by the OCA. - OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -To contribute to this module, please visit https://odoo-community.org. +This module is part of the `OCA/account-reconcile `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/account_banking_reconciliation/__init__.py b/account_banking_reconciliation/__init__.py index f82490e2..69f7babd 100644 --- a/account_banking_reconciliation/__init__.py +++ b/account_banking_reconciliation/__init__.py @@ -1,7 +1,3 @@ -# -*- coding: utf-8 -*- -# Copyright (C) 2015 Ursa Information Systems (http://www.ursainfosystems.com>) -# Copyright (C) 2011 NovaPoint Group LLC () -# Copyright (C) 2004-2010 OpenERP SA () # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from . import models diff --git a/account_banking_reconciliation/__manifest__.py b/account_banking_reconciliation/__manifest__.py index 490a049b..527bba53 100644 --- a/account_banking_reconciliation/__manifest__.py +++ b/account_banking_reconciliation/__manifest__.py @@ -1,11 +1,11 @@ -# -*- coding: utf-8 -*- -# Copyright (C) 2015 Ursa Information Systems (http://www.ursainfosystems.com>) +# Copyright (C) 2019 Open Source Integrators +# # Copyright (C) 2011 NovaPoint Group LLC () # Copyright (C) 2004-2010 OpenERP SA () # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { "name": "Bank Account Reconciliation", - "version": "10.0.1.0.0", + "version": "11.0.1.0.0", "license": "AGPL-3", "category": "Accounting and Financial Management", "author": "NovaPoint Group LLC, Open Source Integrators, " @@ -22,6 +22,5 @@ "report/bank_statement_report.xml", "views/report_bank_statement_summary.xml", "views/report_bank_statement_detail.xml"], - "demo": [], "installable": True, } diff --git a/account_banking_reconciliation/models/__init__.py b/account_banking_reconciliation/models/__init__.py index 2aa92cb2..e21f0e2e 100644 --- a/account_banking_reconciliation/models/__init__.py +++ b/account_banking_reconciliation/models/__init__.py @@ -1,7 +1,3 @@ -# -*- coding: utf-8 -*- -# Copyright (C) 2015 Ursa Information Systems (http://www.ursainfosystems.com>) -# Copyright (C) 2011 NovaPoint Group LLC () -# Copyright (C) 2004-2010 OpenERP SA () # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from . import account_move_line diff --git a/account_banking_reconciliation/models/account_banking_reconciliation.py b/account_banking_reconciliation/models/account_banking_reconciliation.py index 871d7c2a..169b2741 100644 --- a/account_banking_reconciliation/models/account_banking_reconciliation.py +++ b/account_banking_reconciliation/models/account_banking_reconciliation.py @@ -1,5 +1,5 @@ -# -*- coding: utf-8 -*- -# Copyright (C) 2015 Ursa Information Systems (http://www.ursainfosystems.com>) +# Copyright (C) 2019 Open Source Integrators +# # Copyright (C) 2011 NovaPoint Group LLC () # Copyright (C) 2004-2010 OpenERP SA () # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). @@ -13,6 +13,10 @@ from odoo.tools.float_utils import float_round class BankAccRecStatement(models.Model): + _name = "bank.acc.rec.statement" + _description = "Bank Acc Rec Statement" + _order = "ending_date desc" + @api.multi def check_group(self): """Check if following security constraints are implemented for groups: @@ -42,31 +46,17 @@ class BankAccRecStatement(models.Model): "state!" % (group_verifier.name))) return True - @api.multi - def copy(self, default=None): - self.ensure_one() - if default is None: - default = {} - default.update({'credit_move_line_ids': [], - 'debit_move_line_ids': [], - 'name': ''}) - return super(BankAccRecStatement, self).copy(default=default) - @api.multi def write(self, vals): # Check if the user is allowed to perform the action self.check_group() return super(BankAccRecStatement, self).write(vals) - @api.model + @api.multi def unlink(self): """Reset the related account.move.line to be re-assigned later to statement.""" self.check_group() # Check if user is allowed to perform the action - for statement in self: - statement_lines = \ - statement.credit_move_line_ids + statement.debit_move_line_ids - statement_lines.unlink() # call unlink method to reset return super(BankAccRecStatement, self).unlink() @api.multi @@ -224,7 +214,6 @@ class BankAccRecStatement(models.Model): float_round(line.amountcur, account_precision) or 0.0 statement.sum_of_udebits_lines += \ (not line.cleared_bank_account) and 1.0 or 0.0 - statement.cleared_balance = float_round( statement.sum_of_debits - statement.sum_of_credits, account_precision) @@ -251,16 +240,13 @@ class BankAccRecStatement(models.Model): def refresh_record(self): retval = True refdict = {} - # get current state of moves in the statement for statement in self: - if statement.state == 'draft': for cr_item in statement.credit_move_line_ids: if cr_item.move_line_id and cr_item.cleared_bank_account: refdict[cr_item.move_line_id.id] = \ cr_item.cleared_bank_account - for dr_item in statement.debit_move_line_ids: if dr_item.move_line_id and dr_item.cleared_bank_account: refdict[dr_item.move_line_id.id] = \ @@ -268,61 +254,50 @@ class BankAccRecStatement(models.Model): # for the statement for statement in self: - # process only if the statement is in draft state if statement.state == 'draft': vals = statement.onchange_account_id() - # list of credit lines outlist = [] for cr_item in vals['value']['credit_move_line_ids']: cr_item['cleared_bank_account'] = refdict and refdict.get( cr_item['move_line_id'], False) or False cr_item['research_required'] = False - item = [0, False, cr_item] outlist.append(item) - # list of debit lines inlist = [] for dr_item in vals['value']['debit_move_line_ids']: dr_item['cleared_bank_account'] = refdict and refdict.get( dr_item['move_line_id'], False) or False dr_item['research_required'] = False - item = [0, False, dr_item] inlist.append(item) - # write it to the record so it is visible on the form retval = self.write( {'last_ending_date': vals['value']['last_ending_date'], 'starting_balance': vals['value']['starting_balance'], 'credit_move_line_ids': outlist, 'debit_move_line_ids': inlist}) - return retval # get starting balance for the account @api.multi def get_starting_balance(self, account_id, ending_date): - result = (False, 0.0) reslist = [] statement_obj = self.env['bank.acc.rec.statement'] domain = [('account_id', '=', account_id), ('state', '=', 'done')] - statement_ids = statement_obj.search(domain).ids - + statement_ids = statement_obj.search(domain) # get all statements for this account in the past - for statement in statement_obj.browse(statement_ids): + for statement in statement_ids: if statement.ending_date < ending_date: reslist.append( (statement.ending_date, statement.ending_balance)) - # get the latest statement value if len(reslist): reslist = sorted(reslist, key=itemgetter(0)) result = reslist[len(reslist) - 1] - return result @api.onchange('account_id', 'ending_date', 'suppress_ending_date_filter') @@ -339,7 +314,6 @@ class BankAccRecStatement(models.Model): # remove existing statement lines and # mark reset field values in related move lines statement_line_ids.unlink() - # Apply filter on move lines to allow # 1. credit and debit side journal items in posted state of # the selected GL account @@ -352,9 +326,8 @@ class BankAccRecStatement(models.Model): ('cleared_bank_account', '=', False)] if not self.suppress_ending_date_filter: domain += [('date', '<=', self.ending_date)] - line_ids = account_move_line_obj.search(domain).ids - for line in account_move_line_obj.browse(line_ids): - + line_ids = account_move_line_obj.search(domain) + for line in line_ids: amount_currency = (line.amount_currency < 0) and ( -1 * line.amount_currency) or line.amount_currency res = { @@ -364,29 +337,25 @@ class BankAccRecStatement(models.Model): 'currency_id': line.currency_id.id, 'amount': line.credit or line.debit, 'amountcur': amount_currency, - 'name': line.name, + 'name': line.name or line.ref, 'move_line_id': line.id, 'type': line.credit and 'cr' or 'dr'} - if res['type'] == 'cr': val['value']['credit_move_line_ids'].append(res) else: val['value']['debit_move_line_ids'].append(res) - # look for previous statement for the account to # pull ending balance as starting balance prev_stmt = self.get_starting_balance(self.account_id.id, self.ending_date) val['value']['last_ending_date'] = prev_stmt[0] val['value']['starting_balance'] = prev_stmt[1] - return val def get_default_company_id(self): return self.env['res.users'].browse([self.env.uid]).company_id.id - _name = "bank.acc.rec.statement" - name = fields.Char('Name', required=True, size=64, + name = fields.Char('Name', required=True, size=64, copy=False, default='', states={'done': [('readonly', True)]}, help="This is a unique name identifying " "the statement (e.g. Bank X January 2012).") @@ -429,11 +398,13 @@ class BankAccRecStatement(models.Model): "System generated.") credit_move_line_ids = fields.One2many('bank.acc.rec.statement.line', 'statement_id', 'Credits', + copy=False, domain=[('type', '=', 'cr')], states={ 'done': [('readonly', True)]}) debit_move_line_ids = fields.One2many('bank.acc.rec.statement.line', 'statement_id', 'Debits', + copy=False, domain=[('type', '=', 'dr')], states={ 'done': [('readonly', True)]}) @@ -561,9 +532,8 @@ class BankAccRecStatement(models.Model): ('to_be_reviewed', 'Ready for Review'), ('done', 'Done'), ('cancel', 'Cancel') - ], 'State', select=True, readonly=True, default='draft') + ], 'State', index=True, readonly=True, default='draft') - _order = "ending_date desc" _sql_constraints = [ ('name_company_uniq', 'unique (name, company_id, account_id)', 'The name of the statement must be unique per ' @@ -574,6 +544,7 @@ class BankAccRecStatement(models.Model): class BankAccRecStatementLine(models.Model): _name = "bank.acc.rec.statement.line" _description = "Statement Line" + name = fields.Char('Name', size=64, help="Derived from the related Journal Item.", required=True) @@ -620,7 +591,7 @@ class BankAccRecStatementLine(models.Model): {'draft_assigned_to_statement': True}) return super(BankAccRecStatementLine, self).create(vals) - @api.model + @api.multi def unlink(self): account_move_line_obj = self.env['account.move.line'] move_line_ids = [x.move_line_id.id for x in self if x.move_line_id] diff --git a/account_banking_reconciliation/models/account_move_line.py b/account_banking_reconciliation/models/account_move_line.py index f74c1cf9..6b43d851 100644 --- a/account_banking_reconciliation/models/account_move_line.py +++ b/account_banking_reconciliation/models/account_move_line.py @@ -1,5 +1,5 @@ -# -*- coding: utf-8 -*- -# Copyright (C) 2015 Ursa Information Systems (http://www.ursainfosystems.com>) +# Copyright (C) 2019 Open Source Integrators +# # Copyright (C) 2011 NovaPoint Group LLC () # Copyright (C) 2004-2010 OpenERP SA () # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). diff --git a/account_banking_reconciliation/readme/CONTRIBUTORS.rst b/account_banking_reconciliation/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000..f807082c --- /dev/null +++ b/account_banking_reconciliation/readme/CONTRIBUTORS.rst @@ -0,0 +1,5 @@ +* Nova Point Group +* Balaji Kannan +* Bhavesh Odedra +* Sandeep Mangukiya +* Serpent Consulting Services Pvt. Ltd. diff --git a/account_banking_reconciliation/readme/DESCRIPTION.rst b/account_banking_reconciliation/readme/DESCRIPTION.rst new file mode 100644 index 00000000..ae971f07 --- /dev/null +++ b/account_banking_reconciliation/readme/DESCRIPTION.rst @@ -0,0 +1,129 @@ +This module is designed to provide an easy method in which Odoo 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 Odoo 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 +Odoo 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. + +The need for this module is driven by the following: + +* 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 +----------- + +#. Companies using Odoo have setup a one-to-one relationship between their + bank accounts and their Odoo GL accounts. Each bank account should have a + corresponding GL account that is not shared with another account. + Example: + + +----------------------+------------------------------------------------------------+ + | Odoo 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 | + +----------------------+------------------------------------------------------------+ + +#. 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 Odoo - 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 Odoo community about managing bank +statements in the base Odoo 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 Odoo 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 diff --git a/account_banking_reconciliation/static/description/index.html b/account_banking_reconciliation/static/description/index.html new file mode 100644 index 00000000..fb8b7013 --- /dev/null +++ b/account_banking_reconciliation/static/description/index.html @@ -0,0 +1,565 @@ + + + + + + +Bank Account Reconciliation + + + +
+

Bank Account Reconciliation

+ + +

Beta License: AGPL-3 OCA/account-reconcile Translate me on Weblate Try me on Runbot

+

This module is designed to provide an easy method in which Odoo 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 Odoo 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 +Odoo 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.

+

The need for this module is driven by the following:

+
    +
  • 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 Odoo have setup a one-to-one relationship between their +bank accounts and their Odoo GL accounts. Each bank account should have a +corresponding GL account that is not shared with another account. +Example:

    + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Odoo GL Account #Corresponding Bank Account
    10100Bank (AR) Account Checking 5434 (held at Institution A)
    10200Master Bank Account 2343 (held at Institution A)
    10300Bank Payable Account Checking 5678 (held at Institution A)
    10400Bank Payroll Account 6656 (held at Institution B)
    10500Paypal Account 3343 (held at Paypal)
    10600Google Wallet Account 6788
    10700AMEX Corporate Card Account 9989
    +
  2. +
  3. 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 Odoo - 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.

    +
  4. +
+
+
+

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 Odoo community about managing bank +statements in the base Odoo 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 Odoo 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
  • +
+

Table of contents

+ +
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • NovaPoint Group LLC
  • +
  • Open Source Integrators
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/account-reconcile project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+
+ + diff --git a/account_banking_reconciliation/views/account_banking_reconciliation.xml b/account_banking_reconciliation/views/account_banking_reconciliation.xml index c508ce6b..e1aa20be 100644 --- a/account_banking_reconciliation/views/account_banking_reconciliation.xml +++ b/account_banking_reconciliation/views/account_banking_reconciliation.xml @@ -24,7 +24,7 @@ bank.acc.rec.statement form -
+