Issue list

ZUGFeRD-Reviewtätigkeiten

Jochen war im Review-Team für die ZUGFeRD-Versionen 2.1.0-2.2.0 tätig und hat sich vor allem auf die Schema- und Schematrondateien und Codelisten konzentriert indem er diese gegen die zu veröffentlichenden ZUGFeRD-Beispieldateien geprüft habe. Dabei konnte ich die AWV dazu bewegen, Gitlab einzuführen, weil eine entsprechende Versuchsphase in 2.1.0 sehr effizient verlaufen war.

In 2.1.1 konnte Jochen die halbautomatischen (positiv-)Tests, die nur durch mich durchgeführt werden konnten, weil ich dafür eigene Versionen meines ZUV-Validierers erstellen musste, durch vollautomatische positiv- und negativtests ersetzen. Dazu habe ich den Validierer als „Submodul“ eingebunden und befähigt, sich selbst zu aktualisieren, zu bauen, und rekursiv ganze Verzeichnisse zu validieren.

In 2.2.0 lief die Validierung erstmals auch gegen die französischen Beispieldateien und Jochen hat bspw. auch die Aktualisierung der XML-Daten der Beispieldateien übernommen.

ZUGFeRD-Bibliothek

Das auf Apache PDFBox basierende ZUGFeRD-Modul von Gnuaccounting wurde als separate Java Bibliothek als “Mustangproject” umgesetzt und auf Github als permissives Open-Source-Projekt freigegeben. Es wurde von der Open Source Business Alliance 2015 mit dem „OSBAR“ ausgezeichnet und weist bis heute eine höhere Aktivität als Gnuaccounting auf. Sehr früh wurde die reine Bibliothek von der Community um eine Möglichkeit, eigenes XML anzugeben erweitert, nach einiger Zeit habe ich auch ein kleines Kommandozeilenprogramm beigesteuert mit dem anfangs ZUGFeRD-Rechnungen nur gezählt, dann auch aus PDF und XML-Datei kombiniert beziehungsweise die XML-Informationen extrahiert werden konnten. Dann kam noch ein Patch für den Batchbetrieb. Aktuell bringt die Entwicklerversion von Mustang 2 auch Support für ZUGFeRD 2.1.1 und dessen XRechnungsprofil sowie den den Validierer (ZUV, Projekt 4) als Bibliothek und zur Nutzung über die Kommandozeile.

Validation screenshot

ZUGFeRD-Validierer

Auf einem ZUGFeRD Entwicklertag wurden wir gebeten, für die ZUGFeRD-Community basierend auf unserer Sammlung von ZUGFeRD-Dateien eine Validierer-Engine zu entwickeln, um deren Engine zu ersetzen, die nur ZUGFeRD 1 unterstützte.

Um auch die Validierung des PDF-A-Teils zu ermöglichen haben wir es zunächst als VeraPDF-Plugin veröffentlicht, kurz darauf aber VeraPDF selbst in unsere Software eingebettet. Als Open-Source auf Github veröffentlicht wird er derzeit mit vierstelligen Nutzungszahlen pro Monat beispielsweise auf der ZUGFeRD-Community betrieben.

Der Validierer verwendet zu 50% VeraPDF und zu ca. 45% die offiziellen Prüfdateien (Schema- und Schematron sowie Codelisten) der Herausgeber (CEN, AWV und Kosit sowie Andreas Starke‘s „Additional Data“ Branchenerweiterungen): lediglich ein Bruchteil der Validiererlogik ist selbst geschrieben. ZUV unterstützt ZUGFeRD 1 und 2 und XRechnung 1.2.2 und wurde erfolgreich in Mustang 2 eingegliedert.

Kundenprojekt

Der Kunde wartet ein Abrechnungssystem für dessen Kunden von dem sich herausstellte, dass unter anderem XRechnungen und Factur-X Rechnungen benötigt werden würden. Schwerpunkt der Arbeiten waren unter anderem Bezug von Positionen auf Verträge und Bestellungen.

Quba 1.1 Screenshot in french

E-Rechnungsviewer

Im Rahmen des Prototypefund und dadurch gefördert vom Bundesministerium für Bildung und Forschung hat Jochen Open-Source-E-Rechnungsviewer Quba entwickelt und als Linux-, Mac- und Windows-Download zur Verfügung gestellt. Als technische Basis diente das Electron-Framework, die XSLT-basierte Kosit-X-Rechnungs-Visualisierung und Saxon.js. Nach der Veröffentlichung der 1.0 übernahm Asim das Projekt, hat es bspw. auf vue.js umgestellt und die französische Übersetzung, dankenswerterweise zur Verfügung gestellt von Symtrax, eingebaut.

Parser für XRechnung

Ein Konzern löst Konik ab und braucht einen Parser für bestimmte Attribute von Positionen. Die Rechnungsklasse und der Rechnungsklassen-Importer von Mustangproject.org wurde entsprechend erweitert.

Mustangproject Support

Der Kunde erhielt je nach Bedarf in der Regel zwischen einer und zehn Stunden Remote-Support pro Monat, die Ergebnisse wurden durch Jochen im regulären open-source-Mustang umgesetzt. Dafür gibt es normalerweise alle zwei Wochen eine koordinierende Videokonferenz. Besonders in der Anfangsphase konnten viele Fragen geklärt werden, wurden Anforderungen analysiert und durch sowohl durch den Kunden in seiner Codebasis als auch durch mich mit neuen Open-Source-Features umgesetzt.

Kunden-Eigenentwicklung

Der Kunde hat in Java sein eigenes ERP- und Abrechnungssystem entwickelt, das auch Factur-X/ZUGFeRD-Dateien unterstützen sollte. Schwerpunkt waren unter anderem Abrechnungszeiträume.

.net XRechnung und Factur-X für Kundenprojekt

Jochen hat das Produkt des Kunden zunächst um ein (UN/CEFACT) XRechnungs- dann um ein ZUGFeRD-Feature erweitert. Da nur PDF (kein PDF/A) zur Verfügung stand habe ich Ghostscript zur Umwandlung in valides ZUGFeRD PDF/A-3 und zum Einbetten der XML-Dateien in die Software verwendet. Zum Lesen der ZUGFeRD-Dateien wurde das XML mit iText aus den PDF-Dateien extrahiert. Geprüft wurde regelmäßig mit Kosit‘s Open Source XRechnungs-Validierungstool und mit meinem eigenen ZUGFeRD-Validierer ZUV (später in Mustang aufgenommen).

Online-Rechnungsstellung

In Jochens Zeit bei einer Firma mit einem SAAS-Produkt zur webbasierten Abrechnung (Faktura) und Erfassung von Belegen erstellte er die erste Entwicklerdokumentation und erweiterte das Produkt unter anderem um die Möglichkeit, Eingangsgutschriften zu verbuchen. Ich ergänzte einen Export der einzuziehenden Lastschriftbeträge (DTAUS), verbesserte die Rechnungsvorschau im Kundenrechnungsportal und schrieb eine Kassenbuch-Funktionalität.
Des weiteren implementierte er unter anderem einen Onlinezugang, der es den Steuerberatern der Kunden erlaubt, sich auf Wunsch in Echtzeit über die Eingangs/Ausgangsbelege Ihrer Mandanten in Kenntnis zu setzen.