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);
|
||||
if ($zahllast > 0.0) {
|
||||
$ustva->appendChild($dom->createElement('Kz39', $kzSteuer($zahllast)));
|
||||
}
|
||||
|
||||
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