Sidequests
Eine Seite, die XRechnungen lesbar macht, prüft und die Fehlercodes in einem Satz erklärt. Alles davon passiert im Browser. Keine Rechnung verlässt den Rechner.
Eine XRechnung ist eine XML-Datei. Wer sie im Posteingang findet, sieht Hunderte Zeilen Text und keine Rechnung. Ob die Datei korrekt ist, erfährt man oft erst, wenn ein Portal sie ablehnt, mit einer Meldung wie „BR-DE-15“. Mit xrechnung-tools.de baue ich eine Seite, die solche Dateien lesbar macht, prüft und die Fehlercodes in einem Satz erklärt. Alles davon passiert im Browser. Keine Rechnung verlässt den Rechner.
Der Viewer setzt die Rechnung so, wie sie auf Papier aussehen würde: Absender, Empfänger, Positionen, Summen. Daneben liegt eine Feldtabelle mit den offiziellen Feldnummern und die rohe XML-Ansicht mit Zeilennummern. Die Rechnung lässt sich drucken oder als PDF speichern.
Der Validator prüft die Datei gegen die Regeln der europäischen Norm und der deutschen XRechnung. Das Ergebnis hat drei Stufen: gültig, gültig mit Warnungen, ungültig. Zu jedem Befund stehen der Regelcode, der Originaltext der Regel, eine deutsche Übersetzung und das betroffene Feld, so dass sich die Meldung einordnen lässt, ohne die Norm aufzuschlagen. Für eine Mail an den Lieferanten lässt sich das Ergebnis als Text kopieren.
Der Generator erzeugt aus einem Formular eine XRechnung in beiden zulässigen Syntaxen. Gedacht ist er für Testdaten, nicht als Rechnungsprogramm: Wer eine Schnittstelle baut oder ein Portal testet, bekommt in wenigen Minuten eine gültige Beispielrechnung.
Dazu kommt ein Wissensbereich mit Artikeln, FAQ und Glossar. Jede fachliche Aussage dort trägt eine Primärquelle und ein Datum, weil sich die Regeln halbjährlich ändern.
Die Seite ist statisch. Es gibt keinen Server, der eine Rechnung annehmen könnte. Dass nichts hochgeladen wird, folgt damit aus der Architektur und lässt sich im Netzwerk-Tab jedes Browsers nachprüfen. Ergebnisse werden deshalb als Text geteilt und nie als Link, denn ein Link müsste die Rechnung enthalten. Schriften und Skripte liegen auf dem eigenen Server, und Cookies setzt die Seite keine.
Gebaut ist das Ganze mit einigen tausend Zeilen JavaScript ohne Framework, statisch erzeugt mit Freezed. Die Regeltexte sind wörtlich aus den amtlichen Prüfregeln von KoSIT und der EU übernommen. Was im Browser nicht sinnvoll geht, wird als Grenze benannt und auf das offizielle Werkzeug verwiesen.
Die Werkzeuge ausprobieren: