1
0
forked from Mapan/odoo17e
odoo17e-kedaikipas58/addons/account_reports/tests/test_reconciliation_report.py
2024-12-10 09:04:09 +07:00

777 lines
40 KiB
Python

# pylint: disable=C0326
from .common import TestAccountReportsCommon
from odoo import fields, Command
from odoo.tests import tagged
@tagged('post_install', '-at_install')
class TestReconciliationReport(TestAccountReportsCommon):
@classmethod
def setUpClass(cls, chart_template_ref=None):
super().setUpClass(chart_template_ref=chart_template_ref)
cls.currency_data_2 = cls.setup_multi_currency_data({
'name': 'Dark Chocolate Coin',
'symbol': '🍫',
'currency_unit_label': 'Dark Choco',
'currency_subunit_label': 'Dark Cacao Powder',
}, rate2016=10.0, rate2017=20.0)
def test_reconciliation_report_single_currency(self):
"""
Tests the impact of positive/negative payments/statements on the reconciliation report in a single-currency
environment.
"""
bank_journal = self.env['account.journal'].create({
'name': 'Bank',
'code': 'BNKKK',
'type': 'bank',
'company_id': self.company_data['company'].id,
})
# ==== Statements ====
self.env['account.bank.statement'].create({
'name': 'statement_1',
'date': '2014-12-31',
'balance_start': 0.0,
'balance_end_real': 100.0,
'line_ids': [
Command.create({'payment_ref': 'line_1', 'amount': 600.0, 'date': '2014-12-31', 'journal_id': bank_journal.id}),
Command.create({'payment_ref': 'line_2', 'amount': -500.0, 'date': '2014-12-31', 'journal_id': bank_journal.id}),
],
})
statement_2 = self.env['account.bank.statement'].create({
'name': 'statement_2',
'date': '2015-01-05',
'balance_start': 200.0, # create an unexplained difference of 100.0.
'balance_end_real': - 200.0,
'journal_id': bank_journal.id,
'line_ids': [
Command.create({'payment_ref': 'line_1', 'amount': 100.0, 'date': '2015-01-01', 'partner_id': self.partner_a.id, 'journal_id': bank_journal.id}),
Command.create({'payment_ref': 'line_2', 'amount': 200.0, 'date': '2015-01-02', 'journal_id': bank_journal.id}),
Command.create({'payment_ref': 'line_3', 'amount': -300.0, 'date': '2015-01-03', 'partner_id': self.partner_a.id, 'journal_id': bank_journal.id}),
Command.create({'payment_ref': 'line_4', 'amount': -400.0, 'date': '2015-01-04', 'journal_id': bank_journal.id}),
],
})
# ==== Payments ====
self.inbound_payment_method_line.journal_id = bank_journal.id
self.outbound_payment_method_line.journal_id = bank_journal.id
payment_1 = self.env['account.payment'].create({
'amount': 150.0,
'payment_type': 'inbound',
'partner_type': 'customer',
'date': '2015-01-01',
'journal_id': bank_journal.id,
'partner_id': self.partner_a.id,
'payment_method_line_id': self.inbound_payment_method_line.id,
})
payment_2 = self.env['account.payment'].create({
'amount': 250.0,
'payment_type': 'outbound',
'partner_type': 'supplier',
'date': '2015-01-02',
'journal_id': bank_journal.id,
'partner_id': self.partner_a.id,
'payment_method_line_id': self.outbound_payment_method_line.id,
})
payment_3 = self.env['account.payment'].create({
'amount': 350.0,
'payment_type': 'outbound',
'partner_type': 'customer',
'date': '2015-01-03',
'journal_id': bank_journal.id,
'partner_id': self.partner_a.id,
'payment_method_line_id': self.inbound_payment_method_line.id,
})
payment_4 = self.env['account.payment'].create({
'amount': 450.0,
'payment_type': 'inbound',
'partner_type': 'supplier',
'date': '2015-01-04',
'journal_id': bank_journal.id,
'partner_id': self.partner_a.id,
'payment_method_line_id': self.outbound_payment_method_line.id,
})
(payment_1 + payment_2 + payment_3 + payment_4).action_post()
# ==== Reconciliation ====
st_line = statement_2.line_ids.filtered(lambda line: line.payment_ref == 'line_1')
payment_line = payment_1.line_ids.filtered(lambda line: line.account_id == bank_journal.company_id.account_journal_payment_debit_account_id)
wizard = self.env['bank.rec.widget'].with_context(default_st_line_id=st_line.id).new({})
wizard._action_add_new_amls(payment_line, allow_partial=False)
wizard._action_validate()
st_line = statement_2.line_ids.filtered(lambda line: line.payment_ref == 'line_3')
payment_line = payment_2.line_ids.filtered(lambda line: line.account_id == bank_journal.company_id.account_journal_payment_credit_account_id)
wizard = self.env['bank.rec.widget'].with_context(default_st_line_id=st_line.id).new({})
wizard._action_add_new_amls(payment_line, allow_partial=False)
wizard._action_validate()
# ==== Report ====
report = self.env.ref('account_reports.bank_reconciliation_report').with_context(
active_id=bank_journal.id,
active_model=bank_journal._name
)
options = self._generate_options(report, '2016-01-02', '2016-01-02')
options['unfold_all'] = True
lines = report._get_lines(options)
self.assertLinesValues(
lines,
# Name Date Amount
[0, 1, 3],
[
('Balance of \'101405 Bank\'', '', -200.0),
('Last statement balance', '', -200.0),
('Including Unreconciled Receipts', '', 200.0),
('BNKKK/2015/00002', '01/02/2015', 200.0),
('Including Unreconciled Payments', '', -400.0),
('BNKKK/2015/00004', '01/04/2015', -400.0),
('Transactions without statement', '', 0.0),
('Including Unreconciled Receipts', '', 0.0),
('Including Unreconciled Payments', '', 0.0),
('Misc. operations', '', 0.0),
('Outstanding Receipts/Payments', '', 100.0),
('(+) Outstanding Receipts', '', 450.0),
('PBNKKK/2015/00004', '01/04/2015', 450.0),
('(-) Outstanding Payments', '', -350.0),
('PBNKKK/2015/00003', '01/03/2015', -350.0),
],
options,
currency_map={3: {'currency': bank_journal.currency_id}},
ignore_folded=False,
)
def test_reconciliation_report_multi_currencies(self):
""" Tests the management of multi-currencies in the reconciliation report. """
self.env.user.groups_id |= self.env.ref('base.group_multi_currency')
self.env.user.groups_id |= self.env.ref('base.group_no_one')
company_currency = self.company_data['currency'] # USD
journal_currency = self.currency_data['currency'] # Gol
choco_currency = self.currency_data_2['currency'] # Dar
# ==== Journal with a foreign currency ====
bank_journal = self.env['account.journal'].create({
'name': 'Bank',
'code': 'BNKKK',
'type': 'bank',
'company_id': self.company_data['company'].id,
'currency_id': journal_currency.id
})
# ==== Statement ====
bank_statement = self.env['account.bank.statement'].create({
'name': 'statement',
'line_ids': [
# Transaction in the company currency.
(0, 0, {
'payment_ref': 'line_1',
'date': '2016-01-01',
'amount': 100.0,
'journal_id': bank_journal.id,
'amount_currency': 50.01,
'foreign_currency_id': company_currency.id,
}),
# Transaction in a third currency.
(0, 0, {
'payment_ref': 'line_3',
'date': '2016-01-01',
'amount': 100.0,
'journal_id': bank_journal.id,
'amount_currency': 999.99,
'foreign_currency_id': choco_currency.id,
}),
],
})
# Partially reconcile the suspense amount associated with each bank statement line
suspense_account = bank_journal.suspense_account_id
other_account = bank_journal.company_id.default_cash_difference_income_account_id
# the first is in company currency
bank_move_1 = bank_statement.line_ids[0].move_id
bank_move_1_suspense_line = bank_move_1.line_ids.filtered(lambda l: l.account_id == suspense_account)
bank_move_1.write({'line_ids': [
Command.create({'account_id': other_account.id, 'credit': 10.00}),
Command.update(bank_move_1_suspense_line.id, {'credit': 40.01}),
]})
# the second is in neither company nor journal currency
bank_move_2 = bank_statement.line_ids[1].move_id
bank_move_2_suspense_line = bank_move_2.line_ids.filtered(lambda l: l.account_id == suspense_account)
bank_move_2.write({'line_ids': [
Command.create({
'account_id': other_account.id,
'currency_id': bank_move_2_suspense_line.currency_id.id,
'credit': 3.33,
'amount_currency': -99.99
}),
Command.update(bank_move_2_suspense_line.id, {
'credit': 30.0,
'amount_currency': -900.0
}),
]})
# ==== Payments ====
self.inbound_payment_method_line.journal_id = bank_journal.id
# Payment in the company's currency.
payment_1 = self.env['account.payment'].create({
'amount': 1000.0,
'payment_type': 'inbound',
'partner_type': 'customer',
'date': '2016-01-01',
'journal_id': bank_journal.id,
'partner_id': self.partner_a.id,
'currency_id': company_currency.id,
'payment_method_line_id': self.inbound_payment_method_line.id,
})
# Payment in the same foreign currency as the journal.
payment_2 = self.env['account.payment'].create({
'amount': 2000.0,
'payment_type': 'inbound',
'partner_type': 'customer',
'date': '2016-01-01',
'journal_id': bank_journal.id,
'partner_id': self.partner_a.id,
'currency_id': journal_currency.id,
'payment_method_line_id': self.inbound_payment_method_line.id,
})
# Payment in a third foreign currency.
payment_3 = self.env['account.payment'].create({
'amount': 3000.0,
'payment_type': 'inbound',
'partner_type': 'customer',
'date': '2016-01-01',
'journal_id': bank_journal.id,
'partner_id': self.partner_a.id,
'currency_id': choco_currency.id,
'payment_method_line_id': self.inbound_payment_method_line.id,
})
(payment_1 + payment_2 + payment_3).action_post()
# ==== Report ====
report = self.env.ref('account_reports.bank_reconciliation_report').with_context(
active_id=bank_journal.id,
active_model=bank_journal._name
)
with self.debug_mode(report):
options = self._generate_options(report, '2016-01-02', '2016-01-02')
options['unfold_all'] = True
lines = report._get_lines(options)
self.assertLinesValues(
lines,
# Name Date Am. Cur. Cur. Amount
[0, 1, 3, 4, 5],
[
('Balance of \'101405 Bank\'', '', '', '', 200.0),
('Last statement balance', '', '', '', 200.0),
('Including Unreconciled Receipts', '', '', '', 170.005),
('BNKKK/2016/00002', '01/01/2016', 900.00, choco_currency.name, 90.001),
('BNKKK/2016/00001', '01/01/2016', 40.01, company_currency.name, 80.004),
('Including Unreconciled Payments', '', '', '', 0.0),
('Transactions without statement', '', '', '', 0.0),
('Including Unreconciled Receipts', '', '', '', 0.0),
('Including Unreconciled Payments', '', '', '', 0.0),
('Misc. operations', '', '', '', 0.0),
('Outstanding Receipts/Payments', '', '', '', 5900.0),
('(+) Outstanding Receipts', '', '', '', 5900.0),
('PBNKKK/2016/00003', '01/01/2016', 3000.0, choco_currency.name, 900.0),
('PBNKKK/2016/00002', '01/01/2016', '', '', 2000.0),
('PBNKKK/2016/00001', '01/01/2016', 1000.0, company_currency.name, 3000.0),
('(-) Outstanding Payments', '', '', '', 0.0),
],
options,
currency_map={
3: {'currency_code_index': 4},
5: {'currency': journal_currency},
},
ignore_folded=False,
)
def test_reconciliation_change_date(self):
"""
Tests the impact of positive/negative payments/statements on the reconciliation report in a single-currency
environment.
"""
bank_journal = self.company_data['default_journal_bank']
statement = self.env['account.bank.statement'].create({
'name': 'statement_1',
'date': '2019-01-10',
'balance_start': 0.0,
'balance_end_real': 130.0,
'line_ids': [
(0, 0, {'payment_ref': 'line_1', 'amount': 10.0, 'date': '2019-01-01', 'journal_id': bank_journal.id}),
(0, 0, {'payment_ref': 'line_2', 'amount': 20.0, 'date': '2019-01-02', 'journal_id': bank_journal.id}),
(0, 0, {'payment_ref': 'line_3', 'amount': 30.0, 'date': '2019-01-03', 'journal_id': bank_journal.id}),
(0, 0, {'payment_ref': 'line_4', 'amount': -40.0, 'date': '2019-01-04', 'journal_id': bank_journal.id}),
(0, 0, {'payment_ref': 'line_5', 'amount': 50.0, 'date': '2019-01-05', 'journal_id': bank_journal.id}),
(0, 0, {'payment_ref': 'line_6', 'amount': 60.0, 'date': '2019-01-06', 'journal_id': bank_journal.id}),
],
})
# This will allow to test if the balance of the bank account is changed
statement['balance_end_real'] = 140.0
payment = self.env['account.payment'].create({
'amount': 1000.0,
'payment_type': 'inbound',
'partner_type': 'customer',
'date': '2019-01-03',
'journal_id': bank_journal.id,
'partner_id': self.partner_a.id,
})
payment.action_post()
report = self.env.ref('account_reports.bank_reconciliation_report').with_context(
active_id=bank_journal.id,
active_model='account.journal'
)
options = self._generate_options(report, fields.Date.from_string('2019-01-01'), fields.Date.from_string('2019-01-01'))
options['all_entries'] = True
options['unfold_all'] = True
# The last statement is taken into account cause it has a line corresponding to the date of the report.
lines = report._get_lines(options)
self.assertLinesValues(
lines,
# Name Date Amount
[0, 1, 3],
[
('Balance of \'101401 Bank\'', '', 140.0),
('Last statement balance', '', 140.0),
('Including Unreconciled Receipts', '', 10.0),
('BNK1/2019/00001', '01/01/2019', 10.0),
('Including Unreconciled Payments', '', 0.0),
('Transactions without statement', '', 0.0),
('Including Unreconciled Receipts', '', 0.0),
('Including Unreconciled Payments', '', 0.0),
('Misc. operations', '', 0.0),
('Outstanding Receipts/Payments', '', 0.0),
('(+) Outstanding Receipts', '', 0.0),
('(-) Outstanding Payments', '', 0.0),
],
options,
currency_map={3: {'currency': bank_journal.currency_id}},
ignore_folded=False,
)
options = self._generate_options(report, fields.Date.from_string('2019-01-01'), fields.Date.from_string('2019-01-04'))
options['all_entries'] = True
options['unfold_all'] = True
lines = report._get_lines(options)
self.assertLinesValues(
lines,
# Name Date Amount
[0, 1, 3],
[
('Balance of \'101401 Bank\'', '', 140.0),
('Last statement balance', '', 140.0),
('Including Unreconciled Receipts', '', 60.0),
('BNK1/2019/00003', '01/03/2019', 30.0),
('BNK1/2019/00002', '01/02/2019', 20.0),
('BNK1/2019/00001', '01/01/2019', 10.0),
('Including Unreconciled Payments', '', -40.0),
('BNK1/2019/00004', '01/04/2019', -40.0),
('Transactions without statement', '', 0.0),
('Including Unreconciled Receipts', '', 0.0),
('Including Unreconciled Payments', '', 0.0),
('Misc. operations', '', 0.0),
('Outstanding Receipts/Payments', '', 1000.0),
('(+) Outstanding Receipts', '', 1000.0),
('PBNK1/2019/00001', '01/03/2019', 1000.0),
('(-) Outstanding Payments', '', 0.0),
],
options,
currency_map={3: {'currency': bank_journal.currency_id}},
ignore_folded=False,
)
def test_reconciliation_report_non_statement_payment(self):
"""
Test that moves not linked to a bank statement/payment but linked for example to expenses are all showing in the
report
"""
bank_journal = self.env['account.journal'].create({
'name': 'Bank',
'code': 'BNKKK',
'type': 'bank',
'company_id': self.company_data['company'].id,
})
# ==== Misc ====
self.env['account.move'].create({
'journal_id': bank_journal.id,
'date': '2014-12-31',
'line_ids': [
(0, 0, {
'name': 'Source',
'debit': 800,
'credit': 0,
'account_id': self.company_data['default_account_expense'].id,
}),
(0, 0, {
'name': 'Destination',
'debit': 0,
'credit': 800,
'account_id': bank_journal.company_id.account_journal_payment_credit_account_id.id,
}),
]
}).action_post()
self.env['account.move'].create({
'journal_id': bank_journal.id,
'date': '2015-12-31',
'line_ids': [
(0, 0, {
'name': 'Source',
'debit': 500,
'credit': 0,
'account_id': self.company_data['default_account_expense'].id,
}),
(0, 0, {
'name': 'Destination',
'debit': 0,
'credit': 500,
'account_id': bank_journal.company_id.account_journal_payment_credit_account_id.id,
}),
]
}).action_post()
# ==== Report ====
report = self.env.ref('account_reports.bank_reconciliation_report').with_context(
active_id=bank_journal.id,
active_model='account.journal'
)
options = self._generate_options(report, '2016-01-02', '2016-01-02')
options['unfold_all'] = True
lines = report._get_lines(options)
self.assertLinesValues(
lines,
# Name Date Amount
[0, 1, 3],
[
('Balance of \'101405 Bank\'', '', 0.0),
('Last statement balance', '', 0.0),
('Including Unreconciled Receipts', '', 0.0),
('Including Unreconciled Payments', '', 0.0),
('Transactions without statement', '', 0.0),
('Including Unreconciled Receipts', '', 0.0),
('Including Unreconciled Payments', '', 0.0),
('Misc. operations', '', 0.0),
('Outstanding Receipts/Payments', '', -1300.0),
('(+) Outstanding Receipts', '', 0.0),
('(-) Outstanding Payments', '', -1300.0),
('BNKKK/2015/00001', '12/31/2015', -500.00),
('BNKKK/2014/00001', '12/31/2014', -800.00),
],
options,
currency_map={3: {'currency': bank_journal.currency_id}},
ignore_folded=False,
)
def test_reconciliation_report_misc_entry(self):
""" This test will check if the report correctly display the misc entry """
bank_journal = self.env['account.journal'].create({
'name': 'Bank',
'code': 'BNKKK',
'type': 'bank',
'company_id': self.company_data['company'].id,
})
# ==== Misc ====
self.env['account.move'].create({
'journal_id': bank_journal.id,
'date': '2016-01-02',
'line_ids': [
(0, 0, {
'name': 'Source',
'debit': 800,
'credit': 0,
'account_id': bank_journal.default_account_id.id,
}),
(0, 0, {
'name': 'Destination',
'debit': 0,
'credit': 800,
'account_id': self.company_data['default_account_expense'].id,
}),
]
}).action_post()
report = self.env.ref('account_reports.bank_reconciliation_report').with_context(
active_id=bank_journal.id,
active_model='account.journal'
)
options = self._generate_options(report, '2016-01-02', '2016-01-02')
options['unfold_all'] = True
lines = report._get_lines(options)
self.assertLinesValues(
lines,
# Name Date Amount
[0, 1, 3],
[
('Balance of \'101405 Bank\'', '', 800.0),
('Last statement balance', '', 0.0),
('Including Unreconciled Receipts', '', 0.0),
('Including Unreconciled Payments', '', 0.0),
('Transactions without statement', '', 0.0),
('Including Unreconciled Receipts', '', 0.0),
('Including Unreconciled Payments', '', 0.0),
('Misc. operations', '', 800.0),
('Outstanding Receipts/Payments', '', 0.0),
('(+) Outstanding Receipts', '', 0.0),
('(-) Outstanding Payments', '', 0.0),
],
options,
currency_map={3: {'currency': bank_journal.currency_id}},
ignore_folded=False,
)
# With the domain, since the date of the misc is not in the same year, the misc is not present
options = self._generate_options(report, '2014-01-02', '2014-01-02')
options['unfold_all'] = True
lines = report._get_lines(options)
self.assertLinesValues(
lines,
# Name Date Amount
[0, 1, 3],
[
('Balance of \'101405 Bank\'', '', 0.0),
('Last statement balance', '', 0.0),
('Including Unreconciled Receipts', '', 0.0),
('Including Unreconciled Payments', '', 0.0),
('Transactions without statement', '', 0.0),
('Including Unreconciled Receipts', '', 0.0),
('Including Unreconciled Payments', '', 0.0),
('Misc. operations', '', 0.0),
('Outstanding Receipts/Payments', '', 0.0),
('(+) Outstanding Receipts', '', 0.0),
('(-) Outstanding Payments', '', 0.0),
],
options,
currency_map={3: {'currency': bank_journal.currency_id}},
ignore_folded=False,
)
def test_reconciliation_report_delete_statement(self):
""" This test will do a basic flow where we create a statement and then we delete it to see how the report react"""
bank_journal = self.company_data['default_journal_bank']
statement = self.env['account.bank.statement'].create({
'name': 'statement_1',
'date': '2019-01-10',
'balance_start': 0.0,
'balance_end_real': 130.0,
'line_ids': [
(0, 0, {'payment_ref': 'line_1', 'amount': 10.0, 'date': '2019-01-01', 'journal_id': bank_journal.id}),
(0, 0, {'payment_ref': 'line_2', 'amount': 20.0, 'date': '2019-01-02', 'journal_id': bank_journal.id}),
(0, 0, {'payment_ref': 'line_3', 'amount': 30.0, 'date': '2019-01-03', 'journal_id': bank_journal.id}),
(0, 0, {'payment_ref': 'line_4', 'amount': -40.0, 'date': '2019-01-04', 'journal_id': bank_journal.id}),
(0, 0, {'payment_ref': 'line_5', 'amount': 50.0, 'date': '2019-01-05', 'journal_id': bank_journal.id}),
(0, 0, {'payment_ref': 'line_6', 'amount': 60.0, 'date': '2019-01-06', 'journal_id': bank_journal.id}),
],
})
report = self.env.ref('account_reports.bank_reconciliation_report').with_context(
active_id=bank_journal.id,
active_model='account.journal'
)
options = self._generate_options(report, fields.Date.from_string('2019-01-01'), fields.Date.from_string('2019-01-12'))
options['all_entries'] = True
options['unfold_all'] = True
lines = report._get_lines(options)
self.assertLinesValues(
lines,
# Name Date Amount
[0, 1, 3],
[
('Balance of \'101401 Bank\'', '', 130.0),
('Last statement balance', '', 130.0),
('Including Unreconciled Receipts', '', 170.0),
('BNK1/2019/00006', '01/06/2019', 60.0),
('BNK1/2019/00005', '01/05/2019', 50.0),
('BNK1/2019/00003', '01/03/2019', 30.0),
('BNK1/2019/00002', '01/02/2019', 20.0),
('BNK1/2019/00001', '01/01/2019', 10.0),
('Including Unreconciled Payments', '', -40.0),
('BNK1/2019/00004', '01/04/2019', -40.0),
('Transactions without statement', '', 0.0),
('Including Unreconciled Receipts', '', 0.0),
('Including Unreconciled Payments', '', 0.0),
('Misc. operations', '', 0.0),
('Outstanding Receipts/Payments', '', 0.0),
('(+) Outstanding Receipts', '', 0.0),
('(-) Outstanding Payments', '', 0.0),
],
options,
currency_map={3: {'currency': bank_journal.currency_id}},
ignore_folded=False,
)
statement.unlink()
options = self._generate_options(report, fields.Date.from_string('2019-01-01'), fields.Date.from_string('2019-01-12'))
options['all_entries'] = True
options['unfold_all'] = True
lines = report._get_lines(options)
self.assertLinesValues(
lines,
# Name Date Amount
[0, 1, 3],
[
('Balance of \'101401 Bank\'', '', 130.0),
('Last statement balance', '', 0.0),
('Including Unreconciled Receipts', '', 0.0),
('Including Unreconciled Payments', '', 0.0),
('Transactions without statement', '', 130.0),
('Including Unreconciled Receipts', '', 170.0),
('BNK1/2019/00006', '01/06/2019', 60.0),
('BNK1/2019/00005', '01/05/2019', 50.0),
('BNK1/2019/00003', '01/03/2019', 30.0),
('BNK1/2019/00002', '01/02/2019', 20.0),
('BNK1/2019/00001', '01/01/2019', 10.0),
('Including Unreconciled Payments', '', -40.0),
('BNK1/2019/00004', '01/04/2019', -40.0),
('Misc. operations', '', 0.0),
('Outstanding Receipts/Payments', '', 0.0),
('(+) Outstanding Receipts', '', 0.0),
('(-) Outstanding Payments', '', 0.0),
],
options,
currency_map={3: {'currency': bank_journal.currency_id}},
ignore_folded=False,
)
def test_reconciliation_report_transaction_without_statement(self):
"""
This test will ensure that the section transaction without statement section contains the reconcile entries.
So the section should not always be the sum of his children.
"""
bank_journal = self.company_data['default_journal_bank']
bank_statement_lines = self.env['account.bank.statement.line'].create([
{
'payment_ref': 'Initial balance',
'journal_id': bank_journal.id,
'partner_id': self.partner_a.id,
'amount': 1000.0,
'date': '2019-01-01',
},
{
'payment_ref': 'To be reconciled',
'journal_id': bank_journal.id,
'partner_id': self.partner_a.id,
'amount': 100.0,
'date': '2019-01-01',
}
])
report = self.env.ref('account_reports.bank_reconciliation_report').with_context(
active_id=bank_journal.id,
active_model='account.journal'
)
options = self._generate_options(report, '2019-01-01', '2019-01-12')
options['all_entries'] = True
options['unfold_all'] = True
lines = report._get_lines(options)
self.assertLinesValues(
lines,
# Name Date Amount
[0, 1, 3],
[
('Balance of \'101401 Bank\'', '', 1100.0),
('Last statement balance', '', 0.0),
('Including Unreconciled Receipts', '', 0.0),
('Including Unreconciled Payments', '', 0.0),
('Transactions without statement', '', 1100.0),
('Including Unreconciled Receipts', '', 1100.0),
('BNK1/2019/00002', '01/01/2019', 100.0),
('BNK1/2019/00001', '01/01/2019', 1000.0),
('Including Unreconciled Payments', '', 0.0),
('Misc. operations', '', 0.0),
('Outstanding Receipts/Payments', '', 0.0),
('(+) Outstanding Receipts', '', 0.0),
('(-) Outstanding Payments', '', 0.0),
],
options,
currency_map={3: {'currency': bank_journal.currency_id}},
ignore_folded=False,
)
payment = self.env['account.payment'].create({
'amount': 100.0,
'payment_type': 'inbound',
'date': '2019-01-01',
'journal_id': bank_journal.id,
'partner_id': self.partner_a.id,
})
payment.action_post()
payment_line = payment.line_ids.filtered(lambda line: line.account_id == bank_journal.company_id.account_journal_payment_debit_account_id)
wizard = self.env['bank.rec.widget'].with_context(default_st_line_id=bank_statement_lines[1].id).new({})
wizard._action_add_new_amls(payment_line, allow_partial=False)
wizard._action_validate()
options = self._generate_options(report, '2019-01-01', '2019-01-12')
options['all_entries'] = True
options['unfold_all'] = True
lines = report._get_lines(options)
self.assertLinesValues(
lines,
# Name Date Amount
[0, 1, 3],
[
('Balance of \'101401 Bank\'', '', 1100.0),
('Last statement balance', '', 0.0),
('Including Unreconciled Receipts', '', 0.0),
('Including Unreconciled Payments', '', 0.0),
('Transactions without statement', '', 1100.0),
('Including Unreconciled Receipts', '', 1000.0),
('BNK1/2019/00001', '01/01/2019', 1000.0),
('Including Unreconciled Payments', '', 0.0),
('Misc. operations', '', 0.0),
('Outstanding Receipts/Payments', '', 0.0),
('(+) Outstanding Receipts', '', 0.0),
('(-) Outstanding Payments', '', 0.0),
],
options,
currency_map={3: {'currency': bank_journal.currency_id}},
ignore_folded=False,
)