XRechnung: Elektronische Rechnung für Unternehmen untereinander ab 2025 voraussichtlich Pflicht

Beim Ausschreibungen, Aufträgen und Rechnungen im Umgang mit Behörden ist die elektronische Rechnungsstellung jetzt schon Pflicht. Elektronisch mein dabei nicht zu Zusendung einer Mail mit einer *.pdf-Datei im Anhang, sondern die Zusendung einer genau vorgeschriebenen XML-formatierten Rechnung. Mit dieser Rechnungsform können Vorgänge in den Verwaltungen klarer strukturiert ablaufen.

Nun werden die Rechnungen auch für den Rechnungsverkehr von Unternehmen mit Unternehmen Pflicht werden, da hierüber die Geldflüsse wesentlich schneller nachvollziehbar werden sollen. Ich habe in der Vergangenheit auch Firmen bei der Erstellung von datenbankgestützter Rechnungserstellung geholfen. Und dort ist der Druck jetzt groß. Die schönen Rechnungen zählen nicht mehr, es muss etwas elektronisches her. Ich habe auf die Schnelle schon die ersten Rechnungen mit Datenbankverbindung konstruiert, meine aber, dass wir in LibreOffice hier rechtzeitig die Kräfte bündeln sollten, damit wir mit Hilfe von Writer und eventuell Base eine Open-Source-Lösung anbieten können.

Ich habe einmal ein Formular erstellt, mit dem (mithilfe von Makros) XRechnungen erzeugt werden können:


Die entsprechende Datei hänge ich hier einmal zur ersten Information an. Es fehlt noch die Rundung der Beträge in der xml-Datei. Mit Sicherheit fehlen auch noch einige Eintragsmöglichkeiten. Ob das Ganze den Standard einer XRechnung komplett erfüllt kann ich nicht mit Gewissheit sageb. Das Testtool, das ich benutze, zeigt in xrview auf jeden Fall die Rechnung korrekt an.
XRechnung_Geschaeftsbrief_VorlageA.odt (49.2 KB)
Spezifikation zu XRechnung: XRechnung, etwas nach unten scrollen zu den PDF-Dokumenten.
Erstellung von XRechnung mit OpenSource unter Linux/KDE: Kraft ab der Version 0.98
Viewer XRView, ebenfalls KDE: XRechnung - XRView - ist leider nicht direkt als Paket für eine Linux-Version verfügbar. Installation mit einigen Klimmzügen.

Update: Inzwischen sind zwei “Kurzanleitungen” zu Base und Writer - XRechnungen erstellen und auslesen und Elektronische Rechnungen erstellen im XRechnungs, XRechnung-Extension und ZUGFeRD-Format mit Base und Writer von mir auf der LibreOffice-Seite veröffentlicht worden.

Hier wäre ein Projekt mit einem professionellen Ansatz, der eine vollständige Implementierung ermöglichen könnte.

Datenbankabfragen in XML zu übertragen sollte eigentlich seit Jahrzehnten guter Standard sein. Ich habe jedoch auf die Schnelle keinerlei authorisierte technische Beschreibung von XRechnung finden können. Möglicherweise ist es dies hier: https://github.com/itplr-kosit/xrechnung-visualization/blob/master/src/xsd/xrechnung-semantic-model.xsd aber ich kenne mich mit dem ganzen XML-Kauderwelsch auch nicht aus.
Die Verarbeitung oder Generierung von XML durch hart kodierte Tags in StarBasic erscheint mir doch ein wenig arg archaisch.

Na ja, wenn die normalen Wege fehl schlagen und die Zeit drückt, dann muss ich das nutzen, was ich kann. Und das für mich entscheidende ist, dass das so erzeugte Dokument die entsprechenden Anforderungen erfüllt. Bei auf bestimmte Zwecke zugeschnittene Datenbanken kann ich da dann auch so einigen Code weg lassen, weil eben einige Bereiche der XRechnung gar nicht erst genutzt werden.

Hast du den Output mal validiert? Welche DTD hast du dafür verwendet?

Nö. Du brauchst 2 Abfragen. Einmal die Rechnungsdaten (Empfänger, Aussteller, Datum, Rechnungsnr.) und die zugehörigen Rechnungspositionen, jeweils ergänzt durch die passenden Spalten-Aliase, mit denen dein Code dann arbeiten kann. Eventuell könnte man die Aliase an die entsprechenden XML-Tags anpassen. Mit wenigen Zeilen Python müsste das zu bewerkstelligen sein.

