NAME
Quiq::Zugferd2 - 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::Zugferd2 -E 'print Quiq::Zugferd2->new("en16931")->template'
Zeige den Template-Baum des Profils EN16931:
$ perl -MQuiq::Zugferd2 -MQuiq::Dumper -E '$t = Quiq::Zugferd2->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
createInvoice() - Erzeuge das XML einer ZUGFeRD-Rechnung (abstrakt)
Synopsis
$xml = $zug->createInvoice(@args);
Arguments
Returns
(String) XML
processSubTree() - Verarbeite einen Subbaum
Synopsis
$xmlA = $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, aus denen die Platzhalter im Subbaum ersetzt werden.
- sub {}
-
Subroutine, die die Einsetzung in einen Subbaum vornimmt
Returns
(Object) Subbaum 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
tree() - Liefere den ZUGFeRD-Baum
Synopsis
$tree = $zug->tree;
Returns
(Object) Baum
Example
$ perl -MQuiq::Zugferd2 -MQuiq::Dumper -E '$t = Quiq::Zugferd2->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::Zugferd2 -E 'say Quiq::Zugferd2->new("en16931")->bg("BG-25")->path'
SupplyChainTradeTransaction.IncludedSupplyChainTradeLineItem
bt() - Business Term
Synopsis
$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.
- text
-
Kurzbeschreibung des Business Terms.
- path
-
Pfad zum Blattknoten im ZUGFeRD-Baum.
Example
$ perl -MQuiq::Zugferd2 -E 'say Quiq::Zugferd2->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.
VERSION
1.227
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.