[ADD] account_banking_reconciliation

pull/268/head
Maxime Chambreuil 2017-05-22 15:35:37 -05:00 committed by Murtuza Saleh
parent 4a17f7ba9a
commit 958749ee98
14 changed files with 2252 additions and 0 deletions

View File

@ -0,0 +1,207 @@
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
=============================
Bank Statement Reconciliation
=============================
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
Usage
=====
* 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.
Bug Tracker
===========
Bugs are tracked on `GitHub Issues
<https://github.com/OCA/account-invoice-reporting/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.
Credits
=======
Images
------
* Odoo Community Association: `Icon <https://github.com/OCA/maintainer-tools/blob/master/template/module/static/description/icon.svg>`_.
Contributors
------------
* Nova Point Group <info@novapointgroup.com>
* Balaji Kannan <bkannan@ursainfosystems.com>
* Bhavesh Odedra <bodedra@ursainfosystems.com>
* Sandeep Mangukiya <smangukiya@ursainfosystems.com>
Funders
-------
The development of this module has been financially supported by:
* Nova Point Group <http://www.novapointgroup.com>
* Ursa Information Systems <http://www.ursainfosystems.com>
Maintainer
----------
.. 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.

View File

@ -0,0 +1,7 @@
# -*- coding: utf-8 -*-
# Copyright (C) 2015 Ursa Information Systems (http://www.ursainfosystems.com>)
# Copyright (C) 2011 NovaPoint Group LLC (<http://www.novapointgroup.com>)
# Copyright (C) 2004-2010 OpenERP SA (<http://www.openerp.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import models

View File

@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
# Copyright (C) 2015 Ursa Information Systems (http://www.ursainfosystems.com>)
# Copyright (C) 2011 NovaPoint Group LLC (<http://www.novapointgroup.com>)
# Copyright (C) 2004-2010 OpenERP SA (<http://www.openerp.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Bank Account Reconciliation",
"version": "10.0.1.0.0",
"license": "AGPL-3",
"category": "Accounting and Financial Management",
"author": "NovaPoint Group LLC, Ursa Information Systems, Odoo Community Association (OCA)",
"website": "http://www.novapointgroup.com",
"depends": [
"account_voucher",
],
"data": [
"security/account_banking_reconciliation.xml",
"security/ir.model.access.csv",
"views/account_banking_reconciliation.xml",
"views/account_move_line.xml",
"report/bank_statement_report.xml"],
"demo": [],
"installable": False,
}

View File

@ -0,0 +1,7 @@
# -*- coding: utf-8 -*-
# Copyright (C) 2015 Ursa Information Systems (http://www.ursainfosystems.com>)
# Copyright (C) 2011 NovaPoint Group LLC (<http://www.novapointgroup.com>)
# Copyright (C) 2004-2010 OpenERP SA (<http://www.openerp.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import account_move_line, account_banking_reconciliation

View File

