Enric Tobella
5 years ago
committed by
Juan Jose Scarafia
2 changed files with 131 additions and 0 deletions
@ -0,0 +1 @@ |
|||||
|
from . import test_cash_flow |
@ -0,0 +1,130 @@ |
|||||
|
# Copyright 2019 Creu Blanca |
||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). |
||||
|
|
||||
|
from datetime import timedelta |
||||
|
|
||||
|
from odoo.exceptions import ValidationError |
||||
|
from odoo.fields import Date |
||||
|
from odoo.tools import mute_logger |
||||
|
from odoo.tests.common import TransactionCase, post_install, at_install |
||||
|
|
||||
|
|
||||
|
@at_install(False) |
||||
|
@post_install(True) |
||||
|
class TestCashFlow(TransactionCase): |
||||
|
|
||||
|
def setUp(self): |
||||
|
super().setUp() |
||||
|
self.company = self.env['res.company'].create({ |
||||
|
'name': 'TEST' |
||||
|
}) |
||||
|
self.report = self.browse_ref( |
||||
|
'mis_builder_cash_flow.mis_instance_cash_flow') |
||||
|
self.report.company_id = self.company |
||||
|
self.bank_account = self.env['account.account'].create({ |
||||
|
"company_id": self.company.id, |
||||
|
"code": "TEST1", |
||||
|
"name": "Bank account 01", |
||||
|
"user_type_id": self.browse_ref( |
||||
|
"account.data_account_type_liquidity" |
||||
|
).id, |
||||
|
}) |
||||
|
self.bank_account_hide = self.env['account.account'].create({ |
||||
|
"company_id": self.company.id, |
||||
|
"code": "TEST2", |
||||
|
"name": "Bank account 02", |
||||
|
"user_type_id": self.browse_ref( |
||||
|
"account.data_account_type_liquidity" |
||||
|
).id, |
||||
|
"hide_in_cash_flow": True, |
||||
|
}) |
||||
|
self.account = self.env['account.account'].create({ |
||||
|
"company_id": self.company.id, |
||||
|
"code": "TEST3", |
||||
|
"name": "Account", |
||||
|
"user_type_id": self.browse_ref( |
||||
|
"account.data_account_type_receivable" |
||||
|
).id, |
||||
|
"reconcile": True, |
||||
|
}) |
||||
|
self.journal = self.env["account.journal"].create({ |
||||
|
"name": "Journal", |
||||
|
"code": "JOURNAL", |
||||
|
"company_id": self.company.id, |
||||
|
"type": "general", |
||||
|
}) |
||||
|
|
||||
|
def test_company_constrain(self): |
||||
|
with self.assertRaises(ValidationError): |
||||
|
self.env['mis.cash_flow.forecast_line'].create({ |
||||
|
'account_id': self.account.id, |
||||
|
'date': Date.today(), |
||||
|
'balance': 1000, |
||||
|
}) |
||||
|
|
||||
|
def test_report_instance(self): |
||||
|
self.check_matrix() |
||||
|
move = self.env['account.move'].create({ |
||||
|
'name': 'Move', |
||||
|
'journal_id': self.journal.id, |
||||
|
'company_id': self.company.id, |
||||
|
'line_ids': [(0, 0, { |
||||
|
'account_id': self.bank_account.id, |
||||
|
'debit': 1500, |
||||
|
'credit': 0, |
||||
|
'company_id': self.company.id, |
||||
|
}), (0, 0, { |
||||
|
'account_id': self.bank_account_hide.id, |
||||
|
'debit': 500, |
||||
|
'credit': 0, |
||||
|
'company_id': self.company.id, |
||||
|
}), (0, 0, { |
||||
|
'account_id': self.account.id, |
||||
|
'debit': 0, |
||||
|
'credit': 2000, |
||||
|
'company_id': self.company.id, |
||||
|
})] |
||||
|
}) |
||||
|
move.post() |
||||
|
self.check_matrix(args=[ |
||||
|
('liquidity', 'Current', 1500), |
||||
|
('balance', 'Current', 1500), |
||||
|
('in_receivable', 'Current', -2000), |
||||
|
], ignore_rows=['balance', 'period_balance', 'in_total'], |
||||
|
) |
||||
|
date = Date.from_string(Date.today()) + timedelta(weeks=8) |
||||
|
self.env['mis.cash_flow.forecast_line'].create({ |
||||
|
'account_id': self.account.id, |
||||
|
'date': Date.to_string(date), |
||||
|
'balance': 1000, |
||||
|
'company_id': self.company.id, |
||||
|
}) |
||||
|
self.check_matrix([ |
||||
|
('liquidity', 'Current', 1500), |
||||
|
('balance', 'Current', 1500), |
||||
|
('in_receivable', 'Current', -2000), |
||||
|
('in_forecast', '+8w', 1000), |
||||
|
], ignore_rows=['balance', 'period_balance', 'in_total']) |
||||
|
|
||||
|
def check_matrix(self, args=False, ignore_rows=False): |
||||
|
if not args: |
||||
|
args = [] |
||||
|
if not ignore_rows: |
||||
|
ignore_rows = [] |
||||
|
with mute_logger('odoo.addons.mis_builder.models.kpimatrix'): |
||||
|
matrix = self.report._compute_matrix() |
||||
|
for row in matrix.iter_rows(): |
||||
|
if row.kpi.name in ignore_rows: |
||||
|
continue |
||||
|
for cell in row.iter_cells(): |
||||
|
if not cell: |
||||
|
continue |
||||
|
found = False |
||||
|
label = cell.subcol.col.label |
||||
|
for exp in args: |
||||
|
if exp[0] == row.kpi.name and exp[1] == label: |
||||
|
found = True |
||||
|
self.assertEqual(cell.val, exp[2]) |
||||
|
break |
||||
|
if not found: |
||||
|
self.assertEqual(cell.val, 0) |
Write
Preview
Loading…
Cancel
Save
Reference in new issue