From c6d5babb41cf28dfdb599e5da2e0be7e4cd4a547 Mon Sep 17 00:00:00 2001 From: fds2610-bot Date: Mon, 12 Oct 2026 21:51:41 +0200 Subject: [PATCH] =?UTF-8?q?Fix=20#131:=20Offene=20Vorg=C3=A4nge=20des=20Ba?= =?UTF-8?q?rgeld-Tools=20im=20Buchungsbericht?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Die offenen Vorgänge „im Bargeld-Tool nicht gefunden“ und „Bargeld-Tool- Prüfung fehlgeschlagen“ führen in den Buchungsbericht mit dem Filter „Bargeld-Tool“ – dort steht die Spalte Kategorie/Gegenkonto mit. Die eigene Liste unter /verwaltung/bargeld/fehler entfällt. Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 4 ++ Changes.md | 8 +++ docs/buchungen.md | 11 +-- docs/cockpit.md | 11 +-- public/index.php | 1 - src/Controllers/VerwaltungController.php | 21 ------ src/Models/Buchung.php | 22 ------ src/Services/Cockpit.php | 21 +++++- src/Views/auswertungen/teil-buchungen.php | 10 +++ src/Views/verwaltung/bargeld_fehler.php | 69 ------------------ tests/15_CockpitTest.php | 23 +++--- tests/34_BargeldAbgleichTest.php | 86 ++++++++++++++++------- tests/e2e/specs/bargeld.spec.js | 12 ++++ 13 files changed, 132 insertions(+), 167 deletions(-) delete mode 100644 src/Views/verwaltung/bargeld_fehler.php diff --git a/CHANGELOG.md b/CHANGELOG.md index b25996c..169f2b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,10 @@ Das Format folgt [Keep a Changelog](https://keepachangelog.com/de/1.1.0/). ### Fixed +- Offene Vorgänge: „Im Bargeld-Tool nicht gefunden“ und „Bargeld-Tool-Prüfung fehlgeschlagen“ + führen jetzt in den Buchungsbericht mit dem passenden Filter „Bargeld-Tool“ – dort steht die + Spalte Kategorie (bzw. das Gegenkonto) mit; die eigene Liste unter + `/verwaltung/bargeld/fehler` entfällt (#131) - Anmeldeseite: Die Marke zeigt wie die Seitenleiste nach dem Anmelden das Coinstack-Symbol und den fetten, zweifarbigen Schriftzug „Finanzmanager“ statt einer grauen Statusmarke (#130) - Buchungsmaske: Eine falsche Splitsumme zeigte zwar die Fehlermeldung, riss aber über die diff --git a/Changes.md b/Changes.md index 2cc3e11..699af5b 100644 --- a/Changes.md +++ b/Changes.md @@ -1,5 +1,13 @@ # Änderungen +## Offene Vorgänge des Bargeld-Tools im Buchungsbericht (12.10.2026) + +- Anlass (#131): Der Liste „Im Bargeld-Tool nicht gefunden“, aufgerufen aus *Offene Vorgänge* im Cockpit, fehlte die Spalte Kategorie/Gegenkonto. Gewünscht war statt einer eigenen Liste ein Filter im Buchungsbericht. +- Den Filter „Bargeld-Tool“ hat der Buchungsbericht schon; die beiden offenen Vorgänge „Bargeld-Tool-Prüfung fehlgeschlagen“ und „im Bargeld-Tool nicht gefunden“ führen jetzt dorthin (`Cockpit::bargeldBericht()`): gesamter Zeitraum, Umbuchungen eingeschlossen, Filter „Abruf gescheitert“ bzw. „nicht gefunden“. Der Bericht zeigt Konto, Kategorie bzw. Gegenkonto in eckigen Klammern und Klasse; die Meldung der Gegenstelle steht im Tooltip der Spalte „Bar“. +- Ist einer dieser beiden Filter gesetzt, erklärt der Hinweis unter dem Bericht den Status und dass eine erneute Zuordnung der Kategorie die Prüfung erneut anstößt – der Text der bisherigen Liste. +- Entfernt: die Seite `/verwaltung/bargeld/fehler` (`VerwaltungController::bargeldFehler()`, `Views/verwaltung/bargeld_fehler.php`) und `Buchung::mitBargeldFehler()`. +- Tests: `tests/34_BargeldAbgleichTest.php`, `tests/15_CockpitTest.php`, `tests/e2e/specs/bargeld.spec.js`. + ## Anmeldeseite: Marke wie in der Seitenleiste (12.10.2026) - Anlass (#130): Icon und Schrift des Logos auf der Anmeldeseite wichen von der Marke im angemeldeten Zustand ab. diff --git a/docs/buchungen.md b/docs/buchungen.md index 30323fa..997fea3 100644 --- a/docs/buchungen.md +++ b/docs/buchungen.md @@ -311,11 +311,12 @@ Adresse hinterlegt, entfällt die Spalte ganz; sie zeigte sonst in jeder Zeile d grauen Kreis. Buchungen mit dem Status `fehler` zählen im Cockpit als offener Vorgang „Bargeld-Tool-Prüfung -fehlgeschlagen“ (siehe `docs/cockpit.md`) – ein Klick führt auf -`/verwaltung/bargeld/fehler`, die kontoübergreifende Liste dieser Buchungen -(`Buchung::mitBargeldFehler()`). Buchungen mit dem Status `fehlt` zählen als eigener offener -Vorgang „im Bargeld-Tool nicht gefunden“ und führen auf dieselbe Seite mit `?status=fehlt` -(`Buchung::mitBargeldFehler('fehlt')`). +fehlgeschlagen“ (siehe `docs/cockpit.md`) – ein Klick führt in den Buchungsbericht über den +gesamten Zeitraum, gefiltert auf „Bargeld-Tool: Abruf gescheitert“. Buchungen mit dem Status +`fehlt` zählen als eigener offener Vorgang „im Bargeld-Tool nicht gefunden“ und führen in +denselben Bericht mit dem Filter „nicht gefunden“. Der Bericht zeigt Konto, Kategorie bzw. +Gegenkonto und Klasse; die Meldung der Gegenstelle steht im Tooltip der Spalte „Bar“. Eine +eigene Liste dafür gibt es nicht mehr (#131). **Ein Fehlschlag ist ein Ergebnis, kein Abbruch.** Weder ein abgeschaltetes Bargeld-Tool noch ein Netzfehler darf verhindern, dass die Kategorie gespeichert wird; der Abruf bricht diff --git a/docs/cockpit.md b/docs/cockpit.md index a3e11fd..f50e068 100644 --- a/docs/cockpit.md +++ b/docs/cockpit.md @@ -181,11 +181,12 @@ Prüfungen, die gerade nichts melden und daher nicht in der Liste stehen: * **nicht abgeglichen** – Buchungen aktiver Konten bis heute ohne Abgleich-Kennzeichen. * **Bargeld-Tool-Prüfung fehlgeschlagen** – Buchungen mit `bargeld_status = 'fehler'`, also einem gescheiterten Abruf beim Bargeld-Tool (siehe `docs/buchungen.md`), nicht zu - verwechseln mit „im Bargeld-Tool nicht gefunden“. Führt auf - `/verwaltung/bargeld/fehler`, die Liste dieser Buchungen kontoübergreifend - (`Buchung::mitBargeldFehler()`), denn die Prüfung hängt an der Kategorie, nicht am Konto. -* **Im Bargeld-Tool nicht gefunden** – Buchungen mit `bargeld_status = 'fehlt'`. Führt auf - `/verwaltung/bargeld/fehler?status=fehlt` (`Buchung::mitBargeldFehler('fehlt')`). + verwechseln mit „im Bargeld-Tool nicht gefunden“. Führt in den Buchungsbericht über den + gesamten Zeitraum mit dem Filter „Bargeld-Tool: Abruf gescheitert“ – kontoübergreifend, + denn die Prüfung hängt an der Kategorie, nicht am Konto, und samt Spalte Kategorie (#131). +* **Im Bargeld-Tool nicht gefunden** – Buchungen mit `bargeld_status = 'fehlt'`. Führt in + denselben Buchungsbericht mit dem Filter „Bargeld-Tool: nicht gefunden“ + (`Cockpit::bargeldBericht()`). * **Monatsabschluss steht aus** – der Vorschlag aus `Monatsabschluss::naechsterOffener()`, aber nur, wenn dieser Monat wirklich noch offen ist und Buchungen trägt. diff --git a/public/index.php b/public/index.php index c5f09f9..e6da554 100644 --- a/public/index.php +++ b/public/index.php @@ -139,7 +139,6 @@ $router->post('/verwaltung/kontengruppen/{id}/loeschen', $router->get('/verwaltung/bargeld', fn() => (new VerwaltungController())->bargeld()); $router->post('/verwaltung/bargeld', fn() => (new VerwaltungController())->bargeldSpeichern()); $router->post('/verwaltung/bargeld/test', fn() => (new VerwaltungController())->bargeldTest()); -$router->get('/verwaltung/bargeld/fehler', fn() => (new VerwaltungController())->bargeldFehler()); // Das Bankleitzahlen-Verzeichnis: nachschlagen und die Institutsliste einlesen. $router->get('/verwaltung/bankinstitute', fn() => (new BankinstituteController())->index()); diff --git a/src/Controllers/VerwaltungController.php b/src/Controllers/VerwaltungController.php index 537181f..b75961a 100644 --- a/src/Controllers/VerwaltungController.php +++ b/src/Controllers/VerwaltungController.php @@ -6,7 +6,6 @@ namespace Finanzmanager\Controllers; use Finanzmanager\Models\Adresse; use Finanzmanager\Models\Bankinstitut; -use Finanzmanager\Models\Buchung; use Finanzmanager\Models\Einstellung; use Finanzmanager\Models\Erinnerung; use Finanzmanager\Models\Kategorie; @@ -278,26 +277,6 @@ class VerwaltungController extends BaseController View::redirect('/verwaltung/bargeld', $ergebnis['meldung'], $ergebnis['erfolg'] ? 'erfolg' : 'fehler'); } - /** - * Alle Buchungen, an denen die Bargeld-Tool-Prüfung zuletzt einen Fehler - * festgestellt hat – der Weg, den die Kachel „Offene Vorgänge“ des - * Cockpit anbietet, sobald es solche Buchungen gibt. - */ - public function bargeldFehler(): void - { - $this->verlangeAnmeldung(); - - $fehlt = ($_GET['status'] ?? '') === 'fehlt'; - - $this->render('verwaltung/bargeld_fehler.php', [ - 'titel' => $fehlt - ? 'Bargeld-Tool: nicht gefundene Buchungen' - : 'Bargeld-Tool: fehlgeschlagene Prüfungen', - 'fehlt' => $fehlt, - 'buchungen' => Buchung::mitBargeldFehler($fehlt ? 'fehlt' : 'fehler'), - ]); - } - /** Die gesamte Datenbank als Download. */ public function sicherungHerunterladen(): void { diff --git a/src/Models/Buchung.php b/src/Models/Buchung.php index 9f82ef1..2bf8831 100644 --- a/src/Models/Buchung.php +++ b/src/Models/Buchung.php @@ -510,28 +510,6 @@ class Buchung return $zeilen; } - /** - * Alle Buchungen, an denen die Bargeld-Tool-Prüfung zuletzt einen Fehler - * ('fehler') oder keinen Treffer ('fehlt') ergeben hat – kontoübergreifend, denn die Prüfung hängt an der - * Kategorie der Buchung, nicht an ihrem Konto. Der Status 'fehler' steht - * für einen gescheiterten Abruf (siehe Services\BargeldAbgleich::FEHLER), - * 'fehlt' für eine im Bargeld-Tool nicht gefundene Buchung. - * - * @return list> - */ - public static function mitBargeldFehler(string $status = 'fehler'): array - { - return Database::fetchAll( - 'SELECT b.id, b.datum, b.betrag, b.empfaenger, b.buchungstext, - b.bargeld_hinweis, b.bargeld_geprueft_am, b.konto_id, k.name AS konto_name - FROM buchungen b - JOIN konten k ON k.id = b.konto_id - WHERE b.benutzer_id = ? AND b.bargeld_status = ? - ORDER BY b.datum DESC, b.id DESC', - [Mandant::id(), $status === 'fehlt' ? 'fehlt' : 'fehler'] - ); - } - /** * Salden aller Konten in einem Rutsch: Anfangssaldo plus Buchungen, plus die * Gegenseiten fremder Umbuchungen. Ohne Stichtag zählt alles (erwarteter diff --git a/src/Services/Cockpit.php b/src/Services/Cockpit.php index a70fcfb..62c3984 100644 --- a/src/Services/Cockpit.php +++ b/src/Services/Cockpit.php @@ -301,7 +301,7 @@ class Cockpit 'schluessel' => 'bargeld_fehler', 'text' => 'Bargeld-Tool-Prüfung fehlgeschlagen', 'anzahl' => $bargeldFehler, - 'pfad' => '/verwaltung/bargeld/fehler', + 'pfad' => self::bargeldBericht(BargeldAbgleich::FEHLER), ]; } @@ -317,7 +317,7 @@ class Cockpit 'schluessel' => 'bargeld_fehlt', 'text' => 'im Bargeld-Tool nicht gefunden', 'anzahl' => $bargeldFehlt, - 'pfad' => '/verwaltung/bargeld/fehler?status=fehlt', + 'pfad' => self::bargeldBericht(BargeldAbgleich::FEHLT), ]; } @@ -370,4 +370,21 @@ class Cockpit return $vorgaenge; } + + /** + * Der Buchungsbericht über den gesamten Zeitraum, gefiltert auf einen + * Status des Bargeld-Tools – mit Kategorie bzw. Gegenkonto in eckigen + * Klammern (#131). Umbuchungen zählen mit, damit die Liste genau die + * Buchungen zeigt, die der offene Vorgang zählt. + */ + private static function bargeldBericht(string $status): string + { + return '/auswertungen/bericht?' . http_build_query([ + 'typ' => 'buchungsbericht', + 'zeitraum' => 'alles', + 'umbuchungen' => '1', + 'bargeld' => $status, + 'angepasst' => '1', + ]); + } } diff --git a/src/Views/auswertungen/teil-buchungen.php b/src/Views/auswertungen/teil-buchungen.php index 014c32f..0fbf683 100644 --- a/src/Views/auswertungen/teil-buchungen.php +++ b/src/Views/auswertungen/teil-buchungen.php @@ -89,4 +89,14 @@ use Finanzmanager\View; dem Summenbericht überein. Der Empfänger führt in die Buchungsmaske. + + + Zu diesen Buchungen wurde im Bargeld-Tool keine Ausgabe mit demselben Betrag gefunden. + + Bei diesen Buchungen ist der letzte Abruf beim Bargeld-Tool gescheitert – ein + Abrufproblem, keine Aussage darüber, ob die Buchung dort steht. + + Die Meldung steht am Symbol in der Spalte „Bar“; eine erneute Zuordnung der Kategorie + in der Buchungsmaske oder im Kontoblatt stößt die Prüfung erneut an. +

