diff --git a/CHANGELOG.md b/CHANGELOG.md index a2b38cd..cc42af7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,10 @@ Das Format folgt [Keep a Changelog](https://keepachangelog.com/de/1.1.0/). ### Added +- Kategorieauswahl: Unter den Kategorien stehen überall die aktiven Umbuchungskonten, + sortiert und gruppiert nach Kontengruppe – in Regeln samt Splitzeilen, Umsatzabgleich, + Buchungsvorlagen, Regelmäßigen Buchungen, Zahlungsverkehr, Verträgen sowie in den + Filtern von Buchungsbericht und Export (#124) - Buchungsmaske: Schalter „Bewusst ohne Kategorie“ für Abschreibungen und rein rechnerische Erträge; solche Buchungen gelten im Cockpit, im Monatsabschluss und in der Kontenübersicht nicht als offen (#134) diff --git a/Changes.md b/Changes.md index 7046aae..2ddd38c 100644 --- a/Changes.md +++ b/Changes.md @@ -1,5 +1,16 @@ # Änderungen +## Umbuchungskonten in jeder Kategorieauswahl (12.10.2026) + +- Anlass (#124): In den Splitzeilen der Regeln, beim Anlegen einer Regel, im Filter des Buchungsberichts und weiteren Listen fehlten die Umbuchungskonten unter den Kategorien. +- Die gemeinsame Liste *Kategorie / Gegenkonto* der Buchungsmaske (`Views/buchungen/zuordnungsliste.php`) steht jetzt überall, wo eine Kategorie gewählt wird: Regeln (Neue Regel, Regeltabelle, Regeldialog im Kontoblatt) samt Splitzeilen, Umsatzabgleich, Buchungsvorlagen, Regelmäßige Buchungen, Zahlungsverkehr und Verträge. Das getrennte Feld „Gegenkonto“ der Regel entfällt; die Regeltabelle verlor bisher beim Speichern ein Gegenkonto, weil sie es gar nicht mitschickte. +- Angeboten werden nur aktive Umbuchungskonten, in eigenen Gruppen je Kontengruppe und in deren Reihenfolge (`Konto::umbuchungsgruppen()`). Ein schon gewähltes inaktives Konto bleibt sichtbar; die übrigen inaktiven stehen verborgen in der Liste, damit bestehende Splitzeilen beim Bearbeiten nicht verloren gehen (`kombobox.js` blendet sie aus). +- Regel-Splitzeilen können auf ein Umbuchungskonto zeigen; daraus wird eine Splitzeile mit Gegenkonto. Auch „Regel anlegen“ aus einer Buchung übernimmt solche Zeilen. +- Buchungsbericht: Umbuchungskonten stehen unter den Kategorien im Filter und bringen ihre Umbuchungen auch ohne „Umbuchungen mitzählen“ mit. Export: Umbuchungskonten unter den Kategorien (`gegenkonten[]`). +- Zahlungsaufträge und Verträge bekommen ein Gegenkonto (Migration `030_gegenkonto_auftrag_vertrag.sql`); eine Überweisung aufs eigene Tagesgeld wird beim Senden als Umbuchung gebucht. +- Nicht betroffen: Auswahllisten, die keine Buchung zuordnen (Wertpapierkosten in den Einstellungen, Bargeld-Tool, Ober-/Zielkategorie in der Kategorieverwaltung, Budgetplaner). +- Tests: `tests/61_UmbuchungskontenAuswahlTest.php`, `tests/e2e/specs/regelausbuchung.spec.js`. + ## Regelmäßige Buchungen: automatisch abgleichen (12.10.2026) - Anlass (#123): Buchungen aus regelmäßigen Buchungen mussten nach dem Buchen einzeln abgeglichen werden. diff --git a/docs/auswertungen.md b/docs/auswertungen.md index 823145f..25c11af 100644 --- a/docs/auswertungen.md +++ b/docs/auswertungen.md @@ -113,6 +113,13 @@ Kategorien zeigen die Summe ihres Astes. Eine gewählte Kategorie **schließt ihre Unterkategorien ein** – wer „400 - Leben“ filtert, meint den ganzen Ast. Nichts ausgewählt heißt alles. +Im **Buchungsbericht** stehen unter den Kategorien zusätzlich die aktiven Umbuchungskonten, +je Kontengruppe (#124). Ihr Wert `konto:7` landet im Filter als `gegenkonten`; eine +Bewegung passt, wenn sie zu einer gewählten Kategorie **oder** einem gewählten +Umbuchungskonto gehört. Ein gewähltes Umbuchungskonto bringt seine Umbuchungen auch ohne +„Umbuchungen mitzählen“ mit – sonst bliebe die Auswahl leer. Die übrigen Berichte zählen +Umbuchungen nicht und bieten die Konten deshalb nicht an. + Zwei Berichte bestimmen ihre Zeilen selbst und sperren das Feld: der Kontostandsbericht führt immer Konten, der Budgetbericht immer Kategorien. Zwei bestimmen ihre Spalten selbst: Vergleichs- und Budgetbericht. diff --git a/docs/banking.md b/docs/banking.md index b7b0b7d..4ff2083 100644 --- a/docs/banking.md +++ b/docs/banking.md @@ -453,13 +453,17 @@ Eine Regel prüft ein Muster gegen Empfänger und/oder Verwendungszweck: so. * **Betragsgrenzen** rechnen mit Vorzeichen: „von −60 bis −40“ trifft Lastschriften zwischen 40 und 60 Euro. -* **Wirkung**: Kategorie, Klasse, Gegenkonto (macht daraus eine Umbuchung) oder eine - **Splitbuchung**. +* **Wirkung**: Kategorie oder Gegenkonto (macht daraus eine Umbuchung) aus der + gemeinsamen Liste *Kategorie / Gegenkonto*, dazu eine Klasse – oder eine + **Splitbuchung**. Die Liste ist dieselbe wie in der Buchungsmaske: unter den Kategorien + die aktiven Umbuchungskonten je Kontengruppe (#124). ### Splitbuchung in einer Regel -Unter jeder Regel klappt *Splitbuchung* die Zeilen auf: je Zeile eine Kategorie, wahlweise -Klasse und Notiz, dazu ein Anteil in Prozent. Greift die Regel, entsteht keine Buchung mit +Unter jeder Regel klappt *Splitbuchung* die Zeilen auf: je Zeile eine Kategorie oder ein +Umbuchungskonto, wahlweise Klasse und Notiz, dazu ein Anteil in Prozent. Eine Zeile mit +Umbuchungskonto wird zur Splitzeile mit Gegenkonto – etwa der Sparanteil einer Überweisung, +die sonst Lebensmittel bezahlt. Greift die Regel, entsteht keine Buchung mit einer Kategorie, sondern eine Splitbuchung mit diesen Zeilen. Die Anteile gelten **zueinander**, nicht als feste Beträge – darin liegt der ganze Zweck: @@ -473,7 +477,7 @@ Fehler wäre in der fertigen Buchung nicht mehr zu sehen. Die letzte Zeile bekom den Rundungsrest, damit die Summe auf den Cent zum Buchungsbetrag passt – bei einem Drittel zu zwei Dritteln ginge sonst ein Cent verloren, und die Buchung ließe sich nicht speichern. -Eine Zeile ohne Kategorie oder ohne Anteil fällt weg; ohne jede Splitzeile bucht die Regel +Eine Zeile ohne Kategorie bzw. Gegenkonto oder ohne Anteil fällt weg; ohne jede Splitzeile bucht die Regel wie zuvor auf ihre Kategorie. Im Abgleichdialog zeigt der Vorschlag die errechneten Zeilen mit ihren Beträgen an und übernimmt sie unverändert – geändert wird eine Aufteilung im Kontoblatt, wo die ganze Buchung samt Summenprüfung vorliegt. diff --git a/docs/buchungen.md b/docs/buchungen.md index c8c51a8..30323fa 100644 --- a/docs/buchungen.md +++ b/docs/buchungen.md @@ -57,10 +57,14 @@ nicht. Deshalb stehen Kategorien und Konten in derselben Auswahlliste; die Konte in eckigen Klammern, wie das Kategoriefeld im FinanzManager sie schreibt. Das eigene Konto fehlt in der Liste. -Die Liste steht in `Views/buchungen/zuordnungsliste.php` und wird an vier Stellen -eingebunden: Buchungsmaske, deren Splitzeilen, Schnellzuordnung im Kontoblatt und -Splitdialog. Die Werte tragen ein Präfix, das `BuchungenController::zuordnungAus()` wieder -auseinandernimmt: +Die Liste steht in `Views/buchungen/zuordnungsliste.php`. Sie wird nicht nur in der +Buchungsmaske, deren Splitzeilen, der Schnellzuordnung im Kontoblatt und im Splitdialog +eingebunden, sondern überall, wo eine Kategorie gewählt wird (#124): Regeln samt ihren +Splitzeilen, Umsatzabgleich, Buchungsvorlagen, Regelmäßige Buchungen, Zahlungsverkehr und +Verträge. Die Werte tragen ein Präfix, das `BuchungenController::zuordnungAus()` wieder +auseinandernimmt (`zuordnungAusFormular()` nimmt ersatzweise die versteckten Einzelfelder +`kategorie_id`/`gegenkonto_id` einer Tabellenzeile, `zuordnungswert()` baut den Wert für die +Vorauswahl): | Wert | Bedeutung | |---|---| @@ -72,6 +76,17 @@ auseinandernimmt: Die Auswahl *Ausgabe / Einnahme* bestimmt seither nur noch die Richtung des Betrags. +Angeboten werden nur **aktive** Umbuchungskonten, je Kontengruppe in einer eigenen Gruppe +(„Umbuchungskonten – Liquide Mittel“, ohne Kontengruppen schlicht „Umbuchungskonten“) und +in der Reihenfolge der Kontengruppen (`Konto::umbuchungsgruppen()`). Ein inaktives Konto, +das schon gewählt ist, bleibt sichtbar stehen – sonst ginge die Zuordnung beim nächsten +Speichern verloren. Alle übrigen inaktiven Konten stehen als verborgene Einträge +(`