asset:tabellenzugriff optimiert,
diagram: darstellung in diagramm ergänzt
This commit is contained in:
parent
047b6980e4
commit
7bb3e4f929
9 changed files with 352 additions and 6 deletions
|
@ -112,6 +112,176 @@ class AssetTestCase(ModuleTestCase):
|
|||
self.assertEqual(asset.rec_name, 'Product 1 - 2.4500 usd/Unit [05/15/2022]')
|
||||
self.assertEqual(Asset.search_count([('name', '=', 'Product 1')]), 1)
|
||||
|
||||
@with_transaction()
|
||||
def test_asset_percentages_dateselect1(self):
|
||||
""" create asset, add rates, check selection of
|
||||
specific date - fixed date
|
||||
"""
|
||||
Asset = Pool().get('investment.asset')
|
||||
cursor = Transaction().connection.cursor()
|
||||
|
||||
company = self.prep_asset_company()
|
||||
product = self.prep_asset_product(
|
||||
name='Product 1',
|
||||
description='some asset')
|
||||
|
||||
asset1 = self.prep_asset_item(
|
||||
company=company,
|
||||
product = product)
|
||||
self.assertEqual(asset1.rec_name, 'Product 1 - - usd/Unit [-]')
|
||||
|
||||
Asset.write(*[
|
||||
[asset1],
|
||||
{
|
||||
'rates': [('create', [{
|
||||
'date': date(2022, 5, 15),
|
||||
'rate': Decimal('2.45'),
|
||||
}, {
|
||||
'date': date(2022, 5, 16),
|
||||
'rate': Decimal('2.6'),
|
||||
}, {
|
||||
'date': date(2022, 5, 12),
|
||||
'rate': Decimal('2.0'),
|
||||
}, {
|
||||
'date': date(2022, 5, 3),
|
||||
'rate': Decimal('3.6'),
|
||||
}])],
|
||||
},
|
||||
])
|
||||
self.assertEqual(asset1.rec_name, 'Product 1 - 2.6000 usd/Unit [05/16/2022]')
|
||||
self.assertEqual(len(asset1.rates), 4)
|
||||
self.assertEqual(asset1.rates[0].date, date(2022, 5, 16))
|
||||
self.assertEqual(asset1.rates[1].date, date(2022, 5, 15))
|
||||
self.assertEqual(asset1.rates[2].date, date(2022, 5, 12))
|
||||
self.assertEqual(asset1.rates[3].date, date(2022, 5, 3))
|
||||
|
||||
# query fixed date
|
||||
tab_percent = Asset.get_percentage_sql(['day1'], select_date = False)
|
||||
query = tab_percent.select(
|
||||
tab_percent.id,
|
||||
tab_percent.date,
|
||||
tab_percent.day1,
|
||||
where=(tab_percent.date==date(2022, 5, 16)) & \
|
||||
(tab_percent.id==asset1.id),
|
||||
)
|
||||
cursor.execute(*query)
|
||||
records = cursor.fetchall()
|
||||
|
||||
# there should be one record, three colums
|
||||
self.assertEqual(len(records), 1)
|
||||
self.assertEqual(len(records[0]), 3)
|
||||
self.assertEqual(records[0][0], asset1.id)
|
||||
self.assertEqual(records[0][1], date(2022, 5, 16))
|
||||
self.assertEqual(records[0][2].quantize(Decimal('0.01')), Decimal('6.12'))
|
||||
|
||||
@with_transaction()
|
||||
def test_asset_percentages_dateselect2(self):
|
||||
""" create asset, add rates, check selection of
|
||||
specific date - date-column
|
||||
"""
|
||||
pool = Pool()
|
||||
Asset = pool.get('investment.asset')
|
||||
Rate = pool.get('investment.rate')
|
||||
tab_rate = Rate.__table__()
|
||||
cursor = Transaction().connection.cursor()
|
||||
|
||||
company = self.prep_asset_company()
|
||||
product = self.prep_asset_product(
|
||||
name='Product 1',
|
||||
description='some asset')
|
||||
|
||||
asset1 = self.prep_asset_item(
|
||||
company=company,
|
||||
product = product)
|
||||
asset2 = self.prep_asset_item(
|
||||
company=company,
|
||||
product = product)
|
||||
|
||||
Asset.write(*[
|
||||
[asset1],
|
||||
{
|
||||
'rates': [('create', [{
|
||||
'date': date(2022, 5, 15),
|
||||
'rate': Decimal('2.45'),
|
||||
}, {
|
||||
'date': date(2022, 5, 16),
|
||||
'rate': Decimal('2.6'),
|
||||
}, {
|
||||
'date': date(2022, 5, 12),
|
||||
'rate': Decimal('2.0'),
|
||||
}, {
|
||||
'date': date(2022, 5, 3),
|
||||
'rate': Decimal('3.6'),
|
||||
}])],
|
||||
},
|
||||
[asset2],
|
||||
{
|
||||
'rates': [('create', [{
|
||||
'date': date(2022, 5, 17),
|
||||
'rate': Decimal('1.5'),
|
||||
}, {
|
||||
'date': date(2022, 5, 16),
|
||||
'rate': Decimal('2.0'),
|
||||
}, {
|
||||
'date': date(2022, 5, 15),
|
||||
'rate': Decimal('2.5'),
|
||||
}, {
|
||||
'date': date(2022, 5, 14),
|
||||
'rate': Decimal('3.0'),
|
||||
}, {
|
||||
'date': date(2022, 5, 13),
|
||||
'rate': Decimal('3.5'),
|
||||
}, {
|
||||
'date': date(2022, 5, 12),
|
||||
'rate': Decimal('4.0'),
|
||||
}, {
|
||||
'date': date(2022, 5, 11),
|
||||
'rate': Decimal('4.5'),
|
||||
}, ])],
|
||||
},
|
||||
])
|
||||
self.assertEqual(asset1.rec_name, 'Product 1 - 2.6000 usd/Unit [05/16/2022]')
|
||||
self.assertEqual(len(asset1.rates), 4)
|
||||
self.assertEqual(asset2.rec_name, 'Product 1 - 1.5000 usd/Unit [05/17/2022]')
|
||||
self.assertEqual(len(asset2.rates), 7)
|
||||
self.assertEqual(asset1.rates[0].date, date(2022, 5, 16))
|
||||
self.assertEqual(asset1.rates[1].date, date(2022, 5, 15))
|
||||
self.assertEqual(asset1.rates[2].date, date(2022, 5, 12))
|
||||
self.assertEqual(asset1.rates[3].date, date(2022, 5, 3))
|
||||
|
||||
# query date-column
|
||||
tab_percent = Asset.get_percentage_sql(['day1'], select_date = False)
|
||||
query = tab_rate.join(tab_percent,
|
||||
condition=(tab_percent.id_rate == tab_rate.id)
|
||||
).select(
|
||||
tab_percent.id,
|
||||
tab_percent.date,
|
||||
tab_percent.day1,
|
||||
where=tab_percent.id==asset1.id,
|
||||
order_by=[tab_percent.date.asc]
|
||||
)
|
||||
cursor.execute(*query)
|
||||
records = cursor.fetchall()
|
||||
|
||||
# there should be 4x records, three colums
|
||||
self.assertEqual(len(records), 4)
|
||||
self.assertEqual(len(records[0]), 3)
|
||||
self.assertEqual(records[0][0], asset1.id)
|
||||
self.assertEqual(records[0][1], date(2022, 5, 3))
|
||||
self.assertEqual(records[0][2], None)
|
||||
|
||||
self.assertEqual(records[1][0], asset1.id)
|
||||
self.assertEqual(records[1][1], date(2022, 5, 12))
|
||||
self.assertEqual(records[1][2], None)
|
||||
|
||||
self.assertEqual(records[2][0], asset1.id)
|
||||
self.assertEqual(records[2][1], date(2022, 5, 15))
|
||||
self.assertEqual(records[2][2].quantize(Decimal('0.01')), Decimal('22.5'))
|
||||
|
||||
self.assertEqual(records[3][0], asset1.id)
|
||||
self.assertEqual(records[3][1], date(2022, 5, 16))
|
||||
self.assertEqual(records[3][2].quantize(Decimal('0.01')), Decimal('6.12'))
|
||||
|
||||
@with_transaction()
|
||||
def test_asset_percentages_daterange(self):
|
||||
""" create asset, add rates, check selection of
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue