diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/VisualizationTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/VisualizationTest.java
index 416eed72..a59199f4 100644
--- a/library/src/test/java/org/mustangproject/ZUGFeRD/VisualizationTest.java
+++ b/library/src/test/java/org/mustangproject/ZUGFeRD/VisualizationTest.java
@@ -1,33 +1,34 @@
-
-/** **********************************************************************
- *
+/**
+ * *********************************************************************
+ *
* Copyright 2019 Jochen Staerk
- *
+ *
* Use is subject to license terms.
- *
+ *
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy
* of the License at http://www.apache.org/licenses/LICENSE-2.0.
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *
+ *
* See the License for the specific language governing permissions and
* limitations under the License.
- *
- *********************************************************************** */
+ *
+ * **********************************************************************
+ */
package org.mustangproject.ZUGFeRD;
-import org.apache.commons.io.IOUtils;
import org.junit.FixMethodOrder;
import org.junit.runners.MethodSorters;
import org.mustangproject.util.ByteArraySearcher;
import org.xml.sax.SAXException;
import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.*;
-import java.io.*;
+import javax.xml.transform.TransformerException;
+import java.io.File;
+import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
@@ -51,31 +52,83 @@ public class VisualizationTest extends ResourceCase {
/* remove file endings so that tests can also pass after checking
out from git with arbitrary options (which may include CSRF changes)
*/
- result = zvi.visualize(CIIinputFile.getAbsolutePath(),ZUGFeRDVisualizer.Language.FR).replace("\r","").replace("\n","");
+ result = zvi.visualize(CIIinputFile.getAbsolutePath(), ZUGFeRDVisualizer.Language.FR)
+ .replace("\r", "")
+ .replace("\n", "")
+ .replace("\t", "")
+ .replace(" ", "");
- File expectedResult=getResourceAsFile("factur-x-vis.fr.html");
- expected = new String(Files.readAllBytes(expectedResult.toPath()), StandardCharsets.UTF_8).replace("\r","").replace("\n","");
+ File expectedResult = getResourceAsFile("factur-x-vis.fr.html");
+ expected = new String(Files.readAllBytes(expectedResult.toPath()), StandardCharsets.UTF_8)
+ .replace("\r", "")
+ .replace("\n", "")
+ .replace("\t", "")
+ .replace(" ", "");
// remove linebreaks as well...
} catch (UnsupportedOperationException e) {
- fail("UnsupportedOperationException should not happen: "+e.getMessage());
+ fail("UnsupportedOperationException should not happen: " + e.getMessage());
} catch (IllegalArgumentException e) {
- fail("IllegalArgumentException should not happen: "+e.getMessage());
+ fail("IllegalArgumentException should not happen: " + e.getMessage());
} catch (TransformerException e) {
- fail("TransformerException should not happen: "+e.getMessage());
+ fail("TransformerException should not happen: " + e.getMessage());
} catch (IOException e) {
- fail("IOException should not happen: "+e.getMessage());
+ fail("IOException should not happen: " + e.getMessage());
} catch (ParserConfigurationException e) {
- fail("ParserConfigurationException should not happen: "+e.getMessage());
- } catch (SAXException e) {
- fail("SAXException should not happen: "+e.getMessage());
- }
+ fail("ParserConfigurationException should not happen: " + e.getMessage());
+ } catch (SAXException e) {
+ fail("SAXException should not happen: " + e.getMessage());
+ }
- assertNotNull(result);
+ assertNotNull(result);
// Reading ZUGFeRD
assertEquals(expected, result);
}
+
+ public void testCIIVisualizationExtended() {
+
+ // the writing part
+ String sourceFilename = "factur-x-extended.xml";
+ File CIIinputFile = getResourceAsFile(sourceFilename);
+
+ String expected = null;
+ String result = null;
+ try {
+ ZUGFeRDVisualizer zvi = new ZUGFeRDVisualizer();
+ /* remove file endings so that tests can also pass after checking
+ out from git with arbitrary options (which may include CSRF changes)
+ */
+ result = zvi.visualize(CIIinputFile.getAbsolutePath(), ZUGFeRDVisualizer.Language.DE).replace("\r", "").replace("\n", "")
+ .replace("\t", "")
+ .replace(" ", "");
+
+ File expectedResult = getResourceAsFile("factur-x-vis-extended.de.html");
+ expected = new String(Files.readAllBytes(expectedResult.toPath()), StandardCharsets.UTF_8).replace("\r", "").replace("\n", "")
+ .replace("\t", "")
+ .replace(" ", "");
+ // remove linebreaks as well...
+
+ } catch (UnsupportedOperationException e) {
+ fail("UnsupportedOperationException should not happen: " + e.getMessage());
+ } catch (IllegalArgumentException e) {
+ fail("IllegalArgumentException should not happen: " + e.getMessage());
+ } catch (TransformerException e) {
+ fail("TransformerException should not happen: " + e.getMessage());
+ } catch (IOException e) {
+ fail("IOException should not happen: " + e.getMessage());
+ } catch (ParserConfigurationException e) {
+ fail("ParserConfigurationException should not happen: " + e.getMessage());
+ } catch (SAXException e) {
+ fail("SAXException should not happen: " + e.getMessage());
+ }
+
+
+ assertNotNull(result);
+ // Reading ZUGFeRD
+ assertEquals(expected, result);
+ }
+
public void testUBLCreditNoteVisualizationBasic() {
// the writing part
@@ -88,31 +141,33 @@ public class VisualizationTest extends ResourceCase {
/* remove file endings so that tests can also pass after checking
out from git with arbitrary options (which may include CSRF changes)
*/
- result = zvi.visualize(UBLinputFile.getAbsolutePath(),ZUGFeRDVisualizer.Language.EN).replace("\r","").replace("\n","").replace(" ","").replace("\t","");
+ result = zvi.visualize(UBLinputFile.getAbsolutePath(), ZUGFeRDVisualizer.Language.EN).replace("\r", "").replace("\n", "").replace("\t", "").replace(" ", "");
- File expectedResult=getResourceAsFile("factur-x-vis-ubl-creditnote.en.html");
- expected = new String(Files.readAllBytes(expectedResult.toPath()), StandardCharsets.UTF_8).replace("\r","").replace("\n","").replace(" ","").replace("\t","");
+ File expectedResult = getResourceAsFile("factur-x-vis-ubl-creditnote.en.html");
+ expected = new String(Files.readAllBytes(expectedResult.toPath()), StandardCharsets.UTF_8).replace("\r", "").replace("\n", "").replace("\t", "").replace(" ", "");
// remove linebreaks as well...
} catch (UnsupportedOperationException e) {
- fail("UnsupportedOperationException should not happen: "+e.getMessage());
+ fail("UnsupportedOperationException should not happen: " + e.getMessage());
} catch (IllegalArgumentException e) {
- fail("IllegalArgumentException should not happen: "+e.getMessage());
+ fail("IllegalArgumentException should not happen: " + e.getMessage());
} catch (TransformerException e) {
- fail("TransformerException should not happen: "+e.getMessage());
+ fail("TransformerException should not happen: " + e.getMessage());
} catch (IOException e) {
- fail("IOException should not happen: "+e.getMessage());
+ fail("IOException should not happen: " + e.getMessage());
} catch (ParserConfigurationException e) {
- fail("ParserConfigurationException should not happen: "+e.getMessage());
- } catch (SAXException e) {
- fail("SAXException should not happen: "+e.getMessage());
+ fail("ParserConfigurationException should not happen: " + e.getMessage());
+ } catch (SAXException e) {
+ fail("SAXException should not happen: " + e.getMessage());
}
- assertNotNull(result);
+ assertNotNull(result);
// Reading ZUGFeRD
assertEquals(expected, result);
}
+
+
public void testUBLVisualizationBasic() {
// the writing part
@@ -125,28 +180,32 @@ public class VisualizationTest extends ResourceCase {
/* remove file endings so that tests can also pass after checking
out from git with arbitrary options (which may include CSRF changes)
*/
- result = zvi.visualize(UBLinputFile.getAbsolutePath(),ZUGFeRDVisualizer.Language.EN).replace("\r","").replace("\n","");
+ result = zvi.visualize(UBLinputFile.getAbsolutePath(), ZUGFeRDVisualizer.Language.EN).replace("\r", "").replace("\n", "")
+ .replace("\t", "")
+ .replace(" ", "");
- File expectedResult=getResourceAsFile("factur-x-vis-ubl.en.html");
- expected = new String(Files.readAllBytes(expectedResult.toPath()), StandardCharsets.UTF_8).replace("\r","").replace("\n","");
+ File expectedResult = getResourceAsFile("factur-x-vis-ubl.en.html");
+ expected = new String(Files.readAllBytes(expectedResult.toPath()), StandardCharsets.UTF_8).replace("\r", "").replace("\n", "")
+ .replace("\t", "")
+ .replace(" ", "");
// remove linebreaks as well...
} catch (UnsupportedOperationException e) {
- fail("UnsupportedOperationException should not happen: "+e.getMessage());
+ fail("UnsupportedOperationException should not happen: " + e.getMessage());
} catch (IllegalArgumentException e) {
- fail("IllegalArgumentException should not happen: "+e.getMessage());
+ fail("IllegalArgumentException should not happen: " + e.getMessage());
} catch (TransformerException e) {
- fail("TransformerException should not happen: "+e.getMessage());
+ fail("TransformerException should not happen: " + e.getMessage());
} catch (IOException e) {
- fail("IOException should not happen: "+e.getMessage());
+ fail("IOException should not happen: " + e.getMessage());
} catch (ParserConfigurationException e) {
- fail("ParserConfigurationException should not happen: "+e.getMessage());
- } catch (SAXException e) {
- fail("SAXException should not happen: "+e.getMessage());
- }
+ fail("ParserConfigurationException should not happen: " + e.getMessage());
+ } catch (SAXException e) {
+ fail("SAXException should not happen: " + e.getMessage());
+ }
- assertNotNull(result);
+ assertNotNull(result);
// Reading ZUGFeRD
assertEquals(expected, result);
}
@@ -163,9 +222,9 @@ public class VisualizationTest extends ResourceCase {
ZUGFeRDVisualizer zvi = new ZUGFeRDVisualizer();
zvi.toPDF(CIIinputFile.getAbsolutePath(), TARGET_PDF_CII);
} catch (UnsupportedOperationException e) {
- fail("UnsupportedOperationException should not happen: "+e.getMessage());
+ fail("UnsupportedOperationException should not happen: " + e.getMessage());
} catch (IllegalArgumentException e) {
- fail("IllegalArgumentException should not happen: "+e.getMessage());
+ fail("IllegalArgumentException should not happen: " + e.getMessage());
}
try {
@@ -188,9 +247,9 @@ public class VisualizationTest extends ResourceCase {
ZUGFeRDVisualizer zvi = new ZUGFeRDVisualizer();
zvi.toPDF(UBLinputFile.getAbsolutePath(), TARGET_PDF_UBL);
} catch (UnsupportedOperationException e) {
- fail("UnsupportedOperationException should not happen: "+e.getMessage());
+ fail("UnsupportedOperationException should not happen: " + e.getMessage());
} catch (IllegalArgumentException e) {
- fail("IllegalArgumentException should not happen: "+e.getMessage());
+ fail("IllegalArgumentException should not happen: " + e.getMessage());
}
@@ -214,9 +273,9 @@ public class VisualizationTest extends ResourceCase {
ZUGFeRDVisualizer zvi = new ZUGFeRDVisualizer();
zvi.toPDF(UBLinputFile.getAbsolutePath(), TARGET_PDF_UBL);
} catch (UnsupportedOperationException e) {
- fail("UnsupportedOperationException should not happen: "+e.getMessage());
+ fail("UnsupportedOperationException should not happen: " + e.getMessage());
} catch (IllegalArgumentException e) {
- fail("IllegalArgumentException should not happen: "+e.getMessage());
+ fail("IllegalArgumentException should not happen: " + e.getMessage());
}
diff --git a/library/src/test/resources/factur-x-extended.xml b/library/src/test/resources/factur-x-extended.xml
new file mode 100644
index 00000000..cfb77358
--- /dev/null
+++ b/library/src/test/resources/factur-x-extended.xml
@@ -0,0 +1,427 @@
+
+
+
+
+
+
+
+
+
+ true
+
+
+ urn:cen.eu:en16931:2017#conformant#urn:factur-x.eu:1p0:extended
+
+
+
+ KR87654321012
+ KOSTENRECHNUNG
+ 380
+
+ 20241115
+
+
+ ST3
+ Es bestehen Rabatt- oder Bonusvereinbarungen.
+ AAK
+
+
+ EEV
+ Der Verkäufer bleibt Eigentümer der Waren bis zur vollständigen Erfüllung der Kaufpreisforderung.
+ AAJ
+
+
+ MUSTERLIEFERANT GMBH
+BAHNHOFSTRASSE 99
+99199 MUSTERHAUSEN
+Geschäftsführung:
+Max Mustermann
+USt-IdNr: DE123456789
+Telefon: +49 932 431 0
+www.musterlieferant.de
+HRB Nr. 372876
+Amtsgericht Musterstadt
+GLN 4304171000002
+
+ REG
+
+
+
+
+
+ 1
+
+
+ 4123456000014
+ WA997
+ Wirkarbeit HT
+
+ Zählpunkt
+ DE0001346484600000000000000100038
+
+
+
+
+ 0.0520
+
+
+ 0.0520
+
+
+
+ 1000.0000
+
+
+
+ VAT
+ S
+ 19.00
+
+
+ 52.00
+
+
+
+
+
+ 2
+
+
+ 4123456000021
+ ÖST250
+ Ökosteuer Lieferant
+
+
+
+ 0.0205
+
+
+ 0.0205
+
+
+
+ 1000.0000
+
+
+
+ VAT
+ S
+ 19.00
+
+
+ 20.50
+
+
+
+
+
+ 3
+
+
+ 4260331811362
+ Kommissionierer 1250032 D. Muster
+ Besteller: Hr. Mayer, Personalnr. 4488
+
+
+
+ 15.0000
+
+
+ false
+
+ 4.50
+ Artikelrabatt 1
+
+
+
+ 10.5000
+
+
+
+ 27.5000
+
+
+
+ VAT
+ S
+ 19.00
+
+
+ 288.75
+
+
+
+
+
+ 4
+
+
+ 2001015001325
+ FB05
+ FALTENBEUTEL 16x6x28 CM
+
+
+
+ 0.0105
+
+
+ 0.0105
+
+
+
+ 3500.0000
+
+
+
+ VAT
+ S
+ 19.00
+
+
+ 36.75
+
+
+
+
+
+ 5
+
+
+ 4123456000038
+ KOP05
+ Kopierpapier A4
+ Zählerstand von-bis: 543210 - 544420
+
+ Zähler-Nr.
+ MG-X79318
+
+
+
+
+ 0.0100
+
+
+ 0.0100
+
+
+
+ 1210.0000
+
+
+
+ VAT
+ S
+ 19.00
+
+
+ 12.10
+
+
+
+
+
+ 549910
+ 4333741000005
+ MUSTERLIEFERANT GMBH
+
+
+ +49 932 431 500
+
+
+ max.mustermann@musterlieferant.de
+
+
+
+ 99199
+ BAHNHOFSTRASSE 99
+ MUSTERHAUSEN
+ DE
+
+
+ 201/113/40209
+
+
+
+ 339420
+ 4304171000002
+ MUSTER-KUNDE GMBH
+
+ 40235
+ KUNDENWEG 88
+ DUESSELDORF
+ DE
+
+
+
+ A777123
+ 130
+
+
+
+
+ 4304171088093
+ MUSTER-MARKT
+
+ 7322
+
+
+ 31157
+ HAUPTSTRASSE 44
+ SARSTEDT
+ DE
+
+
+
+
+ 20241030
+
+
+
+ L87654321012
+
+
+
+ EUR
+
+ 339420
+ 4304171000002
+ MUSTER-KUNDE GMBH
+
+ 40235
+ KUNDENWEG 88
+ DUESSELDORF
+ DE
+
+
+
+ 76.67
+ VAT
+ 403.55
+ 410.10
+ -6.55
+ S
+ 19.00
+
+
+
+ false
+
+ 410.10
+ 21.55
+ Sonderrabatt
+
+ VAT
+ S
+ 19.00
+
+
+
+ Transportkosten: Frachbetrag
+ 15.00
+
+ VAT
+ S
+ 19.00
+
+
+
+ Skontovereinbarung: 2% bei Zahlung innerhalb 10 Tagen nach Rechnungsdatum
+
+ 10
+ 2.00
+
+
+
+ 410.10
+ 15.00
+ 21.55
+ 403.55
+ 76.67
+ 480.22
+ 0.00
+ 480.22
+
+
+
+
diff --git a/library/src/test/resources/factur-x-vis-extended.de.html b/library/src/test/resources/factur-x-vis-extended.de.html
new file mode 100644
index 00000000..bec60374
--- /dev/null
+++ b/library/src/test/resources/factur-x-vis-extended.de.html
@@ -0,0 +1,2419 @@
+
+
+
+
+
XRechnung
+
+
+
+
+
+
+
+
+
Wir übernehmen keine Haftung für die Richtigkeit der Daten.
+
+
+
+
Informationen zum Käufer
+
+
+
+
Name:
+
MUSTER-KUNDE GMBH
+
+
+
Straße / Haus-Nr.:
+
KUNDENWEG 88
+
+
+
+
+
+
+
+
Land:
+
DE (Deutschland)
+
+
+
Kennung / Kunden-Nr.:
+
4304171000002
+
+
+
Schema der Kennung:
+
0088 (EAN
+ Location Code)
+
+
+
+
+
+
+
+
+
+
Informationen zum Verkäufer
+
+
+
+
Firmenname:
+
MUSTERLIEFERANT GMBH
+
+
+
Straße / Haus-Nr.:
+
BAHNHOFSTRASSE 99
+
+
+
+
+
+
+
+
Ländercode:
+
DE (Deutschland)
+
+
+
Kennung:
+
4333741000005
+
+
+
Schema der Kennung:
+
0088 (EAN
+ Location Code)
+
+
+
+
+
Telefon:
+
+49 932 431 500
+
+
+
E-Mail-Adresse:
+
max.mustermann@musterlieferant.de
+
+
+
+
+
+
+
+
+
+
Rechnungsdaten
+
+
+
+
+
Rechnungsnummer:
+
KR87654321012
+
+
+
Rechnungsdatum:
+
15.11.2024
+
+
+
Rechnungsart:
+
380 (Commercial invoice)
+
+
+
+
Abrechnungszeitraum:
+
+
+
+
+
+
Vorausgegangene Rechnungen:
+
+
+
+
+
+
+
+
+
Gesamtbeträge der Rechnung
+
+
+
Summe aller Positionen
+
netto
+
410,10
+
+
+
Summe Nachlässe
+
netto
+
21,55
+
+
+
Summe Zuschläge
+
netto
+
+ 15,00
+
+
+
+
Gesamtsumme
+
netto
+
403,55
+
+
+
Summe Umsatzsteuer
+
+
+
+
+
Summe Umsatzsteuer in
+ Abrechnungswährung
+
+
+
+ 76,67
+
+
+
+
Gesamtsumme
+
brutto
+
480,22
+
+
+
Gezahlter Betrag
+
brutto
+
0,00
+
+
+
Rundungsbetrag
+
brutto
+
+
+
+
Fälliger Betrag
+
brutto
+
480,22
+
+
+
+
+
+
+
+
+
+
Aufschlüsselung der Umsatzsteuer auf Ebene der
+ Rechnung
+
+
+
+
Umsatzsteuerkategorie: S (Standard rate)
+
+
+
+
+
+
Gesamtsumme
+
netto
+
403,55
+
+
+
Umsatzsteuersatz
+
+
19.00%
+
+
+
Umsatzsteuerbetrag
+
+
76,67
+
+
+
+
Befreiungsgrund:
+
Kennung für den Befreiungsgrund:
+
+
+
+
+
+
+
+
+
Nachlass auf Ebene der Rechnung
+
+
+
Umsatzsteuerkategorie des Nachlasses: S (Standard rate)
+
+
+
+
+
Grundbetrag
+
netto
+
410,10
+
+
+
+
Nachlass
+
netto
+
21,55
+
+
+
Umsatzsteuersatz des Nachlasses
+
+
19.00
+
+
+
+
Grund für den Nachlass: Sonderrabatt
+
+
Document level allowance reason code:
+
+
+
+
+
+
+
+
+
+
Versandkosten
+
+
+
Umsatzsteuerkategorie der Versandkosten: S (Standard rate)
+
+
+
+
+
Betrag
+
netto
+
15,00
+
+
+
Umsatzsteuersatz der Versandkosten
+
+
19.00
+
+
+
+
Versandkostenbeschreibung: Transportkosten: Frachbetrag
+
+
+
+
+
+
+
+
+
+
+
Lastschrift
+
+
+
Mandatsreferenznr.:
+
+
+
+
+
+
+
+
+
+
+
+
+
Bemerkung zur Rechnung
+
+
+
Betreff:
+
AAK (Price conditions)
+
+
+
Bemerkung:
+
Es bestehen Rabatt- oder
+ Bonusvereinbarungen.
+
+
+
+
+
+
Bemerkung zur Rechnung
+
+
+
Betreff:
+
AAJ (Additional conditions of
+ sale/purchase)
+
+
+
+
Bemerkung:
+
Der Verkäufer bleibt Eigentümer der
+ Waren bis zur vollständigen Erfüllung der Kaufpreisforderung.
+
+
+
+
+
+
Bemerkung zur Rechnung
+
+
+
Betreff:
+
REG (Regulatory information)
+
+
+
Bemerkung:
+
MUSTERLIEFERANT GMBH BAHNHOFSTRASSE
+ 99 99199 MUSTERHAUSEN Geschäftsführung: Max Mustermann USt-IdNr: DE123456789
+ Telefon: +49 932 431 0 www.musterlieferant.de HRB Nr. 372876 Amtsgericht Musterstadt
+ GLN 4304171000002
+
+
+
+
+
+
+
+
+
Wir übernehmen keine Haftung für die Richtigkeit der Daten.
+
+
+
+
Position1
+
+
+
+
+
Schema der Objektkennung:
+
+
+
+
Nummer der Auftragsposition:
+
+
+
+
Kontierungshinweis /Kostenstelle:
+
+
+
Abrechnungszeitraum:
+
+
+
+
+
+
Preiseinzelheiten
+
+
+
+
Einheit
+
KWH (kilowatt hour)
+
+
+
Preis pro Einheit (netto)
+
0,05
+
+
+
Gesamtpreis (netto)
+
52,00
+
+
+
+
+
+
Listenpreis (netto):
+
0,05
+
+
+
Anzahl der Einheit:
+
+
+
+
Code der Maßeinheit:
+
+
+
+
Umsatzsteuer:
+
S (Standard rate)
+
+
+
Umsatzsteuersatz in %:
+
19%
+
+
+
+
+
+
+
+
+
Nachlässe auf Ebene der
+ Rechnungsposition
+
+
+
+
Zuschläge auf Ebene der
+ Rechnungsposition
+
+
+
+
+
+
+
+
Artikelinformationen
+
+
+
+
+
+
Bezeichnung:
+
Wirkarbeit HT
+
+
+
+
+
Artikelnummer:
+
WA997
+
+
+
Kunden-Material-Nr.:
+
+
+
Eigenschaften des Artikels:
+
+
Zählpunkt
+
+ DE0001346484600000000000000100038
+
+
+
+
+
+
+
+
+
Artikelkennung (EAN):
+
4123456000014
+
+
+
Schema der Artikelkennung:
+
+ 0088 (EAN Location Code)
+
+
+
+
Code der Artikelklassifizierung:
+
+
+
+
Kennung zur Bildung des Schemas:
+
+
+
+
Version zur Bildung des Schemas:
+
+
+
+
Code des Herkunftslandes:
+
+
+
+
+
+
+
+
+
+
+
+
+
Position2
+
+
+
+
+
Schema der Objektkennung:
+
+
+
+
Nummer der Auftragsposition:
+
+
+
+
Kontierungshinweis /Kostenstelle:
+
+
+
Abrechnungszeitraum:
+
+
+
+
+
+
Preiseinzelheiten
+
+
+
+
Einheit
+
KWH (kilowatt hour)
+
+
+
Preis pro Einheit (netto)
+
0,02
+
+
+
Gesamtpreis (netto)
+
20,50
+
+
+
+
+
+
Listenpreis (netto):
+
0,02
+
+
+
Anzahl der Einheit:
+
+
+
+
Code der Maßeinheit:
+
+
+
+
Umsatzsteuer:
+
S (Standard rate)
+
+
+
Umsatzsteuersatz in %:
+
19%
+
+
+
+
+
+
+
+
+
Nachlässe auf Ebene der
+ Rechnungsposition
+
+
+
+
Zuschläge auf Ebene der
+ Rechnungsposition
+
+
+
+
+
+
+
+
Artikelinformationen
+
+
+
+
+
+
Bezeichnung:
+
Ökosteuer
+ Lieferant
+
+
+
+
+
Artikelnummer:
+
ÖST250
+
+
+
Kunden-Material-Nr.:
+
+
+
Eigenschaften des Artikels:
+
+
+
+
+
+
Artikelkennung (EAN):
+
4123456000021
+
+
+
Schema der Artikelkennung:
+
+ 0088 (EAN Location Code)
+
+
+
+
Code der Artikelklassifizierung:
+
+
+
+
Kennung zur Bildung des Schemas:
+
+
+
+
Version zur Bildung des Schemas:
+
+
+
+
Code des Herkunftslandes:
+
+
+
+
+
+
+
+
+
+
+
+
+
Position3
+
+
+
+
+
Schema der Objektkennung:
+
+
+
+
Nummer der Auftragsposition:
+
+
+
+
Kontierungshinweis /Kostenstelle:
+
+
+
Abrechnungszeitraum:
+
+
+
+
+
+
Preiseinzelheiten
+
+
+
+
+
Preis pro Einheit (netto)
+
10,50
+
+
+
Gesamtpreis (netto)
+
288,75
+
+
+
+
+
Rabatt (netto):
+
4,50
+
+
+
Listenpreis (netto):
+
15,00
+
+
+
Anzahl der Einheit:
+
+
+
+
Code der Maßeinheit:
+
+
+
+
Umsatzsteuer:
+
S (Standard rate)
+
+
+
Umsatzsteuersatz in %:
+
19%
+
+
+
+
+
+
+
+
+
Nachlässe auf Ebene der
+ Rechnungsposition
+
+
+
+
Zuschläge auf Ebene der
+ Rechnungsposition
+
+
+
+
+
+
+
+
Artikelinformationen
+
+
+
+
+
+
Bezeichnung:
+
Kommissionierer
+ 1250032 D. Muster
+
+
+
+
Beschreibung:
+
Besteller: Hr. Mayer,
+ Personalnr. 4488
+
+
+
+
+
Kunden-Material-Nr.:
+
+
+
Eigenschaften des Artikels:
+
+
+
+
+
+
Artikelkennung (EAN):
+
4260331811362
+
+
+
Schema der Artikelkennung:
+
+ 0088 (EAN Location Code)
+
+
+
+
Code der Artikelklassifizierung:
+
+
+
+
Kennung zur Bildung des Schemas:
+
+
+
+
Version zur Bildung des Schemas:
+
+
+
+
Code des Herkunftslandes:
+
+
+
+
+
+
+
+
+
+
+
+
+
Position4
+
+
+
+
+
Schema der Objektkennung:
+
+
+
+
Nummer der Auftragsposition:
+
+
+
+
Kontierungshinweis /Kostenstelle:
+
+
+
Abrechnungszeitraum:
+
+
+
+
+
+
Preiseinzelheiten
+
+
+
+
Einheit
+
H87 (piece)
+
+
+
Preis pro Einheit (netto)
+
0,01
+
+
+
Gesamtpreis (netto)
+
36,75
+
+
+
+
+
+
Listenpreis (netto):
+
0,01
+
+
+
Anzahl der Einheit:
+
+
+
+
Code der Maßeinheit:
+
+
+
+
Umsatzsteuer:
+
S (Standard rate)
+
+
+
Umsatzsteuersatz in %:
+
19%
+
+
+
+
+
+
+
+
+
Nachlässe auf Ebene der
+ Rechnungsposition
+
+
+
+
Zuschläge auf Ebene der
+ Rechnungsposition
+
+
+
+
+
+
+
+
Artikelinformationen
+
+
+
+
+
+
Bezeichnung:
+
FALTENBEUTEL
+ 16x6x28 CM
+
+
+
+
+
Artikelnummer:
+
FB05
+
+
+
Kunden-Material-Nr.:
+
+
+
Eigenschaften des Artikels:
+
+
+
+
+
+
Artikelkennung (EAN):
+
2001015001325
+
+
+
Schema der Artikelkennung:
+
+ 0088 (EAN Location Code)
+
+
+
+
Code der Artikelklassifizierung:
+
+
+
+
Kennung zur Bildung des Schemas:
+
+
+
+
Version zur Bildung des Schemas:
+
+
+
+
Code des Herkunftslandes:
+
+
+
+
+
+
+
+
+
+
+
+
+
Position5
+
+
+
+
+
Schema der Objektkennung:
+
+
+
+
Nummer der Auftragsposition:
+
+
+
+
Kontierungshinweis /Kostenstelle:
+
+
+
Abrechnungszeitraum:
+
+
+
+
+
+
Preiseinzelheiten
+
+
+
+
Einheit
+
H87 (piece)
+
+
+
Preis pro Einheit (netto)
+
0,01
+
+
+
Gesamtpreis (netto)
+
12,10
+
+
+
+
+
+
Listenpreis (netto):
+
0,01
+
+
+
Anzahl der Einheit:
+
+
+
+
Code der Maßeinheit:
+
+
+
+
Umsatzsteuer:
+
S (Standard rate)
+
+
+
Umsatzsteuersatz in %:
+
19%
+
+
+
+
+
+
+
+
+
Nachlässe auf Ebene der
+ Rechnungsposition
+
+
+
+
Zuschläge auf Ebene der
+ Rechnungsposition
+
+
+
+
+
+
+
+
Artikelinformationen
+
+
+
+
+
+
Bezeichnung:
+
Kopierpapier A4
+
+
+
+
Beschreibung:
+
Zählerstand von-bis:
+ 543210 - 544420
+
+
+
+
Artikelnummer:
+
KOP05
+
+
+
Kunden-Material-Nr.:
+
+
+
Eigenschaften des Artikels:
+
+
Zähler-Nr.
+
MG-X79318
+
+
+
+
+
+
+
+
Artikelkennung (EAN):
+
4123456000038
+
+
+
Schema der Artikelkennung:
+
+ 0088 (EAN Location Code)
+
+
+
+
Code der Artikelklassifizierung:
+
+
+
+
Kennung zur Bildung des Schemas:
+
+
+
+
Version zur Bildung des Schemas:
+
+
+
+
Code des Herkunftslandes:
+
+
+
+
+
+
+
+
+
+
+
+
Wir übernehmen keine Haftung für die Richtigkeit der Daten.
+
+
+
+
Informationen zum Verkäufer
+
+
+
Abweichender Handelsname:
+
+
+
+
+
Elektronische Adresse:
+
+
+
+
Schema der elektronischen Adresse:
+
+
+
+
Register-/Registriernummer:
+
+
+
+
+
Steuernummer:
+
201/113/40209
+
+
+
Schema der Steuernummer:
+
+
+
+
Weitere rechtliche Informationen:
+
+
+
+
Code der Umsatzsteuerwährung:
+
+
+
+
+
+
+
+
+
+
+
Informationen zum Käufer
+
+
+
Abweichender Handelsname:
+
+
+
+
+
Elektronische Adresse:
+
+
+
+
Schema der elektronischen Adresse:
+
+
+
+
Register-/Registriernummer:
+
+
+
+
Schema der Register-/Registriernummer:
+
+
+
+
+
Abrechnungsdatum der Umsatzsteuer:
+
+
+
+
Code des Umsatzsteuer-Abrechnungsdatums:
+
+
+
+
Kontierungsinformation / Kostenstelle:
+
+
+
+
+
+
+
Lieferinformationen
+
+
+
Kennung des Lieferorts:
+
4304171088093
+
+
+
Schema der Kennung:
+
0088
+
+
+
Lieferdatum:
+
30.10.2024
+
+
+
Name des Empfängers:
+
MUSTER-MARKT
+
+
+
Straße / Haus-Nr.:
+
HAUPTSTRASSE 44
+
+
+
+
+
+
+
+
Land:
+
DE (Deutschland)
+
+
+
+
+
+
+
+
+
Vertragsdaten
+
+
+
+
Kennung der Empfangsbestätigung:
+
+
+
+
Kennung der Versandanzeige:
+
+
+
+
+
Spezifikationskennung:
+
+ urn:cen.eu:en16931:2017#conformant#urn:factur-x.eu:1p0:extended
+
+
+
+
Objektkennung:
+
A777123
+
+
+
Schema der Objektkennung:
+
+
+
+
+
+
+
+
+
+
Wir übernehmen keine Haftung für die Richtigkeit der Daten.
+
+
+
+
Rechnungsbegründende Unterlagen
+
+
+
+
+
+
+
+
+
+
diff --git a/library/src/test/resources/factur-x-vis-ubl-creditnote.en.html b/library/src/test/resources/factur-x-vis-ubl-creditnote.en.html
index f5855ab2..9e849b32 100644
--- a/library/src/test/resources/factur-x-vis-ubl-creditnote.en.html
+++ b/library/src/test/resources/factur-x-vis-ubl-creditnote.en.html
@@ -1359,6 +1359,7 @@