From 231a7999ee0488fbad24ac1827360beb36667386 Mon Sep 17 00:00:00 2001 From: jstaerk Date: Thu, 19 Nov 2020 14:37:42 +0100 Subject: [PATCH] don't mention tax numbers for shiptotradeparties --- History.md | 2 +- .../ZUGFeRD/ZUGFeRD1PullProvider.java | 6 +++--- .../ZUGFeRD/ZUGFeRD2PullProvider.java | 14 ++++++++------ .../org/mustangproject/ZUGFeRD/ZF2PushTest.java | 6 +++++- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/History.md b/History.md index ded828af..c6f6238f 100644 --- a/History.md +++ b/History.md @@ -8,7 +8,7 @@ - *validator not to XR error on ZF files (only notices) - xmp errors may not show correctly in log ### 2.0.1 done - +- do not list tax numbers for shiptotradeparties - do not expect dueDate for corrected invoices - XR test now includes guideline ID #172 - BigDecimal specific refactoring PR #192 Thanks to weclapp-dev diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java index 2bc7319b..d627d0a4 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java @@ -184,13 +184,13 @@ public class ZUGFeRD1PullProvider extends ZUGFeRD2PullProvider implements IXMLPr } xml = xml + " \n"; - xml += getTradePartyAsXML(trans.getSender(), true); + xml += getTradePartyAsXML(trans.getSender(), true, false); xml += " \n" + " \n"; // + " GE2020211\n" // + " 4000001987658\n" - xml += getTradePartyAsXML(trans.getRecipient(), false); + xml += getTradePartyAsXML(trans.getRecipient(), false, false); if ((trans.getOwnVATID() != null) && (trans.getOwnOrganisationName() != null)) { xml = xml + " \n" + " " + XMLTools.encodeXML(trans.getOwnVATID()) + "\n" @@ -209,7 +209,7 @@ public class ZUGFeRD1PullProvider extends ZUGFeRD2PullProvider implements IXMLPr + " \n"; if (this.trans.getDeliveryAddress() != null) { xml += "" + - getTradePartyAsXML(this.trans.getDeliveryAddress(), false) + + getTradePartyAsXML(this.trans.getDeliveryAddress(), false, true) + ""; } diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java index c0d97e94..e42f49e7 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java @@ -106,14 +106,16 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { return profile; } + // @todo check if the two boolean args can be refactored /*** * returns the UN/CEFACT CII XML for companies(tradeparties), which is actually * the same for ZF1 (v 2013b) and ZF2 (v 2016b) * @param party * @param isSender some attributes are allowed only for senders in certain profiles + * @param isShipToTradeParty some attributes are allowed only for senders or recipients * @return */ - protected String getTradePartyAsXML(IZUGFeRDExportableTradeParty party, boolean isSender) { + protected String getTradePartyAsXML(IZUGFeRDExportableTradeParty party, boolean isSender, boolean isShipToTradeParty) { String xml = ""; // According EN16931 either GlobalID or seller assigned ID might be present for BuyerTradeParty // and ShipToTradeParty, but not both. Prefer seller assigned ID for now. @@ -165,13 +167,13 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { + " " + XMLTools.encodeXML(party.getCountry()) + "\n" + " \n"; - if (party.getVATID() != null) { + if ((party.getVATID() != null)&&(!isShipToTradeParty)) { xml += " \n" + " " + XMLTools.encodeXML(party.getVATID()) + "\n" + " \n"; } - if (party.getTaxID() != null) { + if ((party.getTaxID() != null)&&(!isShipToTradeParty)) { xml += " \n" + " " + XMLTools.encodeXML(party.getTaxID()) + "\n" @@ -397,13 +399,13 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { } xml = xml + " \n" - + getTradePartyAsXML(trans.getSender(), true) + + getTradePartyAsXML(trans.getSender(), true, false) + " \n" + " \n"; // + " GE2020211\n" // + " 4000001987658\n" - xml += getTradePartyAsXML(trans.getRecipient(), false); + xml += getTradePartyAsXML(trans.getRecipient(), false, false); xml += " \n"; if (trans.getBuyerOrderReferencedDocumentID() != null) { @@ -437,7 +439,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { + " \n"; if (this.trans.getDeliveryAddress() != null) { xml += "" + - getTradePartyAsXML(this.trans.getDeliveryAddress(), false) + + getTradePartyAsXML(this.trans.getDeliveryAddress(), false, true) + ""; } diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java index 1375a634..5dd64e24 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java @@ -260,7 +260,8 @@ public class ZF2PushTest extends TestCase { 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()) .setSender(new TradeParty(orgname, "teststr", "55232", "teststadt", "DE").addTaxID(taxID).setID("0009845")) - .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"))) + .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)))) .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))) @@ -284,7 +285,10 @@ public class ZF2PushTest extends TestCase { assertTrue(zi.getUTF8().contains("0009845")); assertTrue(zi.getUTF8().contains("0008734")); assertTrue(zi.getUTF8().contains("item level 1/1")); + assertTrue(zi.getUTF8().contains("DE4711")); // the VAT ID should be there... + assertFalse(zi.getUTF8().contains("DE47110")); // but not the VAT ID of the shiptotradeparty assertTrue(zi.getUTF8().contains("document level 2/2")); + assertFalse(zi.getUTF8().contains("++49555123456")); // in profile EN16931 contact fax number is not allowed }