diff --git a/finance/app/routers/gui.py b/finance/app/routers/gui.py index da64f84..6a4dedc 100644 --- a/finance/app/routers/gui.py +++ b/finance/app/routers/gui.py @@ -13,7 +13,8 @@ from app.engine.recurrence import occurrences from app.formats import de_label, eur from app.models.tables import (Account, Category, PlannedItem, ProjectionResult, RecurringItem, - ScenarioLoan, ScenarioModifier, Transaction) + ScenarioLoan, ScenarioModifier, + ScenarioPlannedItem, Transaction) from app.routers.imports import list_imports as _list_imports from app.routers.imports import preview as _preview_import from app.routers.planning import list_loans as _list_loans @@ -264,10 +265,15 @@ def _scenario_rows(session: Session, scenarios: list, loans: list) -> list[dict] modifiers = session.execute( select(ScenarioModifier).where(ScenarioModifier.scenario_id == sc.id) ).scalars().all() + planned_items = session.execute( + select(ScenarioPlannedItem) + .where(ScenarioPlannedItem.scenario_id == sc.id) + .order_by(ScenarioPlannedItem.due)).scalars().all() rows.append({ "scenario": sc, "assigned_loan_ids": assigned_loan_ids, "modifiers": modifiers, + "planned_items": planned_items, "result": session.get(ProjectionResult, sc.id), }) return rows @@ -296,5 +302,5 @@ def planung_page(request: Request, session: Session = Depends(get_session)): "scenario_rows": _scenario_rows(session, scenarios, loans), "rhythms": ["monthly", "quarterly", "yearly"], "repayment_types": ["annuity", "bullet"], - "modifier_kinds": ["percent", "absolute", "remove"], + "modifier_kinds": ["percent", "absolute", "remove", "ende"], }) diff --git a/finance/app/templates/hilfe.html b/finance/app/templates/hilfe.html index 7b874ed..649bbc5 100644 --- a/finance/app/templates/hilfe.html +++ b/finance/app/templates/hilfe.html @@ -70,6 +70,11 @@ von Krediten und Modifikatoren (Kategorie oder Posten prozentual/absolut kürzen oder ganz streichen). "Durchrechnen" liefert: tiefster Kontostand mit Datum, erstes Datum unter 0 und unter der Warnschwelle. + Varianten wie „Best Case“ entstehen über Modifikatoren: Art „Ende“ lässt + einen wiederkehrenden Posten (z. B. eine auslaufende Miete) innerhalb des + Szenarios zu einem Datum enden, ohne den Posten selbst zu ändern; „Prozent“/ + „Absolut“ kürzen Beträge; „Entfällt“ blendet sie ganz aus. Szenario-eigene + Einmalzahlungen (z. B. ein erwarteter Zufluss) zählen nur in ihrem Szenario.
| Name | Betrag | Fällig am | |
|---|---|---|---|
| {{ sp.name }} | +{{ sp.amount|eur }} € | +{{ sp.due.strftime('%d.%m.%Y') }} | ++ + | +
| Keine szenario-eigenen Einmalzahlungen. | |||
Zählt nur in diesem Szenario — unabhängig von „Einmalposten einschließen“.
+