Ich habe XRView dazu benutzt. Zum Anfang habe ich mich an den Beispielen orientiert, die bei den XRechnung-Dokumentationen zur Verfügung stehen. Beides Quellen habe ich im Originalpost mit angefügt.

Habe ich genau so gemacht: Die Einzeldaten in einer Abfrage, die Rechnungsposten in der zweiten Abfrage. So erstelle ich momentan auch schon alle Rechnungen: Die Einzelabfrage bestückt entsprechende Platzhalter im Dokument, die Rechnungsposten erweitern Stück für Stück eine Tabelle und werden in diese Tabelle eingetragen.

Aber wie so ein Auswurf dann als xml-Dokument mit wenigen Zeilen Python gehen soll - das erschließt sich mir mangels Kenntnis von Python nicht. Da müsste ich ja wissen, wie ich auf eine vorhandene Vorlage zugreifen kann um die entsprechenden Punkte auf zu suchen und mit Inhalt zu füllen, wenn ich eben nicht die gesamte Datei innerhalb von Basic neu schreiben will.

Schaut mal bei ZugFeRD, da dies Projekt XRechnung “enthält” - einbettung der XML-Daten in ein “lesbares” pdf.

Ist eventuell auch nicht nötig. Ich erzeuge XML direkt als Report aus Base (in meinem Fall zur Übergabe an InDesign). BASIC macht nur den Aufruf des Reports und die anschließende Speicherung als “Textdatei mit Zeichensatz: UTF8”.

Beispiel kann ich wohl erst Montag liefern, da ich bis Sonntag unterwegs bin.

1 Like

Richtige Programmiersprachen haben Bibliotheken zum Verarbeiten von XML. XSLT ist eine Sprache zum Konvertieren von einem XML (also z.B. ODF) in jedes andere XML (in LO via menu:Extras>XML Filter…)

Über eine ct-Meldung 8/2019 S. 50 kam ich zu folgender Übersichtsseite. Unter xRechnung > Norm werden die Gesetzestexte als pdf verlinkt:

Es gibt da auch ein CLI-Programm bei Heise im Download-Bereich:

Dazu? gehört wohl dieser Artikel mit Verweis auf eine Konic-Library
https://www.heise.de/select/ix/archiv/2014/8/seite-98

Das ist eine OpenSource-Bibliothek “Verfügbar für Java und .NET unter AGPL und weiteren Lizenzen.”

Eine Alternative wäre eventuell drafthorse als “Pure-python ZUGFeRD implementation”:

Und es gibt auch das Projekt Mustang mit dem auch xml und pdf-Dateien zu ZugFeRD-Rechnungsdateien kombiniert werden können (Java), das in GnuAccounting genutzt wird:

1 Like

https://pandas.pydata.org/pandas-docs/dev/reference/api/pandas.DataFrame.to_xml.html

Wir sind aber noch weit von einem harmonisierten System entfernt:

@iplaw67 : Hilft aber nichts, wenn der Standard im deutschsprachigen Raum ab 2025 für Unternehmen verpflichtend wird. Das ist dann 10 Jahre her, dass die Vereinheitlichung auf EU-Ebene zumindest für die öffentliche Verwaltung vorangetrieben werden sollte: Wikipedia - XRechnung.

Eine Extension hat Thorsten in der Mailingliste dazu gepostet, die aber zur Zeit noch daran krankt, dass französische Vorgaben eingegeben werden müssen: Factur-x LibreOffice Extension.

Danke für den Hinweis, wusste ich gar nichts davon :+1:

Vor einer guten Woche wurde ein “deutsches” Template hinzugefügt.

@Wanderer : Danke, habe von Thorsten Behrens direkt in der discuss-liste (discuss@de.libreoffice.org) die Nachricht dazu erhalten.

und ich wurde daran erinnert, dass “unser” Office-Paket auch so etwas mitbringt:

https://forum.openoffice.org/en/forum/viewtopic.php?t=110813

Via Macro kann man also auch xml direkt erzeugen. Leider ist das LibreOffice-API nicht ohne “Arbeitsaufwand” …

Na ja, die Bibliotheken für das Verarbeiten von xml scheitern leider schon daran, dass da in der XRechnung 3 Namespaces enthalten sind:

<ubl:Invoice xmlns:ubl="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
             xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
             xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
...

   <cbc:BuyerReference>Keine vorhanden</cbc:BuyerReference>
   <cac:ProjectReference>
      <cbc:ID></cbc:ID>
   </cac:ProjectReference>
...

XML-Formulare, wie sie über LO erstellt werden können, geben da leider auch auf.
Da hilft mir bisher nur das Stückweise Arbeiten eben in Basic …