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,