diff --git a/src/Views/verwaltung/bargeld_fehler.php b/src/Views/verwaltung/bargeld_fehler.php deleted file mode 100644 index 7161533..0000000 --- a/src/Views/verwaltung/bargeld_fehler.php +++ /dev/null @@ -1,69 +0,0 @@ -> $buchungen - */ - -include __DIR__ . '/../layout/kopf.php'; -?> - - - -

- - Zu diesen Buchungen wurde im Bargeld-Tool keine Ausgabe mit demselben Betrag - gefunden. Eine erneute Zuordnung der Kategorie in der Buchungsmaske oder im - Kontoblatt stößt die Prüfung erneut an. - - Bei diesen Buchungen ist der letzte Abruf beim Bargeld-Tool gescheitert – ein - Abrufproblem, keine Aussage darüber, ob die Buchung dort steht. Eine erneute - Zuordnung der Kategorie in der Buchungsmaske oder im Kontoblatt stößt die - Prüfung erneut an. - -

- - -

- - - - - - - - - - - - - - - - - - - - - - -
DatumKontoEmpfänger / BuchungstextBetragMeldung
- - - - - - - -
- - - diff --git a/tests/15_CockpitTest.php b/tests/15_CockpitTest.php index 3c51727..06d76f2 100644 --- a/tests/15_CockpitTest.php +++ b/tests/15_CockpitTest.php @@ -301,19 +301,9 @@ class CockpitTest extends TestCase $this->assertNotEmpty($eintrag, 'Der offene Vorgang erscheint jetzt'); $this->assertEquals(1, $eintrag['anzahl'], 'Genau die eine betroffene Buchung wird gezählt'); $this->assertEquals( - '/verwaltung/bargeld/fehler', + '/auswertungen/bericht?typ=buchungsbericht&zeitraum=alles&umbuchungen=1&bargeld=fehler&angepasst=1', $eintrag['pfad'], - 'Der Weg führt zur Liste der fehlgeschlagenen Prüfungen' - ); - - $liste = Buchung::mitBargeldFehler(); - $this->assertEquals(1, count($liste), 'Die Liste enthält genau diese Buchung'); - $this->assertEquals($id, $liste[0]['id'], 'Es ist dieselbe Buchung'); - $this->assertEquals('Cockpitgiro', $liste[0]['konto_name'], 'Der Kontoname kommt mit'); - $this->assertEquals( - 'Kasse nicht erreichbar.', - $liste[0]['bargeld_hinweis'], - 'Die Meldung der Gegenstelle steht dabei' + 'Der Weg führt in den Buchungsbericht, gefiltert auf fehlgeschlagene Prüfungen (#131)' ); // Ein Status ungleich 'fehler' (z. B. 'gefunden') zählt nicht mit. @@ -321,13 +311,16 @@ class CockpitTest extends TestCase $ohne = $schluessel(Cockpit::offeneVorgaenge(self::HEUTE)); $this->assert(!isset($ohne['bargeld_fehler']), 'Ein gefundener Treffer ist kein offener Vorgang mehr'); - // Nicht gefunden: eigener Vorgang mit eigener Liste. + // Nicht gefunden: eigener Vorgang mit eigenem Filter im Buchungsbericht. Database::execute("UPDATE buchungen SET bargeld_status = 'fehlt' WHERE id = ?", [$id]); $fehlt = $schluessel(Cockpit::offeneVorgaenge(self::HEUTE)); $this->assertEquals(1, $fehlt['bargeld_fehlt'] ?? 0, 'Eine im Bargeld-Tool nicht gefundene Buchung ist ein offener Vorgang'); $this->assert(!isset($fehlt['bargeld_fehler']), 'Nicht gefunden zählt nicht als gescheiterter Abruf'); - $this->assertEquals(1, count(Buchung::mitBargeldFehler('fehlt')), 'Die Liste „nicht gefunden“ enthält die Buchung'); - $this->assertEquals(0, count(Buchung::mitBargeldFehler()), 'Die Fehlerliste enthält sie nicht'); + $pfade = array_column(Cockpit::offeneVorgaenge(self::HEUTE), 'pfad', 'schluessel'); + $this->assert( + str_contains($pfade['bargeld_fehlt'] ?? '', 'typ=buchungsbericht') && str_contains($pfade['bargeld_fehlt'] ?? '', 'bargeld=fehlt'), + 'Der Weg führt in den Buchungsbericht, gefiltert auf „nicht gefunden“ (#131)' + ); Database::execute("UPDATE buchungen SET bargeld_status = 'fehler' WHERE id = ?", [$id]); } diff --git a/tests/34_BargeldAbgleichTest.php b/tests/34_BargeldAbgleichTest.php index e67a589..e452b72 100644 --- a/tests/34_BargeldAbgleichTest.php +++ b/tests/34_BargeldAbgleichTest.php @@ -7,8 +7,10 @@ use Finanzmanager\Models\Buchung; use Finanzmanager\Models\Einstellung; use Finanzmanager\Models\Kategorie; use Finanzmanager\Models\Konto; +use Finanzmanager\Services\Auswertung; use Finanzmanager\Services\BargeldAbgleich; use Finanzmanager\Services\BargeldTool; +use Finanzmanager\Services\Cockpit; use Finanzmanager\Services\Crypto; /** @@ -52,7 +54,7 @@ class BargeldAbgleichTest extends TestCase $this->kontoblattFuehrtDenStatusMit(); $this->kontoblattZeigtDieViervierSymbole(); $this->konfigurationsseiteZeigtDieAuswahl(); - $this->fehlerlisteZeigtDieBuchungen(); + $this->buchungsberichtFiltertNachBargeldStatus(); } protected function tearDown(): void @@ -512,42 +514,72 @@ class BargeldAbgleichTest extends TestCase } /** - * Die Liste unter „Verwaltung → Bargeld-Tool → fehlgeschlagene Prüfungen“, - * das Ziel der Kachel „Offene Vorgänge“ im Cockpit. Buchung::mitBargeldFehler() - * ist kontoübergreifend – geprüft am Datenmodell, nicht am Kontoblatt. + * Statt einer eigenen Liste führt der offene Vorgang des Cockpit in den + * Buchungsbericht, gefiltert auf den Status des Bargeld-Tools (#131). + * Dort steht – anders als in der früheren Liste – die Kategorie dabei. */ - private function fehlerlisteZeigtDieBuchungen(): void + private function buchungsberichtFiltertNachBargeldStatus(): void { - $id = $this->buchung(-27.30, '2026-06-01'); - Buchung::zuordnen($id, $this->bargeldKategorie, null); + Einstellung::set('bargeld_url', 'https://bargeld.example.org', 'bargeld'); + + $fehler = $this->buchung(-27.30, '2026-06-01'); + Buchung::zuordnen($fehler, $this->bargeldKategorie, null); + $fehlt = $this->buchung(-8.40, '2026-06-02'); + Buchung::zuordnen($fehlt, $this->bargeldKategorie, null); Database::execute( "UPDATE buchungen SET bargeld_status = 'fehler', bargeld_hinweis = 'Kasse steht still.' WHERE id = ?", - [$id] + [$fehler] + ); + Database::execute( + "UPDATE buchungen SET bargeld_status = 'fehlt', bargeld_hinweis = 'Kein Treffer.' WHERE id = ?", + [$fehlt] ); - $liste = Buchung::mitBargeldFehler(); - $treffer = null; - foreach ($liste as $zeile) { - if ((int)$zeile['id'] === $id) { - $treffer = $zeile; - } + $pfade = array_column(Cockpit::offeneVorgaenge('2026-06-30'), 'pfad', 'schluessel'); + foreach (['bargeld_fehler' => 'fehler', 'bargeld_fehlt' => 'fehlt'] as $schluessel => $status) { + $this->assertNotEmpty($pfade[$schluessel] ?? '', "Der offene Vorgang $schluessel erscheint"); + parse_str((string)parse_url($pfade[$schluessel] ?? '', PHP_URL_QUERY), $query); + $this->assertEquals( + '/auswertungen/bericht', + parse_url($pfade[$schluessel] ?? '', PHP_URL_PATH), + "Der Vorgang $schluessel führt in die Auswertung" + ); + $this->assertEquals('buchungsbericht', $query['typ'] ?? '', "Der Vorgang $schluessel öffnet den Buchungsbericht"); + $this->assertEquals('alles', $query['zeitraum'] ?? '', 'Über den gesamten Zeitraum'); + $this->assertEquals($status, $query['bargeld'] ?? '', "Gefiltert auf den Status $status"); + + $bericht = Auswertung::bericht(Auswertung::normalisiere($query), '2026-06-30'); + $buchungen = array_merge(...array_column($bericht['gruppen'], 'buchungen')); + $ids = array_column($buchungen, 'buchung_id'); + $this->assert( + in_array($status === 'fehler' ? $fehler : $fehlt, $ids, true), + "Der Bericht enthält die Buchung mit Status $status" + ); + $this->assert( + !in_array($status === 'fehler' ? $fehlt : $fehler, $ids, true), + 'Die Buchung mit dem anderen Status fehlt' + ); + $this->assertEquals( + ['Bargeld Haushalt'], + array_values(array_unique(array_column($buchungen, 'kategorie'))), + 'Die Kategorie steht an jeder Buchung' + ); + + $html = $this->rendere('auswertungen/teil-buchungen.php', ['bericht' => $bericht]); + $this->assert(str_contains($html, 'Kategorie'), 'Die Spalte Kategorie steht im Bericht'); + $this->assert(str_contains($html, 'Bargeld Haushalt'), 'Die Kategorie der Buchung steht im Bericht'); + $this->assert(str_contains($html, 'Bargeld Giro'), 'Das Konto steht im Bericht'); + $this->assert( + str_contains($html, $status === 'fehler' ? 'Kasse steht still.' : 'Kein Treffer.'), + 'Die Meldung der Gegenstelle steht am Symbol' + ); + $this->assert(str_contains($html, 'stößt die Prüfung erneut an'), 'Der Hinweis zur erneuten Prüfung steht dabei'); } - $this->assertNotEmpty($treffer, 'Die Buchung mit Status „fehler“ steht in der Liste'); - $this->assertEquals('Bargeld Giro', $treffer['konto_name'], 'Der Kontoname kommt mit – die Liste ist kontoübergreifend'); - $this->assertEquals('Kasse steht still.', $treffer['bargeld_hinweis'], 'Die Meldung steht dabei'); - $html = $this->rendere('verwaltung/bargeld_fehler.php', ['buchungen' => $liste]); - - $this->assert(str_contains($html, 'Bargeld Giro'), 'Der Kontoname steht in der Liste'); - $this->assert(str_contains($html, 'Bargeldabhebung'), 'Der Empfänger steht in der Liste'); - $this->assert(str_contains($html, 'Kasse steht still.'), 'Die Meldung der Gegenstelle steht dabei'); $this->assert( - str_contains($html, '/konten/' . $this->konto), - 'Der Kontoname führt ins Kontoblatt' + !is_file(dirname(__DIR__) . '/src/Views/verwaltung/bargeld_fehler.php'), + 'Die frühere eigene Liste ist entfernt' ); - - $leer = $this->rendere('verwaltung/bargeld_fehler.php', ['buchungen' => []]); - $this->assert(str_contains($leer, 'Keine offenen Fehler.'), 'Eine leere Liste sagt das ausdrücklich'); } /** @param list> $zeilen */ diff --git a/tests/e2e/specs/bargeld.spec.js b/tests/e2e/specs/bargeld.spec.js index 1fe6f26..a2d118b 100644 --- a/tests/e2e/specs/bargeld.spec.js +++ b/tests/e2e/specs/bargeld.spec.js @@ -183,5 +183,17 @@ test.describe('Bargeld-Tool', () => { const danach = page.locator('tr', { hasText: empfaenger }) await expect(danach).toContainText(KATEGORIE) await expect(danach.locator('td.bargeldspalte .bargeld-fehler')).toBeVisible() + + // Der offene Vorgang im Cockpit führt in den Buchungsbericht, gefiltert + // auf fehlgeschlagene Prüfungen – samt Kategorie (#131). + await page.goto('/') + await page.locator('.vorgangsliste a', { hasText: 'Bargeld-Tool-Prüfung fehlgeschlagen' }).click() + await expect(page).toHaveURL(/\/auswertungen\/bericht\?.*typ=buchungsbericht/) + await expect(page.locator('select[name="bargeld"]')).toHaveValue('fehler') + await expect(page.locator('table.buchungsgruppen thead')).toContainText('Kategorie') + const imBericht = page.locator('table.buchungsgruppen tr', { hasText: empfaenger }) + await expect(imBericht).toContainText(KATEGORIE) + await expect(imBericht).toContainText(GIRO) + await expect(imBericht.locator('td.bargeldspalte .bargeld-fehler')).toBeVisible() }) })