Multiple Data Sources in Evaluations

This commit is contained in:
Frederik Jaeckel 2024-01-13 15:08:20 +01:00
parent 115204bd2e
commit 8ddfba3179
13 changed files with 952 additions and 382 deletions

View file

@ -3,14 +3,17 @@
# The COPYRIGHT file at the top level of this repository contains the
# full copyright notices and license terms.
from datetime import date
from decimal import Decimal
from trytond.tests.test_tryton import with_transaction, activate_module
from trytond.pool import Pool
from trytond.transaction import Transaction
from trytond.exceptions import UserError
from trytond.i18n import gettext
from trytond.modules.cashbook_investment.tests.test_module import \
CashbookInvestmentTestCase
from datetime import date
from decimal import Decimal
from trytond.modules.cashbook_report.templates import (
cashbook_types, category_types, booktype_types, currency_types)
class ReportTestCase(CashbookInvestmentTestCase):
@ -136,6 +139,21 @@ class ReportTestCase(CashbookInvestmentTestCase):
self.assertEqual(books[2].balance, Decimal('23.0'))
return books
@with_transaction()
def test_report_check_dtype_messages_functions(self):
""" check access to messages and functions for 'dtypes'
"""
Line = Pool().get('cashbook_report.eval_line')
dtypes = []
dtypes.extend(currency_types)
dtypes.extend(cashbook_types)
dtypes.extend(category_types)
dtypes.extend(booktype_types)
for x in dtypes:
gettext('cashbook_report.msg_dtype_%s' % x)
getattr(Line, 'get_value_%s' % x)
@with_transaction()
def test_report_currency_hasbookings(self):
""" check detectpn of bookings @ currency
@ -254,7 +272,7 @@ class ReportTestCase(CashbookInvestmentTestCase):
evaluation1, = Evaluation.create([{
'name': 'Evaluation User 1 - Cashbooks',
'dtype': 'cashbooks',
'dtype1': 'cashbooks',
'cashbooks': [('add', [x.id for x in books_owner1])],
}])
self.assertEqual(len(evaluation1.cashbooks), 2)
@ -264,18 +282,16 @@ class ReportTestCase(CashbookInvestmentTestCase):
evaluation1.line_values[0].name,
'Book 1 | 25.00 usd | Open')
self.assertEqual(
evaluation1.line_values[0].balance,
Decimal('23.81'))
evaluation1.line_values[0].value1, Decimal('23.81'))
self.assertEqual(
evaluation1.line_values[1].name,
'Book 2 | 12.50 usd | Open')
self.assertEqual(
evaluation1.line_values[1].balance,
Decimal('11.9'))
evaluation1.line_values[1].value1, Decimal('11.9'))
evaluation2, = Evaluation.create([{
'name': 'Evaluation User 1 - Types',
'dtype': 'types',
'dtype1': 'types',
'types': [('add', [x.id for x in Type.search([])])],
}])
self.assertEqual(len(evaluation2.types), 2)
@ -283,16 +299,14 @@ class ReportTestCase(CashbookInvestmentTestCase):
self.assertEqual(len(evaluation2.line_values), 2)
self.assertEqual(evaluation2.line_values[0].name, 'BK - Bank')
self.assertEqual(
evaluation2.line_values[0].balance,
Decimal('0.0'))
evaluation2.line_values[0].value1, Decimal('0.0'))
self.assertEqual(evaluation2.line_values[1].name, 'CAS - Cash')
self.assertEqual(
evaluation2.line_values[1].balance,
Decimal('35.71'))
evaluation2.line_values[1].value1, Decimal('35.71'))
evaluation3, = Evaluation.create([{
'name': 'Evaluation User 1 - Currencies',
'dtype': 'currencies',
'dtype1': 'currencies',
'currencies': [('add', [
x.id for x in Currency.search([])])],
}])
@ -301,16 +315,14 @@ class ReportTestCase(CashbookInvestmentTestCase):
self.assertEqual(len(evaluation3.line_values), 2)
self.assertEqual(evaluation3.line_values[0].name, 'Euro')
self.assertEqual(
evaluation3.line_values[0].balance,
Decimal('0.0'))
evaluation3.line_values[0].value1, Decimal('0.0'))
self.assertEqual(evaluation3.line_values[1].name, 'usd')
self.assertEqual(
evaluation3.line_values[1].balance,
Decimal('35.71'))
evaluation3.line_values[1].value1, Decimal('35.71'))
evaluation4, = Evaluation.create([{
'name': 'Evaluation User 1 - Categories',
'dtype': 'categories',
'dtype1': 'categories',
'categories': [('add', [
x.id for x in books_owner1[0].categories])],
}])
@ -318,11 +330,9 @@ class ReportTestCase(CashbookInvestmentTestCase):
self.assertEqual(evaluation4.currency.rec_name, 'Euro')
self.assertEqual(len(evaluation4.line_values), 1)
self.assertEqual(
evaluation4.line_values[0].name,
'Book 1, User 1')
evaluation4.line_values[0].name, 'Book 1, User 1')
self.assertEqual(
evaluation4.line_values[0].balance,
Decimal('23.81'))
evaluation4.line_values[0].value1, Decimal('23.81'))
self.assertEqual(Evaluation.search_count([]), 4)
@ -345,22 +355,20 @@ class ReportTestCase(CashbookInvestmentTestCase):
evaluation1, = Evaluation.create([{
'name': 'Evaluation User 2 - Cashbooks',
'dtype': 'cashbooks',
'dtype1': 'cashbooks',
'cashbooks': [('add', [x.id for x in books_owner2])],
}])
self.assertEqual(len(evaluation1.cashbooks), 1)
self.assertEqual(evaluation1.currency.rec_name, 'Euro')
self.assertEqual(len(evaluation1.line_values), 1)
self.assertEqual(
evaluation1.line_values[0].name,
'Book 3 | 23.00 € | Open')
evaluation1.line_values[0].name, 'Book 3 | 23.00 € | Open')
self.assertEqual(
evaluation1.line_values[0].balance,
Decimal('23.0'))
evaluation1.line_values[0].value1, Decimal('23.0'))
evaluation2, = Evaluation.create([{
'name': 'Evaluation User 2 - Types',
'dtype': 'types',
'dtype1': 'types',
'types': [('add', [x.id for x in Type.search([])])],
}])
self.assertEqual(len(evaluation2.types), 2)
@ -368,16 +376,14 @@ class ReportTestCase(CashbookInvestmentTestCase):
self.assertEqual(len(evaluation2.line_values), 2)
self.assertEqual(evaluation2.line_values[0].name, 'BK - Bank')
self.assertEqual(
evaluation2.line_values[0].balance,
Decimal('23.0'))
evaluation2.line_values[0].value1, Decimal('23.0'))
self.assertEqual(evaluation2.line_values[1].name, 'CAS - Cash')
self.assertEqual(
evaluation2.line_values[1].balance,
Decimal('0.0'))
evaluation2.line_values[1].value1, Decimal('0.0'))
evaluation3, = Evaluation.create([{
'name': 'Evaluation User 2 - Currencies',
'dtype': 'currencies',
'dtype1': 'currencies',
'currencies': [('add', [
x.id for x in Currency.search([])])],
}])
@ -386,16 +392,14 @@ class ReportTestCase(CashbookInvestmentTestCase):
self.assertEqual(len(evaluation3.line_values), 2)
self.assertEqual(evaluation3.line_values[0].name, 'Euro')
self.assertEqual(
evaluation3.line_values[0].balance,
Decimal('23.0'))
evaluation3.line_values[0].value1, Decimal('23.0'))
self.assertEqual(evaluation3.line_values[1].name, 'usd')
self.assertEqual(
evaluation3.line_values[1].balance,
Decimal('0.0'))
evaluation3.line_values[1].value1, Decimal('0.0'))
evaluation4, = Evaluation.create([{
'name': 'Evaluation User 2 - Categories',
'dtype': 'categories',
'dtype1': 'categories',
'categories': [('add', [
x.id for x in books_owner2[0].categories])],
}])
@ -403,11 +407,9 @@ class ReportTestCase(CashbookInvestmentTestCase):
self.assertEqual(evaluation4.currency.rec_name, 'Euro')
self.assertEqual(len(evaluation4.line_values), 1)
self.assertEqual(
evaluation4.line_values[0].name,
'Book 3, User 2')
evaluation4.line_values[0].name, 'Book 3, User 2')
self.assertEqual(
evaluation4.line_values[0].balance,
Decimal('23.0'))
evaluation4.line_values[0].value1, Decimal('23.0'))
self.assertEqual(Evaluation.search_count([]), 4)
@ -421,17 +423,13 @@ class ReportTestCase(CashbookInvestmentTestCase):
self.assertEqual(evaluations[0].currency.rec_name, 'Euro')
self.assertEqual(len(evaluations[0].line_values), 2)
self.assertEqual(
evaluations[0].line_values[0].name,
'Book 1 | 25.00 usd | Open')
evaluations[0].line_values[0].name, 'Book 1 | 25.00 usd | Open')
self.assertEqual(
evaluations[0].line_values[0].balance,
Decimal('23.81'))
evaluations[0].line_values[0].value1, Decimal('23.81'))
self.assertEqual(
evaluations[0].line_values[1].name,
'Book 2 | 12.50 usd | Open')
evaluations[0].line_values[1].name, 'Book 2 | 12.50 usd | Open')
self.assertEqual(
evaluations[0].line_values[1].balance,
Decimal('11.9'))
evaluations[0].line_values[1].value1, Decimal('11.9'))
self.assertEqual(evaluations[1].name, 'Evaluation User 1 - Categories')
self.assertEqual(len(evaluations[1].categories), 1)
@ -439,8 +437,7 @@ class ReportTestCase(CashbookInvestmentTestCase):
self.assertEqual(len(evaluations[1].line_values), 1)
self.assertEqual(evaluations[1].line_values[0].name, 'Book 1, User 1')
self.assertEqual(
evaluations[1].line_values[0].balance,
Decimal('23.81'))
evaluations[1].line_values[0].value1, Decimal('23.81'))
self.assertEqual(evaluations[2].name, 'Evaluation User 1 - Currencies')
self.assertEqual(len(evaluations[2].currencies), 2)
@ -448,12 +445,10 @@ class ReportTestCase(CashbookInvestmentTestCase):
self.assertEqual(len(evaluations[2].line_values), 2)
self.assertEqual(evaluations[2].line_values[0].name, 'Euro')
self.assertEqual(
evaluations[2].line_values[0].balance,
Decimal('23.0'))
evaluations[2].line_values[0].value1, Decimal('23.0'))
self.assertEqual(evaluations[2].line_values[1].name, 'usd')
self.assertEqual(
evaluations[2].line_values[1].balance,
Decimal('35.71'))
evaluations[2].line_values[1].value1, Decimal('35.71'))
self.assertEqual(evaluations[3].name, 'Evaluation User 1 - Types')
self.assertEqual(len(evaluations[3].types), 2)
@ -461,23 +456,19 @@ class ReportTestCase(CashbookInvestmentTestCase):
self.assertEqual(len(evaluations[3].line_values), 2)
self.assertEqual(evaluations[3].line_values[0].name, 'BK - Bank')
self.assertEqual(
evaluations[3].line_values[0].balance,
Decimal('23.0'))
evaluations[3].line_values[0].value1, Decimal('23.0'))
self.assertEqual(evaluations[3].line_values[1].name, 'CAS - Cash')
self.assertEqual(
evaluations[3].line_values[1].balance,
Decimal('35.71'))
evaluations[3].line_values[1].value1, Decimal('35.71'))
self.assertEqual(evaluations[4].name, 'Evaluation User 2 - Cashbooks')
self.assertEqual(len(evaluations[4].cashbooks), 1)
self.assertEqual(evaluations[4].currency.rec_name, 'Euro')
self.assertEqual(len(evaluations[4].line_values), 1)
self.assertEqual(
evaluations[4].line_values[0].name,
'Book 3 | 23.00 € | Open')
evaluations[4].line_values[0].name, 'Book 3 | 23.00 € | Open')
self.assertEqual(
evaluations[4].line_values[0].balance,
Decimal('23.0'))
evaluations[4].line_values[0].value1, Decimal('23.0'))
self.assertEqual(evaluations[5].name, 'Evaluation User 2 - Categories')
self.assertEqual(len(evaluations[5].categories), 1)
@ -485,8 +476,7 @@ class ReportTestCase(CashbookInvestmentTestCase):
self.assertEqual(len(evaluations[5].line_values), 1)
self.assertEqual(evaluations[5].line_values[0].name, 'Book 3, User 2')
self.assertEqual(
evaluations[5].line_values[0].balance,
Decimal('23.0'))
evaluations[5].line_values[0].value1, Decimal('23.0'))
self.assertEqual(evaluations[6].name, 'Evaluation User 2 - Currencies')
self.assertEqual(len(evaluations[6].currencies), 2)
@ -494,12 +484,10 @@ class ReportTestCase(CashbookInvestmentTestCase):
self.assertEqual(len(evaluations[6].line_values), 2)
self.assertEqual(evaluations[6].line_values[0].name, 'Euro')
self.assertEqual(
evaluations[6].line_values[0].balance,
Decimal('23.0'))
evaluations[6].line_values[0].value1, Decimal('23.0'))
self.assertEqual(evaluations[6].line_values[1].name, 'usd')
self.assertEqual(
evaluations[6].line_values[1].balance,
Decimal('35.71'))
evaluations[6].line_values[1].value1, Decimal('35.71'))
self.assertEqual(evaluations[7].name, 'Evaluation User 2 - Types')
self.assertEqual(len(evaluations[7].types), 2)
@ -507,12 +495,99 @@ class ReportTestCase(CashbookInvestmentTestCase):
self.assertEqual(len(evaluations[7].line_values), 2)
self.assertEqual(evaluations[7].line_values[0].name, 'BK - Bank')
self.assertEqual(
evaluations[7].line_values[0].balance,
Decimal('23.0'))
evaluations[7].line_values[0].value1, Decimal('23.0'))
self.assertEqual(evaluations[7].line_values[1].name, 'CAS - Cash')
self.assertEqual(
evaluations[7].line_values[1].balance,
Decimal('35.71'))
evaluations[7].line_values[1].value1, Decimal('35.71'))
@with_transaction()
def test_report_check_allowed_dtypes(self):
""" check allowed dtypes for dtype2...5 in depency of value in dtype
"""
pool = Pool()
Evaluation = pool.get('cashbook_report.evaluation')
self.prep_report_3books()
company = self.prep_company()
with Transaction().set_context({
'company': company.id}):
evaluation, = Evaluation.create([{
'name': 'Evaluation 1',
'dtype1': 'cashbooks',
}])
self.assertEqual(len(evaluation.cashbooks), 0)
self.assertEqual([
x[0] for x in evaluation.get_sel_etype2()], [
'', 'cashbooks', 'cashbooks_gldiff', 'cashbooks_glperc',
'cashbooks_glvalue', 'cashbooks_glyield'])
self.assertRaisesRegex(
UserError,
'The value "types" for field "Data type 2" in ' +
'"Evaluation 1" of "Evaluation" is not one of the ' +
'allowed options.',
Evaluation.write,
*[
[evaluation],
{
'dtype2': 'types',
}
])
self.assertRaisesRegex(
UserError,
"The pie display cannot be used by multiple data sources" +
" in the evaluation 'Evaluation 1'.",
Evaluation.write,
*[[evaluation], {'dtype2': 'cashbooks_glyield'}])
Evaluation.write(*[
[evaluation],
{
'chart': 'line',
'dtype2': 'cashbooks_glyield',
'dtype3': 'cashbooks_glvalue',
}])
self.assertEqual(evaluation.dtype1, 'cashbooks')
self.assertEqual(evaluation.dtype2, 'cashbooks_glyield')
self.assertEqual(evaluation.dtype3, 'cashbooks_glvalue')
# run on-cchange
evaluation.dtype1 = 'types'
evaluation.on_change_dtype1()
evaluation.save()
self.assertEqual(evaluation.dtype1, 'types')
self.assertEqual(evaluation.dtype2, None)
self.assertEqual(evaluation.dtype3, None)
Evaluation.write(*[
[evaluation],
{
'dtype1': 'categories_gldiff',
}])
self.assertEqual([
x[0] for x in evaluation.get_sel_etype2()], [
'', 'categories', 'categories_gldiff', 'categories_glvalue',
'categories_glperc', 'categories_glyield'])
Evaluation.write(*[
[evaluation],
{
'dtype1': 'currencies',
}])
self.assertEqual([
x[0] for x in evaluation.get_sel_etype2()], [
'', 'currencies'])
Evaluation.write(*[
[evaluation],
{
'dtype1': 'types_glperc',
}])
self.assertEqual([
x[0] for x in evaluation.get_sel_etype2()], [
'', 'types', 'types_gldiff', 'types_glvalue',
'types_glperc', 'types_glyield'])
@with_transaction()
def test_report_update_name_of_line(self):
@ -530,7 +605,7 @@ class ReportTestCase(CashbookInvestmentTestCase):
'company': company.id}):
evaluation, = Evaluation.create([{
'name': 'Evaluation 1',
'dtype': 'cashbooks',
'dtype1': 'cashbooks',
'cashbooks': [('add', [x.id for x in books])],
}])
self.assertEqual(len(evaluation.cashbooks), 3)
@ -592,7 +667,7 @@ class ReportTestCase(CashbookInvestmentTestCase):
# valid
evaluation, = Evaluation.create([{
'name': 'Evaluation 1',
'dtype': 'cashbooks',
'dtype1': 'cashbooks',
'cashbooks': [('add', [x.id for x in books])],
}])
self.assertEqual(len(evaluation.cashbooks), 3)
@ -607,7 +682,7 @@ class ReportTestCase(CashbookInvestmentTestCase):
Evaluation.write(*[
[evaluation],
{
'dtype': 'cashbooks_gldiff',
'dtype1': 'cashbooks_gldiff',
}])
self.assertEqual(len(evaluation.cashbooks), 3)
self.assertEqual(len(evaluation.types), 0)
@ -617,7 +692,7 @@ class ReportTestCase(CashbookInvestmentTestCase):
Evaluation.write(*[
[evaluation],
{
'dtype': 'cashbooks_glperc',
'dtype1': 'cashbooks_glperc',
}])
self.assertEqual(len(evaluation.cashbooks), 3)
self.assertEqual(len(evaluation.types), 0)
@ -629,7 +704,7 @@ class ReportTestCase(CashbookInvestmentTestCase):
Evaluation.write(*[
[evaluation],
{
'dtype': 'types',
'dtype1': 'types',
'types': [('add', [x.id for x in Types.search([])])],
}])
self.assertEqual(len(evaluation.cashbooks), 0)
@ -641,7 +716,7 @@ class ReportTestCase(CashbookInvestmentTestCase):
Evaluation.write(*[
[evaluation],
{
'dtype': 'types',
'dtype1': 'types',
}])
self.assertEqual(len(evaluation.cashbooks), 0)
self.assertEqual(len(evaluation.types), 2)
@ -651,7 +726,7 @@ class ReportTestCase(CashbookInvestmentTestCase):
Evaluation.write(*[
[evaluation],
{
'dtype': 'currencies',
'dtype1': 'currencies',
'currencies': [('add', [
x.id for x in Currency.search([])])],
}])
@ -663,7 +738,7 @@ class ReportTestCase(CashbookInvestmentTestCase):
Evaluation.write(*[
[evaluation],
{
'dtype': 'categories',
'dtype1': 'categories',
'categories': [('add', [
x.id for x in Category.search([])])],
}])
@ -675,7 +750,7 @@ class ReportTestCase(CashbookInvestmentTestCase):
Evaluation.write(*[
[evaluation],
{
'dtype': 'cashbooks',
'dtype1': 'cashbooks',
}])
self.assertEqual(len(evaluation.cashbooks), 0)
self.assertEqual(len(evaluation.types), 0)
@ -698,7 +773,7 @@ class ReportTestCase(CashbookInvestmentTestCase):
# valid
evaluation, = Evaluation.create([{
'name': 'Evaluation 1',
'dtype': 'cashbooks',
'dtype1': 'cashbooks',
'cashbooks': [('add', [x.id for x in books])],
}])
@ -710,13 +785,13 @@ class ReportTestCase(CashbookInvestmentTestCase):
Evaluation.create,
[{
'name': 'Evaluation 1',
'dtype': 'types', # wrong dtype
'dtype1': 'types', # wrong dtype
'cashbooks': [('add', [x.id for x in books])],
}])
evaluation, = Evaluation.create([{
'name': 'Evaluation 2',
'dtype': 'types',
'dtype1': 'types',
'types': [('add', [x.id for x in Types.search([])])],
}])
@ -728,7 +803,7 @@ class ReportTestCase(CashbookInvestmentTestCase):
Evaluation.create,
[{
'name': 'Evaluation 3',
'dtype': 'cashbooks',
'dtype1': 'cashbooks',
'types': [('add', [x.id for x in Types.search([])])],
}])
@ -739,11 +814,7 @@ class ReportTestCase(CashbookInvestmentTestCase):
"""
pool = Pool()
Evaluation = pool.get('cashbook_report.evaluation')
try:
DashboardAction = pool.get('dashboard.action')
except Exception:
print('\n--== Module "dashboard" not installed ==--')
DashboardAction = None
DashboardAction = pool.get('dashboard.action')
books = self.prep_report_3books()
@ -756,15 +827,14 @@ class ReportTestCase(CashbookInvestmentTestCase):
}])
# add dashboard-action
if DashboardAction is not None:
dbaction, = DashboardAction.create([{
'user': Transaction().user,
'act_window': evaluation.dashb_actwin.id,
}])
self.assertEqual(dbaction.user.rec_name, 'Administrator')
self.assertEqual(dbaction.act_window.name, 'Evaluation 1')
dbaction, = DashboardAction.create([{
'user': Transaction().user,
'act_window': evaluation.dashb_actwin.id,
}])
self.assertEqual(dbaction.user.rec_name, 'Administrator')
self.assertEqual(dbaction.act_window.name, 'Evaluation 1')
self.assertEqual(evaluation.dtype, 'cashbooks')
self.assertEqual(evaluation.dtype1, 'cashbooks')
self.assertEqual(evaluation.chart, 'pie')
self.assertEqual(evaluation.legend, True)
self.assertEqual(evaluation.maincolor, 'default')
@ -810,9 +880,7 @@ class ReportTestCase(CashbookInvestmentTestCase):
'name': 'Evaluation 1a',
}])
self.assertTrue(old_win_id != evaluation.dashb_actwin.id)
if DashboardAction is not None:
self.assertEqual(DashboardAction.search_count([]), 1)
self.assertEqual(DashboardAction.search_count([]), 1)
@with_transaction()
def test_report_cashbook_yield(self):
@ -826,7 +894,6 @@ class ReportTestCase(CashbookInvestmentTestCase):
BType = pool.get('cashbook.type')
Asset = pool.get('investment.asset')
CbCategory = pool.get('cashbook.bookcategory')
MemCache = pool.get('cashbook.memcache')
company = self.prep_company()
with Transaction().set_context({
@ -906,7 +973,7 @@ class ReportTestCase(CashbookInvestmentTestCase):
}])],
}])
Line.wfcheck(book_asset.lines)
MemCache._cashbook_value_cache.clear_all()
self.prep_valstore_run_worker()
self.assertEqual(
book_asset.rec_name,
@ -922,44 +989,41 @@ class ReportTestCase(CashbookInvestmentTestCase):
# evaluation: cashbooks - total yield
evaluation1, = Evaluation.create([{
'name': 'Evaluation 1',
'dtype': 'cashbooks_glyield',
'dtype1': 'cashbooks_glyield',
'chart': 'hbar',
'cashbooks': [('add', [book_asset.id])],
}])
self.assertEqual(evaluation1.dtype, 'cashbooks_glyield')
self.assertEqual(evaluation1.dtype1, 'cashbooks_glyield')
self.assertEqual(evaluation1.currency.code, 'usd')
self.assertEqual(len(evaluation1.line_values), 1)
self.assertEqual(
evaluation1.line_values[0].balance,
Decimal('5.5'))
evaluation1.line_values[0].value1, Decimal('5.5'))
# evaluation: categories - total yield
evaluation2, = Evaluation.create([{
'name': 'Evaluation 2',
'dtype': 'category_glyield',
'dtype1': 'categories_glyield',
'chart': 'hbar',
'categories': [('add', [book_asset.categories[0].id])],
}])
self.assertEqual(evaluation2.dtype, 'category_glyield')
self.assertEqual(evaluation2.dtype1, 'categories_glyield')
self.assertEqual(evaluation2.currency.code, 'usd')
self.assertEqual(len(evaluation2.line_values), 1)
self.assertEqual(
evaluation2.line_values[0].balance,
Decimal('5.5'))
evaluation2.line_values[0].value1, Decimal('5.5'))
# evaluation: types - total yield
evaluation3, = Evaluation.create([{
'name': 'Evaluation 3',
'dtype': 'types_glyield',
'dtype1': 'types_glyield',
'chart': 'hbar',
'types': [('add', [book_asset.btype.id])],
}])
self.assertEqual(evaluation3.dtype, 'types_glyield')
self.assertEqual(evaluation3.dtype1, 'types_glyield')
self.assertEqual(evaluation3.currency.code, 'usd')
self.assertEqual(len(evaluation3.line_values), 1)
self.assertEqual(
evaluation3.line_values[0].balance,
Decimal('5.5'))
evaluation3.line_values[0].value1, Decimal('5.5'))
@with_transaction()
def test_report_chart_hbar_book_investment(self):
@ -979,7 +1043,6 @@ class ReportTestCase(CashbookInvestmentTestCase):
Product = pool.get('product.template')
Uom = pool.get('product.uom')
CbCategory = pool.get('cashbook.bookcategory')
MemCache = pool.get('cashbook.memcache')
at, = AccType.create([{
'name': 'depot',
@ -1044,7 +1107,7 @@ class ReportTestCase(CashbookInvestmentTestCase):
[books[2].lines[1]],
{'quantity': Decimal('2.0'), 'amount': Decimal('3400.0')},
])
MemCache._cashbook_value_cache.clear_all()
self.prep_valstore_run_worker()
self.assertEqual(
books[0].rec_name,
@ -1070,11 +1133,19 @@ class ReportTestCase(CashbookInvestmentTestCase):
# evaluation: amount-difference
evaluation, = Evaluation.create([{
'name': 'Evaluation 1',
'dtype': 'cashbooks_gldiff',
'dtype1': 'cashbooks_gldiff',
'dtype2': 'cashbooks_glvalue',
'dtype3': 'cashbooks_glyield',
'dtype4': 'cashbooks_glperc',
'dtype5': 'cashbooks',
'chart': 'hbar',
'cashbooks': [('add', [x.id for x in books])],
}])
self.assertEqual(evaluation.dtype, 'cashbooks_gldiff')
self.assertEqual(evaluation.dtype1, 'cashbooks_gldiff')
self.assertEqual(evaluation.dtype2, 'cashbooks_glvalue')
self.assertEqual(evaluation.dtype3, 'cashbooks_glyield')
self.assertEqual(evaluation.dtype4, 'cashbooks_glperc')
self.assertEqual(evaluation.dtype5, 'cashbooks')
self.assertEqual(evaluation.chart, 'hbar')
self.assertEqual(evaluation.legend, True)
self.assertEqual(evaluation.maincolor, 'default')
@ -1082,23 +1153,51 @@ class ReportTestCase(CashbookInvestmentTestCase):
self.assertEqual(evaluation.currency.code, 'EUR')
self.assertEqual(
evaluation.line_values[0].balance,
Decimal('857.14'))
evaluation.line_values[0].value1, Decimal('857.14'))
self.assertEqual(
evaluation.line_values[1].balance,
Decimal('476.19'))
evaluation.line_values[0].value2, Decimal('6666.67'))
self.assertEqual(
evaluation.line_values[2].balance,
Decimal('-33.33'))
evaluation.line_values[0].value3, Decimal('6666.67'))
self.assertEqual(
evaluation.line_values[0].value4, Decimal('14.75'))
self.assertEqual(
evaluation.line_values[0].value5, Decimal('5809.52'))
self.assertEqual(
evaluation.line_values[1].value1, Decimal('476.19'))
self.assertEqual(
evaluation.line_values[1].value2, Decimal('6666.67'))
self.assertEqual(
evaluation.line_values[1].value3, Decimal('6666.67'))
self.assertEqual(
evaluation.line_values[1].value4, Decimal('7.69'))
self.assertEqual(
evaluation.line_values[1].value5, Decimal('6190.48'))
self.assertEqual(
evaluation.line_values[2].value1, Decimal('-33.33'))
self.assertEqual(
evaluation.line_values[2].value2, Decimal('6666.67'))
self.assertEqual(
evaluation.line_values[2].value3, Decimal('6666.67'))
self.assertEqual(
evaluation.line_values[2].value4, Decimal('-0.50'))
self.assertEqual(
evaluation.line_values[2].value5, Decimal('6700.00'))
# evaluation: percent-difference
evaluation2, = Evaluation.create([{
'name': 'Evaluation 2',
'dtype': 'cashbooks_glperc',
'dtype1': 'cashbooks_glperc',
'chart': 'hbar',
'cashbooks': [('add', [x.id for x in books])],
}])
self.assertEqual(evaluation2.dtype, 'cashbooks_glperc')
self.assertEqual(evaluation2.dtype1, 'cashbooks_glperc')
self.assertEqual(evaluation2.dtype2, None)
self.assertEqual(evaluation2.dtype3, None)
self.assertEqual(evaluation2.dtype4, None)
self.assertEqual(evaluation2.dtype5, None)
self.assertEqual(evaluation2.chart, 'hbar')
self.assertEqual(evaluation2.legend, True)
self.assertEqual(evaluation2.maincolor, 'default')
@ -1106,23 +1205,20 @@ class ReportTestCase(CashbookInvestmentTestCase):
self.assertEqual(evaluation2.currency.code, 'EUR')
self.assertEqual(
evaluation2.line_values[0].balance,
Decimal('14.75'))
evaluation2.line_values[0].value1, Decimal('14.75'))
self.assertEqual(
evaluation2.line_values[1].balance,
Decimal('7.69'))
evaluation2.line_values[1].value1, Decimal('7.69'))
self.assertEqual(
evaluation2.line_values[2].balance,
Decimal('-0.5'))
evaluation2.line_values[2].value1, Decimal('-0.5'))
# evaluation: percent-difference
evaluation3, = Evaluation.create([{
'name': 'Evaluation 3',
'dtype': 'cashbooks_glvalue',
'dtype1': 'cashbooks_glvalue',
'chart': 'hbar',
'cashbooks': [('add', [x.id for x in books])],
}])
self.assertEqual(evaluation3.dtype, 'cashbooks_glvalue')
self.assertEqual(evaluation3.dtype1, 'cashbooks_glvalue')
self.assertEqual(evaluation3.chart, 'hbar')
self.assertEqual(evaluation3.legend, True)
self.assertEqual(evaluation3.maincolor, 'default')
@ -1130,23 +1226,20 @@ class ReportTestCase(CashbookInvestmentTestCase):
self.assertEqual(evaluation3.currency.code, 'EUR')
self.assertEqual(
evaluation3.line_values[0].balance,
Decimal('6666.67'))
evaluation3.line_values[0].value1, Decimal('6666.67'))
self.assertEqual(
evaluation3.line_values[1].balance,
Decimal('6666.67'))
evaluation3.line_values[1].value1, Decimal('6666.67'))
self.assertEqual(
evaluation3.line_values[2].balance,
Decimal('6666.67'))
evaluation3.line_values[2].value1, Decimal('6666.67'))
# evaluation: category-current value
evaluation4, = Evaluation.create([{
'name': 'Evaluation 4',
'dtype': 'category_glvalue',
'dtype1': 'categories_glvalue',
'chart': 'hbar',
'categories': [('add', [cb_cat.id])],
}])
self.assertEqual(evaluation4.dtype, 'category_glvalue')
self.assertEqual(evaluation4.dtype1, 'categories_glvalue')
self.assertEqual(evaluation4.chart, 'hbar')
self.assertEqual(evaluation4.legend, True)
self.assertEqual(evaluation4.maincolor, 'default')
@ -1155,17 +1248,16 @@ class ReportTestCase(CashbookInvestmentTestCase):
self.assertEqual(len(evaluation4.line_values), 1)
self.assertEqual(
evaluation4.line_values[0].balance,
Decimal('20000.01'))
evaluation4.line_values[0].value1, Decimal('20000.01'))
# evaluation: category- difference amount
evaluation5, = Evaluation.create([{
'name': 'Evaluation 5',
'dtype': 'category_gldiff',
'dtype1': 'categories_gldiff',
'chart': 'hbar',
'categories': [('add', [cb_cat.id])],
}])
self.assertEqual(evaluation5.dtype, 'category_gldiff')
self.assertEqual(evaluation5.dtype1, 'categories_gldiff')
self.assertEqual(evaluation5.chart, 'hbar')
self.assertEqual(evaluation5.legend, True)
self.assertEqual(evaluation5.maincolor, 'default')
@ -1174,17 +1266,16 @@ class ReportTestCase(CashbookInvestmentTestCase):
self.assertEqual(len(evaluation5.line_values), 1)
self.assertEqual(
evaluation5.line_values[0].balance,
Decimal('1300.01'))
evaluation5.line_values[0].value1, Decimal('1300.01'))
# evaluation: category- difference amount
evaluation6, = Evaluation.create([{
'name': 'Evaluation 6',
'dtype': 'category_glperc',
'dtype1': 'categories_glperc',
'chart': 'hbar',
'categories': [('add', [cb_cat.id])],
}])
self.assertEqual(evaluation6.dtype, 'category_glperc')
self.assertEqual(evaluation6.dtype1, 'categories_glperc')
self.assertEqual(evaluation6.chart, 'hbar')
self.assertEqual(evaluation6.legend, True)
self.assertEqual(evaluation6.maincolor, 'default')
@ -1193,8 +1284,7 @@ class ReportTestCase(CashbookInvestmentTestCase):
self.assertEqual(len(evaluation6.line_values), 1)
self.assertEqual(
evaluation6.line_values[0].balance,
Decimal('6.95'))
evaluation6.line_values[0].value1, Decimal('6.95'))
@with_transaction()
def test_report_chart_pie_book_red(self):
@ -1212,7 +1302,7 @@ class ReportTestCase(CashbookInvestmentTestCase):
'name': 'Evaluation 1',
'cashbooks': [('add', [x.id for x in books])],
}])
self.assertEqual(evaluation.dtype, 'cashbooks')
self.assertEqual(evaluation.dtype1, 'cashbooks')
self.assertEqual(evaluation.chart, 'pie')
self.assertEqual(evaluation.legend, True)
self.assertEqual(evaluation.maincolor, 'default')
@ -1224,8 +1314,7 @@ class ReportTestCase(CashbookInvestmentTestCase):
evaluation.ui_view_chart.model,
'cashbook_report.eval_line')
self.assertEqual(
evaluation.ui_view_chart.module,
'cashbook_report')
evaluation.ui_view_chart.module, 'cashbook_report')
self.assertEqual(evaluation.ui_view_chart.priority, 10)
self.assertEqual(evaluation.ui_view_chart.type, 'graph')
self.assertEqual(
@ -1236,55 +1325,43 @@ class ReportTestCase(CashbookInvestmentTestCase):
<field name="name"/>
</x>
<y>
<field name="balance" fill="1" empty="0" string="Cashbooks [Amount]"/>
<field name="value1" fill="1" empty="0" string="Cashbooks [Amount]"/>
</y>
</graph>
""")
self.assertEqual(len(evaluation.cashbooks), 3)
self.assertEqual(
evaluation.cashbooks[0].rec_name,
'Book 1 | 25.00 usd | Open')
evaluation.cashbooks[0].rec_name, 'Book 1 | 25.00 usd | Open')
self.assertEqual(
evaluation.cashbooks[1].rec_name,
'Book 2 | 12.50 usd | Open')
evaluation.cashbooks[1].rec_name, 'Book 2 | 12.50 usd | Open')
self.assertEqual(
evaluation.cashbooks[2].rec_name,
'Book 3 | 23.00 € | Open')
evaluation.cashbooks[2].rec_name, 'Book 3 | 23.00 € | Open')
self.assertEqual(evaluation.cashbooks[0].currency.code, 'usd')
self.assertEqual(evaluation.cashbooks[1].currency.code, 'usd')
self.assertEqual(evaluation.cashbooks[2].currency.code, 'EUR')
self.assertEqual(len(evaluation.line_values), 3)
self.assertEqual(
evaluation.line_values[0].name,
'Book 1 | 25.00 usd | Open')
evaluation.line_values[0].name, 'Book 1 | 25.00 usd | Open')
self.assertEqual(
evaluation.line_values[1].name,
'Book 2 | 12.50 usd | Open')
evaluation.line_values[1].name, 'Book 2 | 12.50 usd | Open')
self.assertEqual(
evaluation.line_values[2].name,
'Book 3 | 23.00 € | Open')
evaluation.line_values[2].name, 'Book 3 | 23.00 € | Open')
self.assertEqual(
evaluation.line_values[0].eval_currency.code,
'EUR')
evaluation.line_values[0].eval_currency.code, 'EUR')
self.assertEqual(
evaluation.line_values[1].eval_currency.code,
'EUR')
evaluation.line_values[1].eval_currency.code, 'EUR')
self.assertEqual(
evaluation.line_values[2].eval_currency.code,
'EUR')
evaluation.line_values[2].eval_currency.code, 'EUR')
self.assertEqual(
evaluation.line_values[0].balance,
Decimal('23.81'))
evaluation.line_values[0].value1, Decimal('23.81'))
self.assertEqual(
evaluation.line_values[1].balance,
Decimal('11.90'))
evaluation.line_values[1].value1, Decimal('11.90'))
self.assertEqual(
evaluation.line_values[2].balance,
Decimal('23.00'))
evaluation.line_values[2].value1, Decimal('23.00'))
@with_transaction()
def test_report_chart_pie_type_red(self):
@ -1303,10 +1380,10 @@ class ReportTestCase(CashbookInvestmentTestCase):
'date': date(2022, 5, 15)}):
evaluation, = Evaluation.create([{
'name': 'Evaluation 1',
'dtype': 'types',
'dtype1': 'types',
'types': [('add', [x.id for x in Types.search([])])],
}])
self.assertEqual(evaluation.dtype, 'types')
self.assertEqual(evaluation.dtype1, 'types')
self.assertEqual(evaluation.chart, 'pie')
self.assertEqual(evaluation.legend, True)
self.assertEqual(evaluation.maincolor, 'default')
@ -1323,21 +1400,17 @@ class ReportTestCase(CashbookInvestmentTestCase):
# 23.00 EUR
self.assertEqual(
evaluation.line_values[0].eval_currency.code,
'EUR')
evaluation.line_values[0].eval_currency.code, 'EUR')
self.assertEqual(evaluation.line_values[0].name, 'BK - Bank')
self.assertEqual(
evaluation.line_values[0].balance,
Decimal('23.0'))
evaluation.line_values[0].value1, Decimal('23.0'))
# 37.50 USD --> EUR
self.assertEqual(evaluation.line_values[1].name, 'CAS - Cash')
self.assertEqual(
evaluation.line_values[1].eval_currency.code,
'EUR')
evaluation.line_values[1].eval_currency.code, 'EUR')
self.assertEqual(
evaluation.line_values[1].balance,
Decimal('35.71'))
evaluation.line_values[1].value1, Decimal('35.71'))
@with_transaction()
def test_report_chart_pie_currency_red(self):
@ -1355,10 +1428,10 @@ class ReportTestCase(CashbookInvestmentTestCase):
'company': company.id}):
evaluation, = Evaluation.create([{
'name': 'Evaluation 1',
'dtype': 'currencies',
'dtype1': 'currencies',
'currencies': [('add', [x.id for x in Currency.search([])])],
}])
self.assertEqual(evaluation.dtype, 'currencies')
self.assertEqual(evaluation.dtype1, 'currencies')
self.assertEqual(evaluation.chart, 'pie')
self.assertEqual(evaluation.legend, True)
self.assertEqual(evaluation.maincolor, 'default')
@ -1372,12 +1445,15 @@ class ReportTestCase(CashbookInvestmentTestCase):
self.assertEqual(len(evaluation.line_values), 2)
self.assertEqual(evaluation.line_values[0].name, 'Euro')
self.assertEqual(
evaluation.line_values[0].balance,
Decimal('23.0'))
evaluation.line_values[0].value1, Decimal('23.0'))
self.assertEqual(evaluation.line_values[1].name, 'usd')
self.assertEqual(
evaluation.line_values[1].balance,
Decimal('35.71'))
evaluation.line_values[1].value1, Decimal('35.71'))
self.assertEqual(evaluation.line_values[0].value2, None)
self.assertEqual(evaluation.line_values[0].value3, None)
self.assertEqual(evaluation.line_values[0].value4, None)
self.assertEqual(evaluation.line_values[0].value5, None)
# end ReportTestCase