From 3616e09fc0be9851810b31ecdf4237476f51fa67 Mon Sep 17 00:00:00 2001 From: fds2610-bot Date: Sun, 2 Aug 2026 20:33:13 +0200 Subject: [PATCH] =?UTF-8?q?Fix=20#testsuite:=20Test=2078=20misst=20die=20N?= =?UTF-8?q?ummernkreis-Freigabe=20unabh=C3=A4ngig=20vom=20Monatswechsel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/78_NummernkreisFreigabeTest.php | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tests/78_NummernkreisFreigabeTest.php b/tests/78_NummernkreisFreigabeTest.php index b1574ad..f366b4e 100644 --- a/tests/78_NummernkreisFreigabeTest.php +++ b/tests/78_NummernkreisFreigabeTest.php @@ -19,6 +19,7 @@ class NummernkreisFreigabeTest extends TestCase public function run(): void { + $this->nummernkreisAufAktuellenMonat(); $this->rechnungsnummerWirdFreigegeben(); $this->aeltereRechnungsnummerBleibtVerbraucht(); $this->belegnummerWirdFreigegeben(); @@ -114,6 +115,25 @@ class NummernkreisFreigabeTest extends TestCase // ── Hilfsfunktionen ───────────────────────────────────────────────────── + /** + * Setzt den gespeicherten Monat des Rechnungsnummernkreises auf den + * laufenden Monat. + * + * Ohne das misst der Test am Monatswechsel vorbei: Steht in + * company_settings noch ein früherer Monat, beginnt generateRechnungsNr() + * den Zähler planmäßig wieder bei 1, und die Deltas dieses Tests + * (vorher + 1, danach wieder vorher) gehen nicht auf. Der Monatsreset ist + * gewolltes Verhalten und hat mit der hier geprüften Freigabe nichts zu + * tun. Die Änderung fällt mit dem Transaktions-Rollback wieder weg. + */ + private function nummernkreisAufAktuellenMonat(): void + { + \Steuerkram\Database::execute( + 'UPDATE company_settings SET invoice_nr_year=?, invoice_nr_month=? WHERE id=1', + [(int)date('Y'), (int)date('n')] + ); + } + private function invoiceNrNext(): int { $row = \Steuerkram\Database::fetchOne('SELECT invoice_nr_next FROM company_settings WHERE id=1');