diff --git a/tests/18_StornoBuchungTest.php b/tests/18_StornoBuchungTest.php index ec56e4a..ec9294e 100644 --- a/tests/18_StornoBuchungTest.php +++ b/tests/18_StornoBuchungTest.php @@ -26,6 +26,17 @@ class StornoBuchungTest extends TestCase return; } + // ── EÜR: Konto-Stand VOR den Test-Buchungen ermitteln ───────── + $euerCalcPre = new \Steuerkram\Services\EuerCalculator(); + $euerPre = $euerCalcPre->calculate($year); + $kontoNettoPre = 0.0; + foreach ($euerPre['ausgaben'] as $row) { + if ((int)$row['id'] === (int)$ausgabeId) { + $kontoNettoPre = (float)$row['netto']; + break; + } + } + // ── Beleg anlegen ────────────────────────────────────────────── $belegId = \Steuerkram\Models\Beleg::create([ 'beleg_nr' => 'STORNO-TEST-' . uniqid(), @@ -63,23 +74,23 @@ class StornoBuchungTest extends TestCase $this->assertEquals(-19.00, round((float)$reversal['betrag_ust'], 2), 'Stornobuchung: betrag_ust = -19'); $this->assertEquals(-119.00, round((float)$reversal['betrag_brutto'], 2), 'Stornobuchung: betrag_brutto = -119'); - // ── EÜR: storniertes Konto hat Netto-Summe = 0 ─────────────── - $euerCalc = new \Steuerkram\Services\EuerCalculator(); - $euer = $euerCalc->calculate($year); - - $kontoNetto = null; + // ── EÜR: Storno + Original heben sich auf (Konto-Saldo unverändert) ─ + // Vergleich mit dem Stand vor den Test-Buchungen, da auf dem Produktivsystem + // bereits echte Buchungen auf dem Konto existieren können. + $euerCalc = new \Steuerkram\Services\EuerCalculator(); + $euer = $euerCalc->calculate($year); + $kontoNetto = 0.0; foreach ($euer['ausgaben'] as $row) { if ((int)$row['id'] === (int)$ausgabeId) { $kontoNetto = (float)$row['netto']; break; } } - // Wenn das Konto nicht mehr auftaucht (alle Buchungen = 0), ist das ebenfalls korrekt. - if ($kontoNetto !== null) { - $this->assertEquals(0.0, round($kontoNetto, 2), 'EÜR: Storno + Original = 0 auf Ausgabe-Konto'); - } else { - $this->assert(true, 'EÜR: Konto taucht bei Summe=0 nicht auf (HAVING buchungsanzahl > 0 greift)'); - } + $this->assertEquals( + round($kontoNettoPre, 2), + round($kontoNetto, 2), + 'EÜR: Storno + Original = 0 auf Ausgabe-Konto' + ); // ── UStVA: Vorsteuer-KZ hebt sich auf ───────────────────────── // Kz 61 enthält Vorsteuer aus dem Ausgabe-Konto (ustva_kz='61').