diff --git a/mustang/doc/ZugferdDev.de.odt b/mustang/doc/ZugferdDev.de.odt new file mode 100644 index 00000000..ed821325 Binary files /dev/null and b/mustang/doc/ZugferdDev.de.odt differ diff --git a/mustang/doc/ZugferdDev.de.pdf b/mustang/doc/ZugferdDev.de.pdf new file mode 100644 index 00000000..e88c15f9 Binary files /dev/null and b/mustang/doc/ZugferdDev.de.pdf differ diff --git a/mustang/doc/ZugferdDev.en.odt b/mustang/doc/ZugferdDev.en.odt new file mode 100644 index 00000000..42644c5f Binary files /dev/null and b/mustang/doc/ZugferdDev.en.odt differ diff --git a/mustang/doc/ZugferdDev.en.pdf b/mustang/doc/ZugferdDev.en.pdf new file mode 100644 index 00000000..0b152f7a Binary files /dev/null and b/mustang/doc/ZugferdDev.en.pdf differ diff --git a/mustang/pom.xml b/mustang/pom.xml index 1f6f1b7b..3cc2ecd4 100644 --- a/mustang/pom.xml +++ b/mustang/pom.xml @@ -4,7 +4,7 @@ org.mustangproject.ZUGFeRD mustang - 1.0 + 1.0.2 jar mustang diff --git a/mustang/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransaction.java b/mustang/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransaction.java index 257c1cc2..da74ee77 100644 --- a/mustang/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransaction.java +++ b/mustang/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransaction.java @@ -3,8 +3,8 @@ package org.mustangproject.ZUGFeRD; * Mustangproject's ZUGFeRD implementation * Neccessary interface for ZUGFeRD exporter * Licensed under the APLv2 - * @date 2014-05-10 - * @version 1.0 + * @date 2014-05-10 to 2014-06-25 + * @version 1.0.2 * @author jstaerk * */ @@ -90,13 +90,45 @@ public interface IZUGFeRDExportableTransaction { */ String getOwnOrganisationName(); + /** + * own street address + * @return + */ + String getOwnStreet(); + + /** + * own street postal code + * @return + */ + String getOwnZIP(); + + /** + * own city + * @return + */ + String getOwnLocation(); + + /** + * own two digit country code + * @return + */ + String getOwnCountry(); + + /** + * get delivery date + * @return + */ + Date getDeliveryDate(); + + + /** * which taxes have been used with which amounts in this transaction, * empty for no taxes, or e.g. 19=>190 and 7=>14 if 1000 Eur were applicable * to 19% VAT (=>190 EUR VAT) and 200 EUR were applicable to 7% (=>14 EUR VAT) * 190 Eur * @return - */ + * HashMap getVATPercentAmountMap(); - + */ } diff --git a/mustang/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporter.java b/mustang/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporter.java index 0b6d2d63..41877efe 100644 --- a/mustang/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporter.java +++ b/mustang/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporter.java @@ -195,18 +195,22 @@ public class ZUGFeRDExporter { private String getZugferdXMLForTransaction(IZUGFeRDExportableTransaction trans) { SimpleDateFormat zugferdDateFormat = new SimpleDateFormat("yyyyMMdd"); //$NON-NLS-1$ String xml= "\n" //$NON-NLS-1$ - + "\n" //$NON-NLS-1$ + + + "\n" //$NON-NLS-1$ + " \n" //$NON-NLS-1$ - + " false\n" //$NON-NLS-1$ - + " \n" //$NON-NLS-1$ - + " urn:ferd:invoice:rc:comfort\n" //$NON-NLS-1$ - + " \n" //$NON-NLS-1$ + + " false\n" //$NON-NLS-1$ + + " \n" //$NON-NLS-1$ + + " urn:ferd:invoice:rc:comfort\n" //$NON-NLS-1$ + + " \n" //$NON-NLS-1$ + " \n" //$NON-NLS-1$ + " \n" //$NON-NLS-1$ - + " "+trans.getNumber()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ - + " RECHNUNG\n" //$NON-NLS-1$ - + " 380\n" //$NON-NLS-1$ - + " "+zugferdDateFormat.format(trans.getIssueDate())+"\n" //date format was 20130605 //$NON-NLS-1$ //$NON-NLS-2$ + + " "+trans.getNumber()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ + + " RECHNUNG\n" //$NON-NLS-1$ + + " 380\n" //$NON-NLS-1$ + + " "+zugferdDateFormat.format(trans.getIssueDate())+"\n" //date format was 20130605 //$NON-NLS-1$ //$NON-NLS-2$ // + " \n" // + " \n" // + "Rechnung gemäß Bestellung Nr. 2013-471331 vom 01.03.2013.\n" @@ -221,73 +225,73 @@ public class ZUGFeRDExporter { // + " \n" + " \n" //$NON-NLS-1$ + " \n" //$NON-NLS-1$ - + " \n" //$NON-NLS-1$ + + " \n" //$NON-NLS-1$ // + " AB-312\n" - + " \n" //$NON-NLS-1$ + + " \n" //$NON-NLS-1$ // + " 4000001123452\n" - + " "+trans.getOwnOrganisationName()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ -/* + " \n" - + " 80333\n" - + " Lieferantenstraße 20\n" - + " München\n" - + " DE\n" - + " \n"*/ - + " \n" //$NON-NLS-1$ - + " "+trans.getOwnTaxID()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ - + " \n" //$NON-NLS-1$ - + " \n" //$NON-NLS-1$ - + " "+trans.getOwnVATID()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ - + " \n" //$NON-NLS-1$ - + " \n" //$NON-NLS-1$ - + " \n" //$NON-NLS-1$ + + " "+trans.getOwnOrganisationName()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ + + " \n" + + " "+trans.getOwnZIP()+"\n" + + " "+trans.getOwnStreet()+"\n" + + " "+trans.getOwnLocation()+"\n" + + " "+trans.getOwnCountry()+"\n" + + " \n" + + " \n" //$NON-NLS-1$ + + " "+trans.getOwnTaxID()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ + + " \n" //$NON-NLS-1$ + + " \n" //$NON-NLS-1$ + + " "+trans.getOwnVATID()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ + + " \n" //$NON-NLS-1$ + + " \n" //$NON-NLS-1$ + + " \n" //$NON-NLS-1$ // + " GE2020211\n" // + " 4000001987658\n" - + " "+trans.getRecipient().getName()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ + + " "+trans.getRecipient().getName()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ // + " \n" // + " xxx\n" // + " \n" - + " \n" //$NON-NLS-1$ - + " "+trans.getRecipient().getZIP()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ - + " "+trans.getRecipient().getStreet()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ - + " "+trans.getRecipient().getLocation()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ - + " "+trans.getRecipient().getCountry()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ - + " \n" //$NON-NLS-1$ - + " \n" //$NON-NLS-1$ - + " "+trans.getRecipient().getVATID()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ - + " \n" //$NON-NLS-1$ - + " \n" //$NON-NLS-1$ + + " \n" //$NON-NLS-1$ + + " "+trans.getRecipient().getZIP()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ + + " "+trans.getRecipient().getStreet()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ + + " "+trans.getRecipient().getLocation()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ + + " "+trans.getRecipient().getCountry()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ + + " \n" //$NON-NLS-1$ + + " \n" //$NON-NLS-1$ + + " "+trans.getRecipient().getVATID()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ + + " \n" //$NON-NLS-1$ + + " \n" //$NON-NLS-1$ // + " \n" // + " 20130301\n" // + " 2013-471331\n" // + " \n" - + " \n" //$NON-NLS-1$ -/* + " \n" - + " \n" - + " 20130603\n" - + " \n" + + " \n" //$NON-NLS-1$ + + " \n" + + " \n" + + " "+zugferdDateFormat.format(trans.getDeliveryDate())+"\n" + + " \n" + /* + " \n" + " 20130603\n" + " 2013-51112\n" - + " \n" - + " \n"*/ - + " \n" //$NON-NLS-1$ - // it's unclear if this is supposed to refer to the SEPA mandate or the transaction purpose -// + " "+trans.getNumber()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ - + " EUR\n" //$NON-NLS-1$ - + " \n" //$NON-NLS-1$ - + " 42\n" //$NON-NLS-1$ - + " Überweisung\n" //$NON-NLS-1$ - + " \n" //$NON-NLS-1$ - + " "+trans.getOwnIBAN()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ - + " \n" //$NON-NLS-1$ - + " \n" //$NON-NLS-1$ - + " "+trans.getOwnBIC()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ - + " "+trans.getOwnBankName()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ - + " \n" //$NON-NLS-1$ - + " \n"; //$NON-NLS-1$ + + " \n" */ + + " \n" + + " \n" //$NON-NLS-1$ + + " "+trans.getNumber()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ + + " EUR\n" //$NON-NLS-1$ + + " \n" //$NON-NLS-1$ + + " 42\n" //$NON-NLS-1$ + + " Überweisung\n" //$NON-NLS-1$ + + " \n" //$NON-NLS-1$ + + " "+trans.getOwnIBAN()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ + + " \n" //$NON-NLS-1$ + + " \n" //$NON-NLS-1$ + + " "+trans.getOwnBIC()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ + + " "+trans.getOwnBankName()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ + + " \n" //$NON-NLS-1$ + + " \n"; //$NON-NLS-1$ - + /* HashMap VATPercentAmountMap=trans.getVATPercentAmountMap(); for (BigDecimal currentTaxPercent : VATPercentAmountMap.keySet()) { BigDecimal amount = VATPercentAmountMap.get(currentTaxPercent); @@ -303,7 +307,7 @@ public class ZUGFeRDExporter { } - } + }*/ /* xml+= " + " \n" + " false\n" @@ -337,21 +341,21 @@ public class ZUGFeRDExporter { + " \n" + " \n"*/ - xml=xml+ " \n" //$NON-NLS-1$ + xml=xml+ " \n" //$NON-NLS-1$ // + " Zahlbar innerhalb 30 Tagen netto bis 04.07.2013, 3% Skonto innerhalb 10 Tagen bis 15.06.2013\n" - + " "+zugferdDateFormat.format(trans.getDueDate())+"\n"//20130704 //$NON-NLS-1$ //$NON-NLS-2$ - + " \n" //$NON-NLS-1$ - + " \n" //$NON-NLS-1$ - + " "+currencyFormat(trans.getTotal(), '.')+"\n" //$NON-NLS-1$ //$NON-NLS-2$ + + " "+zugferdDateFormat.format(trans.getDueDate())+"\n"//20130704 //$NON-NLS-1$ //$NON-NLS-2$ + + " \n" //$NON-NLS-1$ + + " \n" //$NON-NLS-1$ + + " "+currencyFormat(trans.getTotal(), '.')+"\n" //$NON-NLS-1$ //$NON-NLS-2$ // + " 5.80\n" // + " 14.73\n" - + " "+currencyFormat(trans.getTotal(), '.')+"\n" //$NON-NLS-1$ //$NON-NLS-2$ - + " "+currencyFormat(trans.getTotalGross().subtract(trans.getTotal()), '.')+"\n" //$NON-NLS-1$ //$NON-NLS-2$ - + " "+currencyFormat(trans.getTotalGross(), '.')+"\n" //$NON-NLS-1$ //$NON-NLS-2$ + + " "+currencyFormat(trans.getTotal(), '.')+"\n" //$NON-NLS-1$ //$NON-NLS-2$ + + " "+currencyFormat(trans.getTotalGross().subtract(trans.getTotal()), '.')+"\n" //$NON-NLS-1$ //$NON-NLS-2$ + + " "+currencyFormat(trans.getTotalGross(), '.')+"\n" //$NON-NLS-1$ //$NON-NLS-2$ // + " 0.00\n" - + " "+currencyFormat(trans.getTotalGross(), '.')+"\n" //$NON-NLS-1$ //$NON-NLS-2$ - + " \n" //$NON-NLS-1$ - + " \n"; //$NON-NLS-1$ + + " "+currencyFormat(trans.getTotalGross(), '.')+"\n" //$NON-NLS-1$ //$NON-NLS-2$ + + " \n" //$NON-NLS-1$ + + " \n"; //$NON-NLS-1$ // + " \n" // + " \n" // + " \n" @@ -364,48 +368,48 @@ public class ZUGFeRDExporter { int lineID=0; for (IZUGFeRDExportableItem currentItem : trans.getZFItems()) { lineID++; - xml=xml+ " \n"+ //$NON-NLS-1$ - " \n" //$NON-NLS-1$ - + " "+lineID+"\n" //$NON-NLS-1$ //$NON-NLS-2$ - + " \n" //$NON-NLS-1$ + xml=xml+ " \n"+ //$NON-NLS-1$ + " \n" //$NON-NLS-1$ + + " "+lineID+"\n" //$NON-NLS-1$ //$NON-NLS-2$ + + " \n" //$NON-NLS-1$ - + " \n" //$NON-NLS-1$ - + " \n" //$NON-NLS-1$ - + " "+currencyFormat(currentItem.getPriceGross(),'.')+"\n" //$NON-NLS-1$ //$NON-NLS-2$ - + " 1\n" //$NON-NLS-1$ //$NON-NLS-2$ + + " \n" //$NON-NLS-1$ + + " \n" //$NON-NLS-1$ + + " "+currencyFormat(currentItem.getPriceGross(),'.')+"\n" //$NON-NLS-1$ //$NON-NLS-2$ + + " 1\n" //$NON-NLS-1$ //$NON-NLS-2$ // + " \n" // + " false\n" // + " 0.6667\n" // + " Rabatt\n" // + " \n" - + " \n" //$NON-NLS-1$ - + " \n" //$NON-NLS-1$ - + " "+currencyFormat(currentItem.getPrice(),'.')+"\n" //$NON-NLS-1$ //$NON-NLS-2$ - + " 1\n" //$NON-NLS-1$ //$NON-NLS-2$ - + " \n" //$NON-NLS-1$ - + " \n" //$NON-NLS-1$ + + " \n" //$NON-NLS-1$ + + " \n" //$NON-NLS-1$ + + " "+currencyFormat(currentItem.getPrice(),'.')+"\n" //$NON-NLS-1$ //$NON-NLS-2$ + + " 1\n" //$NON-NLS-1$ //$NON-NLS-2$ + + " \n" //$NON-NLS-1$ + + " \n" //$NON-NLS-1$ - + " \n" //$NON-NLS-1$ - + " "+currentItem.getQuantity()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - + " \n" //$NON-NLS-1$ - + " \n" //$NON-NLS-1$ - + " \n" //$NON-NLS-1$ - + " VAT\n" //$NON-NLS-1$ - + " S\n" //$NON-NLS-1$ - + " "+currentItem.getProduct().getVATPercent()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ - + " \n" //$NON-NLS-1$ - + " \n" //$NON-NLS-1$ - + " "+currencyFormat(currentItem.getTotalGross(),'.')+"\n" //$NON-NLS-1$ //$NON-NLS-2$ - + " \n" //$NON-NLS-1$ - + " \n" //$NON-NLS-1$ - + " \n" //$NON-NLS-1$ + + " \n" //$NON-NLS-1$ + + " "+currentItem.getQuantity()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + + " \n" //$NON-NLS-1$ + + " \n" //$NON-NLS-1$ + + " \n" //$NON-NLS-1$ + + " VAT\n" //$NON-NLS-1$ + + " S\n" //$NON-NLS-1$ + + " "+currentItem.getProduct().getVATPercent()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ + + " \n" //$NON-NLS-1$ + + " \n" //$NON-NLS-1$ + + " "+currencyFormat(currentItem.getTotalGross(),'.')+"\n" //$NON-NLS-1$ //$NON-NLS-2$ + + " \n" //$NON-NLS-1$ + + " \n" //$NON-NLS-1$ + + " \n" //$NON-NLS-1$ // + " 4012345001235\n" // + " KR3M\n" // + " 55T01\n" - + " "+currentItem.getProduct().getName()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ - + " "+currentItem.getProduct().getDescription()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ - + " \n" //$NON-NLS-1$ - + " \n"; //$NON-NLS-1$ + + " "+currentItem.getProduct().getName()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ + + " "+currentItem.getProduct().getDescription()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ + + " \n" //$NON-NLS-1$ + + " \n"; //$NON-NLS-1$ @@ -413,7 +417,7 @@ public class ZUGFeRDExporter { xml=xml + " \n" //$NON-NLS-1$ - + ""; //$NON-NLS-1$ + + ""; //$NON-NLS-1$ return xml; } diff --git a/mustang/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java b/mustang/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java index 7567049e..1556e6cb 100644 --- a/mustang/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java +++ b/mustang/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java @@ -3,8 +3,8 @@ package org.mustangproject.ZUGFeRD; * Mustangproject's ZUGFeRD implementation * ZUGFeRD importer * Licensed under the APLv2 - * @date 2014-05-10 - * @version 1.0 + * @date 2014-06-20 + * @version 1.0.1 * @author jstaerk * */ diff --git a/mustang/target/classes/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransaction.class b/mustang/target/classes/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransaction.class index e7576bbc..68e2764e 100644 Binary files a/mustang/target/classes/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransaction.class and b/mustang/target/classes/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransaction.class differ diff --git a/mustang/target/classes/org/mustangproject/ZUGFeRD/ZUGFeRDExporter.class b/mustang/target/classes/org/mustangproject/ZUGFeRD/ZUGFeRDExporter.class index 4a31f66e..b5c652b2 100644 Binary files a/mustang/target/classes/org/mustangproject/ZUGFeRD/ZUGFeRDExporter.class and b/mustang/target/classes/org/mustangproject/ZUGFeRD/ZUGFeRDExporter.class differ diff --git a/mustang/target/maven-archiver/pom.properties b/mustang/target/maven-archiver/pom.properties index 2726ce51..bc550303 100644 --- a/mustang/target/maven-archiver/pom.properties +++ b/mustang/target/maven-archiver/pom.properties @@ -1,5 +1,5 @@ #Generated by Maven -#Mon May 26 19:06:40 CEST 2014 -version=1.0 +#Wed Jun 25 21:50:56 CEST 2014 +version=1.0.2 groupId=org.mustangproject.ZUGFeRD artifactId=mustang diff --git a/mustang/target/mustang-1.0.jar b/mustang/target/mustang-1.0.jar index 210e520d..29d73aff 100644 Binary files a/mustang/target/mustang-1.0.jar and b/mustang/target/mustang-1.0.jar differ diff --git a/mustang/target/surefire-reports/TEST-org.mustangproject.ZUGFeRD.AppTest.xml b/mustang/target/surefire-reports/TEST-org.mustangproject.ZUGFeRD.AppTest.xml index e0e90a90..9f5b8358 100644 --- a/mustang/target/surefire-reports/TEST-org.mustangproject.ZUGFeRD.AppTest.xml +++ b/mustang/target/surefire-reports/TEST-org.mustangproject.ZUGFeRD.AppTest.xml @@ -1,5 +1,5 @@ - + @@ -13,7 +13,7 @@ - + @@ -29,7 +29,7 @@ - +