Neu vorgestellt, Programmierung

ZUGFeRD mit CONZEPT 16

Elektronische Rechnung

Das Forum elektronische Rechnung Deutschland (FeRD) hat es sich zur Aufgabe gemacht, elektronische Rechnungen unter technischen, wirtschaftlichen und rechtlichen Gesichtspunkten aufzubereiten und zu koordinieren. Unter dem Name ZUGFeRD wurde ein einheitliches Format für den elektronischen Rechnungsaustausch geschaffen.

Einleitung

ZUGFeRD steht für “Zentraler User Guide des Forum elektronische Rechnung Deutschland” und eignet sich laut FeRD für alle Wirtschaftsbereiche und die öffentliche Verwaltung. Das Format beruht auf globalen Standards und europäischen Empfehlungen und soll in Zukunft bundesweit die bestehenden EDI-Standards ergänzen und die Umstellung bisheriger papierbasierter Prozesse ermöglichen. Ein ehrgeiziges Ziel, denn noch immer werden in Europa rund 30 Millionen Rechnungen pro Jahr postalisch versandt.

Das Format aus technischer Sicht

Technisch betrachtet handelt es sich beim ZUGFeRD-Format um ein PDF/A3-konformes Dokument, dem als Anhang eine standardisierte Rechnung im XML-Format beigefügt ist. Dabei gilt die Regel ein PDF = eine Rechnung. Das PDF-Dokument präsentiert die visuelle Darstellung der Rechnung (wie die Papierform). Das XML-Dokument enthält die maschinenlesbare Darstellung der Rechnung. Zwar kann das PDF mehrere Anhangdateien besitzen, der Rechnungsanhang muss jedoch ZUGFeRD-invoice.xml lauten. Die Struktur der XML-Datei basiert auf den Regeln des von UN/CEFACT entwickelten Standards zur Cross Industry Invoice (CII).

Profile

Bei der Konzeption des Formats wurde berücksichtigt, dass es universell und für ein breites Spektrum verschiedener Unternehmensbereiche einsetzbar ist. Deshalb definiert das Format drei verschiedene Profile – die je nach Unternehmensart – den Umfang des XML-Dokumentes bestimmen:

  • BASICDieses Profil reduziert die Anforderungen an die Übermittlung
    strukturierter Daten, um vom Aufbau einfachste Rechnungen abbilden zu
    können. Es ist für die automatische elektronische Archivierung
    ausreichend, ebenso für die meisten Anwendungsfälle der automatisierten
    Belegverteilung (Workflow). Eine automatisierte Rechnungsprüfung ist
    nicht immer möglich, da je nach Geschäftsfall, nicht alle
    erforderlichen Informationen computerlesbar übermittelt werden.
  • COMFORTIn diesem Profil ist die Übermittlung aller Daten in strukturierter
    Form möglich, die für eine überwiegende Zahl versendeter Rechnungen
    eine automatisierte, systemgestützte Rechnungsbearbeitung auf
    Empfängerseite ermöglichen.
  • EXTENDEDIn diesem Profil werden alle im ZUGFeRD-Datenmodell abgebildeten Daten
    in strukturierter Form bzw. als qualifiziertes Textfeld abgebildet. Die
    Auswahl der tatsächlich verwendeten Datenfelder hängt vom jeweiligen
    Geschäftsprozess ab. Damit deckt das Profil die brachenübergreifenden
    Anforderungen an den strukturierten Rechnungsdatenaustausch möglichst
    vollständig ab.
Weiterführende Informationen

Für alle, die sich mit dem ZUGFeRD-Format beschäftigen möchten, bietet das Onlineportal von FeRD ausführliche Informationen. Dort wird auch ein Infopaket zum Download bereitgestellt, welches Beispieldateien und eine sehr ausführliche Dokumentation enthält. Zum Validieren von ZUGFeRD-Dokumenten sei hier die Internetseite eInvoice Validation.Portal genannt. Nach einmaliger, kostenloser Registrierung können PDF-Dokumente hochgeladen und validiert werden.

Einsatz mit CONZEPT 16

Damit auch in CONZEPT 16 ZUGFeRD konforme PDF-Dokumente erstellt werden können, haben wir für das kommende CONZEPT 16 Release die PDF-API erweitert. Nachfolgende Funktion CreateZUGFeRDInvoicePDF wandelt ein bestehendes Dokument in ein ZUGFeRD-konformes PDF um.

sub CreateZUGFeRDInvoicePDF
(
  var aFileName    : alpha;  // Ausgangs-PDF.
  var aInvoiceXML  : alpha;  // XML-Datei ZUGFeRD-invoice.xml.
  var aOutFileName : alpha;  // Name für das ZUGFeRD-Dokument.
  aDescription     : alpha;  // Beschreibung zur angehängten Rechnung.
  aCompress        : logic;  // Anhang komprimieren j/n.
)
  : int;

  local
  {
    tPdf           : handle;
    tResult        : int;
  }

{
  tPdf # PdfOpen(aFileName,_PdfOpenDefault,'',_PdfImportAll);

  if (tPdf > 0)
  {
    tResult # tPdf->PdfAttachFile(aInvoiceXML,
                _PdfAttachAssociateZUGFeRD,aDescription,aCompress);

    if (tResult = _ErrOK)
      tResult # tPdf->PdfClose(aOutFileName,_PdfModePdfZUGFeRDBasic);
    else
      tPdf->PdfClose('',_PdfModeCancel);
  }
  else
    tResult # tPdf;

  return(tResult);
}

Die Funktion nimmt in den Argumenten aFileName und aInvoiceXML ein bereits existierendes PDF-Dokument sowie das XML-Dokument mit den Rechnungsdaten entgegen. Daraus erstellt sie das ZUGFeRD-PDF (aOutFileName).

Der Code öffnet das Quell-PDF mit der Funktion PdfOpen(). Anschließend wird mit dem neuen Befehl PdfAttachFile() das XML-Dokument in das PDF eingebettet. Wichtig ist hierbei die Angabe von _PdfAttachAssociateZUGFeRD. Jeder Anhang eines ZUGFeRD-PDF muss mit dieser Option eingefügt werden.

Dem Befehl kann eine optionale Beschreibung zum Anhang mitgegeben werden, und ob dieser komprimiert werden soll. Eine Komprimierung ist nicht immer zu empfehlen. Gut komprimieren lassen sich Text-Dokumente, wohingegen bereits komprimierte Dateien, wie zum Beispiel ZIPs beim Komprimieren eher größer werden.

Zum Schluss wird das ZUGFeRD-PDF mit PdfClose() generiert. Hierbei wird auch das zu generierende Rechnungs-Profil übergeben. Im vorliegenden Fall wird ein Basic-Profil generiert.
Verwandte Artikel:
Erstellen PDF A konformer Dokumente
PDF Verarbeitung in CONZEPT 16

9 Kommentare

9 Kommentare “ZUGFeRD mit CONZEPT 16”

  1. Das mitliefern des XML-Dokuments incl. dem Dokument im PDF/A3 Format bei ihren Rechnungen aus der Buchhaltung.
    Wir bekommen ihre Rechnungen aktuell im PDF-Format, ohne weitere Anhänge. In diesem Zusammenhang könnten wir dies bei uns automatisieren;)

Kommentar abgeben