diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java index af8674fc..6a8131eb 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java @@ -600,19 +600,19 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { xml += getTradePartyAsXML(trans.getRecipient(), false, false); xml += ""; - if (trans.getSellerOrderReferencedDocumentID() != null) { + if (trans.getSellerOrderReferencedDocumentID() != null && !trans.getSellerOrderReferencedDocumentID().trim().isEmpty()) { xml += "" + "" + XMLTools.encodeXML(trans.getSellerOrderReferencedDocumentID()) + "" + ""; } - if (trans.getBuyerOrderReferencedDocumentID() != null) { + if (trans.getBuyerOrderReferencedDocumentID() != null && !trans.getBuyerOrderReferencedDocumentID().trim().isEmpty()) { xml += "" + "" + XMLTools.encodeXML(trans.getBuyerOrderReferencedDocumentID()) + "" + ""; } - if (trans.getContractReferencedDocument() != null) { + if (trans.getContractReferencedDocument() != null && !trans.getContractReferencedDocument().trim().isEmpty()) { xml += "" + "" + XMLTools.encodeXML(trans.getContractReferencedDocument()) + "" @@ -666,7 +666,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { * "2013-51112" + * "" */ - if (trans.getDespatchAdviceReferencedDocumentID() != null) { + if (trans.getDespatchAdviceReferencedDocumentID() != null && !trans.getDespatchAdviceReferencedDocumentID().trim().isEmpty()) { xml += ""; xml += "" + XMLTools.encodeXML(trans.getDespatchAdviceReferencedDocumentID()) + ""; xml += ""; @@ -902,7 +902,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { } xml += "" + currencyFormat(calc.getDuePayable()) + "" + ""; - if (trans.getInvoiceReferencedDocumentID() != null) { + if (trans.getInvoiceReferencedDocumentID() != null && !trans.getInvoiceReferencedDocumentID().trim().isEmpty()) { xml += "" + "" + XMLTools.encodeXML(trans.getInvoiceReferencedDocumentID()) + ""; diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java index cb64d01f..8dd96403 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java @@ -817,4 +817,51 @@ public class ZF2PushTest extends TestCase { } } + public void testEmptyDocumentReference() { + String orgname = "Test company"; + String number = "123"; + BigDecimal price = new BigDecimal(1.0); + BigDecimal qty = new BigDecimal(1.0); + + ZUGFeRD2PullProvider zf2p = new ZUGFeRD2PullProvider(); + zf2p.setProfile( Profiles.getByName( "XRechnung" ) ); + + Invoice i = new Invoice().setIssueDate(new Date()).setDueDate(new Date()).setDetailedDeliveryPeriod(new Date(), new Date()).setDeliveryDate(new Date()) + .setSender(new TradeParty(orgname, "teststr", "55232", "teststadt", "DE").addTaxID("4711").addVATID("DE0815").addBankDetails(new BankDetails("DE88200800000970375700", "COBADEFFXXX"))) + .setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").addVATID("DE0815")) + .setNumber(number) + .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), price, qty)); + + // empty strings for document id's + i.setSellerOrderReferencedDocumentID("") + .setBuyerOrderReferencedDocumentID("") + .setContractReferencedDocument("") + .setDespatchAdviceReferencedDocumentID("") + .setInvoiceReferencedDocumentID(""); + + zf2p.generateXML(i); + String theXML = new String(zf2p.getXML()); + + assertFalse(theXML.contains("