[MIG10] migrate account-banking-reconciliation module to odoo v10, including qweb reports

This commit is contained in:
Sandip Mangukiya
2017-05-31 12:59:00 +05:30
committed by Murtuza Saleh
parent 7c40c48090
commit 7bcc254c25
10 changed files with 729 additions and 1469 deletions

View File

@@ -18,7 +18,9 @@
"security/ir.model.access.csv",
"views/account_banking_reconciliation.xml",
"views/account_move_line.xml",
"report/bank_statement_report.xml"],
"report/bank_statement_report.xml",
"views/report_bank_statement_summary.xml",
"views/report_bank_statement_detail.xml"],
"demo": [],
"installable": False,
"installable": True,
}

View File

@@ -5,153 +5,157 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
import time
from openerp.osv import fields, osv
from openerp.tools.translate import _
import openerp.addons.decimal_precision as dp
from odoo import fields, models, api, _
from odoo.exceptions import UserError
import odoo.addons.decimal_precision as dp
from operator import itemgetter
from odoo.tools.float_utils import float_round
class bank_acc_rec_statement(osv.osv):
def check_group(self, cr, uid, ids, context=None):
class bank_acc_rec_statement(models.Model):
@api.multi
def check_group(self):
"""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):
model_data_obj = self.env['ir.model.data']
res_groups_obj = self.env['res.groups']
group_verifier_id = model_data_obj._get_id('account_banking_reconciliation', 'group_bank_stmt_verifier')
for statement in self:
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)
res_id = model_data_obj.browse(group_verifier_id).res_id
group_verifier = res_groups_obj.browse([res_id])
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)))
if statement.state!='draft' and self.env.uid not in group_user_ids:
raise UserError(_("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):
@api.model
def copy(self, default={}):
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)
return super(bank_acc_rec_statement, self).copy(default=default)
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)
@api.multi
def write(self, vals):
self.check_group() # Check if the user is allowed to perform the action
return super(bank_acc_rec_statement, self).write(vals)
def unlink(self, cr, uid, ids, context=None):
@api.model
def unlink(self):
"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_line_obj = self.env['bank.acc.rec.statement.line']
self.check_group() # Check if the user is allowed to perform the action
for statement in self:
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)
statement_line_brws = statement_line_obj.browse(statement_line_ids)
statement_line_brws.unlink() # call unlink method to reset
return super(bank_acc_rec_statement, self).unlink()
def check_difference_balance(self, cr, uid, ids, context=None):
@api.multi
def check_difference_balance(self):
"Check if difference balance is zero or not."
for statement in self.browse(cr, uid, ids, context=context):
for statement in self:
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." \
raise UserError(_("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." \
raise UserError(_("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):
@api.multi
def action_cancel(self):
"Cancel the the statement."
self.write(cr, uid, ids, {'state': 'cancel'}, context=context)
self.write({'state': 'cancel'})
return True
def action_review(self, cr, uid, ids, context=None):
@api.multi
def action_review(self):
"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)
self.check_difference_balance()
self.write({'state': 'to_be_reviewed'})
return True
def action_process(self, cr, uid, ids, context=None):
@api.multi
def action_process(self):
"""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):
self.check_difference_balance()
for statement in self:
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,
statement_line.move_line_id.write({'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)
statement.write({'state': 'done',
'verified_by_user_id': self.env.uid,
'verified_date': time.strftime('%Y-%m-%d')
})
return True
def action_cancel_draft(self, cr, uid, ids, context=None):
@api.multi
def action_cancel_draft(self):
"""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):
for statement in self:
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)
statement_line_ids.append(statement_line)
if statement_line.move_line_id:
line_ids.append(statement_line.move_line_id.id) # Find move lines related to statement lines
line_ids.append(statement_line.move_line_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)
line_ids.write({'cleared_bank_account': False,
'bank_acc_rec_statement_id': False,
})
# Reset 'Cleared' in statement lines
statement_line_obj.write(cr, uid, statement_line_ids, {'cleared_bank_account': False,
'research_required': False
}, context=context)
statement_line_ids.write({'cleared_bank_account': False,
'research_required': False
})
# Reset statement
self.write(cr, uid, [statement.id], {'state': 'draft',
'verified_by_user_id': False,
'verified_date': False
}, context=context)
statement.write({'state': 'draft',
'verified_by_user_id': False,
'verified_date': False
})
return True
def action_select_all(self, cr, uid, ids, context=None):
@api.multi
def action_select_all(self):
"""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):
for statement in self:
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)
statement_line_ids.write({'cleared_bank_account': True})
return True
def action_unselect_all(self, cr, uid, ids, context=None):
@api.multi
def action_unselect_all(self):
"""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):
for statement in self:
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)
statement_line_ids.write({'cleared_bank_account': False})
return True
def _get_balance(self, cr, uid, ids, name, args, context=None):
def _get_balance(self):
"""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
@@ -160,60 +164,38 @@ class bank_acc_rec_statement(osv.osv):
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
}
account_precision = self.env['decimal.precision'].precision_get('Account')
for statement in self:
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
statement.sum_of_credits += line.cleared_bank_account and float_round(line.amount, account_precision) or 0.0
statement.sum_of_credits_cur += line.cleared_bank_account and float_round(line.amountcur, account_precision) or 0.0
statement.sum_of_credits_lines += line.cleared_bank_account and 1.0 or 0.0
statement.sum_of_ucredits += (not line.cleared_bank_account) and float_round(line.amount, account_precision) or 0.0
statement.sum_of_ucredits_cur += (not line.cleared_bank_account) and float_round(line.amountcur, account_precision) or 0.0
statement.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
statement.sum_of_debits += line.cleared_bank_account and float_round(line.amount, account_precision) or 0.0
statement.sum_of_debits_cur += line.cleared_bank_account and float_round(line.amountcur, account_precision) or 0.0
statement.sum_of_debits_lines += line.cleared_bank_account and 1.0 or 0.0
statement.sum_of_udebits += (not line.cleared_bank_account) and float_round(line.amount, account_precision) or 0.0
statement.sum_of_udebits_cur += (not line.cleared_bank_account) and float_round(line.amountcur, account_precision) or 0.0
statement.sum_of_udebits_lines += (not line.cleared_bank_account) and 1.0 or 0.0
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
statement.cleared_balance = float_round(statement.sum_of_debits - statement.sum_of_credits, account_precision)
statement.cleared_balance_cur = float_round(statement.sum_of_debits_cur - statement.sum_of_credits_cur, account_precision)
statement.difference = float_round((statement.ending_balance - statement.starting_balance) - statement.cleared_balance, account_precision)
statement.difference_cur = float_round((statement.ending_balance - statement.starting_balance) - statement.cleared_balance_cur, account_precision)
statement.uncleared_balance = float_round(statement.sum_of_udebits - statement.sum_of_ucredits, account_precision)
statement.uncleared_balance_cur = float_round(statement.sum_of_udebits_cur - statement.sum_of_ucredits_cur, account_precision)
# refresh data
def refresh_record(self, cr, uid, ids, context=None):
@api.multi
def refresh_record(self):
retval = True
refdict = {}
# get current state of moves in the statement
for statement in self.browse(cr, uid, ids, context=context):
for statement in self:
if statement.state == 'draft':
for cr_item in statement.credit_move_line_ids:
@@ -225,14 +207,14 @@ class bank_acc_rec_statement(osv.osv):
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):
for statement in self:
# 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)
vals = self.onchange_account_id(statement.account_id, statement.ending_date, statement.suppress_ending_date_filter)
# list of credit lines
outlist = []
@@ -253,22 +235,23 @@ class bank_acc_rec_statement(osv.osv):
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)
retval = self.write({'last_ending_date':vals['value']['last_ending_date'],'starting_balance': vals['value']['starting_balance'],
'credit_move_line_ids':outlist, 'debit_move_line_ids': inlist})
return retval
# get starting balance for the account
def get_starting_balance(self, cr, uid, account_id, ending_date, context=None):
# get starting balance for the account
@api.multi
def get_starting_balance(self, account_id, ending_date):
result = (False,0.0)
reslist=[]
statement_obj = self.pool.get('bank.acc.rec.statement')
statement_obj = self.env['bank.acc.rec.statement']
domain = [('account_id', '=', account_id), ('state', '=', 'done')]
statement_ids = statement_obj.search(cr, uid, domain, context=context)
statement_ids = statement_obj.search(domain).ids
# get all statements for this account in the past
for statement in statement_obj.browse(cr, uid, statement_ids, context=context):
for statement in statement_obj.browse(statement_ids):
if statement.ending_date < ending_date:
reslist.append((statement.ending_date, statement.ending_balance))
@@ -279,175 +262,162 @@ class bank_acc_rec_statement(osv.osv):
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')
@api.onchange('account_id','ending_date','suppress_ending_date_filter')
def onchange_account_id(self):
account_move_line_obj = self.env['account.move.line']
statement_line_obj = self.env['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)
if self.account_id:
for statement in self:
statement_line_ids = statement_line_obj.search([('statement_id', '=', statement.id)])
# 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)
statement_line_ids.unlink()
# Apply filter on move lines to allow
#1. credit and debit side journal items in posted state of the selected GL account
#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):
domain = [('account_id', '=', self.account_id.id), ('move_id.state', '=', 'posted'), ('cleared_bank_account', '=', False)]
if not self.suppress_ending_date_filter:
domain += [('date', '<=', self.ending_date)]
line_ids = account_move_line_obj.search(domain).ids
for line in account_move_line_obj.browse(line_ids):
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)
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)
prev_stmt=self.get_starting_balance(self.account_id.id, self.ending_date)
val['value']['last_ending_date'] = prev_stmt[0]
val['value']['starting_balance'] = prev_stmt[1]
return val
def get_default_company_id(self):
return self.env['res.users'].browse([self.env.uid]).company_id.id
_name = "bank.acc.rec.statement"
_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([
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)]",
help="The Bank/Gl Account that is being reconciled.")
ending_date = fields.Date('Ending Date', required=True, states={'done':[('readonly', True)]}, default=time.strftime('%Y-%m-%d'), 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,
default=get_default_company_id,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')], states={'done':[('readonly', True)]})
debit_move_line_ids = fields.One2many('bank.acc.rec.statement.line', 'statement_id', 'Debits',
domain=[('type','=','dr')], states={'done':[('readonly', True)]})
cleared_balance = fields.Float(compute='_get_balance', string='Cleared Balance', digits_compute=dp.get_precision('Account'),
help="Total Sum of the Deposit Amount Cleared Total Sum of Checks, Withdrawals, Debits, and Service Charges Amount Cleared")
difference = fields.Float(compute='_get_balance', string='Difference', digits_compute=dp.get_precision('Account'),
help="(Ending Balance Beginning Balance) - Cleared Balance.")
cleared_balance_cur = fields.Float(compute='_get_balance', string='Cleared Balance (Cur)', digits_compute=dp.get_precision('Account'),
help="Total Sum of the Deposit Amount Cleared Total Sum of Checks, Withdrawals, Debits, and Service Charges Amount Cleared")
difference_cur = fields.Float(compute='_get_balance', string='Difference (Cur)', digits_compute=dp.get_precision('Account'),
help="(Ending Balance Beginning Balance) - Cleared Balance.")
uncleared_balance = fields.Float(compute='_get_balance', string='Uncleared Balance', digits_compute=dp.get_precision('Account'),
help="Total Sum of the Deposit Amount Uncleared Total Sum of Checks, Withdrawals, Debits, and Service Charges Amount Uncleared")
uncleared_balance_cur = fields.Float(compute='_get_balance', string='Unleared Balance (Cur)', digits_compute=dp.get_precision('Account'),
help="Total Sum of the Deposit Amount Uncleared Total Sum of Checks, Withdrawals, Debits, and Service Charges Amount Uncleared")
sum_of_credits = fields.Float(compute='_get_balance', 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")
sum_of_debits = fields.Float(compute='_get_balance', string='Deposits, Credits, and Interest Amount', digits_compute=dp.get_precision('Account'),
help="Total SUM of Amts of lines with Cleared = True")
sum_of_credits_cur = fields.Float(compute='_get_balance', string='Checks, Withdrawals, Debits, and Service Charges Amount (Cur)', digits_compute=dp.get_precision('Account'),
help="Total SUM of Amts of lines with Cleared = True")
sum_of_debits_cur = fields.Float(compute='_get_balance', string='Deposits, Credits, and Interest Amount (Cur)', digits_compute=dp.get_precision('Account'),
help="Total SUM of Amts of lines with Cleared = True")
sum_of_credits_lines = fields.Float(compute='_get_balance', string='Checks, Withdrawals, Debits, and Service Charges # of Items',
help="Total of number of lines with Cleared = True")
sum_of_debits_lines = fields.Float(compute='_get_balance', string='Deposits, Credits, and Interest # of Items',
help="Total of number of lines with Cleared = True")
sum_of_ucredits = fields.Float(compute='_get_balance', string='Uncleared - Checks, Withdrawals, Debits, and Service Charges Amount', digits_compute=dp.get_precision('Account'),
help="Total SUM of Amts of lines with Cleared = False")
sum_of_udebits = fields.Float(compute='_get_balance', string='Uncleared - Deposits, Credits, and Interest Amount', digits_compute=dp.get_precision('Account'),
help="Total SUM of Amts of lines with Cleared = False")
sum_of_ucredits_cur = fields.Float(compute='_get_balance', string='Uncleared - Checks, Withdrawals, Debits, and Service Charges Amount (Cur)', digits_compute=dp.get_precision('Account'),
help="Total SUM of Amts of lines with Cleared = False")
sum_of_udebits_cur = fields.Float(compute='_get_balance', string='Uncleared - Deposits, Credits, and Interest Amount (Cur)', digits_compute=dp.get_precision('Account'),
help="Total SUM of Amts of lines with Cleared = False")
sum_of_ucredits_lines = fields.Float(compute='_get_balance', string='Uncleared - Checks, Withdrawals, Debits, and Service Charges # of Items',
help="Total of number of lines with Cleared = False")
sum_of_udebits_lines = fields.Float(compute='_get_balance', string='Uncleared - Deposits, Credits, and Interest # of Items',
help="Total of number of lines with Cleared = False")
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'),
}
],'State', select=True, readonly=True, default='draft')
_order = "ending_date desc"
_sql_constraints = [
('name_company_uniq', 'unique (name, company_id, account_id)', 'The name of the statement must be unique per company and G/L account!')
]
class bank_acc_rec_statement_line(osv.osv):
class bank_acc_rec_statement_line(models.Model):
_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'),
}
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')
@api.model
def create(self, vals):
account_move_line_obj = self.env['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]
raise UserError(_("You cannot add any new bank statement line manually as of this revision!"))
account_move_line_obj.browse([vals['move_line_id']]).write({'draft_assigned_to_statement': True})
return super(bank_acc_rec_statement_line, self).create(vals)
@api.model
def unlink(self):
account_move_line_obj = self.env['account.move.line']
move_line_ids = [x.move_line_id.id for x in self if x.move_line_id]
#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,
account_move_line_obj.browse(move_line_ids).write({'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)
})
return super(bank_acc_rec_statement_line, self).unlink()

View File

@@ -10,6 +10,6 @@ from odoo import fields, models
class AccountMoveLine(models.Model):
_inherit='account.move.line'
cleared_bank_account = fields.Boolean(string='Cleared? ', help='Check if the transaction has cleared from the bank'),
bank_acc_rec_statement_id = fields.Many2one('bank.acc.rec.statement', string='Bank Acc Rec Statement', help="The Bank Acc Rec Statement linked with the journal item"),
draft_assigned_to_statement = fields.Noolean(string='Assigned to Statement? ', help='Check if the move line is assigned to statement lines')
cleared_bank_account = fields.Boolean(string='Cleared? ', help='Check if the transaction has cleared from the bank')
bank_acc_rec_statement_id = fields.Many2one('bank.acc.rec.statement', string='Bank Acc Rec Statement', help="The Bank Acc Rec Statement linked with the journal item")
draft_assigned_to_statement = fields.Boolean(string='Assigned to Statement? ', help='Check if the move line is assigned to statement lines')

View File

@@ -1,750 +0,0 @@
<?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

@@ -1,17 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<report
id="bank_statement_detail"
<!-- QWeb Reports -->
<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"
report_type="qweb-pdf"
name="account_banking_reconciliation.report_bank_statement_detail"
file="account_banking_reconciliation.report_bank_statement_detail"
attachment="'Detail Statement-'+(object.name)+'.pdf'"
/>
<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)"/>
report_type="qweb-pdf"
name="account_banking_reconciliation.report_bank_statement_summary"
file="account_banking_reconciliation.report_bank_statement_summary"
attachment="'Summary Statement-'+(object.name)+'.pdf'"
/>
</odoo>

