Seitenhistorie
Inhalt | ||
---|---|---|
|
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 wir 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 VersionD16B.
Weiterhin wird die Spezifikation ZUGFeRD in der Version 2.2 abdeckt3.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.
Hinweis | ||
---|---|---|
| ||
|
Ein Beispiel ist im angehängten angehängten Beispiel-Nuclet verfügbar.
Hinweise
zu Version 2.0.0Hinweise 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.
Hinweis |
---|
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. |
Hinweis | ||
---|---|---|
| ||
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.
Codeblock | ||
---|---|---|
| ||
<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"/> |
Hinweis |
---|
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.
Diese sollte wie folgt ersetzt werden (die mitgelieferten Schriftarten werden über den
|
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 müssenkö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 drei 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 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. |
|