diff --git a/apps/monitor/calc.py b/apps/monitor/calc.py index 42dade8..4bb04f7 100644 --- a/apps/monitor/calc.py +++ b/apps/monitor/calc.py @@ -90,8 +90,9 @@ class Calc: sql = """SELECT SUM(crypto_fee) as crypto_fee, SUM(fiat_fee) as fiat_fee FROM `transaction` WHERE crypto_currency=%s and owner_id=%s""" cursor.execute(sql, [crypto, userid]) fees = cursor.fetchone() - if fees[0]: + if fees[1]: total_investment -= Decimal(fees[1]) + if fees[0]: amount_kept -= Decimal(fees[0]) rateEUR = ExchangeRate.objects.filter(crypto_currency=crypto, fiat_currency='EUR').order_by('-datetime_valid').first() diff --git a/apps/transactions/templates/show.html b/apps/transactions/templates/show.html index 281e55d..f62a142 100644 --- a/apps/transactions/templates/show.html +++ b/apps/transactions/templates/show.html @@ -26,15 +26,17 @@ {% endif %} - {{ transaction.date_valid }} - {{ transaction.crypto_amount|floatformat:3 }} - {% if transaction.crypto_fee and transaction.crypto_fee > 0 %}Fee: {{ transaction.crypto_fee|floatformat:3 }}{% endif %} - {{ transaction.crypto_currency }} - - {{ transaction.fiat_amount|formatcurrency }} - {% if transaction.fiat_fee and transaction.fiat_fee > 0 %}Fee: {{ transaction.fiat_fee|floatformat:2 }}{% endif %} - {{ transaction.fiat_currency }} - + {{ transaction.date_valid }} + + {{ transaction.crypto_total|floatformat:3 }} + {{ transaction.crypto_currency }} + + + + {{ transaction.fiat_total|formatcurrency }} + {{ transaction.fiat_currency }} + + {% if transaction.transaction_type == 'S' %} {{ transaction.exchange_rate|formatcurrency }} {{ transaction.crypto_currency }}/{{ transaction.fiat_currency }} {% endif %} diff --git a/apps/transactions/views.py b/apps/transactions/views.py index 22f417b..42ce6a3 100644 --- a/apps/transactions/views.py +++ b/apps/transactions/views.py @@ -1,5 +1,6 @@ from django.shortcuts import render, redirect from django.contrib.auth.decorators import login_required +from django.db.models import Value from apps.transactions.forms import TransactionForm from apps.transactions.forms import ImportForm from apps.transactions.models import Transaction @@ -43,9 +44,20 @@ def importbtcde(request): @login_required def show(request): if 'crypto' in request.GET: - transactions = Transaction.objects.filter(owner=request.user, crypto_currency=request.GET['crypto']).order_by('-date_valid') + transactions = Transaction.objects.filter(owner=request.user, crypto_currency=request.GET['crypto']).order_by('-date_valid').annotate(crypto_total=Value(0.0), fiat_total=Value(0.0)) else: - transactions = Transaction.objects.filter(owner=request.user).order_by('-date_valid') + transactions = Transaction.objects.filter(owner=request.user).order_by('-date_valid').annotate(crypto_total=Value(0.0), fiat_total=Value(0.0)) + for tr in transactions: + tr.crypto_total = 0.0 + if tr.crypto_amount: + tr.crypto_total += float(tr.crypto_amount) + if tr.crypto_fee: + tr.crypto_total += float(tr.crypto_fee) + tr.fiat_total = 0.0 + if tr.fiat_amount: + tr.fiat_total += float(tr.fiat_amount) + if tr.fiat_fee: + tr.fiat_total += float(tr.fiat_fee) return render(request,"show.html",{'transactions':transactions}) @login_required diff --git a/demo/resetdemo.sql b/demo/resetdemo.sql index 9c3926e..28a5a39 100644 --- a/demo/resetdemo.sql +++ b/demo/resetdemo.sql @@ -2,13 +2,13 @@ update auth_user set password = 'pbkdf2_sha256$216000$FXCqxdaIG4Dd$QCQEUACd3srB68dlqjekrbHYwThyY3EOQxctr6u0hYQ=', username='demo', email='demo@solidcharity.com' where id='3'; delete from `transaction` where owner_id=3; -insert into `transaction`(crypto_currency, amount_before_fee, amount_after_fee, exchange_rate, fiat_currency, amount, date_valid, owner_id) +insert into `transaction`(crypto_currency, transaction_type, crypto_amount, crypto_fee, exchange_rate, fiat_currency, fiat_amount, date_valid, owner_id) values -('BTC',0.10,0.0990, 754.25,'EUR', 75.42,'2016-12-16 00:00:00.000000',3), -('BTC',0.20,0.199, 555.32,'EUR',150.85,'2016-09-09 00:00:00.000000',3), -('BTC',0.03,0.0299,9988.17,'EUR',299.64,'2020-08-07 00:00:00.000000',3), -('BTC',-0.15,-0.149,14210.97,'EUR',-2131.64,'2018-01-05 00:10:00.000000',3), -('BCH',0.298,0.298,200.00,'EUR',0.0,'2017-01-08 00:00:00.000000',3), -('ETH',0.1,0.099,592.15,'EUR',59.21,'2017-12-29 00:12:00.000000',3), -('ETH',1.0,0.99,100.88,'EUR',100.88,'2019-01-26 00:17:00.000000',3), -('ETH',-0.8,-0.799,638.9,'EUR',-511.12,'2021-01-01 00:34:00.000000',3); +('BTC','B',0.0990,0.001,754.25,'EUR', 75.42,'2016-12-16 00:00:00.000000',3), +('BTC','B',0.199,0.001,555.32,'EUR',150.85,'2016-09-09 00:00:00.000000',3), +('BTC','B',0.0299,0.0001,9988.17,'EUR',299.64,'2020-08-07 00:00:00.000000',3), +('BTC','S',0.149,0.001,14210.97,'EUR',2131.64,'2018-01-05 00:10:00.000000',3), +('BCH','B',0.298,0,200.00,'EUR',0.0,'2017-01-08 00:00:00.000000',3), +('ETH','B',0.099,0.001,592.15,'EUR',59.21,'2017-12-29 00:12:00.000000',3), +('ETH','B',0.99,0.01,100.88,'EUR',100.88,'2019-01-26 00:17:00.000000',3), +('ETH','S',-0.799,0.001,638.9,'EUR',511.12,'2021-01-01 00:34:00.000000',3);