View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0001400 | Fakturama | ZUGFeRD | public | 2026-10-05 10:14 | 2026-10-07 23:04 |
| Reporter | claude | Assigned To | rheydenr | ||
| Priority | normal | Severity | feature | Reproducibility | have not tried |
| Status | assigned | Resolution | open | ||
| Target Version | 2.2.2 | ||||
| Summary | 0001400: XRechnung-Export: Pflichtfelder vor dem Export prüfen und fehlende Angaben melden | ||||
| Description | Der XRechnung-Export erzeugt auch dann eine Datei, wenn Pflichtangaben der Norm fehlen. Der Anwender bemerkt das erst, wenn der Empfänger oder ein Validator die Rechnung zurückweist. Konkreter Auslöser: Ist in den Einstellungen unter Firmendaten das Feld „Inhaber" leer, fehlt BT-41 (Seller contact point). Der KoSIT-Validator meldet dann:
Bemerkenswert dabei: Telefon (BT-42) und E-Mail (BT-43) werden aus den Firmendaten gefüllt, der Kontaktblock DefinedTradeContact wird also erzeugt – nur eben ohne PersonName. Herausgekommen ist ein halber Kontakt statt gar keinem. Für diesen einen Fall ist in Vorschlag: Vor dem Export prüfen, ob alle für das gewählte Profil erforderlichen Felder gefüllt sind. Fehlt etwas, einen Dialog zeigen, der die fehlenden Felder benennt und auf die betreffende Einstellungsseite verweist, statt eine formal ungültige Datei zu schreiben. Weitere bekannte Lücken, die bei anderen Rechnungen zuschlagen und in dieselbe Prüfung gehören:
| ||||
| Additional Information | Geprüft mit KoSIT Validator 1.5.0, erkanntes Profil: EN16931 XRechnung (CII), urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0 | ||||
| Tags | No tags attached. | ||||
|
|
Nachtrag aus einem weiteren Validierungslauf: Sind am Versandeintrag 0 % hinterlegt, die Steuerkategorie aber auf "S" (Standard rated) belassen, meldet der Validator BR-S-07 – bei Kategorie S muss der Satz größer als null sein. Der Converter reicht Satz und Kategorie unverändert durch und prüft nicht, ob beide zueinander passen. Das gehört mit in die hier vorgeschlagene Prüfung: Zu jeder Kategorie aus UNTDID 5305 muss der Satz plausibel sein (S größer null, Z gleich null). Zwei damit zusammenhängende Punkte sind bereits im Code behoben:
Noch offen und ebenfalls ein Fall für die Vorab-Prüfung: Bei Kategorie E (steuerbefreit) verlangt BR-E-10 einen Befreiungsgrund in der Umsatzsteuer-Aufschlüsselung, also BT-120 (Text) oder BT-121 (Code). Der Converter erzeugt beides nirgends; der Text aus der Steuerbefreiungs-Referenz landet nur im Grund des Zuschlags (BT-104), was ein anderes Feld ist. Kategorie E dürfte damit weiterhin nicht validieren, Z dagegen schon. |
|
|
Die Prüfung sollte nicht erst beim Export greifen, sondern bereits im Steuersatz-Editor. Beobachteter Fall: Ein von Hand angelegter Steuersatz mit dem Namen „15 Prozent", Code S und Wert 0 – die Prozentzahl stand nur im Namen, das Wertfeld war nie gefüllt worden. Die Anwendung nimmt das kommentarlos an. Folgen:
Vorschlag: Beim Speichern eines Steuersatzes prüfen, ob Code und Satz zueinander passen – Code S verlangt einen Satz größer null, Code Z verlangt null, Code E verlangt null und zusätzlich einen Befreiungsgrund. Das ist dieselbe Regel, die auch die Vorab-Prüfung beim Export braucht; sie ließe sich an einer Stelle umsetzen und von beiden Seiten aufrufen. Der Steuersatz-Editor fällt damit in denselben Aufgabenbereich wie dieses Ticket: Die Daten sind formal unvollständig, und der Anwender erfährt es erst, wenn ein Dritter die Rechnung ablehnt. |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2026-10-05 10:14 | claude | New Issue | |
| 2026-10-05 10:29 | claude | Note Added: 0001671 | |
| 2026-10-05 14:51 | claude | Note Added: 0001672 | |
| 2026-10-07 11:21 | rheydenr | Target Version | => 2.2.2 |
| 2026-10-07 11:21 | rheydenr | Status | new => assigned |
| 2026-10-07 11:21 | rheydenr | Assigned To | => rheydenr |
| 2026-10-07 22:49 | rheydenr | Target Version | 2.2.2 => 2.2.4 |
| 2026-10-07 23:00 | rheydenr | Target Version | 2.2.4 => 2.2.5 |
| 2026-10-07 23:04 | rheydenr | Target Version | 2.2.5 => 2.2.2 |