diff --git a/library/pom.xml b/library/pom.xml
index f3c5dc54..baf48639 100644
--- a/library/pom.xml
+++ b/library/pom.xml
@@ -102,7 +102,7 @@
com.helger
en16931-cii2ubl
- 1.3.0
+ 1.4.10
@@ -122,6 +122,7 @@
org.xmlunit
xmlunit-assertj
2.9.1
+ test
diff --git a/library/src/main/java/org/mustangproject/CII/CIIToUBL.java b/library/src/main/java/org/mustangproject/CII/CIIToUBL.java
index 8034fe33..733006a1 100644
--- a/library/src/main/java/org/mustangproject/CII/CIIToUBL.java
+++ b/library/src/main/java/org/mustangproject/CII/CIIToUBL.java
@@ -1,12 +1,14 @@
package org.mustangproject.CII;
-import com.helger.commons.error.list.ErrorList;
-import com.helger.en16931.cii2ubl.CIIToUBL22Converter;
-import com.helger.ubl21.UBL21Writer;
-import com.helger.ubl22.UBL22Writer;
import java.io.File;
import java.io.Serializable;
+import com.helger.commons.error.list.ErrorList;
+import com.helger.en16931.cii2ubl.CIIToUBL23Converter;
+import com.helger.ubl21.UBL21Writer;
+import com.helger.ubl22.UBL22Writer;
+import com.helger.ubl23.UBL23Writer;
+
/***
* converts a Cross Industry Invoice XML file to a UBL XML file
* thanks to Philip Helger for his library
@@ -18,36 +20,45 @@ public class CIIToUBL {
* @param output the UBL file to write to
*/
public void convert(File input, File output) {
- ErrorList occurred=new ErrorList();
- CIIToUBL22Converter cc=new CIIToUBL22Converter();
- Serializable aUBL = cc.convertCIItoUBL(input, occurred);
+ final ErrorList occurred=new ErrorList();
+ final CIIToUBL23Converter cc=new CIIToUBL23Converter();
+ final Serializable aUBL = cc.convertCIItoUBL(input, occurred);
if (aUBL instanceof oasis.names.specification.ubl.schema.xsd.invoice_21.InvoiceType)
{
UBL21Writer.invoice ()
.setFormattedOutput (true)
.write ((oasis.names.specification.ubl.schema.xsd.invoice_21.InvoiceType) aUBL, output);
}
- else
- if (aUBL instanceof oasis.names.specification.ubl.schema.xsd.creditnote_21.CreditNoteType)
+ else if (aUBL instanceof oasis.names.specification.ubl.schema.xsd.creditnote_21.CreditNoteType)
{
UBL21Writer.creditNote ()
.setFormattedOutput (true)
.write ((oasis.names.specification.ubl.schema.xsd.creditnote_21.CreditNoteType) aUBL, output);
}
- else
- if (aUBL instanceof oasis.names.specification.ubl.schema.xsd.invoice_22.InvoiceType)
+ else if (aUBL instanceof oasis.names.specification.ubl.schema.xsd.invoice_22.InvoiceType)
{
UBL22Writer.invoice ()
.setFormattedOutput (true)
.write ((oasis.names.specification.ubl.schema.xsd.invoice_22.InvoiceType) aUBL, output);
}
- else
- if (aUBL instanceof oasis.names.specification.ubl.schema.xsd.creditnote_22.CreditNoteType)
+ else if (aUBL instanceof oasis.names.specification.ubl.schema.xsd.creditnote_22.CreditNoteType)
{
UBL22Writer.creditNote ()
.setFormattedOutput (true)
.write ((oasis.names.specification.ubl.schema.xsd.creditnote_22.CreditNoteType) aUBL, output);
}
+ else if (aUBL instanceof oasis.names.specification.ubl.schema.xsd.invoice_23.InvoiceType)
+ {
+ UBL23Writer.invoice ()
+ .setFormattedOutput (true)
+ .write ((oasis.names.specification.ubl.schema.xsd.invoice_23.InvoiceType) aUBL, output);
+ }
+ else if (aUBL instanceof oasis.names.specification.ubl.schema.xsd.creditnote_23.CreditNoteType)
+ {
+ UBL23Writer.creditNote ()
+ .setFormattedOutput (true)
+ .write ((oasis.names.specification.ubl.schema.xsd.creditnote_23.CreditNoteType) aUBL, output);
+ }
}
}
diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/UBLTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/UBLTest.java
index 38614e44..12cfed97 100644
--- a/library/src/test/java/org/mustangproject/ZUGFeRD/UBLTest.java
+++ b/library/src/test/java/org/mustangproject/ZUGFeRD/UBLTest.java
@@ -24,22 +24,31 @@ package org.mustangproject.ZUGFeRD;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
-import java.io.InputStream;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Date;
-import org.junit.FixMethodOrder;
-import org.junit.runners.MethodSorters;
-import org.mustangproject.*;
+import org.assertj.core.api.Assertions;
+import org.junit.jupiter.api.Order;
+import org.junit.jupiter.api.Test;
+import org.mustangproject.BankDetails;
import org.mustangproject.CII.CIIToUBL;
+import org.mustangproject.Contact;
+import org.mustangproject.Invoice;
+import org.mustangproject.Item;
+import org.mustangproject.Product;
+import org.mustangproject.TradeParty;
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class UBLTest extends ResourceCase {
final String TARGET_XML = "./target/testout-1Lieferschein.xml";
+ public UBLTest() {
+ }
+
+ @Test
+ @Order(2)
public void testUBLBasic() {
// the writing part
@@ -52,21 +61,23 @@ public class UBLTest extends ResourceCase {
try {
final File tempFile = File.createTempFile("ZUGFeRD-UBL-", "-test");
c2u.convert(input, tempFile);
- expected = ResourceUtilities.readFile(StandardCharsets.UTF_8, expectedFile.getAbsolutePath()).replaceAll("\r\n", "\n");
- result = ResourceUtilities.readFile(StandardCharsets.UTF_8, tempFile.getAbsolutePath()).replaceAll("\r\n", "\n");
+ expected = ResourceUtilities.readFile(StandardCharsets.UTF_8, expectedFile.getAbsolutePath());
+ result = ResourceUtilities.readFile(StandardCharsets.UTF_8, tempFile.getAbsolutePath());
} catch (final IOException e) {
fail("Exception should not happen: " + e.getMessage());
}
assertNotNull(result);
- assertEquals(expected, result);
+ Assertions.assertThat(result).isXmlEqualTo(expected);
}
+ @Test
+ @Order(1)
public void test1Lieferschein() {
- EinLieferscheinExporter oe = new EinLieferscheinExporter();
- Invoice i = new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date())
+ final EinLieferscheinExporter oe = new EinLieferscheinExporter();
+ final Invoice i = new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date())
.setSender(new TradeParty("Test company", "teststr", "55232", "teststadt", "DE").addTaxID("DE4711").addVATID("DE0815").setContact(new Contact("Hans Test", "+49123456789", "test@example.org")).addBankDetails(new BankDetails("DE12500105170648489890", "COBADEFXXX")))
.setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE"))
.setReferenceNumber("991-01484-64")//leitweg-id
@@ -75,13 +86,13 @@ public class UBLTest extends ResourceCase {
try {
oe.setTransaction(i);
- ByteArrayOutputStream baos=new ByteArrayOutputStream();
+ final ByteArrayOutputStream baos=new ByteArrayOutputStream();
oe.export(baos);
- String theXML = baos.toString("UTF-8");
+ final String theXML = baos.toString("UTF-8");
assertTrue(theXML.contains("
-
- urn:cen.eu:en16931:2017:extended:urn:fdc:peppol.eu:2017:poacc:billing:3.0
+
+ urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0
urn:fdc:peppol.eu:2017:poacc:billing:01:1.0
RE-20201121/508
2020-11-21
@@ -13,21 +15,21 @@
Bei Spiel GmbH
-
+
Ecke 12
- Stadthausen
- 12345
-
+ Stadthausen
+ 12345
+
DE
-
+
DE136695976
-
+
VAT
-
+
Bei Spiel GmbH
@@ -37,18 +39,18 @@
2
-
+
Theodor Est
-
+
Bahnstr. 42
- Spielkreis
- 88802
-
+ Spielkreis
+ 88802
+
DE
-
+
Theodor Est
@@ -56,101 +58,111 @@
2020-11-10
+
+ 42
+ RE-20201121/508
+
+ DE88200800000970375700
+ Max Mustermann
+
+ COBADEFFXXX
+
+
+
Zahlbar ohne Abzug bis 12.12.2020
75.04
-
- 160.00
- 11.20
-
+
+ 160
+ 11.2
+
S
- 7.00
-
+ 7
+
VAT
-
- 336.00
- 63.84
-
+
+ 336
+ 63.84
+
S
- 19.00
-
+ 19
+
VAT
- 496.00
- 496.00
- 571.04
- 0.00
- 0.00
- 0.00
- 571.04
+ 496
+ 496
+ 571.04
+ 0
+ 0
+ 0
+ 571.04
1
- 1.0000
- 160.00
-
+ 1
+ 160
+
Of a sample invoice
- Design (hours)
-
+ Design (hours)
+
S
- 7.00
-
+ 7
+
VAT
-
- 160.0000
- 1.0000
+
+ 160
+ 1
2
- 400.0000
- 316.00
-
+ 400
+ 316
+
various colors, ~2000ml
- Ballons
-
+ Ballons
+
S
- 19.00
-
+ 19
+
VAT
-
- 0.7900
- 1.0000
+
+ 0.79
+ 1
3
- 800.0000
- 20.00
-
-
- Hot air „heiße Luft“ (litres)
-
+ 800
+ 20
+
+ Hot air „heiße Luft“ (litres)
+
S
- 19.00
-
+ 19
+
VAT
-
- 0.0250
- 1.0000
+
+ 0.025
+ 1
\ No newline at end of file