ZUGFeRD ist ein von FeRD (Forums elektronische Rechnung Deutschland) entwickelter Standard um die Erstellung und Verbreitung von elektronischen Rechnungen zu vereinheitlichen. Dabei wird ein XML Format verwendet, welches die elektronische Rechnungsprüfung ermöglicht. Das XML wird hierbei von PDFreactor über die ZUGFeRD API erzeugt und der Benutzer selbst muss sich nicht mit dem XML auseinandersetzen.
PDFreactor unterstützt zwei der drei von FeRD definierten Profile: basic
und comfort. Das dritte Profil extended wird zurzeit nicht
unterstützt. Das Profil bestimmt welche ZUGFeRD-Properties generiert werden und welche
nicht. Ohne ein Profil kann das ZUGFeRD PDF nicht erzeugt werden und die Konvertierung
wird mit einer entsprechenden Exception terminiert.
Ist das ZUGFeRD Profil basic, so werden keine Properties
des Profils comfort erzeugt, selbst wenn diese angegeben wurden. Ist das Profil
jedoch comfort, so werden Properties des Profils basic generiert,
wenn diese angegeben wurden. Außerdem gibt es Properties die immer benötigt
werden um ein ZUGFeRD PDF zu erstellen. Diese Properties benötigen das Profil
basic und müssen über die ZUGFeRD API angegeben werden. Weiterhin ist
anzumerken, dass höhere Profile keine weiteren Properties benötigen damit ein ZUGFeRD PDF
erstellt wird. Es ist also möglich ein ZUGFeRD PDF mit dem Profil comfort
zu erzeugen und dabei basic Properties anzugeben.
| Profil | Beschreibung |
|---|---|
basic |
Das niedrigste ZUGFeRD Profil. Ermöglicht es benötigte Informationen anzugeben. Vollständige elektronische Validierung ist nicht vorausgesetzt. |
comfort |
Höherer Level als basic.
Ermöglicht genauere Angaben, vor allem in Bezug auf Positionen.
Ermöglicht zu einem gewissen Maße die elektronische Validierung. |
Ein ZUGFeRD PDF besteht aus zwei Teilen, dem PDF und dem XML.
Alles was im PDF zu sehen ist, kann in das XML generiert werden. Auch wenn die API es
erlaubt beliebige gültige Werte auf jedes Property zu setzen, besagt die ZUGFeRD Spezifikation,
dass nur Informationen angegeben werden dürfen, die im PDF zu sehen sind oder von
diesen Informationen abgeleitet werden können. Ein Beispiel für den letzteren Fall ist das
Land, welches im XML als 2-stelliger ZUGFeRD Code angegeben werden muss.
Im Rückschluss bedeutet das, dass ZUGFeRD-Properties, die für das ZUGFeRD PDF benötigt werden
und nicht über das PDF angegeben werden können, zu einem fehlerhaften PDF und XML führen.
Es gibt natürlich Fälle in denen die Informationen womöglich nicht im PDF vorliegen, wie
z.B. die Properties zugferd-profile oder test-indicator.
Um das ZUGFeRD PDF zu erzeugen, müssen zuerst einige Voraussetzungen erfüllt werden.
Für ZUGFeRD muss zunächst ein PDF Standard gewählt werden, der Langzeitarchivierung ermöglicht, wie z.B. PDF/A. Der PDF Standard muss außerdem Anhänge erlauben, was die Optionen auf die Standards PDF/A-3a, PDF/A-3b, PDF/A-3u und PDF/A-3a mit der PDF/UA-1 Spezifikation, einschränkt.
Um das ZUGFeRD PDF aus dem PDF zu erzeugen, muss das JavaScript angegeben werden. Dies kann entweder im Dokument oder über die PDFreactor API angegeben werden. Damit das JavaScript verarbeitet wird, muss zunächst jedoch die JavaScript-Verarbeitung für PDFreactor aktiviert werden.
Das folgende Beispiel beinhaltet alle Voraussetzungen, damit PDFreactor ein ZUGFeRD PDF mit Hilfe der Java Bibliothek oder dem Java Wrapper erzeugen kann:
PDFreactor validiert keine Preise oder Gesamtbeträge, die über die ZUGFeRD API angegeben
wurden. Bei der Verwendung der API wird von PDFreactor erwartet, dass alle Positionen,
Steuern und Beträge richtig berechnet wurden. Ansonsten wäre das Dokument nicht valide.
Einige Properties werden jedoch validiert. Das schließt zum Großteil die Properties
ein, die als ZUGFeRD Code angegeben werden müssen, wie z.B. document-type
oder der Länder-Code. Dies schließt Codes mit ein, die über das options Objekt
gesetzt werden. Außerdem werden durch die ZUGFeRD Spezifikation angegebene Sonderfälle validiert,
wie z.B. die Elemente GrossPrice und NetPrice.
Bevor die API verwendet werden kann, müssen zunächst die beiden Elementtypen geklärt werden. Einmalige und wiederholende Elemente, beide folgen einer Baumstruktur.
Einmalige Elemente sind Blattelemente, die direkt über den Root verbunden sind.
Diese Elemente können nur einmal über die API gesetzt werden, sind jedoch die
wichtigsten Elemente. Es ist sogar möglich ein ZUGFeRD PDF nur mit einmaligen Elementen
zu erstellen. Beispiele für einmalige Elemente sind currency, um die
dokumentenweite Währung zu definieren oder document-type, um die
Art des Dokuments, z.B. Rechnung, per ZUGFeRD Code zu beschreiben.
Auch wenn wiederholende Elemente nicht benötigt werden um das ZUGFeRD PDF zu erstellen,
bieten sie die Möglichkeit mehr Informationen anzugeben. Diese Elemente können je
nach Dokument einmal oder auch mehrmals angegeben werden. Wiederholende
Elemente sind selbst nicht mit dem Root verbunden, bilden jedoch Verzweigungen an denen
wiederum Blattelemente zu finden sind. Als Beispiel für ein wiederholendes Element sind Positionen.
Diese bilden eine Verzweigung über den Pfad item.
Die Blattelemente wiederum beinhalten die Informationen wie z.B. den Name des Produkts
(item.name) oder die Menge (item.billed-quantity).
Es ist auch möglich, dass eine weitere Verzweigung für ein weiteres wiederholendes Element,
an einer bestehenden Verzweigung gebildet wird. Dies sind verschachtelte wiederholende Elemente.
Die Schachtelung wird bei der Benutzung der ZUGFeRD-Properties
ersichtlich. Es gibt zudem noch eine Einschränkung, welche Blattelemente angegeben werden
müssen. Z.B. ist die wichtigste Information einer Position der Name des Produkts (item.name)
und muss daher gesetzt werden, damit diese Position generiert wird.
Wenn möglich sollten weitere Informationen angegeben werden,
diese sind jedoch nicht verpflichtend.
Um anzugeben welches Element mit welchem Wert beschrieben werden soll, werden ZUGFeRD-Properties benötigt. Diese ZUGFeRD-Properties können zudem noch in Pfade und Properties fragmentiert werden. Auch wenn für die meisten Dokumente keine Fragmente benötigt werden, können diese bei der richtigen Benutzung hilfreich sein. Alle gültigen ZUGFeRD-Properties sind in der Property-Dokumentation zu finden.
Ein ZUGFeRD-Property besteht immer aus mindestens einem Fragment.
Durch das Teilen eines ZUGFeRD-Propertys an dem "." wird die
Baumstruktur des Propertys ersichtlich. Hierbei kann auch sofort unterschieden werden,
ob es sich bei dem ZUGFeRD-Property um ein einmaliges oder ein wiederholendes
Element handelt.
Besitzt ein ZUGFeRD-Property, wie z.B. "zugferd-profile", keinen ".",
so ist es automatisch ein Property für ein einmaliges Element.
Alle Fragmente mit Ausnahme des letzten, sind Pfade. Diese Pfade werden genutzt um einzelne oder mehrere wiederholende Elemente zu spezifizieren. Der Grund dafür ist, dass wiederholende Elemente selbst keine Werte haben können. Nur ihre Blattelemente können Werte haben. Mit Pfaden ist es somit möglich die Baumstruktur anzugeben.
Beinhaltet ein ZUGFeRD-Property mehr als einen "." so handelt es
sich um ein wiederholendes Element innerhalb eines wiederholenden Elements. Dabei
gilt es zu beachten, dass es sich hierbei um zwei Pfade handelt. Es ist nicht
erlaubt diese beiden Pfade als einen Pfad anzugeben. Stattdessen wird der erste
Pfad dazu benutzt um ein wiederholendes Element über das
ro.zugferd Objekt abzufragen. Der Zweite Pfad wird dann verwendet
um von diesem Element wiederum ein wiederholendes Element abzufragen.
Da Einmalige Elemente nur einmal im Dokument vorkommen, besitzen diese
ZUGFeRD-Properties keinen ".".
Das letzte Fragment oder das ZUGFeRD-Property persönlich, falls das ZUGFeRD-Property
keine "." beinhaltet, ist das Property. Dieses Fragment definiert das
Blattelement welches den angegebenen oder ausgelesenen Wert erhalten soll.
In den meisten Fällen werden Fragmente nicht benötigt. Ein komplexes Dokument kann
auch ohne Fragmentierung eines ZUGFeRD-Propertys in ein ZUGFeRD PDF umgewandelt werden.
Fragmente werden nur benötigt, um einen Wert auf ein bestimmtes wiederholendes Element
zu setzen. Sobald eine get Methoden des "ro.zugferd" Objekts mit dem
ersten Fragment aufgerufen wurde, um ein wiederholendes Element zu erhalten, benötigen
alle Methoden die auf diesem wiederholenden Element aufgerufen werden, das nächste
Fragment des ZUGFeRD-Propertys. Beispiel:
Diese Tabelle kann mit oder ohne Fragmente in das ZUGFeRD PDF umgewandelt werden.
Wie zu sehen ist, sind beide Wege möglich. Fragmente bringen jedoch eine gewisse Komplexität mit sich und sollten nur dann benutzt werden, wenn der Fall danach verlangt.
Auch wenn die API so einfach wie möglich gehalten werden soll, bedürfen manche Elemente und Properties mehr Aufmerksamkeit als andere. Dies liegt zum einen an der ZUGFeRD Spezifikation, zum anderen an der Implementierung in PDFreactor.
Die ZUGFeRD Spezifikation sieht hier eine uneingeschränkte Angabe von Registrierungen
pro beteiligter Partei vor. PDFreactor limitiert dies jedoch auf zwei Properties.
Im Fall des Verkäufers, wären diese seller-vatid und seller-taxid.
Die Elemente Gross- und NetPrice, werden immer zusammen erzeugt, auch wenn nur
eines davon per ZUGFeRD-Property item.gross-price-amount oder item.net-price-amount
angegeben wurde. Solange nicht das ZUGFeRD-Property item.gross-price-allowance-charge.amount
angegeben wurde, welches einen Zu- oder Abschlag definiert, sind Gross- und NetPrice gleich.
Wurde item.gross-price-allowance-charge.amount jedoch angegeben, dürfen
Gross- und NetPrice nicht mehr identisch sein. In diesem Fall würde kein ZUGFeRD PDF
generiert und eine entsprechende Fehlermeldung ausgegeben werden.
Ein Dokument kann als Referenz im ZUGFeRD PDF angegeben werden.
Dies wäre z.B. bei einer Stornierung die vorher gesendete Rechnung.
Bei der Angabe eines referenzierten Dokuments wird das options Objekt
Property benötigt um das aktuelle Datumsformat anzugeben, jedoch nicht das Property scheme.
Dieses wird von der ZUGFeRD Spezifikation auf den Wert yyyy-MM-dd'T'00:00:00 festgelegt.
Um die Art des Dokuments per ZUGFeRD Code anzugeben, wird das Property document-type
genutzt. Auch wenn es sich beim Dokument nicht um eine Handelsrechnung handelt, kann im
ZUGFeRD Profil basic nur der ZUGFeRD Code 380 angegeben werden.
Andere Dokumentenarten benötigen möglicherweise mehr Informationen, die nicht im basic
Profile angegeben werden können.
Per ZUGFeRD Spezifikation werden diese beiden ZUGFeRD-Properties benötigt um das ZUGFeRD
PDF zu generieren. Auch wenn diese benötigt werden, setzt PDFreactor diese Properties
automatisch mit dem Wert 0.00, da es möglicherweise nicht möglich ist diese
Properties immer über das PDF zu setzen. Sollten diese beiden Properties jedoch über
das PDF angegeben werden können, so sollten diese auch gesetzt werden um die Korrektheit
des ZUGFeRD PDFs zu gewährleisten.
Bei der Angabe eines ZUGFeRD-Propertys mit dem Typ Global ID, wird
im Normalfall der ZUGFeRD Code für die Organisation über das options Objekt
Property scheme gesetzt. Die einzige Ausnahme bildet hier das ZUGFeRD-Property item.global-id.
Der ZUGFeRD Code für die Organisation wird hier gesondert über das ZUGFeRD-Property
item.global-id-type gesetzt um zu verhindern, dass beim Setzen nicht erwünschte
Ergebnisse entstehen, die später mühsam korrigiert werden müssen.
Sollte das ZUGFeRD-Property mandate-reference angegeben werden, so
ist es möglich für diesen Gläubiger eine ID zu hinterlegen. Diese mandate-reference-id
wird jedoch vom Gläubiger selbst vergeben und muss genutzt werden. Das
ZUGFeRD-Property mandate-reference-id wird jedoch nicht benötigt um mandate-reference
zu generieren.
Um mit der ZUGFeRD API zu interagieren, wird das ro.zugferd Objekt
benötigt. Mit diesem Objekt ist es möglich, bestimmte Werte zu konfigurieren,
Standardwerte für wiederholende Elemente anzugeben sowie
für das Standardeingabe- und Ausgabeformat festzulegen. Außerdem können einmalige
und wiederholende Elemente gesetzt und wiederholende Elemente abgefragt werden.
Mappings werden verwendet um einen bestimmten Wert, anstelle des Werts der der Wert der einer Methode übergeben wurde, zu setzen, sofern dieser Wert identisch zum angegebenen Key ist. Dies ist vor allem dann von Interesse wenn der zu setzende Wert zwar menschenlesbar ist, von dem ZUGFeRD-Property jedoch ein ZUGFeRD Code verlangt wird. Es gilt zu beachten, dass der Key zwischen Groß- und Kleinschreibung unterscheidet und Leerzeichen berücksichtigt. Um das Mapping für einen Methodenaufruf zu deaktivieren, kann das options Objekt Property ignoreMapping verwendet werden. Ein errorHandler kann über das options Objekt angehängt werden.
Setzt das angegebene ZUGFeRD-Property auf den spezifizierten Wert. Der Wert kann mit dem options Objekt modifiziert werden.
Ruft über den angegebenen Selektor den Inhalt eines Elements des Dokuments ab und setzt diesen als Wert für das angegebenen ZUGFeRD-Property. Der Inhalt des ZUGFeRD-Elements kann mit dem options Objekt modifiziert werden.
Ruft den Textinhalt jedes Elements ab, das auf den spezifizierten Selektor zutrifft und setzt diesen als Wert für das angegebenen ZUGFeRD-Property. Dabei werden, sofern nicht vorhanden, neue wiederholende Elemente erzeugt. Diese Methode ist nicht für ZUGFeRD-Properties erlaubt, die mehrere Pfad Fragmente beinhalten. Für diese ZUGFeRD-Properties sollte die Methode setFromSelectorAll mit dem Selektor Array verwendet werden. Der Inhalt des Elements kann mit dem options Objekt modifiziert werden.
Bei der Benutzung dieser Methode kann für jedes Fragment des ZUGFeRD-Propertys ein eigener Selektor angegeben werden. Werden mehr Selektoren angegeben als Fragmente vorhanden sind, wird der Methodenzugriff terminiert. Beschreibt der Selektor ein Pfad Fragment, so werden neue wiederholende Elemente erzeugt. Die Anzahl der neu erzeugten Elemente ist abhängig von den gefundenen Dokumentelementen und der bisherigen Anzahl an Elementen mit diesem Pfad. Um nur direkte Kindelemente zu selektieren, kann vor jedem Selektor nach dem ersten ein ">" angegeben werden. Der Inhalt des ZUGFeRD-Elements kann mit dem options Objekt modifiziert werden.
Gibt das wiederholende Element mit dem spezifizierten Pfad und Index zurück. Gibt es kein wiederholendes Element mit diesem Index wird das ZUGFeRD-Element sowie alle vorhergehenden Elemente erzeugt. Ein errorHandler kann über das options Objekt angehängt werden.
Gibt ein Array aus allen wiederholenden Elementen mit dem angegebenen Pfad zurück. Gibt es kein wiederholendes Element mit dem Pfad, wird im errorHandler ein Error vom errorType 5000 geloggt. Ein errorHandler kann über das options Objekt angehängt werden. Das zurückgegebene Array ist nicht live, Werte die auf Elemente dieses Arrays gesetzt werden, werden dennoch auf die Elemente angewandt.
Elemente sind die wiederholenden Elemente, die über die ro.zugferd get Methoden zurückgegeben wurden.
Setzt das angegebene Property Fragment auf den spezifizierten Wert. Der Wert kann mit dem options Objekt modifiziert werden.
Ruft über den angegebenen Selektor den Inhalt eines Elements ab und setzt diesen als Wert für das angegebenen Property Fragment. Der Inhalt des ZUGFeRD-Elements kann mit dem options Objekt modifiziert werden.
Wird diese Methode auf einem wiederholenden Element aufgerufen, so wird das verschachtelte wiederholende Element mit dem angegebenen Pfad Fragment an dem angegebenen Index zurückgegeben. Gibt es kein wiederholendes Element an dem Index, so werden das Element, sowie alle vorhergehenden Elemente erzeugt. Ein errorHandler kann über das options Objekt angehängt werden.
Wird diese Methode auf einem wiederholenden Element aufgerufen, so wird ein
Array bestehend aus allen verschachtelte wiederholenden Elementen mit dem angegebenen
Pfad Fragment zurückgegeben.
Gibt es keine Elemente mit dem Pfad Fragment
wird im errorHandler ein error
vom errorType 5000 geloggt.
Ein errorHandler kann
über das options Objekt angehängt werden.
Das zurückgegebene Array ist nicht live, Werte die auf Elemente dieses
Arrays gesetzt werden, werden dennoch auf die Elemente angewandt.
Das "options" Objekt kann einer Methode übergeben werden, um Texte zu modifizieren
und um benötigte Informationen anzugeben. Bei ZUGFeRD-Properties vom Typ Date
oder Number wird dieses Objekt immer benötigt, es sei denn die benötigten
Informationen wurden bereits über die default
Objekt Properties inputFormat und scheme angegeben.
Wurden Informationen für das gleiche Property sowohl im options als
auch im default Objekt angegeben, so werden nur die Informationen des
options Objekts berücksichtigt.
Das inputFormat wird für ZUGFeRD-Properties von den Typen Date
und Number benötigt. Für ZUGFeRD-Properties vom Typ Date
wird das aktuelle Datumsformat als Java Pattern angegeben. Sollte es sich um ein
Property des Typs Number handeln, so muss das Dezimaltrennzeichen
angegeben werden. Das inputFormat wird nur in diesen beiden Fällen
ausgewertet und verarbeitet. Der Default Wert für ZUGFeRD-Properties des Typs
Number ist ",".
Um das Ausgabeformat eines ZUGFeRD-Propertys vom Typ Date anzugeben
wird das Property scheme benötigt. Das Format wird als einer der
von ZUGFeRD spezifizierten Codes angegeben. Eine Ausnahme stellen hierbei
ZUGFeRD-Properties des Typs Date dar. Diese benötigen kein Ausgabeformat.
Eine weitere Anwendung findet scheme bei Global IDs.
Die Codes sind in der Propertyliste unter dem jeweiligen Typ zu finden. Das
Property scheme wird nur in diesen beiden Fällen ausgewertet und
verarbeitet. Der Default Wert für ZUGFeRD-Properties des Typs
Date ist 102.
Das Property startDelimiter kürzt einen Text vom ersten
Vorkommen des Delimiters bis zum Ende des Texts, sofern kein endDelimiter angegeben wurde.
Das Property endDelimiter kürzt einen Text vom Anfang des Texts
(oder ab dem ersten startDelimiter) bis zum letzten
Vorkommen des Delimiters.
Mit Hilfe des Propertys splitDelimiter wird ein Text am angegeben
Delimiter geteilt. Über das Property splitIndex kann dann das
gewünschte Fragment ausgewählt werden.
Nachdem ein Text am splitDelimiter fragmentiert wurde, kann mit
Hilfe des Propertys splitIndex ein Fragment ausgewählt werden.
Wurde kein splitDelimiter angegeben, kann auch kein Fragment ausgewählt
werden. Das erste Fragment hat den Index 0.
Über das Property processor kann einer Methode eine eigene Funktion
übergeben werden. So können weitere Textmanipulationen anhand von bestimmten
Bedingungen durchgeführt werden. Außerdem ist es möglich die Properties
inputFormat und scheme zu setzen oder zu verändern.
Folgende read-only Properties stehen als Parameter zur Verfügung:
| Name | Typ | Beschreibung |
|---|---|---|
| rawText | String | Gibt den unverarbeiteten Text zurück. |
| text | String | Gibt den verarbeiteten Text zurück. |
| propertyName | String | Gibt den Namen des Propertys zurück, mit welchem die Methode aufgerufen wurde. |
| element | Element | Gibt das über den Selektor abgerufene Element zurück. |
| content | String | Gibt den Textinhalt des Elements, einschließlich des generierten before und after Textinhalts, zurück. |
| contentBefore | String | Gibt den generierten before Textinhalt des Elements zurück. |
| contentAfter | String | Gibt den generierten after Textinhalt des Elements zurück. |
| contentText | String | Gibt den Textinhalt des Elements zurück |
Falls ein Mapping für ein bestimmtes ZUGFeRD-Property deaktiviert werden soll,
so kann dies mit ignoreMapping erreicht werden.
Mit dem Property errorHandler ist es möglich Fehlerfälle zu erkennen
und diese zu analysieren. Außerdem können verschiedene Informationen zum aktuellen
Verarbeitungsschritt abgefragt werden. Folgende Informationen können abgefragt werden:
| Name | Typ | Beschreibung |
|---|---|---|
| methodName | String | Der Name der Methode. |
| propertyName | String | Der Name des ZUGFeRD-Propertys oder der Key beim Aufruf von
addMapping |
| value | String | Der Wert der der Methode set oder addMapping
übergeben wurde. |
| selectors | String oder [String] | Im Falle von setFromSelector der angegebene Selektor,
bzw. ein Array von Selektoren im Falle von setFromSelectorAll. |
| options | Object | Das options Objekt welches der Methode übergeben wurde. |
| message | String | Die Nachricht des Errors, der Warning oder der Info. |
| errorType | Number | Der Typ der warning oder des errors.
Bei info liegt kein Typ vor. Mehr Informationen zu den
Typen finden sich hier. |
| level | String | Der Loglevel. Folgende Levels können vorliegen:
|
| matchCount | [Number] | Das Property matchCount beinhaltet auf Level info
ein Array von Zahlen, welches angibt wie viele Elemente im Dokument
mit dem angegebenen Selektor gefunden wurden. |
Anmerkung: Wurde kein errorHandler über das Options oder
dem Default Objekt angegeben, ist es nicht möglich aktuelle Informationen abzufragen und
mögliche Fehlerfälle zu analysieren.
Mit dem default Objekt können die Properties inputFormat
und scheme auf einer globalen Ebene angegeben werden. Die Werte der
Properties werden verwendet, sofern diese nicht über das options
Objekt angegeben wurden und der Typ des ZUGFeRD-Propertys diese verlangt. Außerdem
ist es möglich für wiederholende Elemente Standardwerte anzugeben.
Über das Property inputFormat können Standardwerte für
ZUGFeRD-Properties des Typs Date sowie des Typs Number gesetzt werden.
| Name | Beschreibung |
|---|---|
| dateFormat | Angabe des Eingabeformats als Java Date Format Pattern. |
| decimalMark | Angabe eines Dezimaltrennzeichens zur Verarbeitung von
ZUGFeRD-Properties des Typs Number. Der Standardwert ist ",". |
Über das Property scheme können Standardwerte für das Ausgabeformat
von ZUGFeRD-Properties der Typen Date und Global ID gesetzt werden.
| Name | Beschreibung |
|---|---|
| dateFormat | Angabe des Ausgabeformats des Datums als ZUGFeRD Codes. Die Codeliste
ist in der Propertyliste unter dem Typ Date zu finden.
Der Standardwert ist 102. |
| globalId | Angabe der Organisation unter welcher die Global ID
registriert ist. Ein Auszug der möglichen Codes findet sich in der
Propertyliste unter dem Typ Global ID. Für die Angabe
der Organisation bei dem ZUGFeRD-Property item.global-id wird dieses
Property jedoch nicht ausgewährtet. Um den ZUGFeRD Code für die Organisation
anzugeben steht das ZUGFeRD-Property item.global-id-type
zur Verfügung.
|
Mit Hilfe des Propertys propertyValues können Standardwerte für
wiederholende Elemente gesetzt werden. Die Syntax ist wie folgt:
Das Property errorHandler ist in seiner Funktion gleich dem des
options Objekts.
Wird ein errorHandler als Standardwert angegeben so wird dieser bei
jedem Methodenaufruf, bei dem kein expliziter
errorHandler im options Objekt
angegebene wurde, benutzt.
Ein möglicher Anwendungsfall kann wie folgt aussehen:
Im Falle einer warning oder eines errors kann anhand
folgender Typen das Problem zusammengefasst werden. Eine genauere Beschreibung ist
im Property message des errorhandlers
zu finden.
| Typ | Beschreibung |
|---|---|
| 1000 | Fehler in der Verwendung der API. |
| 2000 | Der Wert oder Textinhalt eines Elements konnte nicht mit dem angegeben options Objekt verarbeitet werden. |
| 3000 | Der Wert oder Textinhalt eines Elements ist ungültig oder ungültig für dieses ZUGFeRD-Property. |
| 4000 | Der Wert oder Textinhalt eines Elements konnte nicht verarbeitet
werden. Dies tritt nur bei ZUGFeRD-Properties vom Typ Date
oder Number auf. |
| 5000 | Fehler beim get Zugriff auf wiederholende Elemente oder
wenn keine Elemente mit dem angegebenen Selektor im Dokument gefunden wurden. |