funkcje rezerw i przesuniec

This commit is contained in:
Mateusz Gruszczyński
2025-12-11 14:16:14 +01:00
parent 19f0bbc438
commit da2c2ca3bd

20
app.py
View File

@@ -363,20 +363,21 @@ 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 / wydatki z filtrem ukrycia
# Wpłaty
wplaty = [
{"typ": "wpłata", "kwota": w.kwota, "opis": w.opis, "data": w.data, "ukryta": getattr(w, "ukryta", False)}
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)}
for x in zb.wydatki
if show_hidden or not getattr(x, "ukryta", False)
]
# Przesunięcia przychodzące
# Przesunięcia przychodzące - TYLKO ogólne (bez konkretnej wpłaty)
przesuniecia_przych = [
{
"typ": "przesunięcie_przych",
@@ -388,10 +389,10 @@ def zbiorka(zbiorka_id):
"ukryta": getattr(p, "ukryta", False)
}
for p in zb.przesuniecia_przychodzace
if show_hidden or not getattr(p, "ukryta", False)
if (show_hidden or not getattr(p, "ukryta", False)) and p.wplata_id is None
]
# Przesunięcia wychodzące
# Przesunięcia wychodzące - TYLKO ogólne (bez konkretnej wpłaty)
przesuniecia_wych = [
{
"typ": "przesunięcie_wych",
@@ -403,7 +404,7 @@ def zbiorka(zbiorka_id):
"ukryta": getattr(p, "ukryta", False)
}
for p in zb.przesuniecia_wychodzace
if show_hidden or not getattr(p, "ukryta", False)
if (show_hidden or not getattr(p, "ukryta", False)) and p.wplata_id is None
]
aktywnosci = wplaty + wydatki + przesuniecia_przych + przesuniecia_wych
@@ -727,6 +728,7 @@ def dodaj_wplate(zbiorka_id):
return redirect(next_url or url_for("transakcje_zbiorki", zbiorka_id=zb.id))
return render_template("admin/dodaj_wplate.html", zbiorka=zb)
@app.route("/admin/zbiorka/<int:zbiorka_id>/wplata/<int:wplata_id>/przesun", methods=["GET", "POST"])
@login_required
def przesun_wplate(zbiorka_id, wplata_id):
@@ -759,13 +761,11 @@ def przesun_wplate(zbiorka_id, wplata_id):
opis_dodatkowy = request.form.get("opis", "").strip()
# Opis przesunięcia
if opis_dodatkowy:
opis_przesuniecia = f"Przesunięcie wpłaty: {wplata.opis or 'bez opisu'} - {opis_dodatkowy}"
else:
opis_przesuniecia = f"Przesunięcie wpłaty: {wplata.opis or 'bez opisu'}"
# Utwórz przesunięcie
nowe_przesuniecie = Przesuniecie(
zbiorka_zrodlo_id=zb_zrodlo.id,
zbiorka_cel_id=zb_cel.id,
@@ -774,13 +774,9 @@ def przesun_wplate(zbiorka_id, wplata_id):
wplata_id=wplata.id
)
# Zaktualizuj stany
zb_zrodlo.stan = (zb_zrodlo.stan or Decimal("0")) - wplata.kwota
zb_cel.stan = (zb_cel.stan or Decimal("0")) + wplata.kwota
# Przenieś wpłatę do nowej zbiórki
wplata.zbiorka_id = zb_cel.id
db.session.add(nowe_przesuniecie)
db.session.commit()
@@ -789,7 +785,6 @@ def przesun_wplate(zbiorka_id, wplata_id):
next_url = request.args.get("next")
return redirect(next_url or url_for("transakcje_zbiorki", zbiorka_id=zb_zrodlo.id))
# GET - wyświetl formularz
dostepne_zbiorki = Zbiorka.query.filter(Zbiorka.id != zbiorka_id).all()
return render_template("admin/przesun_wplate.html",
zbiorka=zb_zrodlo,
@@ -797,6 +792,7 @@ def przesun_wplate(zbiorka_id, wplata_id):
dostepne_zbiorki=dostepne_zbiorki)
@app.route("/admin/zbiorka/usun/<int:zbiorka_id>", methods=["POST"])
@login_required
def usun_zbiorka(zbiorka_id):