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