NAME
Quiq::Zugferd - Generiere das XML von ZUGFeRD-Rechnungen
BASE CLASS
DESCRIPTION
Diese Klasse dient der Generung des XMLs von E-Rechnungen nach dem ZUGFeRD/Factur-X-Standard. Sie kapselt die Profile des Standards, sowohl die XSD-Dateien (XML-Schemadefinition) als auch fertige Templates.
Die Generierung eines Rechnungs-XMLs erfolgt durch Einsetzung der Rechnungswerte in das Template des jeweiligen Profils.
EXAMPLES
Zeige das Template des Profils EN16931:
$ perl -MQuiq::Zugferd -E 'print Quiq::Zugferd->new("en16931")->template'
Zeige den Template-Baum des Profils EN16931:
$ perl -MQuiq::Zugferd -MQuiq::Dumper -E '$t = Quiq::Zugferd->new("en16931")->tree; say Quiq::Dumper->dump($t)'
METHODS
Konstruktor
new() - Instantiiere Objekt
Synopsis
$zug = $class->new($profile,%options);
Arguments
- $profile
-
Name des ZUGFeRD-Profils. Es existieren die ZUGFeRD-Profile:
minimum
,basicwl
,basic
,en16931
,extended
.
Options
Returns
Object
Description
Instantiiere ein ZUGFeRD-Objekt des Profils $profile und der ZUGFeRD-Version $version und liefere dieses zurück.
Objektmethoden
checkAttributes() - Prüfe die Attribute des Rechnungsobjekts
Synopsis
$msg = $zug->checkAttributes($rch);
Arguments
Returns
(String) Prüfungsbericht
Description
Prüfe die Felder des Rechnungsobjekts auf mögliche Fehler und liefere einen Bericht über das Ergebnis. Falls keine Fehler festgestellt wurden, lieferet die Methode einen Leerstring ('').
combine() - Erzeuge ZUGFeRD PDF
Synopsis
$zug->combine($pdfFile,$xmlFile,$zugferdFile);
Arguments
- $pdfFile
-
(String) Der Pfad zum PDF der Rechnung
- $xmlFile
-
(String) Der Pfad zum ZUGFeRD XML der Rechnung
- $zugferdFile
-
(String) Der Pfad zur resultierenden ZUGFeRD Rechnung
Description
Füge das Rechnungs-PDF $pdfFile und das ZUGFeRD XML $xmlFile zusammen und schreibe das Ergebnis nach $zugferdFile.
createInvoice() - Erzeuge das XML einer ZUGFeRD-Rechnung (abstrakt)
Synopsis
$xml = $zug->createInvoice(@args);
Arguments
Returns
(String) XML
processSubTree() - Verarbeite Subbaum
Synopsis
$treeA = $zug->processSubTree($name,\@arr,sub {
my ($zug,$t,$h,$i) = @_;
...
$t->resolvePlaceholders(
...
);
return $t;
});
Arguments
- $zug
-
ZUGFeRD-Objekt
- $name
-
Name des Subbaums
- @arr
-
Liste der Elemente, über die iteriert wird, um Teilbäume (mit ersetzten Platzhaltern) zu erzeugen.
- sub {}
-
Subroutine, die die Einsetzung in jeweils einen Subbaum vornimmt
Returns
(Object) (Sub-)Baum mit ersetzen Platzhaltern
Description
Ersetze im Subbaum $name die Platzhalter aus den Elementen von @arr.
resolvePlaceholders() - Ersetze Platzhalter im Template
Synopsis
$xml = $zug->resolvePlaceholders(@keyVal,%options);
Arguments
Options
- -label => $text (Default: '')
-
Versieh den Abschnitt der Platzhalter (bei -showPlaceHolders=>1) mit der Beschriftung $label.
- -showPlaceholders => $bool (Default: 0)
-
Gibt die Liste der Platzhalter auf STDOUT aus
- -showTree => $bool (Default: 0)
-
Gib den resultierenden ZUGFeRD-Baum auf STDOUT aus.
- -subTree => $tree (Default: undef)
-
Führe die Ersetzung auf dem Teilbaum $tree aus.
- -validate => $bool (Default: 0)
-
Aktiviere die Validierung durch XML::Compile
Returns
(String) XML nach Platzhalter-Ersetzung
Description
Ersetze die Platzhalter im Template des ZUGFeRD-Profils und liefere das resultierende XML zurück.
template() - Liefere das ZUGFeRD-Template
Synopsis
$xml = $zug->template;
Returns
(String) XML
toXml() - Liefere das Zugferd-XML einer Rechnung
Synopsis
$xml = $zug->toXml($rch,%options);
Arguments
Options
Returns
(String) XML
Description
Erzeuge eine ZUGFeRD XML Repräsentation des Rechnungs-Objekts $rch und liefere diese zurück.
tree() - Liefere den ZUGFeRD-Baum
Synopsis
$tree = $zug->tree;
Returns
(Object) Baum
Example
$ perl -MQuiq::Zugferd -MQuiq::Dumper -E '$t = Quiq::Zugferd->new("en16931")->tree; say Quiq::Dumper->dump($t)'
Information
bg() - Business Group
Synopsis
$bg = $zug->bg($name);
Arguments
Returns
(Object) Business Group
Description
Liefere die Business Group $name. Ist die Business Group nicht definiert, wirf eine Exception.
Das Objekt hat die Attribute:
- name
-
Name der Business Group.
- text
-
Kurzbeschreibung der Business Group.
- path
-
Pfad zum Knoten im ZUGFeRD-Baum.
Example
$ perl -MQuiq::Zugferd -E 'say Quiq::Zugferd->new("en16931")->bg("BG-25")->path'
SupplyChainTradeTransaction.IncludedSupplyChainTradeLineItem
bt() - Business Term(s)
Synopsis
%bt | $btH = $zug->bt;
$bt = $zug->bt($name);
Arguments
Returns
(Object) Business Term
Description
Liefere den Business Term $name. Ist der Business Term nicht definiert, wirf eine Exception.
Das Objekt hat die Attribute:
- name
-
Name des Business Terms.
- mandatory
-
Pflichtfeldstatus. 0=optional, 1=XSD-Pflicht, 2=Mustang-Pflicht
- text
-
Kurzbeschreibung des Business Terms.
- attribute
-
Name des Objektattributs
- path
-
Pfad zum Blattknoten im ZUGFeRD-Baum.
Example
$ perl -MQuiq::Zugferd -E 'say Quiq::Zugferd->new("en16931")->bt("BT-1")->text'
Rechnungsnummer
zugferdDir() - Pfad des ZUGFeRD-Verzeichnisses
Synopsis
$path = $zug->zugferdDir;
$path = $zug->zugferdDir($subPath);
Arguments
Returns
(String) Dateipfad
Description
Liefere den Dateipfad des ZUGFeRD-Verzeichnisses, optional ergänzt um Subpfad $subPath.
DETAILS
Vorgehen bei der Generierung einer ZUGFeRD E-Rechnung
Der Inhalt einer Rechnung setzt sich aus verschiedenen Bestandteilen zusammen:
Rechnungsdaten
Allgemeine Rechnungsdaten
Rechnungsreferenzen
Verkäufer
Informationen zum Verkäufer
Steuervertreter des Verkäufers
Postanschrift des Verkäufers
Kontaktdaten des Verkäufers
Vom Verkäufer abweichender Zahlungsempfänger
Käufer
Informationen zum Käufer
Postanschrift des Käufers
Kontaktdaten des Käufers
Lieferinformation
Rechnungspositionen
Rechnungsposition
Weitere Daten zur Position
Nachlässe auf Ebene der Rechnungsposition
Zuschläge auf Ebene der Rechnungsposition
Rechnungsbeträge
Nachlässe auf Ebene der Rechnung
Zuschläge auf Ebene der Rechnung
Aufschlüsselung der Umsatzsteuer auf Ebene der Rechnung
Rechnungsbeträge
Zahlungsdaten
Zahlungsdaten
Zahlungsmittel: Überweisung
Zahlungsmittel: Lastschrift
Anhänge
Verweise
Empfänger
Texte auf Rechnungs- und Positionsebene
VERSION
1.230
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2025 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.