View File

@@ -1,428 +0,0 @@
<?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

@@ -25,22 +25,22 @@
<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="action_cancel" type="object" states="draft,to_be_reviewed" string="Cancel" icon="fa-ban"/>
<button name="action_review" type="object" states="draft" string="Ready for Review" icon="fa-forward"/>
<button name="action_process" type="object" states="to_be_reviewed" string="Process"/>
<button name="action_cancel_draft" states="cancel,done" string="Set to Draft" type="object"/>
<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="account_id" placeholder="Enter Account Name"/>
<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="ending_date" placeholder="Enter ending date"/>
<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="suppress_ending_date_filter"/>
<field name="company_id" groups="base.group_multi_company" placeholder="Enter Company Name"/>
</group>
<notebook colspan="5">
@@ -97,7 +97,7 @@
<field name="move_line_id" readonly="1"/>
</tree>
</field>
<group col="2" colspan="1" groups="ursa_npg_bank_account_reconciliation.group_bank_stmt_verifier">
<group col="2" colspan="1" groups="account_banking_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>
@@ -190,15 +190,15 @@
<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>
<!-- <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"
parent="account.menu_finance_configuration"
sequence="5"/>
<act_window

View File

@@ -8,7 +8,7 @@
<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="move_id" position="after">
<field name="bank_acc_rec_statement_id"/>
</field>
<field name="move_id" position="before">

