['steuer' => 150.00]]; $xml = $service->generate(2026, 1, $kzZahllast); $this->assert(str_contains($xml, ''), 'Kz83 bei Zahllast vorhanden'); $this->assert(str_contains($xml, '150.00'), 'Kz83 ohne Vorzeichen bei Zahllast'); // Fall 2: Erstattung (negativ) → Kz83 muss vorhanden und negativ sein $kzErstattung = ['83' => ['steuer' => -50.00]]; $xml = $service->generate(2026, 1, $kzErstattung); $this->assert(str_contains($xml, ''), 'Kz83 bei Erstattung vorhanden'); $this->assert(str_contains($xml, '-50.00'), 'Kz83 mit negativem Vorzeichen 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 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'); } }