NAME
Quiq::Zugferd - Generiere/Akzeptiere XML einer ZUGFeRD-Rechnung
BASE CLASS
ENVIRONMENT
- $ZUGFERD_DIR
-
Verzeichnis mit den ZUGFeRD XSD-Dateien und dem ZUGFeRD XML-Template. Der Wert dar Variable ist priorisiert gegenüber dem klasseninternen Pfad.
DESCRIPTION
Diese Klasse befindet sich in Entwicklung!
Die Klasse kapselt das ZUGFeRD 2.3(Factur-X Version 1.0.07) XML Profile BASIC sowie ein XML-Template zu diesem Profile, das alle ELemente und Attribute umfasst. Das Template kann als XML (Text) oder als Datenstruktur (Baum) in verschiedenen Varianten (leer, mit Beispielwerten, mit Platzhaltern) genutzt werden.
EXAMPLES
Zeige ZUGFeRD XML und Datenstruktur als Zeichenkette:
$ perl -MQuiq::Zugferd -E 'say Quiq::Zugferd->new->doc' # XML, kommentiert
$ perl -MQuiq::Zugferd -E 'say Quiq::Zugferd->new->doc("tree")'
(Tipp: XML-Ausgabe in Datei speichern und mit Emacs oder vi mit "Syntax Highlighting" lesen)
Zeige das ZUGFeRD XML:
$ perl -MQuiq::Zugferd -E 'say Quiq::Zugferd->new->xml' # ohne Werte
$ perl -MQuiq::Zugferd -E 'say Quiq::Zugferd->new->xml("placeholders")'
$ perl -MQuiq::Zugferd -E 'say Quiq::Zugferd->new->xml("values")'
Zeige das ZUGFeRD XML als Baum:
$ perl -MQuiq::Zugferd -MQuiq::Dumper -E 'say Quiq::Dumper->dump(Quiq::Zugferd->new->tree)'
METHODS
Klassenmethoden
createTemplate() - Erzeuge Template zu ZUGFeRD-Profil
Synopsis
$xml = $class->createTemplate($profile,%opt);
Arguments
- $profile
-
Name des ZUGFeRD-Profils. Mögliche Namen: 'minimum', 'basicwl', 'basic', 'en16931', 'extended'.
Options
- -xsdDir => DIR (Default: $ENV{'ZUGFERD_DIR'} || ModuleDir)
-
Verzeichnis mit den ZUGFeRD Schema-Dateien
Returns
(String) XML-Template
Description
Erzeuge auf Basis der XSD-Dateien des ZUGFeRD-Profils $profile mit XML::Compile::Schema eine XML Template-Datei ohne Werte und liefere das Ergebnis zurück.
ACHTUNG: Die Templates sind nicht umfassend, es gibt Elemente, denen die Unterelemente felen. Suche nach Tags mit dem Muster "/>":
$ perl -MQuiq::Zugferd -E 'say Quiq::Zugferd->createTemplate("minimum")' | grep '/>'
<ram:GuidelineSpecifiedDocumentContextParameter/>
<ram:BuyerTradeParty/>
<ram:ApplicableHeaderTradeDelivery/>
Tipp: Unterschiede zwischen den Profilen lassen sich mit diff(1) ermitteln.
Examples
Profil MINIMUM:
$ perl -MQuiq::Zugferd -E 'say Quiq::Zugferd->createTemplate("minimum")'
Profil BASICWL:
$ perl -MQuiq::Zugferd -E 'say Quiq::Zugferd->createTemplate("basicwl")'
Profil BASIC:
$ perl -MQuiq::Zugferd -E 'say Quiq::Zugferd->createTemplate("basic")'
Profil EN16931:
$ perl -MQuiq::Zugferd -E 'say Quiq::Zugferd->createTemplate("en16931")'
Profil EXTENDED:
$ perl -MQuiq::Zugferd -E 'say Quiq::Zugferd->createTemplate("extended")'
new() - Instantiiere Objekt
Synopsis
$zug = $class->new($profile);
Returns
Object
Description
Instantiiere ein ZUGFeRD-Objekt auf Basis von Profil $profile der Klasse und liefere dieses zurück.
Objektmethoden
parts() - Liefere Abschnitte mit mehreren gleichen Unterabschnitten
Synopsis
@parts | $partA = $zug->parts;
Returns
(Array) Liste von Abschnitten. Im Skalarkontext liefere eine Referenz auf die Liste.
Description
Liefere die Liste der Namen aller Abschnitte, die mehrere gleiche Unterabschnitte haben. Die Namen sind Tagnamen ohne Namespace-Präfix.
doc() - Liefere ZUGFeRD Doku
Synopsis
$str = $zug->doc;
$str = $zug->doc($type);
Arguments
- $type (Default: 'xml')
-
Art der Dokumentation:
- 'xml'
-
ZUGFeRD XML mit Beispielwerten und Kommentaren
- 'tree'
-
ZUGFeRD Baum mit Beispielwerten
- 'parts'
-
Liste der Elemente, mit n-fachen Unterelementen. Wenn keine Kardinalitäten vorhanden sind, ist die Liste leer.
- 'paths'
-
Liste der Zugriffspfade im Baum
- 'cardinality'
-
Liste der Elemente und ihrer Kardinalitäten. Wenn keine Kardinalitäten und/oder Kommentare vorhanden sind, fehlt die Information in der Ausgabe.
Returns
(String) Doku
Example
ZUGFeRD XML mit Beispielwerten und Kommentaren:
$ perl -MQuiq::Zugferd -E 'print Quiq::Zugferd->new->doc("xml")'
ZUGFeRD Baum mit Beispielwerten:
$ perl -MQuiq::Zugferd -E 'print Quiq::Zugferd->new->doc("tree")'
Zugriffspfade im ZUGFeRD Baum:
$ perl -MQuiq::Zugferd -E 'print Quiq::Zugferd->new->doc("paths")'
Elemente mit n-fachen Unterelementen:
$ perl -MQuiq::Zugferd -E 'print Quiq::Zugferd->new->doc("parts")'
Elemente und ihre Kardinalitäten:
$ perl -MQuiq::Zugferd -E 'print Quiq::Zugferd->new->doc("cardinality")'
tree() - Liefere ZUGFeRD XML Template als Baum
Synopsis
$h = $zug->tree;
$h = $zug->tree($variant);
Arguments
Returns
Baum-Referenz
Description
Wandele das ZUGFeRD XML Template in einen Baum und liefere eine Referenz auf den Wurzelknoten zurück.
treeToXml() - Wandele (ZUGFeRD) Baum nach XML
Synopsis
$xml = $zug->treeToXml($tree,%opt);
Arguments
Options
Returns
(String) XML
Description
Wandele den Baum nach XML und liefere dieses zurück.
Example
$ perl -MQuiq::Zugferd -E '$zug = Quiq::Zugferd->new("en16931"); $tree = $zug->tree; print $zug->treeToXml($tree)'
xml() - Liefere ZUGFeRD XML Template als Zeichenkette
Synopsis
$xml = $zug->xml;
$xml = $zug->xml($variant);
Arguments
Returns
(String) XML
VERSION
1.224
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.