View File

@@ -0,0 +1,271 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<template id="report_bank_statement_detail_doc">
<t t-call="report.external_layout">
<t t-set="o" t-value="o.with_context({'lang':o.company_id.partner_id.lang})" />
<div class="page">
<h2 style='text-align:center;'>
Reconciliation Detail
</h2>
<h5 style='text-align:center;'>
<span >Period Ending</span>
<span t-field="o.ending_date"/>
</h5>
<div class="row">
<table class="table table-condensed" t-if="not o.account_id.currency_id">
<thead>
<tr>
<th></th>
<th>Date</th>
<th class="text-center">Comment</th>
<th class="text-center">Partner</th>
<th class="text-right">Reference</th>
<th class="text-right">Cleared</th>
<th class="text-right"><span t-field="o.company_id.currency_id.symbol"/></th>
<th class="text-right"><span t-field="o.account_id.currency_id.symbol"/></th>
</tr>
</thead>
</table>
<table class="table table-condensed" t-if="o.account_id.currency_id">
<thead>
<tr>
<th></th>
<th>Date</th>
<th class="text-center">Comment</th>
<th class="text-center">Partner</th>
<th class="text-right">Reference</th>
<th class="text-right">Cleared</th>
<th class="text-right"><span t-field="o.company_id.currency_id.symbol"/></th>
</tr>
</thead>
</table>
<table class="table table-condensed" t-if="not o.account_id.currency_id">
<tbody class="invoice_tbody">
<tr>
<td><b><span>Initial Balance:</span></b></td>
<td></td>
<td class="text-right">
<span t-field="o.starting_balance"
/>
</td>
</tr>
<tr>
<td><b><span>Cleared Transactions</span></b></td>
<td></td>
<td></td>
</tr>
<tr>
<td><b><span>Deposits &amp; Credits-</span><span t-field="o.sum_of_debits_lines"/>items</b></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<table class="table table-condensed" t-if="o.account_id.currency_id">
<tbody class="invoice_tbody">
<tr>
<td><b><span>Initial Balance:</span></b></td>
<td></td>
<td class="text-right">
<span t-field="o.starting_balance"
/>
</td>
</tr>
<tr>
<td><b><span>Cleared Transactions</span></b></td>
<td></td>
<td></td>
</tr>
<tr>
<td><b><span>Deposits &amp; Credits-</span><span t-field="o.sum_of_debits_lines"/>items</b></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<table class="table table-condensed" t-if="not o.account_id.currency_id">
<tbody class="invoice_tbody">
<tr t-foreach="o.debit_move_line_ids" t-as="debit" t-if="debit.cleared_bank_account">
<td></td>
<td><span t-field="debit.date"/></td>
<td><span t-field="debit.name"/></td>
<td><span t-field="debit.partner_id.name"/></td>
<td><span t-field="debit.ref"/></td>
<td class="text-right"><span t-esc="debit.cleared_bank_account and 'X' or ''"/></td>
<td class="text-right"><span t-field="debit.amount"
t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/></td>
<td class="text-right">
<span t-field="debit.amountcur"
t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/>
</td>
</tr>
</tbody>
</table>
<table class="table table-condensed" t-if="o.account_id.currency_id">
<tbody class="invoice_tbody">
<tr t-foreach="o.debit_move_line_ids" t-as="debit" t-if="debit.cleared_bank_account">
<td></td>
<td><span t-field="debit.date"/></td>
<td><span t-field="debit.name"/></td>
<td><span t-field="debit.partner_id.name"/></td>
<td><span t-field="debit.ref"/></td>
<td class="text-right"><span t-esc="debit.cleared_bank_account and 'X' or ''"/></td>
<td class="text-right"><span t-field="debit.amount"
t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/></td>
</tr>
</tbody>
</table>
<div t-if="not o.account_id.currency_id">
<table class="table table-condensed">
<tbody class="invoice_tbody">
<tr>
<td><b><span>Total Deposits &amp; Credits</span></b></td>
<td></td>
<td class="text-right"><span t-if="o.sum_of_debits" t-field="o.sum_of_debits" t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/></td>
<td class="text-right"><span t-if="o.sum_of_debits_cur" t-field="o.sum_of_debits_cur" t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/></td>
</tr>
</tbody>
</table>
<table class="table table-condensed">
<tbody class="invoice_tbody">
<tr>
<td><b><span>Checks &amp; Payments-</span><span t-field="o.sum_of_credits_lines"/>items</b></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div t-if="o.account_id.currency_id">
<table class="table table-condensed">
<tbody class="invoice_tbody">
<tr>
<td><b><span>Total Deposits &amp; Credits</span></b></td>
<td></td>
<td class="text-right"><span t-if="o.sum_of_debits" t-field="o.sum_of_debits" t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/></td>
</tr>
</tbody>
</table>
<table class="table table-condensed">
<tbody class="invoice_tbody">
<tr>
<td><b><span>Checks &amp; Payments-</span><span t-field="o.sum_of_credits_lines"/>items</b></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<table class="table table-condensed" t-if="not o.account_id.currency_id">
<tbody class="invoice_tbody">
<tr t-foreach="o.credit_move_line_ids" t-as="credit" t-if="credit.cleared_bank_account">
<td></td>
<td><span t-field="credit.date"/></td>
<td><span t-field="credit.name"/></td>
<td><span t-field="credit.partner_id.name"/></td>
<td><span t-field="credit.ref"/></td>
<td class="text-right"><span t-esc="credit.cleared_bank_account and 'X' or ''"/></td>
<td class="text-right"><span t-field="credit.amount"
t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/></td>
<td class="text-right">
<span t-field="credit.amountcur"
t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/>
</td>
</tr>
</tbody>
</table>
<table class="table table-condensed" t-if="o.account_id.currency_id">
<tbody class="invoice_tbody">
<tr t-foreach="o.credit_move_line_ids" t-as="credit" t-if="credit.cleared_bank_account">
<td></td>
<td><span t-field="credit.date"/></td>
<td><span t-field="credit.name"/></td>
<td><span t-field="credit.partner_id.name"/></td>
<td><span t-field="credit.ref"/></td>
<td class="text-right"><span t-esc="credit.cleared_bank_account and 'X' or ''"/></td>
<td class="text-right"><span t-field="credit.amount"
t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/></td>
</tr>
</tbody>
</table>
<div t-if="not o.account_id.currency_id">
<table class="table table-condensed">
<tbody class="invoice_tbody">
<tr>
<td><b><span>Total Checks &amp; Payments</span></b></td>
<td></td>
<td class="text-right"><span t-if="o.sum_of_credits" t-field="o.sum_of_credits" t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/></td>
<td class="text-right"><span t-if="o.sum_of_credits_cur" t-field="o.sum_of_credits_cur" t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/></td>
</tr>
</tbody>
</table>
<table class="table table-condensed">
<tbody class="invoice_tbody">
<tr>
<td><b><span>Total Cleared Transactions</span></b></td>
<td></td>
<td class="text-right"><span t-esc="o.sum_of_debits - o.sum_of_credits" t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/></td>
<td class="text-right"><span t-esc="o.sum_of_debits_cur - o.sum_of_credits_cur" t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/></td>
</tr>
<tr>
<td><b><span>Cleared Balance</span></b></td>
<td></td>
<td class="text-right"><span t-field="o.cleared_balance" t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/></td>
<td class="text-right"><span t-field="o.cleared_balance_cur" t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/></td>
</tr>
<tr>
<td><b><span>Ending Balance</span></b></td>
<td></td>
<td></td>
<td class="text-right"><span t-field="o.ending_balance" t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/></td>
</tr>
</tbody>
</table>
</div>
<div t-if="o.account_id.currency_id">
<table class="table table-condensed">
<tbody class="invoice_tbody">
<tr>
<td><b><span>Total Deposits &amp; Credits</span></b></td>
<td></td>
<td class="text-right"><span t-if="o.sum_of_credits" t-field="o.sum_of_credits" t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/></td>
</tr>
</tbody>
</table>
<table class="table table-condensed">
<tbody class="invoice_tbody">
<tr>
<td><b><span>Total Cleared Transactions</span></b></td>
<td></td>
<td class="text-right"><span t-esc="o.sum_of_debits - o.sum_of_credits" t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/></td>
</tr>
<tr>
<td><b><span>Cleared Balance</span></b></td>
<td></td>
<td class="text-right"><span t-field="o.cleared_balance" t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/></td>
</tr>
<tr>
<td><b><span>Ending Balance</span></b></td>
<td></td>
<td></td>
<td class="text-right"><span t-field="o.ending_balance" t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</t>
</template>
<template id="report_bank_statement_detail">
<t t-call="report.html_container">
<t t-foreach="docs" t-as="o">
<t t-call="account_banking_reconciliation.report_bank_statement_detail_doc" t-lang="o.company_id.partner_id.lang"/>
</t>
</t>
</template>
</data>
</odoo>

