book: optimized field 'yield_balance'

This commit is contained in:
Frederik Jaeckel 2023-02-22 21:24:58 +01:00
parent 20f465ae3a
commit f95a9ed710
2 changed files with 11 additions and 2 deletions

View file

@ -204,8 +204,11 @@ class Book(SymbolMixin, metaclass=PoolMeta):
def on_change_with_yield_balance(self, name=None): def on_change_with_yield_balance(self, name=None):
""" calculate yield total """ calculate yield total
""" """
return self.diff_amount + self.yield_dividend_total + \ sum_lst = [self.diff_amount, self.yield_dividend_total, self.yield_sales]
self.yield_sales - self.yield_fee_total sum2 = sum([x for x in sum_lst if x is not None])
if self.yield_fee_total is not None:
sum2 -= self.yield_fee_total
return sum2
@classmethod @classmethod
def get_yield_data_sql(cls, date_from=None, date_to=None): def get_yield_data_sql(cls, date_from=None, date_to=None):

View file

@ -157,6 +157,12 @@ class YieldTestCase(ModuleTestCase):
self.assertEqual(lines[0].trade_fee, Decimal('4.0')) self.assertEqual(lines[0].trade_fee, Decimal('4.0'))
self.assertEqual(book_asset.rec_name, 'Depot | 19.50 usd | Open | 3.0000 u') self.assertEqual(book_asset.rec_name, 'Depot | 19.50 usd | Open | 3.0000 u')
self.assertEqual(book_asset.yield_dividend_total, Decimal('23.5'))
self.assertEqual(book_asset.yield_fee_total, Decimal('4.0'))
self.assertEqual(book_asset.yield_sales, Decimal('0.0'))
self.assertEqual(book_asset.diff_amount, Decimal('-19.5'))
self.assertEqual(book_asset.yield_balance, Decimal('0.0'))
@with_transaction() @with_transaction()
def test_yield_fee_transfer_from_splitbooking_cash_out(self): def test_yield_fee_transfer_from_splitbooking_cash_out(self):
""" check out-booking, transfer from cash --> asset, """ check out-booking, transfer from cash --> asset,