funkcje rezerw i przesuniec
This commit is contained in:
32
app.py
32
app.py
@@ -363,16 +363,42 @@ def zbiorka(zbiorka_id):
|
||||
is_admin = current_user.is_authenticated and current_user.czy_admin
|
||||
show_hidden = is_admin and (request.args.get("show_hidden") in ("1", "true", "yes"))
|
||||
|
||||
# Wpłaty
|
||||
# Stwórz mapę przesunięć wpłat dla tej zbiórki (przychodzące)
|
||||
przesuniecia_wplat_map = {
|
||||
p.wplata_id: {
|
||||
"zbiorka_zrodlo_nazwa": p.zbiorka_zrodlo.nazwa,
|
||||
"zbiorka_zrodlo_id": p.zbiorka_zrodlo_id,
|
||||
"opis": p.opis
|
||||
}
|
||||
for p in zb.przesuniecia_przychodzace
|
||||
if p.wplata_id is not None
|
||||
}
|
||||
|
||||
# Wpłaty z informacją o przesunięciu
|
||||
wplaty = [
|
||||
{"typ": "wpłata", "kwota": w.kwota, "opis": w.opis, "data": w.data, "ukryta": getattr(w, "ukryta", False)}
|
||||
{
|
||||
"typ": "wpłata",
|
||||
"id": w.id,
|
||||
"kwota": w.kwota,
|
||||
"opis": w.opis,
|
||||
"data": w.data,
|
||||
"ukryta": getattr(w, "ukryta", False),
|
||||
"przesuniecie_z": przesuniecia_wplat_map.get(w.id)
|
||||
}
|
||||
for w in zb.wplaty
|
||||
if show_hidden or not getattr(w, "ukryta", False)
|
||||
]
|
||||
|
||||
# Wydatki
|
||||
wydatki = [
|
||||
{"typ": "wydatek", "kwota": x.kwota, "opis": x.opis, "data": x.data, "ukryta": getattr(x, "ukryta", False)}
|
||||
{
|
||||
"typ": "wydatek",
|
||||
"id": x.id,
|
||||
"kwota": x.kwota,
|
||||
"opis": x.opis,
|
||||
"data": x.data,
|
||||
"ukryta": getattr(x, "ukryta", False)
|
||||
}
|
||||
for x in zb.wydatki
|
||||
if show_hidden or not getattr(x, "ukryta", False)
|
||||
]
|
||||
|
||||
@@ -320,8 +320,8 @@
|
||||
{% if aktywnosci and aktywnosci|length > 0 %}
|
||||
<ul class="list-group list-group-flush">
|
||||
{% for a in aktywnosci %}
|
||||
<li class="list-group-item bg-transparent d-flex flex-wrap justify-content-between align-items-center">
|
||||
<div class="me-3">
|
||||
<li class="list-group-item bg-transparent d-flex flex-wrap justify-content-between align-items-start">
|
||||
<div class="me-3 flex-grow-1">
|
||||
<strong>{{ a.data|dt("%d.%m.%Y %H:%M") }}</strong>
|
||||
|
||||
{% if a.typ == 'wpłata' %}
|
||||
@@ -338,6 +338,22 @@
|
||||
<span class="text-muted">— {{ a.opis }}</span>
|
||||
{% endif %}
|
||||
|
||||
{# Informacja o przesunięciu wpłaty #}
|
||||
{% if a.typ == 'wpłata' and a.przesuniecie_z %}
|
||||
<div class="text-muted small mt-1">
|
||||
<span class="badge bg-secondary">Przesunięto</span>
|
||||
Źródło:
|
||||
<a href="{{ url_for('zbiorka', zbiorka_id=a.przesuniecie_z.zbiorka_zrodlo_id) }}"
|
||||
class="text-decoration-none">
|
||||
{{ a.przesuniecie_z.zbiorka_zrodlo_nazwa }}
|
||||
</a>
|
||||
{% if a.przesuniecie_z.opis %}
|
||||
<br><span class="text-muted">{{ a.przesuniecie_z.opis }}</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{# Link do źródłowej/docelowej zbiórki dla przesunięć ogólnych #}
|
||||
{% if a.typ in ['przesunięcie_przych', 'przesunięcie_wych'] and a.zbiorka_id %}
|
||||
<a href="{{ url_for('zbiorka', zbiorka_id=a.zbiorka_id) }}"
|
||||
class="ms-2 text-decoration-none small">
|
||||
@@ -352,7 +368,7 @@
|
||||
</div>
|
||||
|
||||
{% if not zbiorka.ukryj_kwote %}
|
||||
<span class="badge bg-dark border ms-auto" style="border-color: var(--border);">
|
||||
<span class="badge bg-dark border" style="border-color: var(--border);">
|
||||
{% if a.typ == 'wpłata' or a.typ == 'przesunięcie_przych' %}
|
||||
+{{ a.kwota|round(2) }} PLN
|
||||
{% else %}
|
||||
@@ -379,6 +395,7 @@
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block extra_scripts %}
|
||||
|
||||
Reference in New Issue
Block a user