NAME

Quiq::Zugferd - Generiere das XML von ZUGFeRD-Rechnungen

BASE CLASS

Quiq::Hash

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

-version => $version (Default: '2.3.2')

Die ZUGFeRD-Version.

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

@args

Beliebige Argumente, die für das Ausfüllen des ZUGFeRD XML-Templates benötigt werden.

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

@keyVal

Liste der Platzhalter/Wert-Paare

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::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

$name

Name der Business Group. Beispiel: BG-25 (Rechnungsposition)

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

Synopsis

$bt = $zug->bt($name);

Arguments

$name

Name des Business Terms. Beispiel: BT-1 (Rechnungsnummer)

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::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

$subPath

Subpfad ins Verzeichnis

Returns

(String) Dateipfad

Description

Liefere den Dateipfad des ZUGFeRD-Verzeichnisses, optional ergänzt um Subpfad $subPath.

VERSION

1.228

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.