diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/OXPullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/OXPullProvider.java
index 95035e8c..1ca123f0 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/OXPullProvider.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/OXPullProvider.java
@@ -461,7 +461,7 @@ public class OXPullProvider extends ZUGFeRD2PullProvider implements IXMLProvider
if (trans.getTradeSettlement() != null) {
for (final IZUGFeRDTradeSettlement payment : trans.getTradeSettlement()) {
if ((payment != null) && (payment instanceof IZUGFeRDTradeSettlementDebit)) {
- // xml += payment.getPaymentXML();
+ //not in order-x xml += payment.getPaymentXML();
}
}
}
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java
index 9ca14bba..17248b92 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java
@@ -45,7 +45,7 @@ import org.mustangproject.XMLTools;
public class ZUGFeRD2PullProvider implements IXMLProvider {
- protected byte[] zugferdData;
+ protected byte[] zugferdData;
protected IExportableTransaction trans;
protected TransactionCalculator calc;
private String paymentTermsDescription;
@@ -130,10 +130,10 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
}
xml += " " + XMLTools.encodeXML(party.getName()) + "\n";
- if (party.getLegalOrganisation()!=null) {
- xml += " ";
- xml += " "+XMLTools.encodeXML(party.getLegalOrganisation().getID())+"";
- xml += "";
+ if (party.getLegalOrganisation() != null) {
+ xml += " ";
+ xml += " " + XMLTools.encodeXML(party.getLegalOrganisation().getID()) + "";
+ xml += "";
}
if ((party.getContact() != null) && (isSender || profile == Profiles.getByName("Extended") || profile == Profiles.getByName("XRechnung"))) {
@@ -488,9 +488,9 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
if (trans.getSpecifiedProcuringProjectID() != null) {
xml = xml + " \n"
- + " "
- + XMLTools.encodeXML(trans.getSpecifiedProcuringProjectID()) + "\n";
- if(trans.getSpecifiedProcuringProjectName()!= null) {
+ + " "
+ + XMLTools.encodeXML(trans.getSpecifiedProcuringProjectID()) + "\n";
+ if (trans.getSpecifiedProcuringProjectName() != null) {
xml += " " + XMLTools.encodeXML(trans.getSpecifiedProcuringProjectName()) + "\n";
}
xml += " \n";
@@ -507,7 +507,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
+ " ";
if (trans.getDeliveryDate() != null) {
- xml += DATE.udtFormat(trans.getDeliveryDate());
+ xml += DATE.udtFormat(trans.getDeliveryDate());
} else {
throw new IllegalStateException("No delivery date provided");
}
@@ -669,10 +669,10 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
xml = xml + " \n"
+ " "
+ XMLTools.encodeXML(trans.getInvoiceReferencedDocumentID()) + "\n";
- if(trans.getInvoiceReferencedIssueDate()!= null){
- xml += ""
- + DATE.qdtFormat(trans.getInvoiceReferencedIssueDate())
- + "\n";
+ if (trans.getInvoiceReferencedIssueDate() != null) {
+ xml += ""
+ + DATE.qdtFormat(trans.getInvoiceReferencedIssueDate())
+ + "\n";
}
xml += " \n";
}
@@ -706,7 +706,6 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
}
private String buildPaymentTermsXml() {
-
final IZUGFeRDPaymentTerms paymentTerms = trans.getPaymentTerms();
if (paymentTerms == null) {
return "";
@@ -714,18 +713,27 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
String paymentTermsXml = "";
final IZUGFeRDPaymentDiscountTerms discountTerms = paymentTerms.getDiscountTerms();
- final Date dueDate = paymentTerms.getDueDate();
+ Date dueDate = paymentTerms.getDueDate();
if (dueDate != null && discountTerms != null && discountTerms.getBaseDate() != null) {
throw new IllegalStateException(
"if paymentTerms.dueDate is specified, paymentTerms.discountTerms.baseDate has not to be specified");
}
paymentTermsXml += "" + paymentTerms.getDescription() + "";
+
if (dueDate != null) {
paymentTermsXml += "";
- paymentTermsXml += DATE.udtFormat(dueDate) ;
+ paymentTermsXml += DATE.udtFormat(dueDate);
paymentTermsXml += "";
}
+ if (trans.getTradeSettlement() != null) {
+ for (final IZUGFeRDTradeSettlement payment : trans.getTradeSettlement()) {
+ if ((payment != null) && (payment instanceof IZUGFeRDTradeSettlementDebit)) {
+ paymentTermsXml += payment.getPaymentXML();
+ }
+ }
+ }
+
if (discountTerms != null) {
paymentTermsXml += "";
final String currency = trans.getCurrency();
@@ -737,7 +745,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
if (discountTerms.getBaseDate() != null) {
final Date baseDate = discountTerms.getBaseDate();
paymentTermsXml += "";
- paymentTermsXml += DATE.udtFormat(baseDate);
+ paymentTermsXml += DATE.udtFormat(baseDate);
paymentTermsXml += "";
paymentTermsXml += ""
diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2EdgeTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2EdgeTest.java
index 3151dfb4..ee3e1d42 100644
--- a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2EdgeTest.java
+++ b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2EdgeTest.java
@@ -24,6 +24,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
+import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
@@ -172,7 +173,7 @@ public class ZF2EdgeTest extends MustangReaderTestCase implements IExportableTra
public IZUGFeRDExportableTradeParty getRecipient() {
return new RecipientTradeParty();
}
-
+
@Override
public IZUGFeRDExportableTradeParty getDeliveryAddress() {
return new RecipientTradeParty();
@@ -194,7 +195,7 @@ public class ZF2EdgeTest extends MustangReaderTestCase implements IExportableTra
EdgeProduct designProduct = new EdgeProduct("", "Künstlerische Gestaltung (Stunde): Einer Beispielrechnung",
"HUR");
EdgeProduct balloonProduct = new EdgeProduct("", "Bestellerweiterung für E&F Umbau", "C62");// test for issue
- // 103
+ // 103
EdgeProduct airProduct = new EdgeProduct("", "Heiße Luft pro Liter", "LTR");
Item design=new Item(new BigDecimal("160"), new BigDecimal("1"), designProduct);
@@ -211,6 +212,31 @@ public class ZF2EdgeTest extends MustangReaderTestCase implements IExportableTra
return "Zahlbar ohne Abzug bis zum " + germanDateFormat.format(getDueDate());
}
+ @Override
+ public IZUGFeRDPaymentTerms getPaymentTerms() {
+ PaymentDiscountTerms paymentDiscountTerms =
+ new PaymentDiscountTerms(
+ new BigDecimal(2), // skonto prozent
+ null, // kein basedate
+ 14, // anzahl tage
+ "DAYS");
+
+ Date due = null;
+ try {
+ due = new SimpleDateFormat("yyyyMMdd").parse("20220228");
+ } catch (ParseException e) {
+ e.printStackTrace();
+
+ }
+ return
+ new PaymentTerms(
+ "14 Tage 2% Skonto, 30 Tage rein netto",
+ due,// fälligkeitsdatum
+ paymentDiscountTerms //PaymentDiscountTerms
+ );
+
+ }
+
@Override
public IZUGFeRDAllowanceCharge[] getZFAllowances() {
return null;
@@ -264,8 +290,8 @@ public class ZF2EdgeTest extends MustangReaderTestCase implements IExportableTra
.getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1().setProducer("My Application")
- .setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).ignorePDFAErrors()
- .load(SOURCE_PDF)) {
+ .setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).setProfile(Profiles.getByName("Extended")).ignorePDFAErrors()
+ .load(SOURCE_PDF)) {
ze.setTransaction(this);
String theXML = new String(ze.getProvider().getXML(), StandardCharsets.UTF_8);
assertTrue(theXML.contains("59"));
- assertTrue(zi.getUTF8().contains(""));
- assertTrue(zi.getUTF8().contains("DE540815"));
- assertTrue(zi.getUTF8().contains("DE99XX12345"));
- assertFalse(zi.getUTF8().contains(""));
- assertFalse(zi.getUTF8().contains("EUR"));
- assertTrue(zi.getUTF8().contains("USD"));//currency should be USD, test for #150
+ String resultXML=zi.getUTF8();
+ assertTrue(resultXML.contains("59"));
+ assertTrue(resultXML.contains(""));
+ assertTrue(resultXML.contains("DE540815"));
+ assertTrue(resultXML.contains("DE99XX12345"));
+ assertTrue(resultXML.contains(""));
+ assertFalse(resultXML.contains("EUR"));
+ assertTrue(resultXML.contains("USD"));//currency should be USD, test for #150
// Reading ZUGFeRD
assertEquals("496.00", zi.getAmount());
@@ -311,9 +338,9 @@ public class ZF2EdgeTest extends MustangReaderTestCase implements IExportableTra
try (InputStream SOURCE_PDF = this.getClass()
.getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505PDFA3.pdf");
- IZUGFeRDExporter ze = new ZUGFeRDExporterFromA3().setProducer("My Application")
- .setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).disableFacturX()
- .load(SOURCE_PDF)) {
+ IZUGFeRDExporter ze = new ZUGFeRDExporterFromA3().setProducer("My Application")
+ .setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).disableFacturX()
+ .load(SOURCE_PDF)) {
ze.setTransaction(this);
String theXML = new String(ze.getProvider().getXML(), StandardCharsets.UTF_8);
assertTrue(theXML.contains("")); // maybe add a direct debit mandate to the class in the future then this would fail
assertTrue(zi.getUTF8().contains("Hinterhaus"));
assertTrue(zi.getUTF8().contains("0009845"));
assertTrue(zi.getUTF8().contains("0008734"));
diff --git a/validator/pom.xml b/validator/pom.xml
index 0245f970..e3f27dcc 100644
--- a/validator/pom.xml
+++ b/validator/pom.xml
@@ -122,7 +122,7 @@
-
+