From 8bccd17d387a8e01678cbb244edd24c13e04c615 Mon Sep 17 00:00:00 2001 From: fds2610-bot Date: Thu, 14 May 2026 19:01:59 +0200 Subject: [PATCH] =?UTF-8?q?Fix:=20Test=2027=20pr=C3=BCft=20Delta=20statt?= =?UTF-8?q?=20Absolutwert=20f=C3=BCr=20Kz=2081/83=20(prod-fest)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/27_StornorechnungTest.php | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/tests/27_StornorechnungTest.php b/tests/27_StornorechnungTest.php index e33de15..bdd8e18 100644 --- a/tests/27_StornorechnungTest.php +++ b/tests/27_StornorechnungTest.php @@ -86,6 +86,22 @@ class StornorechnungTest extends TestCase 'UPDATE invoices SET beleg_id=? WHERE id=?', [$belegId, $originalId] ); + // ── 3. Baseline VOR der Originalbuchung erfassen ────────────── + $ustvaCalc = new \Steuerkram\Services\UstvaCalculator(); + $kzBaseline = $ustvaCalc->calculate($year, $month); + $kz81NettoBaseline = (float)($kzBaseline['81']['betrag'] ?? 0); + $kz83UstBaseline = (float)($kzBaseline['83']['steuer'] ?? 0); + + $euerCalc = new \Steuerkram\Services\EuerCalculator(); + $euerBaseline = $euerCalc->calculate($year); + $kontoNettoBaseline = 0.0; + foreach ($euerBaseline['einnahmen'] as $row) { + if ((int)$row['id'] === (int)$kategorieId) { + $kontoNettoBaseline = (float)$row['netto']; + break; + } + } + $bookingIds = \Steuerkram\Models\Invoice::createBookingsFromLines( $originalId, $kategorieId, $zahlungsId, $datum ); @@ -95,13 +111,11 @@ class StornorechnungTest extends TestCase $this->assertEquals(250.00, round((float)$origBooking['betrag_netto'], 2), 'Original-Buchung Netto = 250'); $this->assertEquals(47.50, round((float)$origBooking['betrag_ust'], 2), 'Original-Buchung USt = 47,50'); - // ── 3. UStVA + EÜR Stand VOR Stornorechnung erfassen ────────── - $ustvaCalc = new \Steuerkram\Services\UstvaCalculator(); + // ── 4a. UStVA + EÜR Stand VOR Stornorechnung erfassen ───────── $kzPre = $ustvaCalc->calculate($year, $month); $kz81NettoPre = (float)($kzPre['81']['betrag'] ?? 0); $kz83UstPre = (float)($kzPre['83']['steuer'] ?? 0); - $euerCalc = new \Steuerkram\Services\EuerCalculator(); $euerPre = $euerCalc->calculate($year); $kontoNettoPre = 0.0; foreach ($euerPre['einnahmen'] as $row) { @@ -111,10 +125,10 @@ class StornorechnungTest extends TestCase } } - // Sanity-Check: Originalbuchung ist in den Pre-Werten enthalten - $this->assert($kz81NettoPre >= 250.0, 'UStVA Kz 81 Pre enthält Original-Netto (≥ 250)'); - $this->assert($kz83UstPre >= 47.50, 'UStVA Kz 83 Pre enthält Original-USt (≥ 47,50)'); - $this->assert($kontoNettoPre >= 250.0, 'EÜR Pre: Erlös-Konto enthält Originalbuchung (≥ 250)'); + // Sanity-Check: Originalbuchung hat die Kennzahlen um erwarteten Betrag erhöht + $this->assertEquals(250.0, round($kz81NettoPre - $kz81NettoBaseline, 2), 'UStVA Kz 81: Originalbuchung +250 Netto'); + $this->assertEquals(47.50, round($kz83UstPre - $kz83UstBaseline, 2), 'UStVA Kz 83: Originalbuchung +47,50 USt'); + $this->assertEquals(250.0, round($kontoNettoPre - $kontoNettoBaseline, 2), 'EÜR: Erlös-Konto +250 durch Originalbuchung'); // ── 4. Stornorechnung erstellen ─────────────────────────────── $stornoId = \Steuerkram\Models\Invoice::createCancellation($originalId);