feat: improve calculations for net_worth

This commit is contained in:
Herculino Trotta
2024-11-17 11:36:32 -03:00
parent e5e002497f
commit 84bb247918
3 changed files with 56 additions and 169 deletions

View File

@@ -21,29 +21,29 @@
</div>
<div class="card-body">
<h5 class="tw-text-yellow-400 fw-bold mb-3">{% translate 'By currency' %}</h5>
{% for currency in currency_net_worth %}
{% for currency in currency_net_worth.values %}
<div class="d-flex justify-content-between mt-2">
<div class="d-flex align-items-baseline w-100">
<div class="currency-name text-start font-monospace tw-text-gray-300">{{ currency.name }}</div>
<div class="currency-name text-start font-monospace tw-text-gray-300">{{ currency.currency.name }}</div>
<div class="dotted-line flex-grow-1"></div>
<div>
<c-amount.display
:amount="currency.amount"
:prefix="currency.prefix"
:suffix="currency.suffix"
:decimal_places="currency.decimal_places"
color="{% if currency.amount > 0 %}green{% elif currency.amount < 0 %}red{% endif %}"
:amount="currency.total_current"
:prefix="currency.currency.prefix"
:suffix="currency.currency.suffix"
:decimal_places="currency.currency.decimal_places"
color="{% if currency.total_current > 0 %}green{% elif currency.total_current < 0 %}red{% endif %}"
text-end></c-amount.display>
</div>
</div>
</div>
{% if currency.exchanged and currency.exchanged.amount %}
{% if currency.exchanged and currency.exchanged.total_current %}
<div>
<c-amount.display
:amount="currency.exchanged.amount"
:prefix="currency.exchanged.prefix"
:suffix="currency.exchanged.suffix"
:decimal_places="currency.exchanged.decimal_places"
:amount="currency.exchanged.total_current"
:prefix="currency.exchanged.currency.prefix"
:suffix="currency.exchanged.currency.suffix"
:decimal_places="currency.exchanged.currency.decimal_places"
text-end
color="grey"></c-amount.display>
</div>
@@ -60,62 +60,63 @@
</div>
<div class="card-body">
<h5 class="tw-text-blue-400 fw-bold mb-3">{% translate 'By account' %}</h5>
{% for group_id, group_data in account_net_worth.items %}
{% if group_id %}
{% regroup account_net_worth.values by account.group as account_data %}
{% for data in account_data %}
{% if data.grouper %}
<div class="d-flex justify-content-between mt-2">
<div class="d-flex align-items-baseline w-100">
<div class="text-start font-monospace tw-text-gray-300"><span class="badge text-bg-primary">
{{ group_data.name }}</span></div>
{{ data.grouper }}</span></div>
</div>
</div>
{% for account_id, account_data in group_data.accounts.items %}
{% for account in data.list %}
<div class="d-flex justify-content-between mt-2">
<div class="d-flex align-items-baseline w-100">
<div class="text-start font-monospace tw-text-gray-300">
<span class="hierarchy-line-icon"></span>{{ account_data.name }}</div>
<span class="hierarchy-line-icon"></span>{{ account.account.name }}</div>
<div class="dotted-line flex-grow-1"></div>
<div class="">
<c-amount.display
:amount="account_data.balance"
:prefix="account_data.currency.prefix"
:suffix="account_data.currency.suffix"
:decimal_places="account_data.currency.decimal_places"
color="{% if account_data.balance > 0 %}green{% elif account_data.balance < 0 %}red{% endif %}"></c-amount.display>
:amount="account.total_final"
:prefix="account.currency.prefix"
:suffix="account.currency.suffix"
:decimal_places="account.currency.decimal_places"
color="{% if account.total_final > 0 %}green{% elif account.total_final < 0 %}red{% endif %}"></c-amount.display>
</div>
</div>
</div>
{% if account_data.exchange %}
{% if account.exchanged and account.exchanged.total_final %}
<c-amount.display
:amount="account_data.exchange.amount"
:prefix="account_data.exchange.prefix"
:suffix="account_data.exchange.suffix"
:decimal_places="account_data.exchange.decimal_places"
:amount="account.exchanged.total_final"
:prefix="account.exchanged.currency.prefix"
:suffix="account.exchanged.currency.suffix"
:decimal_places="account.exchanged.currency.decimal_places"
color="grey"
text-end></c-amount.display>
{% endif %}
{% endfor %}
{% else %}
{% for account_id, account_data in group_data.accounts.items %}
{% for account in data.list %}
<div class="d-flex justify-content-between mt-2">
<div class="d-flex align-items-baseline w-100">
<div class="currency-name text-start font-monospace tw-text-gray-300">{{ account_data.name }}</div>
<div class="currency-name text-start font-monospace tw-text-gray-300">{{ account.account.name }}</div>
<div class="dotted-line flex-grow-1"></div>
<div>
<c-amount.display
:amount="account_data.balance"
:prefix="account_data.currency.prefix"
:suffix="account_data.currency.suffix"
:decimal_places="account_data.currency.decimal_places"
color="{% if account_data.balance > 0 %}green{% elif account_data.balance < 0 %}red{% endif %}"></c-amount.display>
:amount="account.total_final"
:prefix="account.currency.prefix"
:suffix="account.currency.suffix"
:decimal_places="account.currency.decimal_places"
color="{% if account.total_final > 0 %}green{% elif account.total_final < 0 %}red{% endif %}"></c-amount.display>
</div>
</div>
</div>
{% if account_data.exchange %}
{% if account.exchanged and account.exchanged.total_final %}
<c-amount.display
:amount="account_data.exchange.amount"
:prefix="account_data.exchange.prefix"
:suffix="account_data.exchange.suffix"
:decimal_places="account_data.exchange.decimal_places"
:amount="account.exchanged.total_final"
:prefix="account.exchanged.currency.prefix"
:suffix="account.exchanged.currency.suffix"
:decimal_places="account.exchanged.currency.decimal_places"
color="grey"
text-end></c-amount.display>
{% endif %}