report: add totla-yield, tests todo

This commit is contained in:
Frederik Jaeckel 2023-03-10 16:45:50 +01:00
parent 74f9d91c53
commit e51932e732
4 changed files with 269 additions and 124 deletions

View file

@ -7,12 +7,12 @@ from trytond.tests.test_tryton import ModuleTestCase, with_transaction, activate
from trytond.pool import Pool
from trytond.transaction import Transaction
from trytond.exceptions import UserError
from trytond.modules.cashbook.tests import CashbookTestCase
from trytond.modules.cashbook_investment.tests import CashbookInvestmentTestCase
from datetime import date
from decimal import Decimal
class ReportTestCase(CashbookTestCase):
class ReportTestCase(CashbookInvestmentTestCase):
'Test cashbook book report module'
module = 'cashbook_report'
@ -28,13 +28,28 @@ class ReportTestCase(CashbookTestCase):
"""
pool = Pool()
Book = pool.get('cashbook.book')
Line = pool.get('cashbook.line')
BookType = pool.get('cashbook.type')
ResUser = pool.get('res.user')
user_admin, = ResUser.search([])
type_cash = self.prep_type()
type_bank = self.prep_type(name='Bank', short='BK')
company = self.prep_company()
company = self.prep_company()
asset_cfg = self.prep_yield_config(
fee = 'Fee',
dividend = 'Dividend',
gainloss = 'Gain-Loss',
company = company)
type_cash, = BookType.search([('name', '=', 'Cash')])
type_bank = self.prep_type(name='Bank', short='BK')
type_asset = self.prep_type(name='Asset', short='A')
BookType.write(*[
[type_asset],
{
'feature': 'asset',
}])
ResUser.write(*[
[user_admin],
{
@ -43,9 +58,14 @@ class ReportTestCase(CashbookTestCase):
}])
self.assertEqual(user_admin.company.id, company.id)
(usd, euro) = self.prep_2nd_currency(company)
sequ_id = self.prep_sequence().id
category = self.prep_category(cattype='in')
asset = self.prep_asset_item(
company=company,
product = self.prep_asset_product(name='Product 1'))
self.assertEqual(asset.symbol, 'usd/u')
(usd, euro) = self.prep_2nd_currency(company)
party = self.prep_party()
books = Book.create([{
'name': 'Book 1',
@ -113,8 +133,43 @@ class ReportTestCase(CashbookTestCase):
'category': category.id,
'party': party.id,
}])],
}, {
'name': 'Book 4 - Asset',
'btype': type_asset.id,
'asset': asset.id,
'quantity_uom': asset.uom.id,
'company': company.id,
'currency': euro.id,
'number_sequ': sequ_id,
'start_date': date(2022, 4, 1),
'lines': [('create', [{
'date': date(2022, 5, 1),
'description': 'Buy Shares',
'bookingtype': 'in',
'amount': Decimal('100.0'),
'quantity': Decimal('1.0'),
'category': category.id,
'party': party.id,
}, {
'date': date(2022, 5, 5),
'description': 'Fee',
'bookingtype': 'out',
'amount': Decimal('2.5'),
'quantity': Decimal('0.0'),
'category': asset_cfg.fee_category.id,
'party': party.id,
}, {
'date': date(2022, 5, 3),
'description': 'Dividend',
'bookingtype': 'in',
'amount': Decimal('5.0'),
'quantity': Decimal('0.0'),
'category': asset_cfg.dividend_category.id,
'party': party.id,
}])],
}])
self.assertEqual(len(books), 3)
Line.wfcheck([line for book in books for line in book.lines])
self.assertEqual(len(books), 4)
self.assertEqual(books[0].name, 'Book 1')
self.assertEqual(books[0].btype.rec_name, 'CAS - Cash')
self.assertEqual(len(books[0].lines), 2)
@ -129,6 +184,11 @@ class ReportTestCase(CashbookTestCase):
self.assertEqual(books[2].btype.rec_name, 'BK - Bank')
self.assertEqual(len(books[2].lines), 2)
self.assertEqual(books[2].balance, Decimal('23.0'))
self.assertEqual(books[3].name, 'Book 4 - Asset')
self.assertEqual(books[3].btype.rec_name, 'A - Asset')
self.assertEqual(len(books[3].lines), 3)
self.assertEqual(books[3].balance, Decimal('102.5'))
return books
@with_transaction()
@ -158,6 +218,7 @@ class ReportTestCase(CashbookTestCase):
('cashbook_hasbookings', '=', True)
]), 2)
Lines.wfedit(books[2].lines)
Lines.delete(books[2].lines)
self.assertEqual(euro.cashbook_hasbookings, False)
@ -264,13 +325,15 @@ class ReportTestCase(CashbookTestCase):
'dtype': 'types',
'types': [('add', [x.id for x in Type.search([])])],
}])
self.assertEqual(len(evaluation2.types), 2)
self.assertEqual(len(evaluation2.types), 3)
self.assertEqual(evaluation2.currency.rec_name, 'Euro')
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'))
self.assertEqual(evaluation2.line_values[1].name, 'CAS - Cash')
self.assertEqual(evaluation2.line_values[1].balance, Decimal('35.71'))
self.assertEqual(len(evaluation2.line_values), 3)
self.assertEqual(evaluation2.line_values[0].name, 'A - Asset')
self.assertEqual(evaluation2.line_values[0].balance, Decimal('35.71'))
self.assertEqual(evaluation2.line_values[1].name, 'BK - Bank')
self.assertEqual(evaluation2.line_values[1].balance, Decimal('0.0'))
self.assertEqual(evaluation2.line_values[2].name, 'CAS - Cash')
self.assertEqual(evaluation2.line_values[2].balance, Decimal('35.71'))
evaluation3, = Evaluation.create([{
'name': 'Evaluation User 1 - Currencies',
@ -457,8 +520,8 @@ class ReportTestCase(CashbookTestCase):
'dtype': 'cashbooks',
'cashbooks': [('add', [x.id for x in books])],
}])
self.assertEqual(len(evaluation.cashbooks), 3)
self.assertEqual(len(evaluation.line_values), 3)
self.assertEqual(len(evaluation.cashbooks), 4)
self.assertEqual(len(evaluation.line_values), 4)
self.assertEqual(evaluation.line_values[0].name, 'Book 1 | 25.00 usd | Open')
self.assertEqual(evaluation.line_values[0].name_line, None)
@ -512,7 +575,7 @@ class ReportTestCase(CashbookTestCase):
'dtype': 'cashbooks',
'cashbooks': [('add', [x.id for x in books])],
}])
self.assertEqual(len(evaluation.cashbooks), 3)
self.assertEqual(len(evaluation.cashbooks), 4)
self.assertEqual(len(evaluation.types), 0)
self.assertEqual(len(evaluation.currencies), 0)
self.assertEqual(len(evaluation.categories), 0)
@ -525,7 +588,7 @@ class ReportTestCase(CashbookTestCase):
{
'dtype': 'cashbooks_gldiff',
}])
self.assertEqual(len(evaluation.cashbooks), 3)
self.assertEqual(len(evaluation.cashbooks), 4)
self.assertEqual(len(evaluation.types), 0)
self.assertEqual(len(evaluation.currencies), 0)
self.assertEqual(len(evaluation.categories), 0)
@ -535,7 +598,7 @@ class ReportTestCase(CashbookTestCase):
{
'dtype': 'cashbooks_glperc',
}])
self.assertEqual(len(evaluation.cashbooks), 3)
self.assertEqual(len(evaluation.cashbooks), 4)
self.assertEqual(len(evaluation.types), 0)
self.assertEqual(len(evaluation.currencies), 0)
self.assertEqual(len(evaluation.categories), 0)
@ -549,7 +612,7 @@ class ReportTestCase(CashbookTestCase):
'types': [('add', [x.id for x in Types.search([])])],
}])
self.assertEqual(len(evaluation.cashbooks), 0)
self.assertEqual(len(evaluation.types), 2)
self.assertEqual(len(evaluation.types), 3)
self.assertEqual(len(evaluation.currencies), 0)
self.assertEqual(len(evaluation.categories), 0)
@ -560,7 +623,7 @@ class ReportTestCase(CashbookTestCase):
'dtype': 'types',
}])
self.assertEqual(len(evaluation.cashbooks), 0)
self.assertEqual(len(evaluation.types), 2)
self.assertEqual(len(evaluation.types), 3)
self.assertEqual(len(evaluation.currencies), 0)
self.assertEqual(len(evaluation.categories), 0)
@ -724,6 +787,7 @@ class ReportTestCase(CashbookTestCase):
pool = Pool()
Evaluation = pool.get('cashbook_report.evaluation')
Book = pool.get('cashbook.book')
Line = pool.get('cashbook.line')
company = self.prep_company()
with Transaction().set_context({
@ -772,6 +836,7 @@ class ReportTestCase(CashbookTestCase):
books = self.prep_report_3books()
cb_cat, = CbCategory.create([{'name': 'CB Category'}])
Line.wfedit([books.lines])
Book.write(*[
books,
{
@ -955,26 +1020,31 @@ class ReportTestCase(CashbookTestCase):
</graph>
""")
self.assertEqual(len(evaluation.cashbooks), 3)
self.assertEqual(len(evaluation.cashbooks), 4)
self.assertEqual(evaluation.cashbooks[0].rec_name, 'Book 1 | 25.00 usd | Open')
self.assertEqual(evaluation.cashbooks[1].rec_name, 'Book 2 | 12.50 usd | Open')
self.assertEqual(evaluation.cashbooks[2].rec_name, 'Book 3 | 23.00 € | Open')
self.assertEqual(evaluation.cashbooks[3].rec_name, 'Book 4 - Asset | 102.50 € | Open | 1.0000 u')
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(evaluation.cashbooks[3].currency.code, 'EUR')
self.assertEqual(len(evaluation.line_values), 3)
self.assertEqual(len(evaluation.line_values), 4)
self.assertEqual(evaluation.line_values[0].name, 'Book 1 | 25.00 usd | Open')
self.assertEqual(evaluation.line_values[1].name, 'Book 2 | 12.50 usd | Open')
self.assertEqual(evaluation.line_values[2].name, 'Book 3 | 23.00 € | Open')
self.assertEqual(evaluation.line_values[3].name, 'Book 4 - Asset | 102.50 € | Open | 1.0000 u')
self.assertEqual(evaluation.line_values[0].eval_currency.code, 'EUR')
self.assertEqual(evaluation.line_values[1].eval_currency.code, 'EUR')
self.assertEqual(evaluation.line_values[2].eval_currency.code, 'EUR')
self.assertEqual(evaluation.line_values[3].eval_currency.code, 'EUR')
self.assertEqual(evaluation.line_values[0].balance, Decimal('23.81'))
self.assertEqual(evaluation.line_values[1].balance, Decimal('11.90'))
self.assertEqual(evaluation.line_values[2].balance, Decimal('23.00'))
self.assertEqual(evaluation.line_values[3].balance, Decimal('102.50'))
@with_transaction()
def test_report_chart_pie_type_red(self):
@ -1006,19 +1076,27 @@ class ReportTestCase(CashbookTestCase):
# 37.50 USD, Cash
# 23.00 EUR, Bank
self.assertEqual(len(evaluation.types), 2)
self.assertEqual(evaluation.types[0].rec_name, 'BK - Bank')
self.assertEqual(evaluation.types[1].rec_name, 'CAS - Cash')
# 23.00 EUR
self.assertEqual(len(evaluation.line_values), 2)
self.assertEqual(len(evaluation.types), 3)
self.assertEqual(evaluation.types[0].rec_name, 'A - Asset')
self.assertEqual(evaluation.types[1].rec_name, 'BK - Bank')
self.assertEqual(evaluation.types[2].rec_name, 'CAS - Cash')
self.assertEqual(len(evaluation.line_values), 3)
# xx.xx USD --> EUR
self.assertEqual(evaluation.line_values[0].name, 'A - Asset')
self.assertEqual(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'))
self.assertEqual(evaluation.line_values[0].balance, Decimal('102.50'))
# 23.00 EUR
self.assertEqual(evaluation.line_values[1].eval_currency.code, 'EUR')
self.assertEqual(evaluation.line_values[1].name, 'BK - Bank')
self.assertEqual(evaluation.line_values[1].balance, 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')
self.assertEqual(evaluation.line_values[1].balance, Decimal('35.71'))
self.assertEqual(evaluation.line_values[2].name, 'CAS - Cash')
self.assertEqual(evaluation.line_values[2].eval_currency.code, 'EUR')
self.assertEqual(evaluation.line_values[2].balance, Decimal('35.71'))
@with_transaction()
def test_report_chart_pie_currency_red(self):
@ -1053,7 +1131,7 @@ class ReportTestCase(CashbookTestCase):
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'))
self.assertEqual(evaluation.line_values[0].balance, Decimal('125.5'))
self.assertEqual(evaluation.line_values[1].name, 'usd')
self.assertEqual(evaluation.line_values[1].balance, Decimal('35.71'))