From f95a9ed7101b7e42a8b1b080318648a064eec478 Mon Sep 17 00:00:00 2001 From: Frederik Jaeckel Date: Wed, 22 Feb 2023 21:24:58 +0100 Subject: [PATCH] book: optimized field 'yield_balance' --- book.py | 7 +++++-- tests/test_yield.py | 6 ++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/book.py b/book.py index 2393bab..76d3464 100644 --- a/book.py +++ b/book.py @@ -204,8 +204,11 @@ class Book(SymbolMixin, metaclass=PoolMeta): def on_change_with_yield_balance(self, name=None): """ calculate yield total """ - return self.diff_amount + self.yield_dividend_total + \ - self.yield_sales - self.yield_fee_total + sum_lst = [self.diff_amount, self.yield_dividend_total, self.yield_sales] + 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 def get_yield_data_sql(cls, date_from=None, date_to=None): diff --git a/tests/test_yield.py b/tests/test_yield.py index d1ebb9f..11f8773 100644 --- a/tests/test_yield.py +++ b/tests/test_yield.py @@ -157,6 +157,12 @@ class YieldTestCase(ModuleTestCase): 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.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() def test_yield_fee_transfer_from_splitbooking_cash_out(self): """ check out-booking, transfer from cash --> asset,