refactor: improve monthly_summary calculations

This commit is contained in:
Herculino Trotta
2024-11-17 01:30:07 -03:00
parent b979728405
commit 2f94dc299c
2 changed files with 170 additions and 228 deletions
@@ -15,13 +15,24 @@
<div class="tw-text-gray-400">{% translate 'today' %}</div>
</div>
<div class="text-end font-monospace">
{% for entry in totals.daily_spending_allowance %}
<c-amount.display
:amount="entry.amount"
:prefix="entry.prefix"
:suffix="entry.suffix"
:decimal_places="entry.decimal_places"
color="{% if entry.amount > 0 %}green{% elif entry.amount < 0 %}red{% endif %}"></c-amount.display>
{% for currency in daily_spending_allowance.values %}
<div>
<c-amount.display
:amount="currency.amount"
:prefix="currency.currency.prefix"
:suffix="currency.currency.suffix"
:decimal_places="currency.currency.decimal_places"></c-amount.display>
</div>
{% if currency.exchanged %}
<div>
<c-amount.display
:amount="currency.exchanged.amount"
:prefix="currency.exchanged.currency.prefix"
:suffix="currency.exchanged.currency.suffix"
:decimal_places="currency.exchanged.currency.decimal_places"
color="gray"></c-amount.display>
</div>
{% endif %}
{% empty %}
<div>-</div>
{% endfor %}
@@ -44,13 +55,25 @@
<div class="tw-text-gray-400">{% translate 'current' %}</div>
</div>
<div class="text-end font-monospace">
{% for entry in totals.paid_income %}
<c-amount.display
:amount="entry.amount"
:prefix="entry.prefix"
:suffix="entry.suffix"
:decimal_places="entry.decimal_places"
color="green"></c-amount.display>
{% for currency in income_current.values %}
<div>
<c-amount.display
:amount="currency.income_current"
:prefix="currency.currency.prefix"
:suffix="currency.currency.suffix"
:decimal_places="currency.currency.decimal_places"
color="green"></c-amount.display>
</div>
{% if currency.exchanged %}
<div>
<c-amount.display
:amount="currency.exchanged.income_current"
:prefix="currency.exchanged.currency.prefix"
:suffix="currency.exchanged.currency.suffix"
:decimal_places="currency.exchanged.currency.decimal_places"
color="gray"></c-amount.display>
</div>
{% endif %}
{% empty %}
<div>-</div>
{% endfor %}
@@ -62,13 +85,25 @@
<div class="tw-text-gray-400">{% translate 'projected' %}</div>
</div>
<div class="text-end font-monospace">
{% for entry in totals.projected_income %}
<c-amount.display
:amount="entry.amount"
:prefix="entry.prefix"
:suffix="entry.suffix"
:decimal_places="entry.decimal_places"
color="green"></c-amount.display>
{% for currency in income_projected.values %}
<div>
<c-amount.display
:amount="currency.income_projected"
:prefix="currency.currency.prefix"
:suffix="currency.currency.suffix"
:decimal_places="currency.currency.decimal_places"
color="green"></c-amount.display>
</div>
{% if currency.exchanged %}
<div>
<c-amount.display
:amount="currency.exchanged.income_projected"
:prefix="currency.exchanged.currency.prefix"
:suffix="currency.exchanged.currency.suffix"
:decimal_places="currency.exchanged.currency.decimal_places"
color="gray"></c-amount.display>
</div>
{% endif %}
{% empty %}
<div>-</div>
{% endfor %}
@@ -85,19 +120,31 @@
<i class="fa-solid fa-arrow-right-from-bracket"></i>
</div>
<div class="card-body">
<h5 class="tw-text-red-400">{% translate 'Expenses' %}</h5>
<h5 class="tw-text-red-400 fw-bold">{% translate 'Expenses' %}</h5>
<div class="d-flex justify-content-between mt-3">
<div class="text-end font-monospace">
<div class="tw-text-gray-400">{% translate 'current' %}</div>
</div>
<div class="text-end font-monospace">
{% for entry in totals.paid_expenses %}
<c-amount.display
:amount="entry.amount"
:prefix="entry.prefix"
:suffix="entry.suffix"
:decimal_places="entry.decimal_places"
color="red"></c-amount.display>
{% for currency in expense_current.values %}
<div>
<c-amount.display
:amount="currency.expense_current"
:prefix="currency.currency.prefix"
:suffix="currency.currency.suffix"
:decimal_places="currency.currency.decimal_places"
color="red"></c-amount.display>
</div>
{% if currency.exchanged %}
<div>
<c-amount.display
:amount="currency.exchanged.expense_current"
:prefix="currency.exchanged.currency.prefix"
:suffix="currency.exchanged.currency.suffix"
:decimal_places="currency.exchanged.currency.decimal_places"
color="gray"></c-amount.display>
</div>
{% endif %}
{% empty %}
<div>-</div>
{% endfor %}
@@ -109,13 +156,25 @@
<div class="tw-text-gray-400">{% translate 'projected' %}</div>
</div>
<div class="text-end font-monospace">
{% for entry in totals.projected_expenses %}
<c-amount.display
:amount="entry.amount"
:prefix="entry.prefix"
:suffix="entry.suffix"
:decimal_places="entry.decimal_places"
color="red"></c-amount.display>
{% for currency in expense_projected.values %}
<div>
<c-amount.display
:amount="currency.expense_projected"
:prefix="currency.currency.prefix"
:suffix="currency.currency.suffix"
:decimal_places="currency.currency.decimal_places"
color="red"></c-amount.display>
</div>
{% if currency.exchanged %}
<div>
<c-amount.display
:amount="currency.exchanged.expense_projected"
:prefix="currency.exchanged.currency.prefix"
:suffix="currency.exchanged.currency.suffix"
:decimal_places="currency.exchanged.currency.decimal_places"
color="gray"></c-amount.display>
</div>
{% endif %}
{% empty %}
<div>-</div>
{% endfor %}
@@ -132,19 +191,31 @@
<i class="fa-solid fa-scale-balanced"></i>
</div>
<div class="card-body">
<h5 class="tw-text-blue-400">{% translate 'Total' %}</h5>
<h5 class="tw-text-blue-400 fw-bold">{% translate 'Total' %}</h5>
<div class="d-flex justify-content-between mt-3">
<div class="text-end font-monospace">
<div class="tw-text-gray-400">{% translate 'current' %}</div>
</div>
<div class="text-end font-monospace">
{% for entry in totals.total_current %}
<c-amount.display
:amount="entry.amount"
:prefix="entry.prefix"
:suffix="entry.suffix"
:decimal_places="entry.decimal_places"
color="{% if entry.amount > 0 %}green{% elif entry.amount < 0 %}red{% endif %}"></c-amount.display>
{% for currency in total_current.values %}
<div>
<c-amount.display
: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 %}"></c-amount.display>
</div>
{% if currency.exchanged %}
<div>
<c-amount.display
:amount="currency.exchanged.total_current"
:prefix="currency.exchanged.currency.prefix"
:suffix="currency.exchanged.currency.suffix"
:decimal_places="currency.exchanged.currency.decimal_places"
color="gray"></c-amount.display>
</div>
{% endif %}
{% empty %}
<div>-</div>
{% endfor %}
@@ -155,13 +226,25 @@
<div class="tw-text-gray-400">{% translate 'projected' %}</div>
</div>
<div class="text-end font-monospace">
{% for entry in totals.total_projected %}
<c-amount.display
:amount="entry.amount"
:prefix="entry.prefix"
:suffix="entry.suffix"
:decimal_places="entry.decimal_places"
color="{% if entry.amount > 0 %}green{% elif entry.amount < 0 %}red{% endif %}"></c-amount.display>
{% for currency in total_projected.values %}
<div>
<c-amount.display
:amount="currency.total_projected"
:prefix="currency.currency.prefix"
:suffix="currency.currency.suffix"
:decimal_places="currency.currency.decimal_places"
color="{% if currency.total_projected > 0 %}green{% elif currency.total_projected < 0 %}red{% endif %}"></c-amount.display>
</div>
{% if currency.exchanged %}
<div>
<c-amount.display
:amount="currency.exchanged.total_projected"
:prefix="currency.exchanged.currency.prefix"
:suffix="currency.exchanged.currency.suffix"
:decimal_places="currency.exchanged.currency.decimal_places"
color="gray"></c-amount.display>
</div>
{% endif %}
{% empty %}
<div>-</div>
{% endfor %}
@@ -170,13 +253,25 @@
<hr class="my-1">
<div class="d-flex justify-content-end">
<div class="text-end font-monospace">
{% for entry in totals.total_final %}
<c-amount.display
:amount="entry.amount"
:prefix="entry.prefix"
:suffix="entry.suffix"
:decimal_places="entry.decimal_places"
color="{% if entry.amount > 0 %}green{% elif entry.amount < 0 %}red{% endif %}"></c-amount.display>
{% for currency in total_final.values %}
<div>
<c-amount.display
:amount="currency.total_final"
:prefix="currency.currency.prefix"
:suffix="currency.currency.suffix"
:decimal_places="currency.currency.decimal_places"
color="{% if currency.total_final > 0 %}green{% elif currency.total_final < 0 %}red{% endif %}"></c-amount.display>
</div>
{% if currency.exchanged %}
<div>
<c-amount.display
:amount="currency.exchanged.total_final"
:prefix="currency.exchanged.currency.prefix"
:suffix="currency.exchanged.currency.suffix"
:decimal_places="currency.exchanged.currency.decimal_places"
color="gray"></c-amount.display>
</div>
{% endif %}
{% empty %}
<div>-</div>
{% endfor %}
@@ -186,21 +281,3 @@
</div>
</div>
</div>
{#<div class="p-2 rounded-2 shadow tw-text-sm card mt-4">#}
{# <p class="font-monospace text-light text-uppercase text-center fw-bold m-0 tw-text-base">#}
{# {% translate "Account Overview" %}</p>#}
{# <hr class="my-1">#}
{# <div>#}
{# {% for account in account_summary %}#}
{# <div class="row">#}
{# <div class="col-6">#}
{# <div class="font-monospace text-primary text-start align-self-end fw-bold m-0">{{ account.name }}</div>#}
{# </div>#}
{# <div class="col-6 text-end font-monospace">#}
{# <div class="amount" data-original-value="{% currency_display amount=account.balance prefix=account.currency__prefix suffix=account.currency__suffix decimal_places=account.currency__decimal_places %}"></div>#}
{# </div>#}
{# </div>#}
{# <div class="my-1"></div>#}
{# {% endfor %}#}
{# </div>#}
{#</div>#}