|
|
|
|
@@ -37,7 +37,7 @@ import junit.framework.TestCase;
|
|
|
|
|
|
|
|
|
|
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
|
|
|
|
|
public class ZF2PushTest extends TestCase {
|
|
|
|
|
final String TARGET_PDF = "./target/testout-ZF2Push.pdf";
|
|
|
|
|
final String TARGET_PDF = "./target/testout-MustangGnuaccountingBeispielRE-20201121_508.pdf";
|
|
|
|
|
final String TARGET_ALLOWANCESPDF = "./target/testout-ZF2PushAllowances.pdf";
|
|
|
|
|
final String TARGET_CORRECTIONPDF = "./target/testout-ZF2PushCorrection.pdf";
|
|
|
|
|
final String TARGET_ITEMCHARGESALLOWANCESPDF = "./target/testout-ZF2PushItemChargesAllowances.pdf";
|
|
|
|
|
@@ -50,46 +50,48 @@ public class ZF2PushTest extends TestCase {
|
|
|
|
|
|
|
|
|
|
// the writing part
|
|
|
|
|
|
|
|
|
|
String orgname = "Test company";
|
|
|
|
|
String number = "RE-20170509/505";
|
|
|
|
|
String priceStr = "1.00";
|
|
|
|
|
String orgname = "Bei Spiel GmbH";
|
|
|
|
|
String number = "RE-20201121/508";
|
|
|
|
|
String priceStr = "160.00";
|
|
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
|
|
|
|
|
|
BigDecimal price = new BigDecimal(priceStr);
|
|
|
|
|
String occurenceFrom = "20201001";
|
|
|
|
|
String occurenceTo = "20201005";
|
|
|
|
|
String contractID = "376zreurzu0983";
|
|
|
|
|
try (InputStream SOURCE_PDF = this.getClass()
|
|
|
|
|
.getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
|
|
|
|
|
.getResourceAsStream("/MustangGnuaccountingBeispielRE-20201121_508blanko.pdf");
|
|
|
|
|
|
|
|
|
|
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1().setProducer("My Application")
|
|
|
|
|
.setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).ignorePDFAErrors()
|
|
|
|
|
.load(SOURCE_PDF)) {
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
ze.setTransaction(new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setContractReferencedDocument(contractID).setDetailedDeliveryPeriod(new SimpleDateFormat("yyyyMMdd").parse(occurenceFrom), new SimpleDateFormat("yyyyMMdd").parse(occurenceTo)).setSender(new TradeParty(orgname, "teststr", "55232", "teststadt", "DE").addBankDetails(new BankDetails("777666555", "DE4321"))).setOwnTaxID("4711").setOwnVATID("DE19990815").setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").setAdditionalAddress("Hinterhaus 3").setContact(new Contact("nameRep", "phoneRep", "emailRep@test.com"))).setNumber(number).addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), price, new BigDecimal(1.0))));
|
|
|
|
|
} catch (ParseException ex) {
|
|
|
|
|
throw new RuntimeException("Parse exception");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ze.setTransaction(new Invoice().setDueDate(sdf.parse("2020-12-12")).setIssueDate(sdf.parse("2020-11-21")).setDeliveryDate(sdf.parse("2020-11-10"))
|
|
|
|
|
.setSender(new TradeParty(orgname, "Ecke 12", "12345", "Stadthausen", "DE").addBankDetails(new BankDetails("DE88200800000970375700", "COBADEFFXXX").setAccountName("Max Mustermann")).addVATID("DE136695976"))
|
|
|
|
|
.setRecipient(new TradeParty("Theodor Est", "Bahnstr. 42", "88802", "Spielkreis", "DE")
|
|
|
|
|
.setContact(new Contact("Ingmar N. Fo", "(555) 23 78-23", "info@localhost.local")).setID("2"))
|
|
|
|
|
.setNumber(number)
|
|
|
|
|
.setReferenceNumber("AB321")
|
|
|
|
|
.addItem(new Item(new Product("Design (hours)", "Of a sample invoice", "HUR", new BigDecimal(7)), price, new BigDecimal(1.0)))
|
|
|
|
|
.addItem(new Item(new Product("Ballons", "various colors, ~2000ml", "H87", new BigDecimal(19)), new BigDecimal("0.79"), new BigDecimal(400.0)))
|
|
|
|
|
.addItem(new Item(new Product("Hot air „heiße Luft“ (litres)", "", "LTR", new BigDecimal(19)), new BigDecimal("0.025"), new BigDecimal(800.0)))
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
ze.export(TARGET_PDF);
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
fail("IOException should not be raised in testEdgeExport");
|
|
|
|
|
} catch (IOException | ParseException e) {
|
|
|
|
|
fail("Exception should not be raised in testPushExport");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// now check the contents (like MustangReaderTest)
|
|
|
|
|
ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_PDF);
|
|
|
|
|
assertTrue(zi.getUTF8().contains("777666555")); //the iban
|
|
|
|
|
assertTrue(zi.getUTF8().contains("DE88200800000970375700")); //the iban
|
|
|
|
|
assertTrue(zi.getUTF8().contains("Max Mustermann")); //account holder
|
|
|
|
|
|
|
|
|
|
assertTrue(zi.getUTF8().contains("<rsm:CrossIndustryInvoice"));
|
|
|
|
|
|
|
|
|
|
assertTrue(zi.getUTF8().contains("EUR")); //default invoice currency
|
|
|
|
|
assertTrue(zi.getUTF8().contains(occurenceFrom));
|
|
|
|
|
assertTrue(zi.getUTF8().contains(occurenceTo));
|
|
|
|
|
assertTrue(zi.getUTF8().contains(contractID));
|
|
|
|
|
assertTrue(zi.getUTF8().contains("Hinterhaus")); // lineTwo/additionalAddress
|
|
|
|
|
assertTrue(zi.getUTF8().contains("0815"));
|
|
|
|
|
assertTrue(zi.getUTF8().contains("AB321"));
|
|
|
|
|
|
|
|
|
|
// Reading ZUGFeRD
|
|
|
|
|
assertEquals("1.19", zi.getAmount());
|
|
|
|
|
assertEquals("571.04", zi.getAmount());
|
|
|
|
|
assertEquals(zi.getHolder(), orgname);
|
|
|
|
|
assertEquals(zi.getForeignReference(), number);
|
|
|
|
|
try {
|
|
|
|
|
@@ -162,7 +164,7 @@ public class ZF2PushTest extends TestCase {
|
|
|
|
|
// .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)).addAllowance(new Allowance().setPercent(new BigDecimal(50)))));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ze.setTransaction(new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setSender(new TradeParty(orgname, "teststr", "55232", "teststadt", "DE")).setOwnTaxID("4711").setOwnVATID("DE0815").setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").setContact(new Contact("contact testname","123456","contact.testemail@example.org" ).setFax("0911623562"))).setNumber(number)
|
|
|
|
|
ze.setTransaction(new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setSender(new TradeParty(orgname, "teststr", "55232", "teststadt", "DE")).setOwnTaxID("4711").setOwnVATID("DE0815").setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").setContact(new Contact("contact testname", "123456", "contact.testemail@example.org").setFax("0911623562"))).setNumber(number)
|
|
|
|
|
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)).addAllowance(new Allowance(new BigDecimal("0.1"))))
|
|
|
|
|
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)).addAllowance(new Allowance().setPercent(new BigDecimal(50))))
|
|
|
|
|
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(2.0)).addCharge(new Charge(new BigDecimal(1))))
|
|
|
|
|
@@ -246,6 +248,9 @@ public class ZF2PushTest extends TestCase {
|
|
|
|
|
* test the edge cases of the invoice class
|
|
|
|
|
*/
|
|
|
|
|
public void testPushEdge() {
|
|
|
|
|
String occurrenceFrom = "20201001";
|
|
|
|
|
String occurrenceTo = "20201005";
|
|
|
|
|
String contractID = "376zreurzu0983";
|
|
|
|
|
|
|
|
|
|
String orgname = "Test company";
|
|
|
|
|
String number = "123";
|
|
|
|
|
@@ -259,17 +264,18 @@ public class ZF2PushTest extends TestCase {
|
|
|
|
|
.setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).ignorePDFAErrors()
|
|
|
|
|
.load(SOURCE_PDF)) {
|
|
|
|
|
|
|
|
|
|
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
|
try {
|
|
|
|
|
ze.setTransaction(new Invoice().setCurrency("CHF").addNote("document level 1/2").addNote("document level 2/2").setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date())
|
|
|
|
|
.setDetailedDeliveryPeriod(new SimpleDateFormat("yyyyMMdd").parse(occurrenceFrom), new SimpleDateFormat("yyyyMMdd").parse(occurrenceTo))
|
|
|
|
|
.setSender(new TradeParty(orgname, "teststr", "55232", "teststadt", "DE").addTaxID(taxID).setID("0009845"))
|
|
|
|
|
.setDeliveryAddress(new TradeParty("just the other side of the street", "teststr.12a", "55232", "Entenhausen", "DE").addVATID("DE47110"))
|
|
|
|
|
.setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").setID("0008734").addVATID("DE4711").setContact(new Contact("Franz Müller", "01779999999", "franz@mueller.de", "teststr. 12", "55232", "Entenhausen", "DE").setFax("++49555123456")))
|
|
|
|
|
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(16)), price, new BigDecimal(1.0)).addNote("item level 1/1").addAllowance(new Allowance(new BigDecimal(0.02)).setReason("item discount").setTaxPercent(new BigDecimal(16))).setDetailedDeliveryPeriod(sdf.parse("2020-01-13"),sdf.parse("2020-01-15")))
|
|
|
|
|
.setContractReferencedDocument(contractID)
|
|
|
|
|
.setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").setID("0008734").addVATID("DE4711").setContact(new Contact("Franz Müller", "01779999999", "franz@mueller.de", "teststr. 12", "55232", "Entenhausen", "DE").setFax("++49555123456")).setAdditionalAddress("Hinterhaus 3"))
|
|
|
|
|
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(16)), price, new BigDecimal(1.0)).addNote("item level 1/1").addAllowance(new Allowance(new BigDecimal(0.02)).setReason("item discount").setTaxPercent(new BigDecimal(16))).setDetailedDeliveryPeriod(sdf.parse("2020-01-13"), sdf.parse("2020-01-15")))
|
|
|
|
|
.addCharge(new Charge(new BigDecimal(0.5)).setReason("quick delivery charge").setTaxPercent(new BigDecimal(16)))
|
|
|
|
|
.addAllowance(new Allowance(new BigDecimal(0.2)).setReason("discount").setTaxPercent(new BigDecimal(16)))
|
|
|
|
|
.setDetailedDeliveryPeriod(sdf.parse("2020-01-01"),sdf.parse("2020-01-31"))
|
|
|
|
|
.setDeliveryDate(sdf.parse("2020-02-02")).setOwnVATID("DE0815").setNumber(number)
|
|
|
|
|
.setDeliveryDate(sdf.parse("2020-11-02")).setOwnVATID("DE0815").setNumber(number)
|
|
|
|
|
);
|
|
|
|
|
} catch (ParseException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
@@ -285,8 +291,12 @@ public class ZF2PushTest extends TestCase {
|
|
|
|
|
// now check the contents (like MustangReaderTest)
|
|
|
|
|
ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_PUSHEDGE);
|
|
|
|
|
|
|
|
|
|
assertTrue(zi.getUTF8().contains("Hinterhaus"));
|
|
|
|
|
assertTrue(zi.getUTF8().contains("0009845"));
|
|
|
|
|
assertTrue(zi.getUTF8().contains("0008734"));
|
|
|
|
|
assertTrue(zi.getUTF8().contains(occurrenceFrom));
|
|
|
|
|
assertTrue(zi.getUTF8().contains(occurrenceTo));
|
|
|
|
|
assertTrue(zi.getUTF8().contains(contractID));
|
|
|
|
|
|
|
|
|
|
assertTrue(zi.getUTF8().contains("20200113")); // to contain item delivery periods
|
|
|
|
|
assertTrue(zi.getUTF8().contains("20200115")); // to contain item delivery periods
|
|
|
|
|
|