Fix #17: Kz39 bei Erstattungsbetrag aus UStVA-XML weglassen
This commit is contained in:
parent
06c9f184f9
commit
f8899d6bff
2 changed files with 40 additions and 2 deletions
|
|
@ -135,9 +135,11 @@ class ElsterXmlService
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Zahllast / Erstattung → Kz39
|
// Zahllast → Kz39 (nur bei positivem Wert; bei Erstattung weglassen, da kein Vorzeichen erlaubt)
|
||||||
$zahllast = (float)($kz['69']['steuer'] ?? 0.0);
|
$zahllast = (float)($kz['69']['steuer'] ?? 0.0);
|
||||||
$ustva->appendChild($dom->createElement('Kz39', $kzSteuer($zahllast)));
|
if ($zahllast > 0.0) {
|
||||||
|
$ustva->appendChild($dom->createElement('Kz39', $kzSteuer($zahllast)));
|
||||||
|
}
|
||||||
|
|
||||||
return $dom->saveXML();
|
return $dom->saveXML();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
36
tests/13_ElsterXmlKz39Test.php
Normal file
36
tests/13_ElsterXmlKz39Test.php
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
<?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');
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Reference in a new issue