36 lines
1.4 KiB
PHP
36 lines
1.4 KiB
PHP
<?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');
|
||
}
|
||
}
|