Steuerkram/tests/13_ElsterXmlKz39Test.php

36 lines
1.4 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 – Kz39 Vorzeichen-Validierung';
public function run(): void
{
$service = new ElsterXmlService();
// Fall 1: Zahllast positiv → Kz39 muss vorhanden und positiv sein
$kzZahllast = ['69' => ['steuer' => 150.00]];
$xml = $service->generate(2026, 1, $kzZahllast);
$this->assert(str_contains($xml, '<Kz39>'), 'Kz39 bei Zahllast vorhanden');
$this->assert(str_contains($xml, '<Kz39>150.00</Kz39>'), 'Kz39 ohne Vorzeichen bei Zahllast');
// Fall 2: Erstattung (negativ) → Kz39 darf nicht vorkommen
$kzErstattung = ['69' => ['steuer' => -50.00]];
$xml = $service->generate(2026, 1, $kzErstattung);
$this->assert(!str_contains($xml, '<Kz39>'), 'Kz39 bei Erstattung nicht vorhanden');
// Fall 3: Zahllast = 0 → Kz39 weglassen
$kzNull = ['69' => ['steuer' => 0.0]];
$xml = $service->generate(2026, 1, $kzNull);
$this->assert(!str_contains($xml, '<Kz39>'), 'Kz39 bei Nullbetrag nicht vorhanden');
// Fall 4: XML ist valides XML
$doc = new \DOMDocument();
$loaded = @$doc->loadXML($xml);
$this->assert($loaded !== false, 'Generiertes XML ist wohlgeformt');
}
}