View File

@@ -0,0 +1,190 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<template id="report_bank_statement_summary_doc">
<t t-call="report.external_layout">
<t t-set="o" t-value="o.with_context({'lang':o.company_id.partner_id.lang})" />
<div class="page">
<h2 style='text-align:center;'>
Reconciliation Summary
</h2>
<h5 style='text-align:center;'>
<span >Period Ending</span>
<span t-field="o.ending_date"/>
</h5>
<div class="row" t-if="not o.account_id.currency_id">
<table class="table table-condensed" >
<tbody class="invoice_tbody">
<tr>
<td><b><span>Initial Balance:</span></b></td>
<td></td>
<td class="text-right">
<span t-field="o.starting_balance"
t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/>
</td>
</tr>
</tbody>
</table>
<table class="table table-condensed">
<tbody class="invoice_tbody">
<tr>
<td></td>
<td><b><span>Deposits &amp; Credits-</span><span t-field="o.sum_of_debits_lines"/>items</b></td>
<td class="text-right"><span t-if="o.sum_of_debits" t-field="o.sum_of_debits" t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/></td>
<td class="text-right"><span t-if="o.sum_of_debits_cur" t-field="o.sum_of_debits_cur" t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/></td>
<td></td>
</tr>
<tr>
<td></td>
<td><b><span>Checks &amp; Payments-</span><span t-field="o.sum_of_credits_lines"/>items</b></td>
<td class="text-right"><span t-if="o.sum_of_credits" t-field="o.sum_of_credits" t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/></td>
<td class="text-right"><span t-if="o.sum_of_credits_cur" t-field="o.sum_of_credits_cur" t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/></td>
<td></td>
</tr>
</tbody>
</table>
<table class="table table-condensed" >
<tbody class="invoice_tbody">
<tr>
<td></td>
<td><b><span>Total Cleared Transactions</span></b></td>
<td class="text-right"><span t-esc="o.sum_of_debits - o.sum_of_credits"
t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/></td>
<td class="text-right"><span t-esc="o.sum_of_debits_cur - o.sum_of_credits_cur"
t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/></td>
<td></td>
</tr>
</tbody>
</table>
<table class="table table-condensed" >
<tbody class="invoice_tbody">
<tr>
<td><b><span>Cleared Balance</span></b></td>
<td class="text-right"><span t-field="o.cleared_balance"
t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/></td>
<td class="text-right"><span t-field="o.cleared_balance_cur"
t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/></td>
<td class="text-right"><b><span t-field="o.cleared_balance_cur"
t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/></b></td>
</tr>
</tbody>
</table>
<table class="table table-condensed" >
<tbody class="invoice_tbody">
<tr>
<td><b><span>Ending Balance:</span></b></td>
<td></td>
<td class="text-right">
<span t-field="o.ending_balance"
t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/>
</td>
</tr>
</tbody>
</table>
</div>
<div class="row" t-if="o.account_id.currency_id">
<table class="table table-condensed" >
<tbody class="invoice_tbody">
<tr>
<td><b><span>Initial Balance:</span></b></td>
<td></td>
<td class="text-right">
<span t-field="o.starting_balance"
t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/>
</td>
</tr>
</tbody>
</table>
<table class="table table-condensed" >
<tbody class="invoice_tbody">
<tr>
<td><b><span>Ending Balance:</span></b></td>
<td></td>
<td class="text-right">
<span t-field="o.ending_balance"
t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/>
</td>
</tr>
</tbody>
</table>
<table class="table table-condensed" >
<tbody class="invoice_tbody">
<tr>
<td></td>
<td><b><span>Cleared Transactions</span></b></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<table class="table table-condensed">
<tbody class="invoice_tbody">
<tr>
<td></td>
<td><b><span>Deposits &amp; Credits-</span><span t-field="o.sum_of_debits_lines"/>items</b></td>
<td></td>
<td class="text-right"><span t-if="o.sum_of_debits" t-field="o.sum_of_debits" t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/></td>
<td></td>
</tr>
<tr>
<td></td>
<td><b><span>Checks &amp; Payments-</span><span t-field="o.sum_of_credits_lines"/>items</b></td>
<td></td>
<td class="text-right"><span t-if="o.sum_of_credits" t-field="o.sum_of_credits" t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/></td>
<td></td>
</tr>
</tbody>
</table>
<table class="table table-condensed" >
<tbody class="invoice_tbody">
<tr>
<td></td>
<td><b><span>Total Cleared Transactions</span></b></td>
<td></td>
<td class="text-right"><span t-esc="o.sum_of_debits - o.sum_of_credits"
t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/></td>
<td></td>
</tr>
</tbody>
</table>
<table class="table table-condensed" >
<tbody class="invoice_tbody">
<tr>
<td><b><span>Cleared Balance</span></b></td>
<td></td>
<td class="text-right"><span t-field="o.cleared_balance"
t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/></td>
<td class="text-right"><span t-field="o.cleared_balance"
t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/></td>
</tr>
</tbody>
</table>
<table class="table table-condensed" >
<tbody class="invoice_tbody">
<tr>
<td><b><span>Ending Balance:</span></b></td>
<td></td>
<td class="text-right">
<span t-field="o.ending_balance"
t-options='{"widget": "monetary", "display_currency": o.account_id.currency_id}'/>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</t>
</template>
<template id="report_bank_statement_summary">
<t t-call="report.html_container">
<t t-foreach="docs" t-as="o">
<t t-call="account_banking_reconciliation.report_bank_statement_summary_doc" t-lang="o.company_id.partner_id.lang"/>
</t>
</t>
</template>
</data>
</odoo>