Releases
Version | Datum | Hinweise | Kompatibilität | Bemerkung |
---|---|---|---|---|
1.0.0 | 11.03.2021 | Erste veröffentlichte Fassung | ab Nuclos 4.44.1 | siehe Version 1 |
1.1.0 | 2.09.2023 | Aktualisierung auf XRechnung 2.3.1 | ab Nuclos 4.46.9 | |
2.0.0 | 03.07.2024 | Aktualisierung auf XRechnung 3.0.2 XML-Syntax CII ZUGFeRD 2.2 | ab Nuclos 4.2022.14.3 | |
2.1.0 | 31.07.2024 | zusätzliche Optionen für weitere BO-Typen (z.B. Weiterbelastung) | ab Nuclos 4.2022.14.3 | |
2.1.1 | 21.08.2024 | Erweiterung um BT-30, BT-33, BT-72, BT-73, BT-74, BT-85 | ab Nuclos 4.2022.14.3 | |
2.1.2 | 13.12.2024 | Notwendige Erweiterungen für Import-Nuclet Unterstützung weiterer BT-Elemente Profilauswahl durch Setzen von BT-24 Aktualisierung auf ZUGFeRD 2.3.2 Datenquelle für Umsatzsteueraufschlüsselung (BG-23) | ab Nuclos 4.2022.41.2 |
Überblick
Das Nuclet ermöglicht die Erzeugung elektronischer Rechnungen im XML- oder PDF-Format, deren offizielle Validierung und deren Darstellung in einer HTML-Datei.
Unterstützt wird das Format XRechnung in der Version 3.0.2 (20.06.2024) in der XML-Syntax Universal Business Language (UBL) der OASIS in der Version 2.1 und der XML-Syntax Cross Industry Invoice (CII) der UN/CEFACT in der Version D16B.
Weiterhin wird die Spezifikation ZUGFeRD in der Version 2.3.2 (15.11.2024) abgedeckt.
Zur Erzeugung der Dateien stehen folgende Möglichkeiten zur Verfügung:
- Die Regel
org.nuclet.xrechnung.ErzeugeERechnung
, die in einem geeigneten Layout eingebunden werden kann und wie bisher (Version 1) eine XRechnung (UBL) erstellt. - Eine eigene Regel, die
org.nuclet.xrechnung.ErzeugeERechnung#erzeugeERechnung(org.nuclet.xrechnung.Rechnungen, boolean, org.nuclos.api.common.NuclosFile)
mit geeigeneten Parametern (siehe weiter unten) aufruft und verarbeitet. - Eine eigene Regel, die
org.nuclet.xrechnung.ErzeugeERechnung#erzeugeERechnung(org.nuclet.xrechnung.XRechnung, boolean, org.nuclos.api.common.NuclosFile)
mit geeigenetem Objekt (siehe weiter unten) aufruft und verarbeitet.
Dabei werden abhängig von der jeweiligen Konfiguration folgende Dateien erzeugt, zurückgegeben und in einem geeigneten Unterformular abgelegt.
- XML-Datei gemäß Standard XRechnung oder PDF-Datei gemäß Standard ZUGFeRD (je nach Methodenaufruf)
- HTML-Datei als Vorschau auf die erzeugten Daten
- HTML-Datei mit Ergebnissen der XML-Validierung
- Falls die Validierung der PDF-Datei nicht erfolgreich war: TXT-Datei mit Ergebnissen der PDF-Validierung
- LOG-Datei mit Ergebnissen der Rechnungserzeugung
Optional ist außerdem eine Validierung der Leitweg-ID im Nuclet enthalten.
Zur Leitweg-ID im B2B-Bereich
Wie wird die Leitweg-ID zur Adressierung von XRechnung im B2B verwendet?
Bei der Verwendung von XRechnung im B2B ist keine Leitweg-ID zur Adressierung von XRechnungen notwendig. Im Element „Buyer reference (BT-10)“ kann jeder andere geeignete Bezeichner für interne Lenkungszwecke genutzt werden. Das Element „Buyer reference (BT-10)“ ist lediglich ein Textfeld und verwendet keine Schema-Definitionen.
Ein Beispiel ist im angehängten Beispiel-Nuclet verfügbar.
Hinweise
Hinweise zur Methode public static List<XRechnung.XRechnungFile> erzeugeERechnung(Rechnungen rechnungen, boolean formatUbl, NuclosFile pdfFile)
:
rechnungen
: die jeweilige Rechnung alsorg.nuclet.xrechnung.Rechnungen
(Integrationspunkt); muss eine ID und eine Rechnungsnummer habenformatUbl
: steuert die XML-Syntax (bei false: CII)pdfFile
: vorab erzeugte PDF-Datei im Format PDF-A1, in das die XML-Datei eingebettet werden soll - falls angegeben muss das Format CII gewählt werden- Rückgabewert: Liste der erzeugten Dateien inkl. Validierungsergebnissen
Hinweise zur Methode public static List<XRechnung.XRechnungFile> erzeugeERechnung(XRechnung xRechnung, boolean formatUbl, NuclosFile pdfFile)
:
xRechnung
: Java-Objekt, das die entsprechende Konfiguration (siehe Tabelle) für die Erstellung der elektronischen Rechnung vorgibtformatUbl
: wie obenpdfFile
: wie oben- Rückgabewert: wie oben
Methode | Hinweis | Standardwert |
---|---|---|
setFileNameBase(String fileNameBase) | Basisname für erzeugte Dateien | Wird automatisch aus der Rechnungsnr. bzw. Rechnungs-ID ohne Sonderzeichen erzeugt, bspw. "123456" |
setDsClassMain(Class<? extends Datasource> dsClassMain) | Hauptdatenquelle für Rechnungen | AusgangsrechnungXRechnungDS.class |
setDsClassPosition(Class<? extends Datasource> dsClassPosition) | Datenquelle für Rechnungspositionen | AusgangsrechnungXRechnungPositionenDS.class |
setDsClassComment(Class<? extends Datasource> dsClassComment) | Datenquelle für Rechnungskommentare | AusgangsrechnungXRechnungKommentareDS.class |
setDsClassVatBreakdown(Class<? extends Datasource> dsClassVatBreakdown) | Datenquelle für Umsatzsteueraufschlüsselung | AusgangsrechnungXRechnungUmsatzsteueraufschluesselungDS.class (dynamisch wegen Abwärtskompatibilität) |
setXRechnungDocument(XRechnungDocument<? extends Modifiable<Long>> xRechnungDocument) | BO für Rechnungsdokumente | Gemäß Integrationspunkt-Konfiguration (Rechnungsdokumente) |
setXRechnungGeneralDocument() | Falls aufgerufen, wird nuclos_generalsearchdocument als BO für Rechnungsdokumente verwendet (nur mit Statusmodell möglich) | Nicht gesetzt |
setValidateXml(boolean validateXml) | Gibt an, ob die erzeugte xml-Datei validiert werden soll | true |
setGenerateHtml(boolean generateHtml) | Gibt an, ob die html-Ansicht erstellt werden soll | true |
setxRechnungPrefix(String xRechnungPrefix) | Präfix für XRechnungs-Dateien | "XRechnung_" |
setZugferdPrefix(String zugferdPrefix) | Präfix für ZUGFeRD-Dateien | "ZUGFeRD_" |
setAddDefaultNamespaceURI(boolean addDefaultNamespaceURI) | Gibt an, ob die Hauptelemente der XML-Struktur NameSpace-Präfixe haben | false (Präfixe werden genannt) |
| Erlaubt die Übergabe weiterer Parameter an die Datenquellen | Ein Eintrag "intid" mit INTID der Rechnung |
setZfPdfMetaFilename(String zfPdfMetaFilename) | PDF-Metadaten für ZUGFeRD | "xrechnung.xml" |
setZfPdfMetaDescription(String zfPdfMetaDescription) | "ZUGFeRD XML invoice" | |
setZfPdfMetaNamespaceURI(String zfPdfMetaNamespaceURI) | "urn:zugferd:pdfa:CrossIndustryDocument:invoice:2p0#" | |
setZfPdfMetaNamespacePrefix(String zfPdfMetaNamespacePrefix) | "zf" | |
setZfPdfMetaConformanceLevel(String zfPdfMetaConformanceLevel) | "EN 16931" | |
setZfPdfMetaDocumentType(String zfPdfMetaDocumentType) | "INVOICE" | |
setZfPdfMetaVersion(String zfPdfMetaVersion) | "2p0" |
Nuclet-Struktur
Es werden zwei Nuclets benötigt:
org.nuclet.xrechnung
: Haupt-Nuclet zur Erzeugung von elektronischen Rechnungenorg.nuclet.xrechnung.datenquellen
: Nuclet zur Definition der Datenquellen, die je Projekt anpasst werden sollten. Dieses Nuclet wird von ersterem benötigt und sollte einmalig als Vorlage importiert werden.
Sollte beim Nuclet-Import bereits eine vorherige Version 1 mit projektspezifisch angepassten Datenquellen im Zielsystem vorhanden sein, müssen diese vorab gesichert und im Anschluss an den Import erneut geändert werden.
Für zukünftige Aktualisierungen genügt dann der Import des Haupt-Nuclets, bei dem die Datenquellen unverändert bleiben.
Version 2.1.2
In der Version 2.1.2 ist eine (optionale) Datenquelle für die Umsatzsteueraufschlüsselung ("Ausgangsrechnung XRechnung Umsatzsteueraufschlüsselung") hinzugekommen.
Bei Bedarf kann diese z.B. per Import mit vorheriger Sicherung der bisherigen Datenquellen-Inhalte hinzugefügt werden.
PDF-Erzeugung über ein Formular für ZUGFeRD
Das in Nuclos integrierte JasperReports ermöglicht die Erzeugung von PDF-Dateien im Format PDF-A1. Dafür müssen folgende Einstellungen in der Vorlage vorgenommen werden - Schriftart und ICC-Profil sind bereits im Haupt-Nuclet enthalten.
<property name="net.sf.jasperreports.export.pdfa.conformance" value="pdfa1a" /> <property name="net.sf.jasperreports.export.pdfa.icc.profile.path" value="org/xre/icc/sRGB2014.icc" /> <style name="default" isDefault="true" fontName="xreLibSans"/>
Beim Erstellen der Jasper-Vorlage sollte darauf geachtet werden, dass keine Schriftarten vorgegeben werden, die nicht eingebettet werden können.
So führt beispielweise folgende Angabe zu einem Fehler bei der Erzeugung von PDF-Dateien im Format PDF-A1.
<font size="10" isBold="true" pdfFontName="Helvetica-Bold"/>
Diese sollte wie folgt ersetzt werden (die mitgelieferten Schriftarten werden über den default
-Stil automatisch eingebettet).
<font size="10" isBold="true"/>
Integration
Die Integration nach erfolgtem Nucletimport (siehe Nuclet Import) ist wie folgt vorzunehmen.
Schritt | Beschreibung | Screenshot |
---|---|---|
1 | Nach Import beider Nuclets muss die Serverinstanz neu gestartet werden, da das Haupt-Nuclet eigene Extensions enthält. | |
2 | Es werden drei Businessobjekte benötigt, die unter Konfiguration → Integrationspunkt eingebunden werden können
| |
3 | Außerdem muss es noch ein Businessobjekt für die Rechnungspositionen geben, dieses wird aber nicht für die Integrationspunkte benötigt. | |
4 | Das zweite Nuclet enthält außerdem vier Datenquellen (Konfiguation → Datenquellen → Report & Formular), die noch an die jeweiligen Gegebenheiten angepasst werden müssen.
Diese liefern die eigentlichen Daten zur Erzeugung der elektronischen Rechnung. Ein Beispiel ist im angehängten Beispiel-Nuclet verfügbar. Die Zuordnung der Datenfelder zu den Inhalten der elektronischen Rechnung erfolgt gemäß Standard XRechnung, es wird jedoch nur ein Teil der verfügbaren Felder unterstützt (siehe Datenquellen bzw. Testfallgruppe_01.xlsx). | |
5 | Danach kann die Regel Die Regeln zur Validierung der Leitweg-ID werden automatisch mit dem Businessojekt Rechnungsempfänger verknüpft. |
|
6 | Im Falle valider Daten werden über den Knopf die oben beschriebenen vier Dateien erzeugt und das Ergebnis in einer Meldung präsentiert. |
|
2 Kommentare
Matthias Köper sagt:
Hallo,
welche XML-Syntax wurde für die Implementierung der XRechnung verwendet?
Konstantin Röhl sagt:
Hallo,
es wurde die Universal Business Language (UBL) der OASIS in der Version 2.1 verwendet.