mirror of
https://github.com/OCA/account-reconcile.git
synced 2025-01-20 12:27:39 +02:00
[MIG]FIX formatting
This commit is contained in:
committed by
Murtuza Saleh
parent
10f5fb48cb
commit
6250f3b5a9
@@ -8,7 +8,8 @@
|
||||
"version": "10.0.1.0.0",
|
||||
"license": "AGPL-3",
|
||||
"category": "Accounting and Financial Management",
|
||||
"author": "NovaPoint Group LLC, Ursa Information Systems, Odoo Community Association (OCA)",
|
||||
"author": "NovaPoint Group LLC, Ursa Information Systems, "
|
||||
"Odoo Community Association (OCA)",
|
||||
"website": "http://www.novapointgroup.com",
|
||||
"depends": [
|
||||
"account_voucher",
|
||||
|
||||
@@ -4,4 +4,5 @@
|
||||
# Copyright (C) 2004-2010 OpenERP SA (<http://www.openerp.com>)
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from . import account_move_line, account_banking_reconciliation
|
||||
from . import account_move_line
|
||||
from . import account_banking_reconciliation
|
||||
|
||||
@@ -12,78 +12,97 @@ from operator import itemgetter
|
||||
from odoo.tools.float_utils import float_round
|
||||
|
||||
|
||||
class bank_acc_rec_statement(models.Model):
|
||||
|
||||
class BankAccRecStatement(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,
|
||||
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."""
|
||||
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.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')
|
||||
|
||||
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.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 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)))
|
||||
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
|
||||
|
||||
@api.model
|
||||
def copy(self, default={}):
|
||||
def copy(self, default=None):
|
||||
if default is None:
|
||||
default = {}
|
||||
default.update({
|
||||
'credit_move_line_ids': [],
|
||||
'debit_move_line_ids': [],
|
||||
'name': '',
|
||||
})
|
||||
return super(bank_acc_rec_statement, self).copy(default=default)
|
||||
return super(BankAccRecStatement, self).copy(default=default)
|
||||
|
||||
@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)
|
||||
# Check if the user is allowed to perform the action
|
||||
self.check_group()
|
||||
return super(BankAccRecStatement, self).write(vals)
|
||||
|
||||
@api.model
|
||||
def unlink(self):
|
||||
"Reset the related account.move.line to be re-assigned later to statement."
|
||||
"""Reset the related account.move.line to be re-assigned later
|
||||
to statement."""
|
||||
statement_line_obj = self.env['bank.acc.rec.statement.line']
|
||||
self.check_group() # Check if the user is allowed to perform the action
|
||||
self.check_group() # Check if user is allowed to perform the action
|
||||
for statement in self:
|
||||
statement_lines = statement.credit_move_line_ids + statement.debit_move_line_ids
|
||||
statement_lines = statement.credit_move_line_ids + \
|
||||
statement.debit_move_line_ids
|
||||
statement_line_ids = map(lambda x: x.id, statement_lines)
|
||||
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()
|
||||
statement_line_brws.unlink() # call unlink method to reset
|
||||
return super(BankAccRecStatement, self).unlink()
|
||||
|
||||
@api.multi
|
||||
def check_difference_balance(self):
|
||||
"Check if difference balance is zero or not."
|
||||
# Check if difference balance is zero or not.
|
||||
for statement in self:
|
||||
|
||||
|
||||
if statement.cleared_balance_cur:
|
||||
if statement.difference_cur != 0.0:
|
||||
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."))
|
||||
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 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."))
|
||||
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
|
||||
|
||||
@api.multi
|
||||
def action_cancel(self):
|
||||
"Cancel the the statement."
|
||||
"""Cancel the the statement."""
|
||||
self.write({'state': 'cancel'})
|
||||
return True
|
||||
|
||||
@api.multi
|
||||
def action_review(self):
|
||||
"Change the status of statement from 'draft' to 'to_be_reviewed'."
|
||||
"""Change the status of statement from 'draft' to 'to_be_reviewed'."""
|
||||
# If difference balance not zero prevent further processing
|
||||
self.check_difference_balance()
|
||||
self.write({'state': 'to_be_reviewed'})
|
||||
@@ -91,57 +110,70 @@ class bank_acc_rec_statement(models.Model):
|
||||
|
||||
@api.multi
|
||||
def action_process(self):
|
||||
"""Set the account move lines as 'Cleared' and Assign 'Bank Acc Rec Statement ID'
|
||||
"""Set the account move lines as 'Cleared' and
|
||||
Assign 'Bank Acc Rec Statement ID'
|
||||
for the statement lines which are marked as 'Cleared'."""
|
||||
# If difference balance not zero prevent further processing
|
||||
self.check_difference_balance()
|
||||
for statement in self:
|
||||
statement_lines = statement.credit_move_line_ids + statement.debit_move_line_ids
|
||||
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'
|
||||
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
|
||||
})
|
||||
# Mark the move lines as 'Cleared'mand assign
|
||||
# the 'Bank Acc Rec Statement ID'
|
||||
statement_id = \
|
||||
statement_line.cleared_bank_account and \
|
||||
statement.id or False
|
||||
cleared_bank_account = \
|
||||
statement_line.cleared_bank_account
|
||||
statement_line.move_line_id.write({
|
||||
'cleared_bank_account': cleared_bank_account,
|
||||
'bank_acc_rec_statement_id': statement_id
|
||||
})
|
||||
|
||||
statement.write({'state': 'done',
|
||||
'verified_by_user_id': self.env.uid,
|
||||
'verified_date': time.strftime('%Y-%m-%d')
|
||||
})
|
||||
})
|
||||
return True
|
||||
|
||||
@api.multi
|
||||
def action_cancel_draft(self):
|
||||
"""Reset the statement to draft and perform resetting operations."""
|
||||
for statement in self:
|
||||
statement_lines = statement.credit_move_line_ids + statement.debit_move_line_ids
|
||||
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)
|
||||
|
||||
|
||||
if statement_line.move_line_id:
|
||||
line_ids.append(statement_line.move_line_id) # Find move lines related to statement lines
|
||||
# Find move lines related to statement lines
|
||||
line_ids.append(
|
||||
statement_line.move_line_id)
|
||||
|
||||
# Reset 'Cleared' and 'Bank Acc Rec Statement ID' to False
|
||||
line_ids.write({'cleared_bank_account': False,
|
||||
'bank_acc_rec_statement_id': False,
|
||||
})
|
||||
})
|
||||
# Reset 'Cleared' in statement lines
|
||||
statement_line_ids.write({'cleared_bank_account': False,
|
||||
'research_required': False
|
||||
})
|
||||
})
|
||||
# Reset statement
|
||||
statement.write({'state': 'draft',
|
||||
'verified_by_user_id': False,
|
||||
'verified_date': False
|
||||
})
|
||||
})
|
||||
return True
|
||||
|
||||
@api.multi
|
||||
def action_select_all(self):
|
||||
"""Mark all the statement lines as 'Cleared'."""
|
||||
for statement in self:
|
||||
statement_lines = statement.credit_move_line_ids + statement.debit_move_line_ids
|
||||
statement_lines = \
|
||||
statement.credit_move_line_ids + statement.debit_move_line_ids
|
||||
statement_line_ids = map(lambda x: x.id, statement_lines)
|
||||
statement_line_ids.write({'cleared_bank_account': True})
|
||||
return True
|
||||
@@ -150,274 +182,478 @@ class bank_acc_rec_statement(models.Model):
|
||||
def action_unselect_all(self):
|
||||
"""Reset 'Cleared' in all the statement lines."""
|
||||
for statement in self:
|
||||
statement_lines = statement.credit_move_line_ids + statement.debit_move_line_ids
|
||||
statement_lines = \
|
||||
statement.credit_move_line_ids + statement.debit_move_line_ids
|
||||
statement_line_ids = map(lambda x: x.id, statement_lines)
|
||||
statement_line_ids.write({'cleared_bank_account': False})
|
||||
return True
|
||||
|
||||
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
|
||||
A) Deposits, Credits, and Interest Amount:
|
||||
Total SUM of Amts of lines with Cleared = True
|
||||
Deposits, Credits, and Interest # of Items:
|
||||
Total of number of lines with Cleared = True
|
||||
B) Checks, Withdrawals, Debits, and Service Charges Amount:
|
||||
Checks, Withdrawals, Debits, and Service Charges Amount # of Items:
|
||||
Cleared Balance (Total Sum of the Deposit Amount Cleared (A) – Total Sum of Checks Amount Cleared (B))
|
||||
Difference= (Ending Balance – Beginning Balance) - cleared balance = should be zero.
|
||||
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.
|
||||
"""
|
||||
account_precision = self.env['decimal.precision'].precision_get('Account')
|
||||
account_precision = self.env['decimal.precision'].precision_get(
|
||||
'Account')
|
||||
for statement in self:
|
||||
for line in statement.credit_move_line_ids:
|
||||
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
|
||||
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:
|
||||
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
|
||||
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
|
||||
|
||||
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)
|
||||
|
||||
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
|
||||
@api.multi
|
||||
def refresh_record(self):
|
||||
retval = True
|
||||
refdict = {}
|
||||
|
||||
|
||||
# get current state of moves in the statement
|
||||
for statement in self:
|
||||
|
||||
|
||||
if statement.state == 'draft':
|
||||
for cr_item in statement.credit_move_line_ids:
|
||||
if cr_item.move_line_id and cr_item.cleared_bank_account:
|
||||
refdict[cr_item.move_line_id.id] = cr_item.cleared_bank_account
|
||||
|
||||
refdict[cr_item.move_line_id.id] = \
|
||||
cr_item.cleared_bank_account
|
||||
|
||||
for dr_item in statement.debit_move_line_ids:
|
||||
if dr_item.move_line_id and dr_item.cleared_bank_account:
|
||||
refdict[dr_item.move_line_id.id] = dr_item.cleared_bank_account
|
||||
|
||||
refdict[dr_item.move_line_id.id] = \
|
||||
dr_item.cleared_bank_account
|
||||
|
||||
# for the statement
|
||||
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(statement.account_id, statement.ending_date, statement.suppress_ending_date_filter)
|
||||
|
||||
vals = self.onchange_account_id(
|
||||
statement.account_id,
|
||||
statement.ending_date,
|
||||
statement.suppress_ending_date_filter)
|
||||
|
||||
# list of credit lines
|
||||
outlist = []
|
||||
for cr_item in vals['value']['credit_move_line_ids']:
|
||||
cr_item['cleared_bank_account'] = refdict and refdict.get(cr_item['move_line_id'], False) or False
|
||||
cr_item['cleared_bank_account'] = refdict and refdict.get(
|
||||
cr_item['move_line_id'], False) or False
|
||||
cr_item['research_required'] = False
|
||||
|
||||
|
||||
item = [0, False, cr_item]
|
||||
outlist.append(item)
|
||||
|
||||
# list of debit lines
|
||||
inlist = []
|
||||
for dr_item in vals['value']['debit_move_line_ids']:
|
||||
dr_item['cleared_bank_account'] = refdict and refdict.get(dr_item['move_line_id'], False) or False
|
||||
dr_item['cleared_bank_account'] = refdict and refdict.get(
|
||||
dr_item['move_line_id'], False) or False
|
||||
dr_item['research_required'] = False
|
||||
|
||||
|
||||
item = [0, False, dr_item]
|
||||
inlist.append(item)
|
||||
|
||||
|
||||
# write it to the record so it is visible on the form
|
||||
retval = self.write({'last_ending_date':vals['value']['last_ending_date'],'starting_balance': vals['value']['starting_balance'],
|
||||
'credit_move_line_ids':outlist, 'debit_move_line_ids': inlist})
|
||||
|
||||
retval = self.write(
|
||||
{'last_ending_date': vals['value']['last_ending_date'],
|
||||
'starting_balance': vals['value']['starting_balance'],
|
||||
'credit_move_line_ids': outlist,
|
||||
'debit_move_line_ids': inlist})
|
||||
|
||||
return retval
|
||||
|
||||
|
||||
# get starting balance for the account
|
||||
@api.multi
|
||||
def get_starting_balance(self, account_id, ending_date):
|
||||
|
||||
result = (False,0.0)
|
||||
reslist=[]
|
||||
|
||||
result = (False, 0.0)
|
||||
reslist = []
|
||||
statement_obj = self.env['bank.acc.rec.statement']
|
||||
domain = [('account_id', '=', account_id), ('state', '=', 'done')]
|
||||
statement_ids = statement_obj.search(domain).ids
|
||||
|
||||
|
||||
# get all statements for this account in the past
|
||||
for statement in statement_obj.browse(statement_ids):
|
||||
if statement.ending_date < ending_date:
|
||||
reslist.append((statement.ending_date, statement.ending_balance))
|
||||
|
||||
reslist.append(
|
||||
(statement.ending_date, statement.ending_balance))
|
||||
|
||||
# get the latest statement value
|
||||
if len(reslist):
|
||||
reslist = sorted(reslist,key=itemgetter(0))
|
||||
result = reslist[len(reslist)-1]
|
||||
|
||||
return result
|
||||
|
||||
@api.onchange('account_id','ending_date','suppress_ending_date_filter')
|
||||
reslist = sorted(reslist, key=itemgetter(0))
|
||||
result = reslist[len(reslist) - 1]
|
||||
|
||||
return result
|
||||
|
||||
@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': []}}
|
||||
val = {
|
||||
'value': {'credit_move_line_ids': [], 'debit_move_line_ids': []}}
|
||||
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
|
||||
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_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', '=', self.account_id.id), ('move_id.state', '=', 'posted'), ('cleared_bank_account', '=', False)]
|
||||
# 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', '=', 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):
|
||||
|
||||
amount_currency = (line.amount_currency < 0) and (-1*line.amount_currency) or line.amount_currency
|
||||
|
||||
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'
|
||||
'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(self.account_id.id, self.ending_date)
|
||||
|
||||
# look for previous statement for the account to
|
||||
# pull ending balance as starting balance
|
||||
prev_stmt = self.get_starting_balance(self.account_id.id,
|
||||
self.ending_date)
|
||||
val['value']['last_ending_date'] = prev_stmt[0]
|
||||
val['value']['starting_balance'] = prev_stmt[1]
|
||||
|
||||
|
||||
return val
|
||||
|
||||
|
||||
def get_default_company_id(self):
|
||||
return self.env['res.users'].browse([self.env.uid]).company_id.id
|
||||
|
||||
_name = "bank.acc.rec.statement"
|
||||
name = fields.Char('Name', required=True, size=64, states={'done':[('readonly', True)]}, help="This is a unique name identifying the statement (e.g. Bank X January 2012).")
|
||||
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")
|
||||
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.")
|
||||
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, default='draft')
|
||||
('draft', 'Draft'),
|
||||
('to_be_reviewed', 'Ready for Review'),
|
||||
('done', 'Done'),
|
||||
('cancel', 'Cancel')
|
||||
], '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!')
|
||||
('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(models.Model):
|
||||
class BankAccRecStatementLine(models.Model):
|
||||
_name = "bank.acc.rec.statement.line"
|
||||
_description = "Statement Line"
|
||||
name = fields.Char('Name', size=64, help="Derived from the related Journal Item.", required=True)
|
||||
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.")
|
||||
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')
|
||||
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')
|
||||
|
||||
@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.
|
||||
# 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 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)
|
||||
|
||||
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(BankAccRecStatementLine, 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))
|
||||
# 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.browse(move_line_ids).write({'draft_assigned_to_statement': False,
|
||||
'cleared_bank_account': False,
|
||||
'bank_acc_rec_statement_id': False,
|
||||
})
|
||||
return super(bank_acc_rec_statement_line, self).unlink()
|
||||
account_move_line_obj.browse(move_line_ids).write(
|
||||
{'draft_assigned_to_statement': False,
|
||||
'cleared_bank_account': False,
|
||||
'bank_acc_rec_statement_id': False,
|
||||
})
|
||||
return super(BankAccRecStatementLine, self).unlink()
|
||||
|
||||
@@ -8,8 +8,19 @@ from odoo import fields, models
|
||||
|
||||
|
||||
class AccountMoveLine(models.Model):
|
||||
_inherit='account.move.line'
|
||||
_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.Boolean(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')
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<!-- QWeb Reports -->
|
||||
<report
|
||||
id="bank_statement_detail"
|
||||
model="bank.acc.rec.statement"
|
||||
string="Bank Statement-Detail"
|
||||
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"
|
||||
string="Bank Statement-Summary"
|
||||
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'"
|
||||
/>
|
||||
<!-- QWeb Reports -->
|
||||
<report
|
||||
id="bank_statement_detail"
|
||||
model="bank.acc.rec.statement"
|
||||
string="Bank Statement-Detail"
|
||||
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"
|
||||
string="Bank Statement-Summary"
|
||||
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>
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
<?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})" />
|
||||
@@ -267,5 +266,4 @@
|
||||
</t>
|
||||
</t>
|
||||
</template>
|
||||
</data>
|
||||
</odoo>
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
<?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})" />
|
||||
@@ -186,5 +185,4 @@
|
||||
</t>
|
||||
</t>
|
||||
</template>
|
||||
</data>
|
||||
</odoo>
|
||||
|
||||
Reference in New Issue
Block a user