diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java index a3d89bbf..2a8b8eb4 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java @@ -20,6 +20,7 @@ */ package org.mustangproject.ZUGFeRD; +import static org.mustangproject.ZUGFeRD.ZUGFeRDDateFormat.DATE; import static org.mustangproject.ZUGFeRD.model.TaxCategoryCodeTypeConstants.CATEGORY_CODES_WITH_EXEMPTION_REASON; import java.io.IOException; @@ -46,8 +47,7 @@ public class ZUGFeRD1PullProvider extends ZUGFeRD2PullProvider implements IXMLPr protected byte[] zugferdData; private String paymentTermsDescription; - SimpleDateFormat zugferdDateFormat = new SimpleDateFormat("yyyyMMdd"); - protected Profile profile = Profiles.getByName("COMFORT", 1); + protected Profile profile = Profiles.getByName("COMFORT", 1); /** @@ -169,8 +169,8 @@ public class ZUGFeRD1PullProvider extends ZUGFeRD2PullProvider implements IXMLPr + " " + XMLTools.encodeXML(trans.getNumber()) + "\n" + " RECHNUNG\n" + " " + typecode + "\n" - + " " - + zugferdDateFormat.format(trans.getIssueDate()) + "\n" // date + + " " + + DATE.udtFormat(trans.getIssueDate()) + "\n" // date // format // was // 20130605 @@ -225,8 +225,7 @@ public class ZUGFeRD1PullProvider extends ZUGFeRD2PullProvider implements IXMLPr + " "; if (trans.getDeliveryDate() != null) { - xml += "" + zugferdDateFormat.format(trans.getDeliveryDate()) - + ""; + xml += DATE.udtFormat(trans.getDeliveryDate()); } else { throw new IllegalStateException("No delivery date provided"); } @@ -292,9 +291,9 @@ public class ZUGFeRD1PullProvider extends ZUGFeRD2PullProvider implements IXMLPr } if (hasDueDate && (trans.getDueDate() != null)) { - xml = xml + " " // $NON-NLS-2$ - + zugferdDateFormat.format(trans.getDueDate()) - + "\n";// 20130704 + xml = xml + " " // $NON-NLS-2$ + + DATE.udtFormat(trans.getDueDate()) + + "\n";// 20130704 } xml = xml + " \n"; @@ -440,8 +439,7 @@ public class ZUGFeRD1PullProvider extends ZUGFeRD2PullProvider implements IXMLPr paymentTermsXml += "" + paymentTerms.getDescription() + ""; if (dueDate != null) { paymentTermsXml += ""; - paymentTermsXml += "" - + zugferdDateFormat.format(dueDate.getDate()) + ""; + paymentTermsXml += DATE.udtFormat(dueDate) ; paymentTermsXml += ""; } @@ -456,7 +454,7 @@ public class ZUGFeRD1PullProvider extends ZUGFeRD2PullProvider implements IXMLPr if (discountTerms.getBaseDate() != null) { final Date baseDate = discountTerms.getBaseDate(); paymentTermsXml += ""; - paymentTermsXml += "" + zugferdDateFormat.format(baseDate) + ""; + paymentTermsXml += DATE.udtFormat(baseDate) ; paymentTermsXml += ""; paymentTermsXml += "" diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java index 3a028126..dd07f767 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java @@ -20,6 +20,7 @@ */ package org.mustangproject.ZUGFeRD; +import static org.mustangproject.ZUGFeRD.ZUGFeRDDateFormat.DATE; import static org.mustangproject.ZUGFeRD.model.DocumentCodeTypeConstants.CORRECTEDINVOICE; import static org.mustangproject.ZUGFeRD.model.TaxCategoryCodeTypeConstants.CATEGORY_CODES_WITH_EXEMPTION_REASON; @@ -44,9 +45,7 @@ import org.mustangproject.XMLTools; public class ZUGFeRD2PullProvider implements IXMLProvider { - //// MAIN CLASS - protected SimpleDateFormat zugferdDateFormat = new SimpleDateFormat("yyyyMMdd"); - protected byte[] zugferdData; + protected byte[] zugferdData; protected IExportableTransaction trans; protected TransactionCalculator calc; private String paymentTermsDescription; @@ -292,8 +291,8 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { // + " RECHNUNG\n" // + " 380\n" + " " + typecode + "\n" - + " " - + zugferdDateFormat.format(trans.getIssueDate()) + "\n" // date + + " " + + DATE.udtFormat(trans.getIssueDate()) + "\n" // date + notes + subjectNote + rebateAgreement @@ -387,10 +386,10 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { if ((currentItem.getDetailedDeliveryPeriodFrom() != null) || (currentItem.getDetailedDeliveryPeriodTo() != null)) { xml = xml + ""; if (currentItem.getDetailedDeliveryPeriodFrom() != null) { - xml = xml + "" + zugferdDateFormat.format(currentItem.getDetailedDeliveryPeriodFrom()) + ""; + xml = xml + ">" + DATE.udtFormat(currentItem.getDetailedDeliveryPeriodFrom()) + ""; } if (currentItem.getDetailedDeliveryPeriodTo() != null) { - xml = xml + "" + zugferdDateFormat.format(currentItem.getDetailedDeliveryPeriodTo()) + ""; + xml = xml + "" + DATE.udtFormat(currentItem.getDetailedDeliveryPeriodTo()) + ""; } xml = xml + ""; @@ -478,8 +477,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { + " "; if (trans.getDeliveryDate() != null) { - xml += "" + zugferdDateFormat.format(trans.getDeliveryDate()) - + ""; + xml += DATE.udtFormat(trans.getDeliveryDate()); } else { throw new IllegalStateException("No delivery date provided"); } @@ -537,10 +535,10 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { if ((trans.getDetailedDeliveryPeriodFrom() != null) || (trans.getDetailedDeliveryPeriodTo() != null)) { xml = xml + ""; if (trans.getDetailedDeliveryPeriodFrom() != null) { - xml = xml + "" + zugferdDateFormat.format(trans.getDetailedDeliveryPeriodFrom()) + ""; + xml = xml + "" + DATE.udtFormat(trans.getDetailedDeliveryPeriodFrom()) + ""; } if (trans.getDetailedDeliveryPeriodTo() != null) { - xml = xml + "" + zugferdDateFormat.format(trans.getDetailedDeliveryPeriodTo()) + ""; + xml = xml + "" + DATE.udtFormat(trans.getDetailedDeliveryPeriodTo()) + ""; } xml = xml + ""; @@ -607,9 +605,9 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { } if (hasDueDate && (trans.getDueDate() != null)) { - xml = xml + " " // $NON-NLS-2$ - + zugferdDateFormat.format(trans.getDueDate()) - + "\n";// 20130704 + xml = xml + " " // $NON-NLS-2$ + + DATE.udtFormat(trans.getDueDate()) + + "\n";// 20130704 } xml = xml + " \n"; @@ -643,7 +641,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { + XMLTools.encodeXML(trans.getInvoiceReferencedDocumentID()) + "\n"; if(trans.getInvoiceReferencedIssueDate()!= null){ xml += "" - + zugferdDateFormat.format(trans.getInvoiceReferencedIssueDate()) + + DATE.qdtFormat(trans.getInvoiceReferencedIssueDate()) + "\n"; } xml += " \n"; @@ -694,8 +692,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { paymentTermsXml += "" + paymentTerms.getDescription() + ""; if (dueDate != null) { paymentTermsXml += ""; - paymentTermsXml += "" - + zugferdDateFormat.format(dueDate) + ""; + paymentTermsXml += DATE.udtFormat(dueDate) ; paymentTermsXml += ""; } @@ -710,7 +707,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { if (discountTerms.getBaseDate() != null) { final Date baseDate = discountTerms.getBaseDate(); paymentTermsXml += ""; - paymentTermsXml += "" + zugferdDateFormat.format(baseDate) + ""; + paymentTermsXml += DATE.udtFormat(baseDate); paymentTermsXml += ""; paymentTermsXml += "" diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDDateFormat.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDDateFormat.java index 3457fe18..15ffe24a 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDDateFormat.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDDateFormat.java @@ -1,6 +1,7 @@ package org.mustangproject.ZUGFeRD; import java.text.SimpleDateFormat; +import java.util.Date; import org.mustangproject.ZUGFeRD.model.DateTimeTypeConstants; @@ -12,6 +13,8 @@ public enum ZUGFeRDDateFormat { private String dateTimeType; private SimpleDateFormat formatter; + private static final String QDT_FORAMT = "%s"; + private static final String UDT_FORAMT = "%s"; private ZUGFeRDDateFormat(String dateTimeType, SimpleDateFormat formatter) { this.dateTimeType = dateTimeType; @@ -25,4 +28,14 @@ public enum ZUGFeRDDateFormat { public SimpleDateFormat getFormatter() { return formatter; } + + public String simpleFormat(Date date){ + return getFormatter().format(date); + } + public String qdtFormat(Date date){ + return String.format(QDT_FORAMT, getDateTimeType(), getFormatter().format(date)); + } + public String udtFormat(Date date){ + return String.format(UDT_FORAMT, getDateTimeType(), getFormatter().format(date)); + } }