Steuerkram/tests/13_ElsterXmlKz39Test.php

40 lines
1.7 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
declare(strict_types=1);
use Steuerkram\Services\ElsterXmlService;
class ElsterXmlKz39Test extends TestCase
{
protected string $testName = 'Test 13: UStVA XML – Kz83 Vorauszahlung/Überschuss';
public function run(): void
{
$service = new ElsterXmlService();
// Fall 1: Zahllast positiv → Kz83 muss vorhanden und positiv sein
$kzZahllast = ['83' => ['steuer' => 150.00]];
$xml = $service->generate(2026, 1, $kzZahllast);
$this->assert(str_contains($xml, '<Kz83>'), 'Kz83 bei Zahllast vorhanden');
$this->assert(str_contains($xml, '<Kz83>150.00</Kz83>'), 'Kz83 enthält korrekten Betrag bei Zahllast');
// Fall 2: Erstattung (negativ) → Kz83 muss vorhanden sein (Überschuss)
$kzErstattung = ['83' => ['steuer' => -50.00]];
$xml = $service->generate(2026, 1, $kzErstattung);
$this->assert(str_contains($xml, '<Kz83>'), 'Kz83 bei Erstattung vorhanden');
$this->assert(str_contains($xml, '<Kz83>-50.00</Kz83>'), 'Kz83 enthält negativen Betrag bei Erstattung');
// Fall 3: Zahllast = 0 → Kz83 weglassen
$kzNull = ['83' => ['steuer' => 0.0]];
$xml = $service->generate(2026, 1, $kzNull);
$this->assert(!str_contains($xml, '<Kz83>'), 'Kz83 bei Nullbetrag nicht vorhanden');
// Fall 4: Kz39 (Sondervorauszahlung) darf NICHT mehr als Zahllast exportiert werden
$this->assert(!str_contains($xml, '<Kz39>'), 'Kz39 (Sondervorauszahlung) wird nicht exportiert');
// Fall 5: XML ist valides XML
$doc = new \DOMDocument();
$loaded = @$doc->loadXML($xml);
$this->assert($loaded !== false, 'Generiertes XML ist wohlgeformt');
}
}