Fix #49: Test 18 prüft EÜR-Delta statt absoluten Saldo (produktionssicher)

This commit is contained in:
fds2610-bot 2026-04-25 22:02:33 +02:00
parent 75279c7b36
commit 10c2817c2e

View file

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