diff --git a/History.md b/History.md index 811f1657..fd9dcacc 100644 --- a/History.md +++ b/History.md @@ -46,6 +46,7 @@ switch - corrected invoices, - contacts also for recipients - absolute and relative allowances and charges on item and document level, + - support contact fax numbers ### 2.0 still todo - dont show empty tax number field diff --git a/library/src/main/java/org/mustangproject/Contact.java b/library/src/main/java/org/mustangproject/Contact.java index 0a7fd59f..c782f574 100644 --- a/library/src/main/java/org/mustangproject/Contact.java +++ b/library/src/main/java/org/mustangproject/Contact.java @@ -5,6 +5,7 @@ import org.mustangproject.ZUGFeRD.IZUGFeRDExportableContact; public class Contact implements IZUGFeRDExportableContact { protected String name,phone,email,zip,street,location,country; + protected String fax=null; public Contact(String name, String phone, String email) { this.name = name; @@ -43,6 +44,16 @@ public class Contact implements IZUGFeRDExportableContact { return this; } + @Override + public String getFax() { + return fax; + } + + public Contact setFax(String fax) { + this.fax = fax; + return this; + } + public String getEMail() { return email; } diff --git a/library/src/main/java/org/mustangproject/TradeParty.java b/library/src/main/java/org/mustangproject/TradeParty.java index fb7fd958..125fb1ea 100644 --- a/library/src/main/java/org/mustangproject/TradeParty.java +++ b/library/src/main/java/org/mustangproject/TradeParty.java @@ -6,13 +6,13 @@ import org.mustangproject.ZUGFeRD.IZUGFeRDTradeSettlement; import org.w3c.dom.Node; import org.w3c.dom.NodeList; -import javax.xml.xpath.XPathConstants; import java.util.ArrayList; public class TradeParty implements IZUGFeRDExportableTradeParty { protected String name, zip, street, location, country; protected String taxID = null, vatID = null; + protected String additionalAddress = null; protected ArrayList bankDetails = new ArrayList(); protected Contact contact = null; @@ -66,6 +66,9 @@ public class TradeParty implements IZUGFeRDExportableTradeParty { if (postal.item(postalChildIndex).getNodeName().equals("ram:LineOne")) { setStreet(postal.item(postalChildIndex).getTextContent()); } + if (postal.item(postalChildIndex).getNodeName().equals("ram:LineTwo")) { + setAdditionalAddress(postal.item(postalChildIndex).getTextContent()); + } if (postal.item(postalChildIndex).getNodeName().equals("ram:CityName")) { setLocation(postal.item(postalChildIndex).getTextContent()); } @@ -188,4 +191,15 @@ public class TradeParty implements IZUGFeRDExportableTradeParty { } return bankDetails.toArray(new IZUGFeRDTradeSettlement[0]); } + + @Override + public String getAdditionalAddress() { + return additionalAddress; + } + + public TradeParty setAdditionalAddress(String additionalAddress) { + this.additionalAddress = additionalAddress; + return this; + } + } diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableContact.java b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableContact.java index 58ffa8e3..c0fa5203 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableContact.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableContact.java @@ -51,11 +51,15 @@ public interface IZUGFeRDExportableContact { default String getPhone() { return null; } - + default String getEMail() { return null; } + default String getFax() { + return null; + } + /** * Postal code of the recipient diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java index a060af4f..bde112b3 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java @@ -235,12 +235,20 @@ public class ZUGFeRD2PullProvider implements IXMLProvider, IAbsoluteValueProvide + XMLTools.encodeXML(party.getContact().getPhone()) + "\n" + " \n"; } + + if (party.getContact().getFax() != null) { + + xml = xml + " \n" + " " + + XMLTools.encodeXML(party.getContact().getFax()) + "\n" + + " \n"; + } if (party.getContact().getEMail() != null) { xml = xml + " \n" + " " + XMLTools.encodeXML(party.getContact().getEMail()) + "\n" + " \n"; } + xml = xml + " "; } diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java index 35ada12c..9d599875 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java @@ -63,13 +63,10 @@ public class ZF2PushTest extends TestCase { .load(SOURCE_PDF)) { try { - ze.setTransaction(new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setContractReferencedDocument(contractID).setOccurrencePeriod(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").setContact(new Contact("nameRep", "phoneRep", "emailRep@test.com"))).setNumber(number).addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)))); + ze.setTransaction(new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setContractReferencedDocument(contractID).setOccurrencePeriod(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)), amount, new BigDecimal(1.0)))); } catch (ParseException ex) { throw new RuntimeException("Parse exception"); } - String theXML = new String(ze.getProvider().getXML()); - assertTrue(theXML.contains("777666555")); //the iban - assertTrue(theXML.contains("