@ -0,0 +1,473 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2014 Ursa Information Systems (<http://www.ursainfosystems.com>)
# Copyright (C) 2011 NovaPoint Group LLC (<http://www.novapointgroup.com>)
# Copyright (C) 2004-2010 OpenERP SA (<http://www.openerp.com>)
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>
#
##############################################################################
import time
from openerp.osv import fields, osv
from openerp.tools.translate import _
import openerp.addons.decimal_precision as dp
from operator import itemgetter
class bank_acc_rec_statement(osv.osv):
def 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."""
model_data_obj = self.pool.get('ir.model.data')
res_groups_obj = self.pool.get('res.groups')
group_verifier_id = model_data_obj._get_id(cr, uid, 'ursa_npg_bank_account_reconciliation', 'group_bank_stmt_verifier')
for statement in self.browse(cr, uid, ids, context=context):
if group_verifier_id:
res_id = model_data_obj.read(cr, uid, [group_verifier_id], ['res_id'])[0]['res_id']
group_verifier = res_groups_obj.browse(cr, uid, res_id, context=context)
group_user_ids = [user.id for user in group_verifier.users]
if statement.state!='draft' and uid not in group_user_ids:
raise osv.except_osv(_('User Error !'),
_("Only a member of '%s' group may delete/edit bank statements when not in draft state!" %(group_verifier.name)))
return True
def copy(self, cr, uid, id, default={}, context=None):
default.update({
'credit_move_line_ids': [],
'debit_move_line_ids': [],
'name': '',
})
return super(bank_acc_rec_statement, self).copy(cr, uid, id, default=default, context=context)
def write(self, cr, uid, ids, vals, context=None):
self.check_group(cr, uid, ids, context) # Check if the user is allowed to perform the action
return super(bank_acc_rec_statement, self).write(cr, uid, ids, vals, context=context)
def unlink(self, cr, uid, ids, context=None):
"Reset the related account.move.line to be re-assigned later to statement."
statement_line_obj = self.pool.get('bank.acc.rec.statement.line')
self.check_group(cr, uid, ids, context) # Check if the user is allowed to perform the action
for statement in self.browse(cr, uid, ids, context=context):
statement_lines = statement.credit_move_line_ids + statement.debit_move_line_ids
statement_line_ids = map(lambda x: x.id, statement_lines)
statement_line_obj.unlink(cr, uid, statement_line_ids, context=context) # call unlink method to reset
return super(bank_acc_rec_statement, self).unlink(cr, uid, ids, context=context)
def check_difference_balance(self, cr, uid, ids, context=None):
"Check if difference balance is zero or not."
for statement in self.browse(cr, uid, ids, context=context):
if statement.cleared_balance_cur:
if statement.difference_cur != 0.0:
raise osv.except_osv(_('Warning!'),
_("Prior to reconciling a statement, all differences must be accounted for and the Difference balance must be zero." \
" Please review and make necessary changes."))
else:
if statement.difference != 0.0:
raise osv.except_osv(_('Warning!'),
_("Prior to reconciling a statement, all differences must be accounted for and the Difference balance must be zero." \
" Please review and make necessary changes."))
return True
def action_cancel(self, cr, uid, ids, context=None):
"Cancel the the statement."
self.write(cr, uid, ids, {'state': 'cancel'}, context=context)
return True
def action_review(self, cr, uid, ids, context=None):
"Change the status of statement from 'draft' to 'to_be_reviewed'."
# If difference balance not zero prevent further processing
self.check_difference_balance(cr, uid, ids, context=context)
self.write(cr, uid, ids, {'state': 'to_be_reviewed'}, context=context)
return True
def 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'."""
account_move_line_obj = self.pool.get('account.move.line')
statement_line_obj = self.pool.get('bank.acc.rec.statement.line')
# If difference balance not zero prevent further processing
self.check_difference_balance(cr, uid, ids, context=context)
for statement in self.browse(cr, uid, ids, context=context):
statement_lines = statement.credit_move_line_ids + statement.debit_move_line_ids
for statement_line in statement_lines:
#Mark the move lines as 'Cleared'mand assign the 'Bank Acc Rec Statement ID'
account_move_line_obj.write(cr, uid, [statement_line.move_line_id.id],
{'cleared_bank_account': statement_line.cleared_bank_account,
'bank_acc_rec_statement_id': statement_line.cleared_bank_account and statement.id or False
}, context=context)
self.write(cr, uid, [statement.id], {'state': 'done',
'verified_by_user_id': uid,
'verified_date': time.strftime('%Y-%m-%d')
}, context=context)
return True
def action_cancel_draft(self, cr, uid, ids, context=None):
"""Reset the statement to draft and perform resetting operations."""
account_move_line_obj = self.pool.get('account.move.line')
statement_line_obj = self.pool.get('bank.acc.rec.statement.line')
for statement in self.browse(cr, uid, ids, context=context):
statement_lines = statement.credit_move_line_ids + statement.debit_move_line_ids
line_ids = []
statement_line_ids = []
for statement_line in statement_lines:
statement_line_ids.append(statement_line.id)
if statement_line.move_line_id:
line_ids.append(statement_line.move_line_id.id) # Find move lines related to statement lines
# Reset 'Cleared' and 'Bank Acc Rec Statement ID' to False
account_move_line_obj.write(cr, uid, line_ids, {'cleared_bank_account': False,
'bank_acc_rec_statement_id': False,
}, context=context)
# Reset 'Cleared' in statement lines
statement_line_obj.write(cr, uid, statement_line_ids, {'cleared_bank_account': False,
'research_required': False
}, context=context)
# Reset statement
self.write(cr, uid, [statement.id], {'state': 'draft',
'verified_by_user_id': False,
'verified_date': False
}, context=context)
return True
def action_select_all(self, cr, uid, ids, context=None):
"""Mark all the statement lines as 'Cleared'."""
statement_line_obj = self.pool.get('bank.acc.rec.statement.line')
for statement in self.browse(cr, uid, ids, context=context):
statement_lines = statement.credit_move_line_ids + statement.debit_move_line_ids
statement_line_ids = map(lambda x: x.id, statement_lines)
statement_line_obj.write(cr, uid, statement_line_ids, {'cleared_bank_account': True}, context=context)
return True
def action_unselect_all(self, cr, uid, ids, context=None):
"""Reset 'Cleared' in all the statement lines."""
statement_line_obj = self.pool.get('bank.acc.rec.statement.line')
for statement in self.browse(cr, uid, ids, context=context):
statement_lines = statement.credit_move_line_ids + statement.debit_move_line_ids
statement_line_ids = map(lambda x: x.id, statement_lines)
statement_line_obj.write(cr, uid, statement_line_ids, {'cleared_bank_account': False}, context=context)
return True
def _get_balance(self, cr, uid, ids, name, args, context=None):
"""Computed as following:
A) Deposits, Credits, and Interest Amount: Total SUM of Amts of lines with Cleared = True
Deposits, Credits, and Interest # of Items: Total of number of lines with Cleared = True
B) Checks, Withdrawals, Debits, and Service Charges Amount:
Checks, Withdrawals, Debits, and Service Charges Amount # of Items:
Cleared Balance (Total Sum of the Deposit Amount Cleared (A) Total Sum of Checks Amount Cleared (B))
Difference= (Ending Balance Beginning Balance) - cleared balance = should be zero.
"""
res = {}
account_precision = self.pool.get('decimal.precision').precision_get(cr, uid, 'Account')
for statement in self.browse(cr, uid, ids, context=context):
res[statement.id] = {
'sum_of_credits': 0.0,
'sum_of_debits': 0.0,
'sum_of_credits_cur': 0.0,
'sum_of_debits_cur': 0.0,
'sum_of_ucredits': 0.0,
'sum_of_udebits': 0.0,
'sum_of_ucredits_cur': 0.0,
'sum_of_udebits_cur': 0.0,
'cleared_balance': 0.0,
'cleared_balance_cur': 0.0,
'uncleared_balance': 0.0,
'uncleared_balance_cur': 0.0,
'difference': 0.0,
'difference_cur': 0.0,
'sum_of_credits_lines': 0.0,
'sum_of_debits_lines': 0.0,
'sum_of_ucredits_lines': 0.0,
'sum_of_udebits_lines': 0.0
}
for line in statement.credit_move_line_ids:
res[statement.id]['sum_of_credits'] += line.cleared_bank_account and round(line.amount, account_precision) or 0.0
res[statement.id]['sum_of_credits_cur'] += line.cleared_bank_account and round(line.amountcur, account_precision) or 0.0
res[statement.id]['sum_of_credits_lines'] += line.cleared_bank_account and 1.0 or 0.0
res[statement.id]['sum_of_ucredits'] += (not line.cleared_bank_account) and round(line.amount, account_precision) or 0.0
res[statement.id]['sum_of_ucredits_cur'] += (not line.cleared_bank_account) and round(line.amountcur, account_precision) or 0.0
res[statement.id]['sum_of_ucredits_lines'] += (not line.cleared_bank_account) and 1.0 or 0.0
for line in statement.debit_move_line_ids:
res[statement.id]['sum_of_debits'] += line.cleared_bank_account and round(line.amount, account_precision) or 0.0
res[statement.id]['sum_of_debits_cur'] += line.cleared_bank_account and round(line.amountcur, account_precision) or 0.0
res[statement.id]['sum_of_debits_lines'] += line.cleared_bank_account and 1.0 or 0.0
res[statement.id]['sum_of_udebits'] += (not line.cleared_bank_account) and round(line.amount, account_precision) or 0.0
res[statement.id]['sum_of_udebits_cur'] += (not line.cleared_bank_account) and round(line.amountcur, account_precision) or 0.0
res[statement.id]['sum_of_udebits_lines'] += (not line.cleared_bank_account) and 1.0 or 0.0
res[statement.id]['cleared_balance'] = round(res[statement.id]['sum_of_debits'] - res[statement.id]['sum_of_credits'], account_precision)
res[statement.id]['cleared_balance_cur'] = round(res[statement.id]['sum_of_debits_cur'] - res[statement.id]['sum_of_credits_cur'], account_precision)
res[statement.id]['difference'] = round((statement.ending_balance - statement.starting_balance) - res[statement.id]['cleared_balance'], account_precision)
res[statement.id]['difference_cur'] = round((statement.ending_balance - statement.starting_balance) - res[statement.id]['cleared_balance_cur'], account_precision)
res[statement.id]['uncleared_balance'] = round(res[statement.id]['sum_of_udebits'] - res[statement.id]['sum_of_ucredits'], account_precision)
res[statement.id]['uncleared_balance_cur'] = round(res[statement.id]['sum_of_udebits_cur'] - res[statement.id]['sum_of_ucredits_cur'], account_precision)
return res
# refresh data
def refresh_record(self, cr, uid, ids, context=None):
retval = True
refdict = {}
# get current state of moves in the statement
for statement in self.browse(cr, uid, ids, context=context):
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] = dr_item.cleared_bank_account
# for the statement
for statement in self.browse(cr, uid, ids, context=context):
# process only if the statement is in draft state
if statement.state == 'draft':
account_id = statement.account_id and statement.account_id.id
ending_date = statement.ending_date
suppress_ending_date_filter = statement.suppress_ending_date_filter
vals = self.onchange_account_id(cr, uid, ids, account_id, ending_date, suppress_ending_date_filter, context=context)
# 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(cr, uid, ids, {'last_ending_date':vals['value']['last_ending_date'],'starting_balance': vals['value']['starting_balance'],
'credit_move_line_ids':outlist, 'debit_move_line_ids': inlist}, context=context)
return retval
# get starting balance for the account
def get_starting_balance(self, cr, uid, account_id, ending_date, context=None):
result = (False,0.0)
reslist=[]
statement_obj = self.pool.get('bank.acc.rec.statement')
domain = [('account_id', '=', account_id), ('state', '=', 'done')]
statement_ids = statement_obj.search(cr, uid, domain, context=context)
# get all statements for this account in the past
for statement in statement_obj.browse(cr, uid, statement_ids, context=context):
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
def onchange_account_id(self, cr, uid, ids, account_id, ending_date, suppress_ending_date_filter, context=None):
account_move_line_obj = self.pool.get('account.move.line')
statement_line_obj = self.pool.get('bank.acc.rec.statement.line')
val = {'value': {'credit_move_line_ids': [], 'debit_move_line_ids': []}}
if account_id:
for statement in self.browse(cr, uid, ids, context=context):
statement_line_ids = statement_line_obj.search(cr, uid, [('statement_id', '=', statement.id)], context=context)
# call unlink method to reset and remove existing statement lines and
# mark reset field values in related move lines
statement_line_obj.unlink(cr, uid, statement_line_ids, context=context)
# Apply filter on move lines to allow
#1. credit and debit side journal items in posted state of the selected GL account
#2. Journal items which are not cleared in previous bank statements
#3. Date less than or equal to ending date provided the 'Suppress Ending Date Filter' is not checkec
domain = [('account_id', '=', account_id), ('move_id.state', '=', 'posted'), ('cleared_bank_account', '=', False)]
if not suppress_ending_date_filter:
domain += [('date', '<=', ending_date)]
line_ids = account_move_line_obj.search(cr, uid, domain, context=context)
for line in account_move_line_obj.browse(cr, uid, line_ids, context=context):
if not line.journal_id.centralisation:
amount_currency = (line.amount_currency < 0) and (-1*line.amount_currency) or line.amount_currency
res = {
'ref': line.ref,
'date': line.date,
'partner_id': line.partner_id.id,
'currency_id': line.currency_id.id,
'amount': line.credit or line.debit,
'amountcur': amount_currency,
'name': line.name,
'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(cr, uid, account_id, ending_date, context=context)
val['value']['last_ending_date'] = prev_stmt[0]
val['value']['starting_balance'] = prev_stmt[1]
return val
_name = "bank.acc.rec.statement"
_columns = {
'name': fields.char('Name', required=True, size=64, states={'done':[('readonly', True)]}, help="This is a unique name identifying the statement (e.g. Bank X January 2012)."),
'account_id': fields.many2one('account.account', 'Account', required=True,
states={'done':[('readonly', True)]}, domain="[('company_id', '=', company_id), ('type', '!=', 'view')]",
help="The Bank/Gl Account that is being reconciled."),
'ending_date': fields.date('Ending Date', required=True, states={'done':[('readonly', True)]}, help="The ending date of your bank statement."),
'last_ending_date': fields.date('Last Stmt Date', help="The previous statement date of your bank statement."),
'starting_balance': fields.float('Starting Balance', required=True, digits_compute=dp.get_precision('Account'), help="The Starting Balance on your bank statement.", states={'done':[('readonly', True)]}),
'ending_balance': fields.float('Ending Balance', required=True, digits_compute=dp.get_precision('Account'), help="The Ending Balance on your bank statement.", states={'done':[('readonly', True)]}),
'company_id': fields.many2one('res.company', 'Company', required=True, readonly=True,
help="The Company for which the deposit ticket is made to"),
'notes': fields.text('Notes'),
'verified_date': fields.date('Verified Date', states={'done':[('readonly', True)]},
help="Date in which Deposit Ticket was verified."),
'verified_by_user_id': fields.many2one('res.users', 'Verified By', states={'done':[('readonly', True)]},
help="Entered automatically by the “last user” who saved it. System generated."),
'credit_move_line_ids': fields.one2many('bank.acc.rec.statement.line', 'statement_id', 'Credits',
domain=[('type','=','cr')], context={'default_type':'cr'}, states={'done':[('readonly', True)]}),
'debit_move_line_ids': fields.one2many('bank.acc.rec.statement.line', 'statement_id', 'Debits',
domain=[('type','=','dr')], context={'default_type':'dr'}, states={'done':[('readonly', True)]}),
'cleared_balance': fields.function(_get_balance, method=True, string='Cleared Balance', digits_compute=dp.get_precision('Account'),
type='float', help="Total Sum of the Deposit Amount Cleared Total Sum of Checks, Withdrawals, Debits, and Service Charges Amount Cleared",
multi="balance"),
'difference': fields.function(_get_balance, method=True, type='float', string='Difference', digits_compute=dp.get_precision('Account'),
help="(Ending Balance Beginning Balance) - Cleared Balance.", multi="balance"),
'cleared_balance_cur': fields.function(_get_balance, method=True, string='Cleared Balance (Cur)', digits_compute=dp.get_precision('Account'),
type='float', help="Total Sum of the Deposit Amount Cleared Total Sum of Checks, Withdrawals, Debits, and Service Charges Amount Cleared",
multi="balance"),
'difference_cur': fields.function(_get_balance, method=True, type='float', string='Difference (Cur)', digits_compute=dp.get_precision('Account'),
help="(Ending Balance Beginning Balance) - Cleared Balance.", multi="balance"),
'uncleared_balance': fields.function(_get_balance, method=True, string='Uncleared Balance', digits_compute=dp.get_precision('Account'),
type='float', help="Total Sum of the Deposit Amount Uncleared Total Sum of Checks, Withdrawals, Debits, and Service Charges Amount Uncleared",
multi="balance"),
'uncleared_balance_cur': fields.function(_get_balance, method=True, string='Unleared Balance (Cur)', digits_compute=dp.get_precision('Account'),
type='float', help="Total Sum of the Deposit Amount Uncleared Total Sum of Checks, Withdrawals, Debits, and Service Charges Amount Uncleared",
multi="balance"),
'sum_of_credits': fields.function(_get_balance, method=True, string='Checks, Withdrawals, Debits, and Service Charges Amount', digits_compute=dp.get_precision('Account'),
type='float', help="Total SUM of Amts of lines with Cleared = True",
multi="balance"),
'sum_of_debits': fields.function(_get_balance, method=True, type='float', string='Deposits, Credits, and Interest Amount', digits_compute=dp.get_precision('Account'),
help="Total SUM of Amts of lines with Cleared = True", multi="balance"),
'sum_of_credits_cur': fields.function(_get_balance, method=True, string='Checks, Withdrawals, Debits, and Service Charges Amount (Cur)', digits_compute=dp.get_precision('Account'),
type='float', help="Total SUM of Amts of lines with Cleared = True",
multi="balance"),
'sum_of_debits_cur': fields.function(_get_balance, method=True, type='float', string='Deposits, Credits, and Interest Amount (Cur)', digits_compute=dp.get_precision('Account'),
help="Total SUM of Amts of lines with Cleared = True", multi="balance"),
'sum_of_credits_lines': fields.function(_get_balance, method=True, string='Checks, Withdrawals, Debits, and Service Charges # of Items',
type='float', help="Total of number of lines with Cleared = True",
multi="balance"),
'sum_of_debits_lines': fields.function(_get_balance, method=True, type='float', string='Deposits, Credits, and Interest # of Items',
help="Total of number of lines with Cleared = True", multi="balance"),
'sum_of_ucredits': fields.function(_get_balance, method=True, string='Uncleared - Checks, Withdrawals, Debits, and Service Charges Amount', digits_compute=dp.get_precision('Account'),
type='float', help="Total SUM of Amts of lines with Cleared = False",
multi="balance"),
'sum_of_udebits': fields.function(_get_balance, method=True, type='float', string='Uncleared - Deposits, Credits, and Interest Amount', digits_compute=dp.get_precision('Account'),
help="Total SUM of Amts of lines with Cleared = False", multi="balance"),
'sum_of_ucredits_cur': fields.function(_get_balance, method=True, string='Uncleared - Checks, Withdrawals, Debits, and Service Charges Amount (Cur)', digits_compute=dp.get_precision('Account'),
type='float', help="Total SUM of Amts of lines with Cleared = False",
multi="balance"),
'sum_of_udebits_cur': fields.function(_get_balance, method=True, type='float', string='Uncleared - Deposits, Credits, and Interest Amount (Cur)', digits_compute=dp.get_precision('Account'),
help="Total SUM of Amts of lines with Cleared = False", multi="balance"),
'sum_of_ucredits_lines': fields.function(_get_balance, method=True, string='Uncleared - Checks, Withdrawals, Debits, and Service Charges # of Items',
type='float', help="Total of number of lines with Cleared = False",
multi="balance"),
'sum_of_udebits_lines': fields.function(_get_balance, method=True, type='float', string='Uncleared - Deposits, Credits, and Interest # of Items',
help="Total of number of lines with Cleared = False", multi="balance"),
'suppress_ending_date_filter': fields.boolean('Remove Ending Date Filter', help="If this is checked then the Statement End Date filter on the transactions below will not occur. All transactions would come over."),
'state': fields.selection([
('draft','Draft'),
('to_be_reviewed','Ready for Review'),
('done','Done'),
('cancel', 'Cancel')
],'State', select=True, readonly=True),
}
_defaults = {
'state': 'draft',
'company_id': lambda self, cr, uid, c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id,
'ending_date': time.strftime('%Y-%m-%d'),
}
_order = "ending_date desc"
_sql_constraints = [
('name_company_uniq', 'unique (name, company_id, account_id)', 'The name of the statement must be unique per company and G/L account!')
]
bank_acc_rec_statement()
class bank_acc_rec_statement_line(osv.osv):
_name = "bank.acc.rec.statement.line"
_description = "Statement Line"
_columns = {
'name': fields.char('Name', size=64, help="Derived from the related Journal Item.", required=True),
'ref': fields.char('Reference', size=64, help="Derived from related Journal Item."),
'partner_id': fields.many2one('res.partner', string='Partner', help="Derived from related Journal Item."),
'amount': fields.float('Amount', digits_compute=dp.get_precision('Account'),
help="Derived from the 'debit' amount from related Journal Item."),
'amountcur': fields.float('Amount in Currency', digits_compute=dp.get_precision('Account'),
help="Derived from the 'amount currency' amount from related Journal Item."),
'date': fields.date('Date', required=True, help="Derived from related Journal Item."),
'statement_id': fields.many2one('bank.acc.rec.statement', 'Statement', required=True, ondelete='cascade'),
'move_line_id': fields.many2one('account.move.line', 'Journal Item', help="Related Journal Item."),
'cleared_bank_account': fields.boolean('Cleared? ', help='Check if the transaction has cleared from the bank'),
'research_required': fields.boolean('Research Required? ', help='Check if the transaction should be researched by Accounting personal'),
'currency_id': fields.many2one('res.currency', 'Currency', help="The optional other currency if it is a multi-currency entry."),
'type':fields.selection([('dr','Debit'),('cr','Credit')], 'Cr/Dr'),
}
def create(self, cr, uid, vals, context=None):
account_move_line_obj = self.pool.get('account.move.line')
# Prevent manually adding new statement line.
# This would allow only onchange method to pre-populate statement lines based on the filter rules.
if not vals.get('move_line_id', False):
raise osv.except_osv(_('Processing Error'),_('You cannot add any new bank statement line manually as of this revision!'))
account_move_line_obj.write(cr, uid, [vals['move_line_id']], {'draft_assigned_to_statement': True}, context=context)
return super(bank_acc_rec_statement_line, self).create(cr, uid, vals, context=context)
def unlink(self, cr, uid, ids, context=None):
account_move_line_obj = self.pool.get('account.move.line')
move_line_ids = [x.move_line_id.id for x in self.browse(cr, uid, ids, context=context) if x.move_line_id]
#map(lambda x: x.move_line_id.id if x.move_line_id, self.browse(cr, uid, ids, context=context))
# Reset field values in move lines to be added later
account_move_line_obj.write(cr, uid, move_line_ids, {'draft_assigned_to_statement': False,
'cleared_bank_account': False,
'bank_acc_rec_statement_id': False,
}, context=context)
return super(bank_acc_rec_statement_line, self).unlink(cr, uid, ids, context=context)
bank_acc_rec_statement_line()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,37 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2011 NovaPoint Group LLC (<http://www.novapointgroup.com>)
# Copyright (C) 2004-2010 OpenERP SA (<http://www.openerp.com>)
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from openerp.osv import fields,osv
class account_move_line(osv.osv):
_inherit='account.move.line'
_columns = {
'cleared_bank_account': fields.boolean('Cleared? ', help='Check if the transaction has cleared from the bank'),
'bank_acc_rec_statement_id': fields.many2one('bank.acc.rec.statement', 'Bank Acc Rec Statement', help="The Bank Acc Rec Statement linked with the journal item"),
'draft_assigned_to_statement': fields.boolean('Assigned to Statement? ', help='Check if the move line is assigned to statement lines')
}
account_move_line()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,750 @@
<?xml version="1.0"?>
<document filename="bankstatement.pdf">
<template title="Bank Statement-Detail" author="Ursa Information Systems(support@ursainfosystems.com)" allowSplitting="20">
<pageTemplate id="first">
<frame id="first" x1="34.0" y1="28.0" width="530" height="786"/>
</pageTemplate>
</template>
<stylesheet>
<blockTableStyle id="Standard_Outline">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
</blockTableStyle>
<blockTableStyle id="Table1">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,0" stop="0,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,0" stop="0,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="1,0" stop="1,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="1,0" stop="1,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="2,0" stop="2,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="2,0" stop="2,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="3,0" stop="3,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="3,0" stop="3,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="3,-1" stop="3,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="4,0" stop="4,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="4,0" stop="4,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="4,-1" stop="4,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="5,0" stop="5,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="5,0" stop="5,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="5,0" stop="5,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="5,-1" stop="5,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="6,0" stop="6,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="6,0" stop="6,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="6,0" stop="6,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="6,-1" stop="6,-1"/>
</blockTableStyle>
<blockTableStyle id="Table4">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,0" stop="0,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,0" stop="0,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="1,0" stop="1,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="1,0" stop="1,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="2,0" stop="2,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="2,0" stop="2,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="3,0" stop="3,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="3,0" stop="3,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="3,-1" stop="3,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="4,0" stop="4,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="4,0" stop="4,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="4,-1" stop="4,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="5,0" stop="5,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="5,0" stop="5,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="5,0" stop="5,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="5,-1" stop="5,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="6,0" stop="6,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="6,0" stop="6,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="6,-1" stop="6,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="7,0" stop="7,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="7,0" stop="7,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="7,0" stop="7,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="7,-1" stop="7,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="8,0" stop="8,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="8,0" stop="8,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="8,-1" stop="8,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="9,0" stop="9,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="9,0" stop="9,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="9,0" stop="9,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="9,-1" stop="9,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="10,0" stop="10,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="10,0" stop="10,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="10,-1" stop="10,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="11,0" stop="11,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="11,0" stop="11,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="11,0" stop="11,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="11,-1" stop="11,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="12,0" stop="12,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="12,0" stop="12,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="12,-1" stop="12,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="13,0" stop="13,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="13,0" stop="13,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="13,0" stop="13,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="13,-1" stop="13,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,1" stop="0,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,1" stop="0,1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="1,1" stop="1,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="1,1" stop="1,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="1,1" stop="1,1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,2" stop="0,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,2" stop="0,2"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="1,2" stop="1,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="1,2" stop="1,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="1,2" stop="1,2"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,3" stop="0,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,3" stop="0,3"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="1,3" stop="1,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="1,3" stop="1,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="1,3" stop="1,3"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,4" stop="0,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,4" stop="0,4"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="1,4" stop="1,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="1,4" stop="1,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="1,4" stop="1,4"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
</blockTableStyle>
<blockTableStyle id="Table7">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,0" stop="0,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,0" stop="0,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="1,0" stop="1,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="1,0" stop="1,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="1,0" stop="1,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
</blockTableStyle>
<blockTableStyle id="Table9">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,0" stop="0,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,0" stop="0,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="1,0" stop="1,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="1,0" stop="1,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="1,0" stop="1,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
</blockTableStyle>
<blockTableStyle id="Table10">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,0" stop="0,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,0" stop="0,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="1,0" stop="1,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="1,0" stop="1,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="1,0" stop="1,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
</blockTableStyle>
<blockTableStyle id="Table11">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,0" stop="0,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,0" stop="0,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="1,0" stop="1,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="1,0" stop="1,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="1,0" stop="1,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
</blockTableStyle>
<blockTableStyle id="Table2">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="2,-1" stop="2,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="3,-1" stop="3,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="4,-1" stop="4,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="5,-1" stop="5,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="6,-1" stop="6,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="7,-1" stop="7,-1"/>
</blockTableStyle>
<blockTableStyle id="Table3">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#999999" start="0,-1" stop="0,-1"/>
</blockTableStyle>
<blockTableStyle id="Table5">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="3,-1" stop="3,-1"/>
</blockTableStyle>
<blockTableStyle id="Table6">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="3,-1" stop="3,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="4,-1" stop="4,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="5,-1" stop="5,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="6,-1" stop="6,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="7,-1" stop="7,-1"/>
</blockTableStyle>
<blockTableStyle id="Table8-L">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="2,-1" stop="2,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="3,-1" stop="3,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="4,-1" stop="4,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="5,-1" stop="5,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="6,-1" stop="6,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="7,-1" stop="7,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="8,-1" stop="8,-1"/>
</blockTableStyle>
<blockTableStyle id="Table8">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="2,-1" stop="2,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="3,-1" stop="3,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="4,-1" stop="4,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="5,-1" stop="5,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="6,-1" stop="6,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="7,-1" stop="7,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="8,-1" stop="8,-1"/>
</blockTableStyle>
<blockTableStyle id="Table12">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#999999" start="0,-1" stop="0,-1"/>
</blockTableStyle>
<blockTableStyle id="Table13">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="3,-1" stop="3,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="4,-1" stop="4,-1"/>
</blockTableStyle>
<blockTableStyle id="Table14">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="3,-1" stop="3,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="4,-1" stop="4,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="5,-1" stop="5,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="6,-1" stop="6,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="7,-1" stop="7,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="8,-1" stop="8,-1"/>
</blockTableStyle>
<initialize>
<paraStyle name="all" alignment="justify"/>
</initialize>
<paraStyle name="Standard" fontName="Helvetica"/>
<paraStyle name="Heading" fontName="Helvetica" fontSize="12.0" leading="15" spaceBefore="12.0" spaceAfter="6.0"/>
<paraStyle name="Text body" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="List" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="Caption" fontName="Helvetica-Oblique" fontSize="8.0" leading="10" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="Index" fontName="Helvetica" fontSize="9.0" leading="11"/>
<paraStyle name="Footer" fontName="Helvetica"/>
<paraStyle name="Table Contents" fontName="Helvetica"/>
<paraStyle name="Table Heading" fontName="Helvetica" alignment="CENTER"/>
<paraStyle name="Horizontal Line" fontName="Helvetica" fontSize="6.0" leading="8" spaceBefore="0.0" spaceAfter="14.0"/>
<paraStyle name="terp_header" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/>
<paraStyle name="Heading 9" fontName="Helvetica-Bold" fontSize="75%" leading="NaN" spaceBefore="12.0" spaceAfter="6.0"/>
<paraStyle name="terp_tblheader_General" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_tblheader_Details" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_default_8" fontName="Helvetica" fontSize="7.0" leading="9" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Bold_8" fontName="Helvetica-Bold" fontSize="7.0" leading="9" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_tblheader_General_Centre" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_tblheader_General_Right" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_tblheader_Details_Centre" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_tblheader_Details_Right" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_default_Right_8" fontName="Helvetica" fontSize="7.0" leading="9" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Centre_8" fontName="Helvetica" fontSize="7.0" leading="9" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_header_Right" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/>
<paraStyle name="terp_header_Centre" fontName="Helvetica-Bold" fontSize="12.0" leading="15" alignment="CENTER" spaceBefore="6.0" spaceAfter="3.0"/>
<paraStyle name="terp_header_Centre11" fontName="Helvetica-Bold" fontSize="11.0" leading="15" alignment="CENTER" spaceBefore="6.0" spaceAfter="3.0"/>
<paraStyle name="terp_default_address" fontName="Helvetica" fontSize="10.0" leading="13" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_9" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Bold_9" fontName="Helvetica-Bold" fontSize="8.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Centre_9" fontName="Helvetica" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Right_9" fontName="Helvetica" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_9_italic" fontName="Helvetica-Oblique" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Bold_9_Right" fontName="Helvetica-Bold" fontSize="8.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_2" fontName="Helvetica" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="Heading 3" fontName="Helvetica-Bold" fontSize="14.0" leading="17" spaceBefore="12.0" spaceAfter="6.0"/>
<images/>
</stylesheet>
<story>
<pto>
<para style="terp_default_8">[[ repeatIn(objects, 'stmt') ]]</para>
<para style="terp_default_8">[[ setLang(stmt.lang) ]]</para>
<pto_header>
<section>
<para style="terp_default_8">[[ (not stmt.account_id.currency_id) and removeParentNode('section') or '' ]]</para>
<blockTable colWidths="60.0,60.0,60.0,60.0,70.0,70.0,70.0,70.0" style="Table8">
<tr>
<td>
<para style="terp_default_9">
<font color="white"> </font>
</para>
</td>
</tr>
<tr>
<td>
<para style="terp_tblheader_Details"></para>
</td>
<td>
<para style="terp_tblheader_Details">Date</para>
</td>
<td>
<para style="terp_tblheader_Details_Centre">Comment</para>
</td>
<td>
<para style="terp_tblheader_Details_Centre">Partner</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">Reference</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">Cleared</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">Amount([[ company.currency_id.symbol ]])</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">Amount([[ stmt.account_id.currency_id.symbol ]])</para>
</td>
</tr>
</blockTable>
</section>
<section>
<para style="terp_default_8">[[ (stmt.account_id.currency_id) and removeParentNode('section') or '' ]]</para>
<blockTable colWidths="70.0,70.0,70.0,70.0,80.0,80.0,80.0,80.0" style="Table8">
<tr>
<td>
<para style="terp_default_9">
<font color="white"> </font>
</para>
</td>
</tr>
<tr>
<td>
<para style="terp_tblheader_Details"></para>
</td>
<td>
<para style="terp_tblheader_Details">Date</para>
</td>
<td>
<para style="terp_tblheader_Details_Centre">Comment</para>
</td>
<td>
<para style="terp_tblheader_Details_Centre">Partner</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">Reference</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">Cleared</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">Amount([[ company.currency_id.symbol ]])</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">Amount([[ stmt.account_id.currency_id.symbol ]])</para>
</td>
</tr>
</blockTable>
</section>
</pto_header>
<section>
<para style="terp_header_Centre">Reconciliation Detail </para>
<para style="terp_header_Centre11"><b>Period Ending [[ (stmt.ending_date) or '' ]]</b></para>
</section>
<para style="terp_default_8">
<font color="white"> </font>
</para>
<para style="terp_default_8">
<font color="white"> </font>
</para>
<section>
<para style="terp_default_8">[[ (not stmt.account_id.currency_id) and removeParentNode('section') or '' ]]</para>
<blockTable colWidths="60.0,60.0,60.0,60.0,70.0,70.0,70.0,70.0" style="Table8">
<tr>
<td>
<para style="terp_tblheader_Details"></para>
</td>
<td>
<para style="terp_tblheader_Details">Date</para>
</td>
<td>
<para style="terp_tblheader_Details_Centre">Comment</para>
</td>
<td>
<para style="terp_tblheader_Details_Centre">Partner</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">Reference</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">Cleared</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">Amount([[ company.currency_id.symbol ]])</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">Amount([[ stmt.account_id.currency_id.symbol ]])</para>
</td>
</tr>
</blockTable>
</section>
<section>
<para style="terp_default_8">[[ stmt.account_id.currency_id and removeParentNode('section') or '' ]]</para>
<blockTable colWidths="70.0,70.0,70.0,70.0,80.0,80.0,80.0" style="Table8">
<tr>
<td>
<para style="terp_tblheader_Details"></para>
</td>
<td>
<para style="terp_tblheader_Details">Date</para>
</td>
<td>
<para style="terp_tblheader_Details_Centre">Comment</para>
</td>
<td>
<para style="terp_tblheader_Details_Centre">Partner</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">Reference</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">Cleared</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">Amount([[ company.currency_id.symbol ]])</para>
</td>
</tr>
</blockTable>
</section>
<section>
<para style="terp_default_8">[[ (not stmt.account_id.currency_id) and removeParentNode('section') or '' ]]</para>
<blockTable rowHeights="0.55cm" colWidths="240.0,210.0,70.0">
<tr>
<td>
<para style="terp_default_8">Initial Balance</para>
</td>
<td/>
<td>
<para style="terp_default_Right_8">[[ stmt.starting_balance ]]</para>
</td>
</tr>
<tr/>
<tr>
<td>
<para style="terp_default_Bold_9">Cleared Transactions</para>
</td>
<td/>
<td/>
</tr>
<tr/>
<tr>
<td>
<para style="terp_default_Bold_9">Deposits &amp; Credits-[[ (stmt.sum_of_debits_lines) or '']] items</para>
</td>
<td/>
<td/>
</tr>
</blockTable>
</section>
<section>
<para style="terp_default_8">[[ stmt.account_id.currency_id and removeParentNode('section') or '' ]]</para>
<blockTable rowHeights="0.55cm" colWidths="280.0,160.0,80.0">
<tr>
<td>
<para style="terp_default_8">Initial Balance</para>
</td>
<td/>
<td>
<para style="terp_default_Right_8">[[ stmt.starting_balance ]]</para>
</td>
</tr>
<tr/>
<tr>
<td>
<para style="terp_default_Bold_9">Cleared Transactions</para>
</td>
<td/>
<td/>
</tr>
<tr/>
<tr>
<td>
<para style="terp_default_Bold_9">Deposits &amp; Credits-[[ (stmt.sum_of_debits_lines) or '']] items</para>
</td>
<td/>
<td/>
</tr>
</blockTable>
</section>
<section>
<para style="terp_default_8">[[ (not stmt.account_id.currency_id) and removeParentNode('section') or '' ]]</para>
<para style="terp_default_8">[[ repeatIn(stmt.debit_move_line_ids, 'debit') ]]</para>
<section> <para style="terp_default_8">[[ (not debit['cleared_bank_account']) and removeParentNode('section') ]]</para>
<blockTable colWidths="60.0,60.0,60.0,60.0,70.0,70.0,70.0,70.0">
<tr>
<td>
<para style="terp_default_8"></para>
</td>
<td>
<para style="terp_default_8">[[ formatLang(debit['date'],date=True) ]]</para>
</td>
<td>
<para style="terp_default_8">[[ debit['name'] ]]</para>
</td>
<td>
<para style="terp_default_8">[[ debit['partner_id'].name or '' ]]</para>
</td>
<td>
<para style="terp_default_8">[[ debit['ref'] ]]</para>
</td>
<td>
<para style="terp_default_Right_8">[[ (debit['cleared_bank_account']) and 'X' or '' ]]</para>
</td>
<td>
<para style="terp_default_Right_8">[[ formatLang((debit['amount'])) ]]</para>
</td>
<td>
<para style="terp_default_Right_8">[[ formatLang((debit['amountcur'])) ]]</para>
</td>
</tr>
</blockTable>
</section>
</section>
<section>
<para style="terp_default_8">[[ stmt.account_id.currency_id and removeParentNode('section') or '' ]]</para>
<para style="terp_default_8">[[ repeatIn(stmt.debit_move_line_ids, 'debit') ]]</para>
<section> <para style="terp_default_8">[[ (not debit['cleared_bank_account']) and removeParentNode('section') ]]</para>
<blockTable colWidths="70.0,70.0,70.0,70.0,80.0,80.0,80.0">
<tr>
<td>
<para style="terp_default_8"></para>
</td>
<td>
<para style="terp_default_8">[[ formatLang(debit['date'],date=True) ]]</para>
</td>
<td>
<para style="terp_default_8">[[ debit['name'] ]]</para>
</td>
<td>
<para style="terp_default_8">[[ debit['partner_id'].name or '' ]]</para>
</td>
<td>
<para style="terp_default_8">[[ debit['ref'] ]]</para>
</td>
<td>
<para style="terp_default_Right_8">[[ (debit['cleared_bank_account']) and 'X' or '' ]]</para>
</td>
<td>
<para style="terp_default_Right_8">[[ formatLang((debit['amount'])) ]]</para>
</td>
</tr>
</blockTable>
</section>
</section>
<section>
<para style="terp_default_8">[[ (not stmt.account_id.currency_id) and removeParentNode('section') or '' ]]</para>
<blockTable colWidths="240.0,140.0,70.0,70.0">
<tr>
<td>
<para style="terp_default_Bold_9">Total Deposits &amp; Credits</para>
</td>
<td/>
<td><para style="terp_default_Right_8">[[ (stmt.sum_of_debits) or '']]</para></td>
<td><para style="terp_default_Right_8">[[ (stmt.sum_of_debits_cur) or '']]</para></td>
</tr>
<tr/>
</blockTable>
<blockTable colWidths="240.0,210.0,70.0">
<tr>
<td>
<para style="terp_default_Bold_9">Checks &amp; Payments-[[ (stmt.sum_of_credits_lines) or '']] items</para>
</td>
<td/>
<td/>
</tr>
</blockTable>
</section>
<section>
<para style="terp_default_8">[[ (stmt.account_id.currency_id) and removeParentNode('section') or '' ]]</para>
<blockTable colWidths="280.0,160.0,80.0">
<tr>
<td>
<para style="terp_default_Bold_9">Total Deposits &amp; Credits</para>
</td>
<td/>
<td><para style="terp_default_Right_8">[[ (stmt.sum_of_debits) or '']]</para></td>
</tr>
<tr/>
</blockTable>
<blockTable colWidths="280.0,160.0,80.0">
<tr>
<td>
<para style="terp_default_Bold_9">Checks &amp; Payments-[[ (stmt.sum_of_credits_lines) or '']] items</para>
</td>
<td/>
<td/>
</tr>
</blockTable>
</section>
<section>
<para style="terp_default_8">[[ (not stmt.account_id.currency_id) and removeParentNode('section') or '' ]]</para>
<para style="terp_default_8">[[ repeatIn(stmt.credit_move_line_ids, 'credit') ]]</para>
<blockTable colWidths="60.0,60.0,60.0,60.0,70.0,70.0,70.0,70.0">
<tr>
<td>
<para style="terp_default_8"></para>
</td>
<td>
<para style="terp_default_8">[[ formatLang(credit['date'],date=True) ]]</para>
</td>
<td>
<para style="terp_default_8">[[ credit['name'] ]]</para>
</td>
<td>
<para style="terp_default_8">[[ credit['partner_id'].name or '' ]]</para>
</td>
<td>
<para style="terp_default_8">[[ credit['ref'] ]]</para>
</td>
<td>
<para style="terp_default_Right_8">[[ (credit['cleared_bank_account']) and 'X' or '' ]]</para>
</td>
<td>
<para style="terp_default_Right_8">[[ formatLang((credit['amount'])) ]]</para>
</td>
<td>
<para style="terp_default_Right_8">[[ formatLang((credit['amountcur']))]]</para>
</td>
</tr>
</blockTable>
</section>
<section>
<para style="terp_default_8">[[ (stmt.account_id.currency_id) and removeParentNode('section') or '' ]]</para>
<para style="terp_default_8">[[ repeatIn(stmt.credit_move_line_ids, 'credit') ]]</para>
<blockTable colWidths="70.0,70.0,70.0,70.0,80.0,80.0,80.0">
<tr>
<td>
<para style="terp_default_8"></para>
</td>
<td>
<para style="terp_default_8">[[ formatLang(credit['date'],date=True) ]]</para>
</td>
<td>
<para style="terp_default_8">[[ credit['name'] ]]</para>
</td>
<td>
<para style="terp_default_8">[[ credit['partner_id'].name or '' ]]</para>
</td>
<td>
<para style="terp_default_8">[[ credit['ref'] ]]</para>
</td>
<td>
<para style="terp_default_Right_8">[[ (credit['cleared_bank_account']) and 'X' or '' ]]</para>
</td>
<td>
<para style="terp_default_Right_8">[[ formatLang((credit['amount'])) ]]</para>
</td>
</tr>
</blockTable>
</section>
<section>
<para style="terp_default_8">[[ (not stmt.account_id.currency_id) and removeParentNode('section') or '' ]]</para>
<blockTable colWidths="240.0,140.0,70.0,70.0">
<tr>
<td>
<para style="terp_default_Bold_9">Total Checks &amp; Payments</para>
</td>
<td/>
<td><para style="terp_default_Right_8">[[ (stmt.sum_of_credits) or '']]</para></td>
<td><para style="terp_default_Right_8">[[ (stmt.sum_of_credits_cur) or '']]</para></td>
</tr>
</blockTable>
<blockTable colWidths="240.0,140.0,70.0,70.0">
<tr>
<td>
<para style="terp_default_Bold_9">Total Cleared Transactions</para>
</td>
<td/>
<td><para style="terp_default_Right_8">[[ formatLang(stmt.sum_of_debits - stmt.sum_of_credits) or '']]</para></td>
<td><para style="terp_default_Right_8">[[ formatLang(stmt.sum_of_debits_cur - stmt.sum_of_credits_cur) or '']]</para></td>
</tr>
<tr>
<td>
<para style="terp_default_Bold_9">Cleared Balance</para>
</td>
<td/>
<td><para style="terp_default_Right_8">[[ (stmt.cleared_balance) or '']]</para></td>
<td><para style="terp_default_Right_8">[[ (stmt.cleared_balance_cur) or '']]</para></td>
</tr>
<tr>
<td>
<para style="terp_default_Bold_9">Ending Balance</para>
</td>
<td/>
<td/>
<td><para style="terp_default_Right_8">[[ (stmt.ending_balance) or '']]</para></td>
</tr>
</blockTable>
</section>
<section>
<para style="terp_default_8">[[ (stmt.account_id.currency_id) and removeParentNode('section') or '' ]]</para>
<blockTable colWidths="280.0,160.0,80.0">
<tr>
<td>
<para style="terp_default_Bold_9">Total Deposits and Credits</para>
</td>
<td/>
<td><para style="terp_default_Right_8">[[ (stmt.sum_of_credits) or '']]</para></td>
</tr>
</blockTable>
<blockTable colWidths="280.0,160.0,80.0">
<tr>
<td>
<para style="terp_default_Bold_9">Total Cleared Transactions</para>
</td>
<td/>
<td><para style="terp_default_Right_8">[[ formatLang(stmt.sum_of_debits - stmt.sum_of_credits) or '']]</para></td>
</tr>
<tr>
<td>
<para style="terp_default_Bold_9">Cleared Balance</para>
</td>
<td/>
<td><para style="terp_default_Right_8">[[ (stmt.cleared_balance) or '']]</para></td>
</tr>
<tr>
<td>
<para style="terp_default_Bold_9">Ending Balance</para>
</td>
<td/>
<td><para style="terp_default_Right_8">[[ (stmt.ending_balance) or '']]</para></td>
</tr>
</blockTable>
</section>
</pto>
</story>
</document>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<report
id="bank_statement_detail"
model="bank.acc.rec.statement"
name="bank_statement_detail"
string="Bank Statement-Detail"
rml="npg_bank_account_reconciliation/bank_statement_detail.rml"
attachment="'Detail Statement-'+(object.name)"/>
<report
id="bank_statement_summary"
model="bank.acc.rec.statement"
name="bank_statement_summary"
string="Bank Statement-Summary"
rml="npg_bank_account_reconciliation/bank_statement_summary.rml"
attachment="'Summary Statement-'+(object.name)"/>
</data>
</openerp>

View File

@ -0,0 +1,428 @@
<?xml version="1.0"?>
<document filename="bankstatement.pdf">
<template title="Bank Statement-Summary" author="Ursa Information Systems(support@ursainfosystems.com)" allowSplitting="20">
<pageTemplate id="first">
<frame id="first" x1="34.0" y1="28.0" width="530" height="786"/>
</pageTemplate>
</template>
<stylesheet>
<blockTableStyle id="Standard_Outline">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
</blockTableStyle>
<blockTableStyle id="Table1">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,0" stop="0,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,0" stop="0,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="1,0" stop="1,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="1,0" stop="1,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="2,0" stop="2,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="2,0" stop="2,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="3,0" stop="3,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="3,0" stop="3,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="3,-1" stop="3,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="4,0" stop="4,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="4,0" stop="4,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="4,-1" stop="4,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="5,0" stop="5,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="5,0" stop="5,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="5,0" stop="5,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="5,-1" stop="5,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="6,0" stop="6,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="6,0" stop="6,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="6,0" stop="6,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="6,-1" stop="6,-1"/>
</blockTableStyle>
<blockTableStyle id="Table4">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,0" stop="0,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,0" stop="0,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="1,0" stop="1,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="1,0" stop="1,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="2,0" stop="2,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="2,0" stop="2,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="3,0" stop="3,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="3,0" stop="3,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="3,-1" stop="3,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="4,0" stop="4,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="4,0" stop="4,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="4,-1" stop="4,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="5,0" stop="5,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="5,0" stop="5,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="5,0" stop="5,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="5,-1" stop="5,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="6,0" stop="6,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="6,0" stop="6,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="6,-1" stop="6,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="7,0" stop="7,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="7,0" stop="7,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="7,0" stop="7,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="7,-1" stop="7,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="8,0" stop="8,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="8,0" stop="8,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="8,-1" stop="8,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="9,0" stop="9,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="9,0" stop="9,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="9,0" stop="9,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="9,-1" stop="9,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="10,0" stop="10,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="10,0" stop="10,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="10,-1" stop="10,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="11,0" stop="11,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="11,0" stop="11,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="11,0" stop="11,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="11,-1" stop="11,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="12,0" stop="12,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="12,0" stop="12,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="12,-1" stop="12,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="13,0" stop="13,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="13,0" stop="13,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="13,0" stop="13,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="13,-1" stop="13,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,1" stop="0,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,1" stop="0,1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="1,1" stop="1,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="1,1" stop="1,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="1,1" stop="1,1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,2" stop="0,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,2" stop="0,2"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="1,2" stop="1,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="1,2" stop="1,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="1,2" stop="1,2"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,3" stop="0,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,3" stop="0,3"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="1,3" stop="1,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="1,3" stop="1,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="1,3" stop="1,3"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,4" stop="0,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,4" stop="0,4"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="1,4" stop="1,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="1,4" stop="1,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="1,4" stop="1,4"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
</blockTableStyle>
<blockTableStyle id="Table7">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,0" stop="0,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,0" stop="0,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="1,0" stop="1,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="1,0" stop="1,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="1,0" stop="1,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
</blockTableStyle>
<blockTableStyle id="Table9">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,0" stop="0,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,0" stop="0,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="1,0" stop="1,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="1,0" stop="1,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="1,0" stop="1,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
</blockTableStyle>
<blockTableStyle id="Table10">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,0" stop="0,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,0" stop="0,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="1,0" stop="1,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="1,0" stop="1,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="1,0" stop="1,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
</blockTableStyle>
<blockTableStyle id="Table11">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,0" stop="0,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,0" stop="0,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="1,0" stop="1,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="1,0" stop="1,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="1,0" stop="1,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
</blockTableStyle>
<blockTableStyle id="Table2">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="2,-1" stop="2,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="3,-1" stop="3,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="4,-1" stop="4,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="5,-1" stop="5,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="6,-1" stop="6,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="7,-1" stop="7,-1"/>
</blockTableStyle>
<blockTableStyle id="Table3">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#999999" start="0,-1" stop="0,-1"/>
</blockTableStyle>
<blockTableStyle id="Table5">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="3,-1" stop="3,-1"/>
</blockTableStyle>
<blockTableStyle id="Table6">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="3,-1" stop="3,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="4,-1" stop="4,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="5,-1" stop="5,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="6,-1" stop="6,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="7,-1" stop="7,-1"/>
</blockTableStyle>
<blockTableStyle id="Table8-L">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="2,-1" stop="2,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="3,-1" stop="3,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="4,-1" stop="4,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="5,-1" stop="5,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="6,-1" stop="6,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="7,-1" stop="7,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="8,-1" stop="8,-1"/>
</blockTableStyle>
<blockTableStyle id="Table8">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="2,-1" stop="2,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="3,-1" stop="3,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="4,-1" stop="4,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="5,-1" stop="5,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="6,-1" stop="6,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="7,-1" stop="7,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="8,-1" stop="8,-1"/>
</blockTableStyle>
<blockTableStyle id="Table12">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#999999" start="0,-1" stop="0,-1"/>
</blockTableStyle>
<blockTableStyle id="Table13">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="3,-1" stop="3,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="4,-1" stop="4,-1"/>
</blockTableStyle>
<blockTableStyle id="Table14">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="3,-1" stop="3,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="4,-1" stop="4,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="5,-1" stop="5,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="6,-1" stop="6,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="7,-1" stop="7,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="8,-1" stop="8,-1"/>
</blockTableStyle>
<initialize>
<paraStyle name="all" alignment="justify"/>
</initialize>
<paraStyle name="Standard" fontName="Helvetica"/>
<paraStyle name="Heading" fontName="Helvetica" fontSize="12.0" leading="15" spaceBefore="12.0" spaceAfter="6.0"/>
<paraStyle name="Text body" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="List" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="Caption" fontName="Helvetica-Oblique" fontSize="8.0" leading="10" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="Index" fontName="Helvetica" fontSize="9.0" leading="11"/>
<paraStyle name="Footer" fontName="Helvetica"/>
<paraStyle name="Table Contents" fontName="Helvetica"/>
<paraStyle name="Table Heading" fontName="Helvetica" alignment="CENTER"/>
<paraStyle name="Horizontal Line" fontName="Helvetica" fontSize="6.0" leading="8" spaceBefore="0.0" spaceAfter="14.0"/>
<paraStyle name="terp_header" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/>
<paraStyle name="Heading 9" fontName="Helvetica-Bold" fontSize="75%" leading="NaN" spaceBefore="12.0" spaceAfter="6.0"/>
<paraStyle name="terp_tblheader_General" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_tblheader_Details" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_default_8" fontName="Helvetica" fontSize="7.0" leading="9" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Bold_8" fontName="Helvetica-Bold" fontSize="7.0" leading="9" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_tblheader_General_Centre" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_tblheader_General_Right" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_tblheader_Details_Centre" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_tblheader_Details_Right" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_default_Right_8" fontName="Helvetica" fontSize="7.0" leading="9" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Centre_8" fontName="Helvetica" fontSize="7.0" leading="9" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_header_Right" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/>
<paraStyle name="terp_header_Centre" fontName="Helvetica-Bold" fontSize="12.0" leading="15" alignment="CENTER" spaceBefore="6.0" spaceAfter="3.0"/>
<paraStyle name="terp_header_Centre11" fontName="Helvetica-Bold" fontSize="11.0" leading="15" alignment="CENTER" spaceBefore="6.0" spaceAfter="3.0"/>
<paraStyle name="terp_default_address" fontName="Helvetica" fontSize="10.0" leading="13" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_9" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Bold_9" fontName="Helvetica-Bold" fontSize="8.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Centre_9" fontName="Helvetica" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Right_9" fontName="Helvetica" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_9_italic" fontName="Helvetica-Oblique" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Bold_9_Right" fontName="Helvetica-Bold" fontSize="8.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_2" fontName="Helvetica" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="Heading 3" fontName="Helvetica-Bold" fontSize="14.0" leading="17" spaceBefore="12.0" spaceAfter="6.0"/>
<images/>
</stylesheet>
<story>
<pto>
<para style="terp_default_8">[[ repeatIn(objects, 'stmt') ]]</para>
<para style="terp_default_8">[[ setLang(stmt.lang) ]]</para>
<pto_header>
</pto_header>
<section>
<para style="terp_header_Centre">Reconciliation Summary </para>
<para style="terp_header_Centre11"><b>Period Ending [[ (stmt.ending_date) or '' ]]</b></para>
</section>
<para style="terp_default_8">
<font color="white"> </font>
</para>
<para style="terp_default_8">
<font color="white"> </font>
</para>
<section>
<para style="terp_default_8">[[ (not stmt.account_id.currency_id) and removeParentNode('section') or '' ]]</para>
<blockTable rowHeights="0.55cm" colWidths="240.0,210.0,70.0">
<tr>
<td><para style="terp_default_Bold_9">Initial Balance</para></td>
<td/>
<td><para style="terp_default_Bold_9_Right">[[ stmt.starting_balance ]]</para></td>
</tr>
<tr/>
</blockTable>
<blockTable rowHeights="0.55cm" colWidths="70.0,240.0,140.0,70.0">
<tr>
<td/>
<td><para style="terp_default_Bold_9">Cleared Transactions</para></td>
<td/>
<td/>
</tr>
</blockTable>
<blockTable rowHeights="0.55cm" colWidths="90.0,220.0,70.0,70.0,70.0">
<tr>
<td/>
<td><para style="terp_default_Bold_9">Deposits &amp; Credits-[[ (stmt.sum_of_debits_lines) or '']] items</para></td>
<td><para style="terp_default_Right_8">[[ (stmt.sum_of_debits) or '']]</para></td>
<td><para style="terp_default_Right_8">[[ (stmt.sum_of_debits_cur) or '']]</para></td>
<td/>
</tr>
<tr>
<td/>
<td><para style="terp_default_Bold_9">Checks &amp; Payments-[[ (stmt.sum_of_credits_lines) or '']] items</para></td>
<td><para style="terp_default_Right_8">[[ (stmt.sum_of_credits) or '']]</para></td>
<td><para style="terp_default_Right_8">[[ (stmt.sum_of_credits_cur) or '']]</para></td>
<td/>
</tr>
</blockTable>
<blockTable rowHeights="0.55cm" colWidths="70.0,240.0,70.0,70.0,70.0">
<tr>
<td/>
<td><para style="terp_default_Bold_9">Total Cleared Transactions</para></td>
<td><para style="terp_default_Right_8">[[ formatLang(stmt.sum_of_debits - stmt.sum_of_credits) or '']]</para></td>
<td><para style="terp_default_Right_8">[[ formatLang(stmt.sum_of_debits_cur - stmt.sum_of_credits_cur) or '']]</para></td>
<td/>
</tr>
</blockTable>
<blockTable rowHeights="0.55cm" colWidths="240.0,140.0,70.0,70.0">
<tr>
<td><para style="terp_default_Bold_9">Cleared Balance</para></td>
<td><para style="terp_default_Right_8">[[ (stmt.cleared_balance) or '']]</para></td>
<td><para style="terp_default_Right_8">[[ (stmt.cleared_balance_cur) or '']]</para></td>
<td><para style="terp_default_Bold_9_Right">[[ (stmt.cleared_balance_cur) or '']]</para></td>
</tr>
</blockTable>
<blockTable rowHeights="0.55cm" colWidths="240.0,210.0,70.0">
<tr>
<td><para style="terp_default_Bold_9">Ending Balance</para></td>
<td/>
<td><para style="terp_default_Bold_9_Right">[[ (stmt.ending_balance) or '']]</para></td>
</tr>
</blockTable>
</section>
<section>
<para style="terp_default_8">[[ stmt.account_id.currency_id and removeParentNode('section') or '' ]]</para>
<blockTable rowHeights="0.55cm" colWidths="240.0,210.0,70.0">
<tr>
<td><para style="terp_default_Bold_9">Initial Balance</para></td>
<td/>
<td><para style="terp_default_Bold_9_Right">[[ stmt.starting_balance ]]</para></td>
</tr>
<tr/>
</blockTable>
<blockTable rowHeights="0.55cm" colWidths="70.0,240.0,140.0,70.0">
<tr>
<td/>
<td><para style="terp_default_Bold_9">Cleared Transactions</para></td>
<td/>
<td/>
</tr>
</blockTable>
<blockTable rowHeights="0.55cm" colWidths="90.0,220.0,70.0,70.0,70.0">
<tr>
<td/>
<td><para style="terp_default_Bold_9">Deposits &amp; Credits-[[ (stmt.sum_of_debits_lines) or '']] items</para></td>
<td/>
<td><para style="terp_default_Right_8">[[ (stmt.sum_of_debits) or '']]</para></td>
<td/>
</tr>
<tr>
<td/>
<td><para style="terp_default_Bold_9">Checks &amp; Payments-[[ (stmt.sum_of_credits_lines) or '']] items</para></td>
<td/>
<td><para style="terp_default_Right_8">[[ (stmt.sum_of_credits) or '']]</para></td>
<td/>
</tr>
</blockTable>
<blockTable rowHeights="0.55cm" colWidths="70.0,240.0,70.0,70.0,70.0">
<tr>
<td/>
<td><para style="terp_default_Bold_9">Total Cleared Transactions</para></td>
<td/>
<td><para style="terp_default_Right_8">[[ formatLang(stmt.sum_of_debits - stmt.sum_of_credits) or '']]</para></td>
<td/>
</tr>
</blockTable>
<blockTable rowHeights="0.55cm" colWidths="240.0,140.0,70.0,70.0">
<tr>
<td><para style="terp_default_Bold_9">Cleared Balance</para></td>
<td/>
<td><para style="terp_default_Right_8">[[ (stmt.cleared_balance) or '']]</para></td>
<td><para style="terp_default_Bold_9_Right">[[ (stmt.cleared_balance) or '']]</para></td>
</tr>
</blockTable>
<blockTable rowHeights="0.55cm" colWidths="240.0,210.0,70.0">
<tr>
<td><para style="terp_default_Bold_9">Ending Balance</para></td>
<td/>
<td><para style="terp_default_Bold_9_Right">[[ (stmt.ending_balance) or '']]</para></td>
</tr>
</blockTable>
</section>
</pto>
</story>
</document>

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- Groups - Bank Stmt Preparer , Bank Stmt Verifier -->
<record id="group_bank_stmt_preparer" model="res.groups">
<field name="name">Bank Statement Preparer</field>
</record>
<record id="group_bank_stmt_verifier" model="res.groups">
<field name="name">Bank Statement Verifier</field>
</record>
<!-- Security Rule for Bank Rec Stmts -->
<record id="npg_bank_account_reconciliation_comp_rule" model="ir.rule">
<field name="name">Bank Statements</field>
<field ref="model_bank_acc_rec_statement" name="model_id"/>
<field eval="True" name="global"/>
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>
</data>
</openerp>

View File

@ -0,0 +1,5 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_bank_acc_rec_statement_preparer","access.bank.acc.rec.statement.preparer","model_bank_acc_rec_statement","group_bank_stmt_preparer",1,1,1,1
"access_bank_acc_rec_statement_verifier","access.bank.acc.rec.statement.verifier","model_bank_acc_rec_statement","group_bank_stmt_verifier",1,1,1,1
"access_bank_acc_rec_statement_line_preparer","access.bank.acc.rec.statement.line.preparer","model_bank_acc_rec_statement_line","group_bank_stmt_preparer",1,1,1,1
"access_bank_acc_rec_statement_line_verifier","access.bank.acc.rec.statement.line.verifier","model_bank_acc_rec_statement_line","group_bank_stmt_verifier",1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_bank_acc_rec_statement_preparer access.bank.acc.rec.statement.preparer model_bank_acc_rec_statement group_bank_stmt_preparer 1 1 1 1
3 access_bank_acc_rec_statement_verifier access.bank.acc.rec.statement.verifier model_bank_acc_rec_statement group_bank_stmt_verifier 1 1 1 1
4 access_bank_acc_rec_statement_line_preparer access.bank.acc.rec.statement.line.preparer model_bank_acc_rec_statement_line group_bank_stmt_preparer 1 1 1 1
5 access_bank_acc_rec_statement_line_verifier access.bank.acc.rec.statement.line.verifier model_bank_acc_rec_statement_line group_bank_stmt_verifier 1 1 1 1

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

@ -0,0 +1,230 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- Bank Account Reconciliation Statement -->
<record id="view_bank_acc_rec_statement_tree" model="ir.ui.view">
<field name="name">bank.acc.rec.statement.tree</field>
<field name="model">bank.acc.rec.statement</field>
<field name="type">tree</field>
<field name="priority">2</field>
<field name="arch" type="xml">
<tree string="Bank Account Reconciliation Statements" colors="grey:state=='cancel';blue:state in ('to_be_reviewed')">
<field name="name"/>
<field name="ending_date"/>
<field name="account_id"/>
<field name="verified_by_user_id"/>
<field name="state"/>
</tree>
</field>
</record>
<record id="view_bank_acc_rec_statement_form" model="ir.ui.view">
<field name="name">bank.acc.rec.statement.form</field>
<field name="model">bank.acc.rec.statement</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Bank Account Reconciliation Statement" version="7.0">
<header>
<button name="action_cancel" type="object" states="draft,to_be_reviewed" string="Cancel" icon="gtk-cancel"/>
<button name="action_review" type="object" states="draft" string="Ready for Review" icon="gtk-go-forward"/>
<button name="action_process" type="object" states="to_be_reviewed" string="Process" icon="gtk-apply"/>
<button name="action_cancel_draft" states="cancel,done" string="Set to Draft" type="object" icon="gtk-convert"/>
<button name='refresh_record' string='Refresh' confirm="Current edits in statement will be lost. Do you want to refresh?" states="draft" type='object'/>
<field name="state" widget="statusbar" nolabel="1"/>
</header>
<sheet>
<group col="4" colspan="4">
<field name="account_id" placeholder="Enter Account Name" on_change="onchange_account_id(account_id, ending_date, suppress_ending_date_filter)"/>
<field name="name" placeholder="Enter Name"/>
<field name="ending_date" placeholder="Enter ending date" on_change="onchange_account_id(account_id, ending_date, suppress_ending_date_filter)"/>
<field name="starting_balance" placeholder="Enter Starting Balance"/>
<field name="ending_balance" placeholder="Enter Ending Balance"/>
<field name="last_ending_date" placeholder="Last Statement Date" readonly="1"/>
<field name="suppress_ending_date_filter" on_change="onchange_account_id(account_id, ending_date, suppress_ending_date_filter)"/>
<field name="company_id" groups="base.group_multi_company" placeholder="Enter Company Name"/>
</group>
<notebook colspan="5">
<page string="Journal Items">
<label for='account_label' string='Deposits, Credits, and Interest'/>
<field colspan="4" mode="tree" name="debit_move_line_ids" nolabel="1" widget="one2many_list" height="300">
<form string="Deposits, Credits, and Interest" version="7.0">
<field name="cleared_bank_account"/>
<field name="date" readonly="1"/>
<field name="name" readonly="1"/>
<field name="ref" readonly="1"/>
<field name="partner_id" readonly="1"/>
<field name="amount" readonly="1"/>
<field name="amountcur" readonly="1" />
<field name="currency_id" readonly="1"/>
<field name="research_required" readonly="1"/>
</form>
<tree string="Deposits, Credits, and Interest" editable="top" mute_additem="draft,to_be_reviewed,done, cancel">
<field name="cleared_bank_account"/>
<field name="date" readonly="1"/>
<field name="name" readonly="1"/>
<field name="ref" readonly="1"/>
<field name="partner_id" readonly="1"/>
<field name="amount" readonly="1"/>
<field name="amountcur" readonly="1" />
<field name="currency_id" readonly="1"/>
<field name="research_required"/>
<field name="move_line_id" readonly="1"/>
</tree>
</field>
<label for='account_label2' string='Checks, Withdrawals, Debits, and Service Charges'/>
<field colspan="4" mode="tree" name="credit_move_line_ids" nolabel="1" widget="one2many_list" height="300">
<form string="Checks, Withdrawals, Debits, and Service Charges" version="7.0">
<field name="cleared_bank_account"/>
<field name="date" readonly="1"/>
<field name="name" readonly="1"/>
<field name="ref" readonly="1"/>
<field name="partner_id" readonly="1"/>
<field name="amount" readonly="1"/>
<field name="amountcur" readonly="1" />
<field name="currency_id" readonly="1"/>
<field name="research_required" readonly="1"/>
</form>
<tree string="Checks, Withdrawals, Debits, and Service Charges" editable="top" mute_additem="draft,to_be_reviewed,done, cancel">
<field name="cleared_bank_account"/>
<field name="date" readonly="1"/>
<field name="name" readonly="1"/>
<field name="ref" readonly="1"/>
<field name="partner_id" readonly="1"/>
<field name="amount" readonly="1"/>
<field name="amountcur" readonly="1" />
<field name="currency_id" readonly="1" />
<field name="research_required"/>
<field name="move_line_id" readonly="1"/>
</tree>
</field>
<group col="2" colspan="1" groups="ursa_npg_bank_account_reconciliation.group_bank_stmt_verifier">
<button name="action_select_all" confirm="Current edits in statement will be lost. Do you want to select all?" type="object" states="draft,to_be_reviewed" string="Select All" icon="gtk-go-forward"/>
<button name="action_unselect_all" confirm="Current edits in statement will be lost. Do you want to unselect all?" type="object" states="draft,to_be_reviewed" string="Unselect All" icon="gtk-cancel"/>
</group>
<newline/>
<separator string="Totals - Cleared and Uncleared" colspan="2"/>
<group name="totals" col="4" colspan="4">
<group name="total1" col="2" colspan="2">
<field name="sum_of_debits" />
<field name="sum_of_debits_cur"/>
<field name="sum_of_debits_lines"/>
<field name="sum_of_credits" />
<field name="sum_of_credits_cur"/>
<field name="sum_of_credits_lines"/>
</group>
<group name="total2" col="2" colspan="2">
<field name="sum_of_udebits" />
<field name="sum_of_udebits_cur"/>
<field name="sum_of_udebits_lines"/>
<field name="sum_of_ucredits" />
<field name="sum_of_ucredits_cur"/>
<field name="sum_of_ucredits_lines"/>
</group>
</group>
<newline />
<separator string="Balances - Cleared and Uncleared"/>
<group name="balances" col="4" colspan="4">
<group name="balance1" col="2" colspan="2">
<field name="cleared_balance" />
<field name="cleared_balance_cur" attrs="{'invisible':[('cleared_balance_cur','=', 0.0)]}"/>
<field name="difference" />
<field name="difference_cur" attrs="{'invisible':[('cleared_balance_cur','=', 0.0)]}"/>
</group>
<group name="balance2" col="2" colspan="2">
<field name="uncleared_balance" />
<field name="uncleared_balance_cur" attrs="{'invisible':[('uncleared_balance_cur','=', 0.0)]}"/>
</group>
</group>
</page>
<page string="Other Information">
<separator string="Tracking Information" colspan="4"/>
<group colspan="2" col="2">
<field name="verified_by_user_id" placeholder="Enter user whoever varified"/>
</group>
<group colspan="2" col="2">
<field name="verified_date" placeholder="Enter date of varification"/>
</group>
</page>
<page string="Notes">
<field name="notes" nolabel="1" placeholder="Enter notes about reconciliation"/>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record id="view_bank_acc_rec_statement_filter" model="ir.ui.view">
<field name="name">bank.acc.rec.statement.select</field>
<field name="model">bank.acc.rec.statement</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Bank Account Reconciliation Statements">
<filter icon="terp-document-new" string="Draft" domain="[('state','=','draft')]" help="Statements that haven't yet been confirmed"/>
<filter icon="terp-dolar" string="To be Reviewed" domain="[('state','=','to_be_reviewed')]" help="Statements that are ready for review"/>
<filter icon="terp-check" string="Done" domain="[('state','=','done')]" help="Statements that have been processed"/>
<separator orientation="vertical"/>
<field name="name" select="1"/>
<field name="ending_date" select="1" string="Ending Date" />
<field name="account_id" select="1"/>
<field name="verified_by_user_id" select="1">
<filter domain="[('verified_by_user_id','=',uid)]" help="Verified by me" icon="terp-personal"/>
</field>
<newline/>
<group expand="0" string="Group By..." colspan="11" col="11" groups="base.group_extended">
<filter string="Account" icon="terp-personal" domain="[]" context="{'group_by':'account_id'}"/>
<separator orientation="vertical"/>
<filter string="State" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
</group>
</search>
</field>
</record>
<record id="action_bank_acc_rec_statement" model="ir.actions.act_window">
<field name="name">Bank Statements</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">bank.acc.rec.statement</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="view_bank_acc_rec_statement_filter"/>
</record>
<record id="account.menu_bank_statement_tree" model="ir.ui.menu">
<field name="groups_id" eval="[(4,ref('base.group_system'))]"/>
</record>
<menuitem
icon="STOCK_JUSTIFY_FILL"
action="action_bank_acc_rec_statement"
id="npg_bank_acc_rec_statement_menu"
parent="account.menu_finance_bank_and_cash"
sequence="5"/>
<act_window
id="act_account_move_line_to_add"
name="Journal Items"
res_model="account.move.line"
src_model="bank.acc.rec.statement"/>
<act_window
id="act_supplier_payment_to_add"
name="Supplier Payment"
domain="[('journal_id.type', 'in', ['bank', 'cash']), ('type','=','receipt')]"
context="{'type':'payment'}"
res_model="account.voucher"
src_model="bank.acc.rec.statement"/>
<act_window
id="act_customer_payment_to_add"
name="Customer Payment"
domain="[('journal_id.type', 'in', ['bank', 'cash']), ('type','=','receipt')]"
context="{'type':'receipt'}"
res_model="account.voucher"
src_model="bank.acc.rec.statement"/>
</data>
</openerp>

View File

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!--- Journal Items -->
<record id="view_account_move_line_bank_acc_rec_statement_id" model="ir.ui.view">
<field name="name">account.move.line.bank.acc.rec.statement.id</field>
<field name="model">account.move.line</field>
<field name="inherit_id" ref="account.view_account_move_line_filter"/>
<field name="type">search</field>
<field name="arch" type="xml">
<field name="period_id" position="after">
<field name="bank_acc_rec_statement_id"/>
</field>
<field name="move_id" position="before">
<filter icon="terp-document-new" string="Uncleared Bank Account" domain="[('cleared_bank_account','=',False)]" help="Journal Entries not cleared"/>
<separator orientation="vertical"/>
</field>
</field>
</record>
<record id="view_account_move_line_bank_acc_rec_statement_id_form" model="ir.ui.view">
<field name="name">account.move.line.bank.acc.rec.statement.id.form</field>
<field name="model">account.move.line</field>
<field name="inherit_id" ref="account.view_move_line_form"/>
<field name="type">form</field>
<field name="arch" type="xml">
<field name="statement_id" position="after">
<field name="bank_acc_rec_statement_id"/>
</field>
<field name="blocked" position="after">
<field name="cleared_bank_account"/>
</field>
</field>
</record>
</data>
</openerp>