diff --git a/mustang/doc/ZugferdDev.de.odt b/mustang/doc/ZugferdDev.de.odt
index 2fb66fdf..3b01996a 100644
Binary files a/mustang/doc/ZugferdDev.de.odt and b/mustang/doc/ZugferdDev.de.odt differ
diff --git a/mustang/doc/ZugferdDev.de.pdf b/mustang/doc/ZugferdDev.de.pdf
index e88c15f9..1600f5d9 100644
Binary files a/mustang/doc/ZugferdDev.de.pdf and b/mustang/doc/ZugferdDev.de.pdf differ
diff --git a/mustang/doc/ZugferdDev.en.odt b/mustang/doc/ZugferdDev.en.odt
index b17f7479..b3fafb5c 100644
Binary files a/mustang/doc/ZugferdDev.en.odt and b/mustang/doc/ZugferdDev.en.odt differ
diff --git a/mustang/pom.xml b/mustang/pom.xml
index bc6150b5..837bcf6b 100644
--- a/mustang/pom.xml
+++ b/mustang/pom.xml
@@ -5,6 +5,14 @@
org.mustangproject.ZUGFeRD
mustang
1.1.0.alpha
+
+
+
+ apache-snapshot
+ http://repository.apache.org/content/groups/snapshots
+
+
+
jar
mustang
diff --git a/mustang/src/test/MustangGnuaccountingBeispielRE-20140703_502.pdf b/mustang/src/test/MustangGnuaccountingBeispielRE-20140703_502.pdf
new file mode 100644
index 00000000..1fb653cf
Binary files /dev/null and b/mustang/src/test/MustangGnuaccountingBeispielRE-20140703_502.pdf differ
diff --git a/mustang/src/test/MustangGnuaccountingBeispielRE-20140703_502blanko.pdf b/mustang/src/test/MustangGnuaccountingBeispielRE-20140703_502blanko.pdf
new file mode 100644
index 00000000..2864aedb
Binary files /dev/null and b/mustang/src/test/MustangGnuaccountingBeispielRE-20140703_502blanko.pdf differ
diff --git a/mustang/src/test/java/org/mustangproject/ZUGFeRD/AppTest.java b/mustang/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderTest.java
similarity index 66%
rename from mustang/src/test/java/org/mustangproject/ZUGFeRD/AppTest.java
rename to mustang/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderTest.java
index 73ceb8b8..9608d396 100644
--- a/mustang/src/test/java/org/mustangproject/ZUGFeRD/AppTest.java
+++ b/mustang/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderTest.java
@@ -9,14 +9,14 @@ import junit.framework.TestSuite;
/**
* Unit test for simple App.
*/
-public class AppTest extends TestCase {
+public class MustangReaderTest extends TestCase {
/**
* Create the test case
*
* @param testName
* name of the test case
*/
- public AppTest(String testName) {
+ public MustangReaderTest(String testName) {
super(testName);
}
@@ -24,7 +24,7 @@ public class AppTest extends TestCase {
* @return the suite of tests being tested
*/
public static Test suite() {
- return new TestSuite(AppTest.class);
+ return new TestSuite(MustangReaderTest.class);
}
/**
@@ -32,7 +32,7 @@ public class AppTest extends TestCase {
*/
public void testImport() {
ZUGFeRDImporter zi = new ZUGFeRDImporter();
- zi.extract("./src/test/java/org/mustangproject/ZUGFeRD/RE-20140628_9.pdf");
+ zi.extract("./src/test/MustangGnuaccountingBeispielRE-20140703_502.pdf");
// Reading ZUGFeRD
String amount=null;
@@ -51,12 +51,13 @@ public class AppTest extends TestCase {
}
- assertEquals(amount, "1.19");
- assertEquals(bic, "DE5656565");
- assertEquals(iban, "DE1234");
- assertEquals(holder, "usegroup");
- assertEquals(ref, "RE-20140628/9");
+ assertEquals(amount, "571.04");
+ assertEquals(bic, "COBADEFXXX");
+ assertEquals(iban, "DE88 2008 0000 0970 3757 00");
+ assertEquals(holder, "Bei Spiel GmbH");
+ assertEquals(ref, "RE-20140703/502");
}
+
}
diff --git a/mustang/src/test/java/org/mustangproject/ZUGFeRD/MustangWriterTest.java b/mustang/src/test/java/org/mustangproject/ZUGFeRD/MustangWriterTest.java
new file mode 100644
index 00000000..171d4966
--- /dev/null
+++ b/mustang/src/test/java/org/mustangproject/ZUGFeRD/MustangWriterTest.java
@@ -0,0 +1,344 @@
+package org.mustangproject.ZUGFeRD;
+
+
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+
+import javax.xml.transform.TransformerException;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.pdfbox.exceptions.COSVisitorException;
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.mustangproject.ZUGFeRD.IZUGFeRDExportableContact;
+import org.mustangproject.ZUGFeRD.IZUGFeRDExportableItem;
+import org.mustangproject.ZUGFeRD.IZUGFeRDExportableProduct;
+import org.mustangproject.ZUGFeRD.IZUGFeRDExportableTransaction;
+import org.mustangproject.ZUGFeRD.ZUGFeRDExporter;
+
+
+public class MustangWriterTest extends TestCase implements IZUGFeRDExportableTransaction {
+
+ @Override
+ public Date getDeliveryDate() {
+ return new GregorianCalendar(2014, Calendar.JULY, 3).getTime();
+ }
+
+ @Override
+ public Date getDueDate() {
+ return new GregorianCalendar(2014, Calendar.JULY, 24).getTime();
+ }
+
+ @Override
+ public Date getIssueDate() {
+ return new GregorianCalendar(2014, Calendar.JULY, 3).getTime();
+ }
+
+ @Override
+ public String getNumber() {
+ return "RE-20140703/502";
+ }
+
+ @Override
+ public String getOwnBIC() {
+ return "COBADEFXXX";
+ }
+
+ @Override
+ public String getOwnBankName() {
+ return "Commerzbank";
+ }
+
+ @Override
+ public String getOwnCountry() {
+ return "DE";
+ }
+
+ @Override
+ public String getOwnIBAN() {
+ return "DE88 2008 0000 0970 3757 00";
+ }
+
+ @Override
+ public String getOwnLocation() {
+ return "Stadthausen";
+ }
+
+ @Override
+ public String getOwnOrganisationName() {
+ return "Bei Spiel GmbH";
+ }
+
+ @Override
+ public String getOwnStreet() {
+ return "Ecke 12";
+ }
+
+ @Override
+ public String getOwnTaxID() {
+ return "22/815/0815/4";
+ }
+
+ @Override
+ public String getOwnVATID() {
+ return "DE136695976";
+ }
+
+ @Override
+ public String getOwnZIP() {
+ return "12345";
+ }
+
+ @Override
+ public IZUGFeRDExportableContact getRecipient() {
+ return new Contact();
+ }
+
+ @Override
+ public BigDecimal getTotal() {
+ return new BigDecimal("496.00");
+ }
+
+ @Override
+ public BigDecimal getTotalGross() {
+ return new BigDecimal("571.04");
+ }
+
+ @Override
+ public IZUGFeRDExportableItem[] getZFItems() {
+ Item[] allItems = new Item[3];
+ Product designProduct = new Product("",
+ "Künstlerische Gestaltung (Stunde)", "HUR", new BigDecimal(
+ "7.000000"));
+ Product balloonProduct = new Product("", "Luftballon", "C62",
+ new BigDecimal("19.000000"));
+ Product airProduct = new Product("", "Heiße Luft pro Liter", "LTR",
+ new BigDecimal("19.000000"));
+
+ allItems[0] = new Item(new BigDecimal("160"), new BigDecimal("171.20"),
+ new BigDecimal("1"), new BigDecimal("171.20"), designProduct);
+ allItems[1] = new Item(new BigDecimal("0.79"), new BigDecimal("0.94"),
+ new BigDecimal("400"), new BigDecimal("376.04"), balloonProduct);
+ allItems[2] = new Item(new BigDecimal("0.10"), new BigDecimal("0.12"),
+ new BigDecimal("200"), new BigDecimal("23.80"), airProduct);
+ return allItems;
+ }
+
+ class Contact implements IZUGFeRDExportableContact {
+
+ @Override
+ public String getCountry() {
+ return "DE";
+ }
+
+ @Override
+ public String getLocation() {
+ return "Spielkreis";
+ }
+
+ @Override
+ public String getName() {
+ return "Theodor Est";
+ }
+
+ @Override
+ public String getStreet() {
+ return "Bahnstr. 42";
+ }
+
+ @Override
+ public String getVATID() {
+ return "DE999999999";
+ }
+
+ @Override
+ public String getZIP() {
+ return "88802";
+ }
+ }
+
+ class Item implements IZUGFeRDExportableItem {
+
+ public Item(BigDecimal price, BigDecimal priceGross,
+ BigDecimal quantity, BigDecimal totalGross, Product product) {
+ super();
+ this.price = price;
+ this.priceGross = priceGross;
+ this.quantity = quantity;
+ this.totalGross = totalGross;
+ this.product = product;
+ }
+
+ private BigDecimal price, priceGross, quantity, totalGross;
+ private Product product;
+
+ public BigDecimal getPrice() {
+ return price;
+ }
+
+ public void setPrice(BigDecimal price) {
+ this.price = price;
+ }
+
+ public BigDecimal getPriceGross() {
+ return priceGross;
+ }
+
+ public void setPriceGross(BigDecimal priceGross) {
+ this.priceGross = priceGross;
+ }
+
+ public BigDecimal getQuantity() {
+ return quantity;
+ }
+
+ public void setQuantity(BigDecimal quantity) {
+ this.quantity = quantity;
+ }
+
+ public BigDecimal getTotalGross() {
+ return totalGross;
+ }
+
+ public void setTotalGross(BigDecimal totalGross) {
+ this.totalGross = totalGross;
+ }
+
+ public Product getProduct() {
+ return product;
+ }
+
+ public void setProduct(Product product) {
+ this.product = product;
+ }
+
+ }
+
+ class Product implements IZUGFeRDExportableProduct {
+ private String description, name, unit;
+ private BigDecimal VATPercent;
+
+ public Product(String description, String name, String unit,
+ BigDecimal VATPercent) {
+ super();
+ this.description = description;
+ this.name = name;
+ this.unit = unit;
+ this.VATPercent = VATPercent;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getUnit() {
+ return unit;
+ }
+
+ public void setUnit(String unit) {
+ this.unit = unit;
+ }
+
+ public BigDecimal getVATPercent() {
+ return VATPercent;
+ }
+
+ public void setVATPercent(BigDecimal vATPercent) {
+ VATPercent = vATPercent;
+ }
+
+ }
+
+ private void apply() {
+ PDDocument doc;
+ try {
+ System.out.println("Lese Blanko-PDF");
+ doc = PDDocument
+ .load("./src/test/MustangGnuaccountingBeispielRE-20140703_502blanko.pdf");
+ // automatically add Zugferd to all outgoing invoices
+ ZUGFeRDExporter ze = new ZUGFeRDExporter();
+ System.out.println("Wandle in PDF/A-3u um");
+ ze.PDFmakeA3compliant(doc, "My Application",
+ System.getProperty("user.name"), true);
+ System.out.println("ZUGFeRD-Daten generieren und anhängen");
+ ze.PDFattachZugferdFile(doc, this);
+ System.out.println("Schreibe ZUGFeRD-PDF");
+ doc.save("./src/test/MustangGnuaccountingBeispielRE-20140703_502new.pdf");
+ System.out.println("Fertig.");
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (TransformerException e) {
+ e.printStackTrace();
+ } catch (COSVisitorException e) {
+ e.printStackTrace();
+ }
+
+ }
+
+ /**
+ * Create the test case
+ *
+ * @param testName
+ * name of the test case
+ */
+ public MustangWriterTest(String testName) {
+ super(testName);
+ }
+
+ /**
+ * @return the suite of tests being tested
+ */
+ public static Test suite() {
+ return new TestSuite(MustangWriterTest.class);
+ }
+
+
+
+ public void testExport() {
+ ZUGFeRDImporter zi = new ZUGFeRDImporter();
+ zi.extract("./src/test/MustangGnuaccountingBeispielRE-20140703_502new.pdf");
+ // Reading ZUGFeRD
+
+ String amount=null;
+ String bic=null;
+ String iban=null;
+ String holder=null;
+ String ref=null;
+
+ if (zi.canParse()) {
+ zi.parse();
+ amount=zi.getAmount();
+ bic=zi.getBIC();
+ iban=zi.getIBAN();
+ holder=zi.getHolder();
+ ref=zi.getForeignReference();
+ }
+
+
+ assertEquals(amount, "571.04");
+ assertEquals(bic, "COBADEFXXX");
+ assertEquals(iban, "DE88 2008 0000 0970 3757 00");
+ assertEquals(holder, "Bei Spiel GmbH");
+ assertEquals(ref, "RE-20140703/502");
+
+
+ }
+
+}
diff --git a/mustang/src/test/java/org/mustangproject/ZUGFeRD/RE-20140628_9.pdf b/mustang/src/test/java/org/mustangproject/ZUGFeRD/RE-20140628_9.pdf
deleted file mode 100644
index 75fb6be6..00000000
Binary files a/mustang/src/test/java/org/mustangproject/ZUGFeRD/RE-20140628_9.pdf and /dev/null differ
diff --git a/mustang/target/classes/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.class b/mustang/target/classes/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.class
index 9dd00fa9..f2e67642 100644
Binary files a/mustang/target/classes/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.class and b/mustang/target/classes/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.class differ
diff --git a/mustang/target/maven-archiver/pom.properties b/mustang/target/maven-archiver/pom.properties
index bc550303..f76d5b7c 100644
--- a/mustang/target/maven-archiver/pom.properties
+++ b/mustang/target/maven-archiver/pom.properties
@@ -1,5 +1,5 @@
#Generated by Maven
-#Wed Jun 25 21:50:56 CEST 2014
-version=1.0.2
+#Sat Jun 28 19:58:49 CEST 2014
+version=1.1.0.alpha
groupId=org.mustangproject.ZUGFeRD
artifactId=mustang
diff --git a/mustang/target/mustang-1.1.0.alpha.jar b/mustang/target/mustang-1.1.0.alpha.jar
index 034e17ff..410917b3 100644
Binary files a/mustang/target/mustang-1.1.0.alpha.jar and b/mustang/target/mustang-1.1.0.alpha.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 9f5b8358..2aaddb88 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 @@
-
+
@@ -29,7 +29,7 @@
-
+
@@ -40,7 +40,7 @@
-
+
@@ -56,5 +56,5 @@
-
+
\ No newline at end of file
diff --git a/mustang/target/surefire-reports/org.mustangproject.ZUGFeRD.AppTest.txt b/mustang/target/surefire-reports/org.mustangproject.ZUGFeRD.AppTest.txt
index 067fd66f..e5dc4367 100644
--- a/mustang/target/surefire-reports/org.mustangproject.ZUGFeRD.AppTest.txt
+++ b/mustang/target/surefire-reports/org.mustangproject.ZUGFeRD.AppTest.txt
@@ -1,4 +1,4 @@
-------------------------------------------------------------------------------
Test set: org.mustangproject.ZUGFeRD.AppTest
-------------------------------------------------------------------------------
-Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.011 sec
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.223 sec
diff --git a/mustang/target/test-classes/org/mustangproject/ZUGFeRD/AppTest.class b/mustang/target/test-classes/org/mustangproject/ZUGFeRD/AppTest.class
index 98ae3348..2e71b6d9 100644
Binary files a/mustang/target/test-classes/org/mustangproject/ZUGFeRD/AppTest.class and b/mustang/target/test-classes/org/mustangproject/ZUGFeRD/AppTest.class differ