From 6a169b19b271ed6cc17e848d552ed2f0ea726f25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jochen=20Sta=CC=88rk?= Date: Sat, 12 Sep 2020 14:50:34 +0200 Subject: [PATCH] moving tax id and vat id into tradeparty --- .../main/java/org/mustangproject/Invoice.java | 22 +++++--- .../org/mustangproject/InvoiceCorrection.java | 31 ----------- .../java/org/mustangproject/TradeParty.java | 21 ++++++++ .../ZUGFeRD/IExportableTransaction.java | 12 ++++- .../ZUGFeRD/IZUGFeRDExportableTradeParty.java | 16 +++++- .../ZUGFeRD/MustangReaderTestCase.java | 7 ++- .../mustangproject/ZUGFeRD/ZF2PushTest.java | 52 ++----------------- 7 files changed, 72 insertions(+), 89 deletions(-) delete mode 100644 library/src/main/java/org/mustangproject/InvoiceCorrection.java diff --git a/library/src/main/java/org/mustangproject/Invoice.java b/library/src/main/java/org/mustangproject/Invoice.java index f879aad6..5a3bada0 100644 --- a/library/src/main/java/org/mustangproject/Invoice.java +++ b/library/src/main/java/org/mustangproject/Invoice.java @@ -28,7 +28,7 @@ import java.util.Date; public class Invoice implements IExportableTransaction { - protected String documentName = null, documentCode = null, number = null, ownOrganisationFullPlaintextInfo = null, referenceNumber = null, shipToOrganisationID = null, shipToOrganisationName = null, shipToStreet = null, shipToZIP = null, shipToLocation = null, shipToCountry = null, buyerOrderReferencedDocumentID = null, buyerOrderReferencedDocumentIssueDateTime = null, ownTaxID = null, ownVATID = null, ownForeignOrganisationID = null, ownOrganisationName = null, currency = null, paymentTermDescription = null; + protected String documentName = null, documentCode = null, number = null, ownOrganisationFullPlaintextInfo = null, referenceNumber = null, shipToOrganisationID = null, shipToOrganisationName = null, shipToStreet = null, shipToZIP = null, shipToLocation = null, shipToCountry = null, buyerOrderReferencedDocumentID = null, buyerOrderReferencedDocumentIssueDateTime = null, ownForeignOrganisationID = null, ownOrganisationName = null, currency = null, paymentTermDescription = null; protected Date issueDate = null, dueDate = null, deliveryDate = null; protected BigDecimal totalPrepaidAmount = null; protected TradeParty sender=null, recipient = null, deliveryAddress = null; @@ -81,6 +81,16 @@ public class Invoice implements IExportableTransaction { return this; } + /*** + * switch type to invoice correction and refer to document number + * @param number + * @return + */ + public Invoice setCorrection(String number) { + + return this; + } + @Override public String getOwnOrganisationFullPlaintextInfo() { return ownOrganisationFullPlaintextInfo; @@ -183,21 +193,21 @@ public class Invoice implements IExportableTransaction { @Override public String getOwnTaxID() { - return ownTaxID; + return getSender().getTaxID(); } public Invoice setOwnTaxID(String ownTaxID) { - this.ownTaxID = ownTaxID; + sender.addTaxID(ownTaxID); return this; } @Override public String getOwnVATID() { - return ownVATID; + return getSender().getVATID(); } public Invoice setOwnVATID(String ownVATID) { - this.ownVATID = ownVATID; + sender.addVATID(ownVATID); return this; } @@ -401,7 +411,7 @@ public class Invoice implements IExportableTransaction { * @return */ public boolean isValid() { - return (dueDate != null) && (sender != null) && (ownTaxID != null) && (ownVATID != null) && (recipient != null); + return (dueDate != null) && (sender != null) && (sender.getTaxID() != null) && (sender.getVATID() != null) && (recipient != null); //contact // this.phone = phone; // this.email = email; diff --git a/library/src/main/java/org/mustangproject/InvoiceCorrection.java b/library/src/main/java/org/mustangproject/InvoiceCorrection.java deleted file mode 100644 index 3a39fa4f..00000000 --- a/library/src/main/java/org/mustangproject/InvoiceCorrection.java +++ /dev/null @@ -1,31 +0,0 @@ -/** - * ********************************************************************* - *

- * Copyright 2018 Jochen Staerk - *

- * Use is subject to license terms. - *

- * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - *

- * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - *

- * See the License for the specific language governing permissions and - * limitations under the License. - *

- * ********************************************************************** - */ -package org.mustangproject; - -import org.mustangproject.ZUGFeRD.*; - -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Date; - -public class InvoiceCorrection extends Invoice { - -} diff --git a/library/src/main/java/org/mustangproject/TradeParty.java b/library/src/main/java/org/mustangproject/TradeParty.java index 625dc08f..3311fbf5 100644 --- a/library/src/main/java/org/mustangproject/TradeParty.java +++ b/library/src/main/java/org/mustangproject/TradeParty.java @@ -6,6 +6,7 @@ import org.mustangproject.ZUGFeRD.IZUGFeRDExportableTradeParty; public class TradeParty implements IZUGFeRDExportableTradeParty { protected String name,zip,street,location,country; + protected String taxID=null, vatID=null; protected Contact contact=null; public TradeParty(String name, String street, String zip, String location, String country) { @@ -22,6 +23,26 @@ public class TradeParty implements IZUGFeRDExportableTradeParty { return this; } + public TradeParty addTaxID(String taxID) { + this.taxID=taxID; + return this; + } + + public TradeParty addVATID(String vatID) { + this.vatID=vatID; + return this; + } + + @Override + public String getVATID() { + return vatID; + } + + @Override + public String getTaxID() { + return taxID; + } + public String getName() { return name; } diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/IExportableTransaction.java b/library/src/main/java/org/mustangproject/ZUGFeRD/IExportableTransaction.java index fdaf66a4..66653bcc 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/IExportableTransaction.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/IExportableTransaction.java @@ -165,7 +165,11 @@ public interface IExportableTransaction { * @return Tax ID (not VAT ID) of the sender */ default String getOwnTaxID() { - return null; + if (getSender()!=null) { + return getSender().getTaxID(); + } else { + return null; + } } @@ -175,7 +179,11 @@ public interface IExportableTransaction { * @return VAT ID (Umsatzsteueridentifikationsnummer) of the sender */ default String getOwnVATID() { - return null; + if (getSender()!=null) { + return getSender().getVATID(); + } else { + return null; + } } diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTradeParty.java b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTradeParty.java index e5d7ba7b..62fc0f8b 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTradeParty.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTradeParty.java @@ -18,12 +18,14 @@ *********************************************************************** */ package org.mustangproject.ZUGFeRD; +import org.mustangproject.TradeParty; + /** * Mustangproject's ZUGFeRD implementation neccessary interface for ZUGFeRD exporter Licensed under the APLv2 * * @author jstaerk - * @version 1.2.0 - * dated 2014-05-10 + * @version 2.0.0 + * dated 2020-09-12 */ @@ -127,4 +129,14 @@ public interface IZUGFeRDExportableTradeParty { return null; } + + /*** + * obligatory for sender but not for recipient + * @return + */ + default String getTaxID() { + return null; + } + + } diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderTestCase.java b/library/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderTestCase.java index df3cb918..c0947bfc 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderTestCase.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderTestCase.java @@ -109,7 +109,7 @@ public abstract class MustangReaderTestCase extends TestCase implements IExporta } protected class SenderTradeParty implements IZUGFeRDExportableTradeParty { - + @Override public String getName() { @@ -136,6 +136,11 @@ public abstract class MustangReaderTestCase extends TestCase implements IExporta return "Ecke 12"; } + @Override + public String getTaxID() { + return "0815"; + } + } protected class Item implements IZUGFeRDExportableItem { diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java index 8b755f5a..8f99ca82 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java @@ -77,47 +77,6 @@ public class ZF2PushTest extends TestCase { } - - public void testInvoiceCorrectionExport() { - - // the writing part - - String orgname = "Test company"; - String number = "123"; - String amountStr = "1.00"; - BigDecimal amount = new BigDecimal(amountStr); - try (InputStream SOURCE_PDF = this.getClass() - .getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505.pdf"); - - ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1().setProducer("My Application") - .setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).ignorePDFAErrors() - .load(SOURCE_PDF)) { - - ze.setTransaction(new InvoiceCorrection().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setContractReferencedDocument("0815").setSender(new TradeParty(orgname, "teststr","55232","teststadt","DE")).setOwnTaxID("4711").setOwnVATID("DE19990815").setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE")).setNumber(number).addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(0)), amount, new BigDecimal(1.0)))); - String theXML = new String(ze.getProvider().getXML()); - assertTrue(theXML.contains("