You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

84 lines
3.2 KiB

# Copyright 2020 ForgeFlow, S.L.
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo.tests.common import TransactionCase
from odoo.exceptions import ValidationError
class TestPosStatementClosingBalance(TransactionCase):
def setUp(self):
super(TestPosStatementClosingBalance, self).setUp()
self.pos_config = self.env["pos.config"].create({"name": "PoS config"})
self.wizard_reason = self.env['wizard.pos.move.reason']
account = self.env['account.account'].create({
'code': '9999',
'name': 'Test',
'user_type_id': self.env.ref(
"account.data_account_type_liquidity").id
})
self.bank_journal = self.env["account.journal"].create({
"name": "Test bank",
"code": "TB1",
"type": "bank",
"pos_control_ending_balance": True,
})
self.pos_move_reason = self.env['pos.move.reason'].create({
'name': 'Bank closing reason',
'is_income_reason': True,
'is_expense_reason': True,
'expense_account_id': account.id,
'income_account_id': account.id,
'journal_ids': self.bank_journal.ids,
'company_id': self.env.ref('base.main_company').id,
})
self.bank_journal.pos_move_reason_id = self.pos_move_reason
self.pos_config.journal_ids += self.bank_journal
self.pos_config.open_session_cb()
self.session = self.pos_config.current_session_id
self.session.action_pos_session_open()
def test_wizard(self):
journal = self.session.journal_ids.filtered(lambda j: j.code == 'TB1')
wizard = self.wizard_reason.with_context(
active_id=self.session.id,
default_move_type='income').create({
'move_reason_id': self.pos_move_reason.id,
'journal_id': self.bank_journal.id,
'statement_id': self.session.statement_ids.filtered(
lambda s: s.journal_id == self.bank_journal).id,
'amount': 10,
'name': 'Test Bank Deposit',
})
wizard.apply()
self.assertEqual(
self.session.statement_ids.filtered(
lambda r: r.journal_id.id == journal.id
).difference,
-10.0,
)
with self.assertRaises(ValidationError):
self.session.action_pos_session_closing_control()
wizard = (
self.env["pos.update.bank.statement.closing.balance"]
.with_context(
active_model="pos.session", active_ids=self.session.ids
)
.create({})
)
for item in wizard.item_ids:
item.balance_end_real = 2.0
wizard.action_confirm()
self.assertEqual(
self.session.statement_ids.filtered(
lambda r: r.journal_id.id == journal.id
).balance_end,
2.0,
)
self.assertEqual(
self.session.statement_ids.filtered(
lambda r: r.journal_id.id == journal.id
).difference,
0,
)
self.session.action_pos_session_closing_control()
self.assertEqual(self.session.state, 'closed')