Releases

VersionDatumHinweiseKompatibilitätBemerkung
1.0.011.03.2021Erste veröffentlichte Fassungab Nuclos 4.44.1siehe Version 1
1.1.02.09.2023Aktualisierung auf XRechnung 2.3.1ab Nuclos 4.46.9
2.0.003.07.2024

Aktualisierung auf XRechnung 3.0.2

XML-Syntax CII

ZUGFeRD 2.2

ab Nuclos 4.2022.14.3

Ü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 das Format XRechnung in der Version 3.0.2 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.2 abdeckt.

Zur Erzeugung der Dateien stehen folgende Möglichkeiten zur Verfügung:

  1. Die Regel org.nuclet.xrechnung.ErzeugeERechnung, die in einem geeigneten Layout eingebunden werden kann und wie bisher (Version 1) eine XRechnung (UBL) erstellt.
  2. 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.

Dabei werden 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.

Ein Beispiel ist im angehängten Beispiel-Nuclet verfügbar.

Hinweise zu Version 2.0.0

Hinweise zur Methode public static List<XRechnung.XRechnungFile> erzeugeERechnung(Rechnungen rechnungen, boolean formatUbl, NuclosFile pdfFile):

  • rechnungen: die jeweilige Rechnung als org.nuclet.xrechnung.Rechnungen (Integrationspunkt); muss eine ID und eine Rechnungsnummer haben

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

Nuclet-Struktur

Es werden zwei Nuclets benötigt:

  • org.nuclet.xrechnung: Haupt-Nuclet zur Erzeugung von elektronischen Rechnungen
  • org.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.

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.

SchrittBeschreibungScreenshot
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üssen

  • Rechnung
  • Rechnungsdokument
  • Rechnungsempfänger (Kunde) [optional]

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 Datenquellen (Konfiguation → Datenquellen → Report & Formular), die noch an die jeweiligen Gegebenheiten angepasst werden müssen.

  • Ausgangsrechnung XRechnung
  • Ausgangsrechnung XRechnung Positionen
  • Ausgangsrechnung XRechnung Kommentare

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 ErzeugeERechnung oder eine eigene Implementierung (hier: ErzeugeBeispielERechnung) mit dem entsprechenden Businessobjekt verknüpft (Konfiguration → Server Regelmanager) und über einen Knopf (Button) im Layout (Konfiguration → Layout) eingebunden werden.

Die Regeln zur Validierung der Leitweg-ID werden automatisch mit dem Businessojekt Rechnungsempfänger verknüpft.

  

6Im Falle valider Daten werden über den Knopf die oben beschriebenen vier Dateien erzeugt und das Ergebnis in einer Meldung präsentiert.

       


 











  • No labels

2 Comments

  1. Hallo, 

    welche XML-Syntax wurde für die Implementierung der XRechnung verwendet?

    1. Hallo,

      es wurde die Universal Business Language (UBL) der OASIS in der Version 2.1 verwendet.