Fix n.n.: Buchungstext bei regelmäßigen Buchungen
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
1a464b5b17
commit
ecab07e5da
3 changed files with 22 additions and 1 deletions
|
|
@ -1,5 +1,9 @@
|
||||||
# Änderungen
|
# Änderungen
|
||||||
|
|
||||||
|
## Buchungstext bei regelmäßigen Buchungen (01.10.2026)
|
||||||
|
|
||||||
|
- Das Feld „Buchungstext“ fehlte im Formular für neue regelmäßige Buchungen und war in der Liste nur ein verstecktes Feld. Jetzt beim Anlegen vorhanden und in der Liste unter dem Namen bearbeitbar (`termine/index.php`).
|
||||||
|
|
||||||
## Fälligkeit folgt der Buchung (01.10.2026)
|
## Fälligkeit folgt der Buchung (01.10.2026)
|
||||||
|
|
||||||
- Eine per Fälligkeitslauf oder „Buchen“ erzeugte Buchung merkt sich jetzt ihre regelmäßige Buchung und den Soll-Termin (`buchungen.regelmaessige_id`, `faelligkeit`, Migration 023). Wird sie gelöscht, rückt die Fälligkeit auf diesen Termin zurück, eine ausgelaufene Reihe wird wieder aktiv, `zuletzt_am` folgt der jüngsten verbleibenden Buchung (`RegelmaessigeBuchung::terminWiederOeffnen()`). Bereits vorhandene Buchungen sind nicht verknüpft; bei ihnen bleibt es beim bisherigen Verhalten.
|
- Eine per Fälligkeitslauf oder „Buchen“ erzeugte Buchung merkt sich jetzt ihre regelmäßige Buchung und den Soll-Termin (`buchungen.regelmaessige_id`, `faelligkeit`, Migration 023). Wird sie gelöscht, rückt die Fälligkeit auf diesen Termin zurück, eine ausgelaufene Reihe wird wieder aktiv, `zuletzt_am` folgt der jüngsten verbleibenden Buchung (`RegelmaessigeBuchung::terminWiederOeffnen()`). Bereits vorhandene Buchungen sind nicht verknüpft; bei ihnen bleibt es beim bisherigen Verhalten.
|
||||||
|
|
|
||||||
|
|
@ -102,7 +102,8 @@ include __DIR__ . '/../layout/kopf.php';
|
||||||
<input type="hidden" form="<?= $f ?>" name="csrf_token" value="<?= View::h($csrfToken) ?>">
|
<input type="hidden" form="<?= $f ?>" name="csrf_token" value="<?= View::h($csrfToken) ?>">
|
||||||
<input type="text" form="<?= $f ?>" name="name" value="<?= View::h($reihe['name']) ?>" required>
|
<input type="text" form="<?= $f ?>" name="name" value="<?= View::h($reihe['name']) ?>" required>
|
||||||
<input type="hidden" form="<?= $f ?>" name="empfaenger" value="<?= View::h($reihe['empfaenger']) ?>">
|
<input type="hidden" form="<?= $f ?>" name="empfaenger" value="<?= View::h($reihe['empfaenger']) ?>">
|
||||||
<input type="hidden" form="<?= $f ?>" name="buchungstext" value="<?= View::h($reihe['buchungstext'] ?? '') ?>">
|
<input type="text" form="<?= $f ?>" name="buchungstext" placeholder="Buchungstext"
|
||||||
|
value="<?= View::h($reihe['buchungstext'] ?? '') ?>">
|
||||||
<input type="hidden" form="<?= $f ?>" name="kategorie_id" value="<?= View::h((string)$reihe['kategorie_id']) ?>">
|
<input type="hidden" form="<?= $f ?>" name="kategorie_id" value="<?= View::h((string)$reihe['kategorie_id']) ?>">
|
||||||
<input type="hidden" form="<?= $f ?>" name="klasse_id" value="<?= View::h((string)$reihe['klasse_id']) ?>">
|
<input type="hidden" form="<?= $f ?>" name="klasse_id" value="<?= View::h((string)$reihe['klasse_id']) ?>">
|
||||||
<input type="hidden" form="<?= $f ?>" name="gegenkonto_id" value="<?= View::h((string)$reihe['gegenkonto_id']) ?>">
|
<input type="hidden" form="<?= $f ?>" name="gegenkonto_id" value="<?= View::h((string)$reihe['gegenkonto_id']) ?>">
|
||||||
|
|
@ -188,6 +189,9 @@ include __DIR__ . '/../layout/kopf.php';
|
||||||
<label for="neu_empfaenger">Empfänger</label>
|
<label for="neu_empfaenger">Empfänger</label>
|
||||||
<input type="text" id="neu_empfaenger" name="empfaenger">
|
<input type="text" id="neu_empfaenger" name="empfaenger">
|
||||||
|
|
||||||
|
<label for="neu_buchungstext">Buchungstext</label>
|
||||||
|
<input type="text" id="neu_buchungstext" name="buchungstext">
|
||||||
|
|
||||||
<label for="neu_kategorie">Kategorie</label>
|
<label for="neu_kategorie">Kategorie</label>
|
||||||
<select id="neu_kategorie" name="kategorie_id">
|
<select id="neu_kategorie" name="kategorie_id">
|
||||||
<option value="">– keine –</option>
|
<option value="">– keine –</option>
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ class RegelmaessigeLoeschenTest extends TestCase
|
||||||
$this->aeltereVonZweienGeloescht();
|
$this->aeltereVonZweienGeloescht();
|
||||||
$this->beendeteReiheWirdAktiv();
|
$this->beendeteReiheWirdAktiv();
|
||||||
$this->manuelleBuchungBleibtUnberuehrt();
|
$this->manuelleBuchungBleibtUnberuehrt();
|
||||||
|
$this->buchungstextWirdUebernommen();
|
||||||
}
|
}
|
||||||
|
|
||||||
private function reihe(string $name, string $beginn, ?string $ende = null): int
|
private function reihe(string $name, string $beginn, ?string $ende = null): int
|
||||||
|
|
@ -96,4 +97,16 @@ class RegelmaessigeLoeschenTest extends TestCase
|
||||||
|
|
||||||
$this->assertEquals($vorher, $this->faelligkeit($id), 'Eine freie Buchung ändert keine Fälligkeit');
|
$this->assertEquals($vorher, $this->faelligkeit($id), 'Eine freie Buchung ändert keine Fälligkeit');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function buchungstextWirdUebernommen(): void
|
||||||
|
{
|
||||||
|
$id = RegelmaessigeBuchung::anlegen([
|
||||||
|
'name' => 'Mit Text', 'konto_id' => $this->giro, 'betrag' => -10, 'buchungstext' => 'Miete Oktober',
|
||||||
|
'intervall' => 'monatlich', 'beginn' => '2026-10-01', 'aktiv' => 1,
|
||||||
|
]);
|
||||||
|
$this->assertEquals('Miete Oktober', (string)RegelmaessigeBuchung::find($id)['buchungstext'], 'Der Buchungstext wird gespeichert');
|
||||||
|
|
||||||
|
$buchung = RegelmaessigeBuchung::buchen($id);
|
||||||
|
$this->assertEquals('Miete Oktober', (string)Buchung::find($buchung)['buchungstext'], 'Und in die Buchung übernommen');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue