book: optimized field 'yield_balance'
This commit is contained in:
parent
20f465ae3a
commit
f95a9ed710
2 changed files with 11 additions and 2 deletions
7
book.py
7
book.py
|
@ -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):
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Loading…
Reference in a new issue