diff --git a/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransaction.java b/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransaction.java index a6972a51..da6ebed3 100644 --- a/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransaction.java +++ b/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransaction.java @@ -101,7 +101,13 @@ public interface IZUGFeRDExportableTransaction { */ String getOwnIBAN(); - /** + /** + * IBAN of the sender + * @return the Account Number of the invoice sender's bank account + */ + String getOwnKto(); + + /** * Tax ID (not VAT ID) of the sender * @return Tax ID (not VAT ID) of the sender */ diff --git a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java index 58407e7b..dfac61cc 100644 --- a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java +++ b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java @@ -344,9 +344,11 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { + " Überweisung\n" //$NON-NLS-1$ + " \n" //$NON-NLS-1$ + " "+trans.getOwnIBAN()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ + + " "+trans.getOwnKto()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ + " \n" //$NON-NLS-1$ + " \n" //$NON-NLS-1$ + " "+trans.getOwnBIC()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ + + " "+ trans.getOwnBLZ()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ // + " "+trans.getOwnBankName()+"\n" //$NON-NLS-1$ //$NON-NLS-2$ + " \n" //$NON-NLS-1$ + " \n"; //$NON-NLS-1$ diff --git a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java index bd2a2678..bac9e128 100644 --- a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java +++ b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java @@ -66,6 +66,7 @@ public class ZUGFeRDImporter { private String BLZ; private String BIC; private String IBAN; + private String KTO; private String holder; private String amount; private String dueDate; @@ -284,9 +285,12 @@ public class ZUGFeRDImporter { Node detail = bookingDetails.item(detailIndex); if ((detail.getLocalName() != null) && (detail.getLocalName().equals("IBANID"))) { //$NON-NLS-1$ setIBAN(detail.getTextContent()); - } - } + if ((detail.getLocalName() != null) && (detail.getLocalName().equals("ProprietaryID"))) { //$NON-NLS-1$ + setKTO(detail.getTextContent()); + + } + } } ndList = document.getElementsByTagNameNS("*", "PayeeSpecifiedCreditorFinancialInstitution");// ZF1 //$NON-NLS-1$ @@ -455,7 +459,21 @@ public class ZUGFeRDImporter { return IBAN; } - /** + /** + * + * @return the sender's KTO + */ + public String getKTO() { + if (!parsed) { + throw new RuntimeException("use extract() before requesting a value"); + } + if (KTO==null) { + parse(); + } + return KTO; + } + + /** * * @return the sender's bank name */ @@ -473,7 +491,11 @@ public class ZUGFeRDImporter { this.IBAN = IBAN; } - /** + private void setKTO(String KTO) { + this.KTO = KTO; + } + + /** * * @return the name of the owner of the sender's bank account */ diff --git a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDTransactionModelConverter.java b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDTransactionModelConverter.java index ebe3ea98..ff9fd022 100644 --- a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDTransactionModelConverter.java +++ b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDTransactionModelConverter.java @@ -363,6 +363,9 @@ class ZUGFeRDTransactionModelConverter { IDType iban = xmlFactory.createIDType(); iban.setValue(trans.getOwnIBAN()); bankAccount.setIBANID(iban); + IDType kto = xmlFactory.createIDType(); + kto.setValue(trans.getOwnKto()); + bankAccount.setProprietaryID(kto); paymentData.setPayeePartyCreditorFinancialAccount(bankAccount); CreditorFinancialInstitutionType bankData = xmlFactory diff --git a/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransactionImpl.java b/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransactionImpl.java index a4225289..2ac05c96 100644 --- a/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransactionImpl.java +++ b/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransactionImpl.java @@ -30,6 +30,7 @@ public class IZUGFeRDExportableTransactionImpl implements IZUGFeRDExportableTran private IZUGFeRDAllowanceCharge[] zFLogisticsServiceCharges; private IZUGFeRDExportableItem[] zFItems; private IZUGFeRDExportableContact recipient; + private String ownKto; private String ownBLZ; private String ownBIC; private String ownBankName; @@ -92,6 +93,11 @@ public class IZUGFeRDExportableTransactionImpl implements IZUGFeRDExportableTran return recipient; } + @Override + public String getOwnKto() { + return ownKto; + } + @Override public String getOwnBLZ() { return ownBLZ; @@ -232,6 +238,11 @@ public class IZUGFeRDExportableTransactionImpl implements IZUGFeRDExportableTran return this; } + public IZUGFeRDExportableTransactionImpl setOwnKto(String ownKto) { + this.ownKto = ownKto; + return this; + } + public IZUGFeRDExportableTransactionImpl setOwnIBAN(String ownIBAN) { this.ownIBAN = ownIBAN; return this; diff --git a/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterCustomXMLTest.java b/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterCustomXMLTest.java index b7cbd95c..2245a3dc 100644 --- a/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterCustomXMLTest.java +++ b/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterCustomXMLTest.java @@ -216,8 +216,9 @@ public class MustangReaderWriterCustomXMLTest extends TestCase { " 42\n" + " Überweisung\n" + " \n" + - " DE88 2008 0000 0970 3757 00\n" + - " \n" + + " DE88 2008 0000 0970 3757 00\n" + + " 44421800\n" + + " \n" + " \n" + " COBADEFFXXX\n" + " 41441604\n" + @@ -279,6 +280,7 @@ public class MustangReaderWriterCustomXMLTest extends TestCase { String bic = null; String blz = null; String iban = null; + String kto = null; String holder = null; String ref = null; @@ -288,6 +290,7 @@ public class MustangReaderWriterCustomXMLTest extends TestCase { blz = zi.getBLZ(); bic = zi.getBIC(); iban = zi.getIBAN(); + kto = zi.getKTO(); holder = zi.getHolder(); ref = zi.getForeignReference(); } @@ -296,6 +299,7 @@ public class MustangReaderWriterCustomXMLTest extends TestCase { assertEquals(blz, "41441604"); assertEquals(bic, "COBADEFFXXX"); assertEquals(iban, "DE88 2008 0000 0970 3757 00"); + assertEquals(kto, "44421800"); assertEquals(holder, "Bei Spiel GmbH"); assertEquals(ref, "RE-20171118/506"); } @@ -354,6 +358,7 @@ public class MustangReaderWriterCustomXMLTest extends TestCase { + "\n" + "42\n" + "Überweisung\n" + "\n" + "DE88 2008 0000 0970 3757 00\n" + + "44421800\n" + "\n" + "\n" + "COBADEFFXXX\n" @@ -476,6 +481,7 @@ public class MustangReaderWriterCustomXMLTest extends TestCase { String bic = null; String blz = null; String iban = null; + String kto = null; String holder = null; String ref = null; @@ -485,6 +491,7 @@ public class MustangReaderWriterCustomXMLTest extends TestCase { bic = zi.getBIC(); blz = zi.getBLZ(); iban = zi.getIBAN(); + kto = zi.getKTO(); holder = zi.getHolder(); ref = zi.getForeignReference(); } @@ -493,6 +500,7 @@ public class MustangReaderWriterCustomXMLTest extends TestCase { assertEquals(bic, "COBADEFFXXX"); assertEquals(blz, "41441604"); assertEquals(iban, "DE88 2008 0000 0970 3757 00"); + assertEquals(kto, "44421800"); assertEquals(holder, "Bei Spiel GmbH"); assertEquals(ref, "RE-20170509/505"); } diff --git a/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterEdgeTest.java b/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterEdgeTest.java index e61a1d33..1efe4b58 100644 --- a/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterEdgeTest.java +++ b/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterEdgeTest.java @@ -60,6 +60,12 @@ public class MustangReaderWriterEdgeTest extends TestCase implements IZUGFeRDExp } @Override + public String getOwnKto() + { + return "44421800"; + } + + @Override public String getOwnBLZ() { return "41441604"; @@ -370,7 +376,7 @@ public class MustangReaderWriterEdgeTest extends TestCase implements IZUGFeRDExp // //////// TESTS ////////////////////////////////////////////////////////////////////////////////////////// /** - * The importer test imports from ./src/test/MustangGnuaccountingBeispielRE-20151008_504.pdf to check the values. + * The importer test imports from ./src/test/MustangGnuaccountingBeispielRE-20170509_505.pdf to check the values. * --> as only Name Ascending is supported for Test Unit sequence, I renamed the this test-A-Export to run before * testZExport * @@ -387,6 +393,7 @@ public class MustangReaderWriterEdgeTest extends TestCase implements IZUGFeRDExp String bic = null; String blz = null; String iban = null; + String kto = null; String holder = null; String ref = null; String dueDate = null; @@ -398,6 +405,7 @@ public class MustangReaderWriterEdgeTest extends TestCase implements IZUGFeRDExp bic = zi.getBIC(); blz = zi.getBLZ(); iban = zi.getIBAN(); + kto = zi.getKTO(); holder = zi.getHolder(); dueDate = zi.getDueDate(); ref = zi.getForeignReference(); @@ -407,6 +415,7 @@ public class MustangReaderWriterEdgeTest extends TestCase implements IZUGFeRDExp assertEquals(bic, getOwnBIC()); assertEquals(blz, getOwnBLZ()); assertEquals(iban, getOwnIBAN()); + assertEquals(kto, getOwnKto()); assertEquals(holder, getOwnOrganisationName()); assertEquals(dueDate, "20170530"); @@ -450,6 +459,7 @@ public class MustangReaderWriterEdgeTest extends TestCase implements IZUGFeRDExp String bic = null; String blz = null; String iban = null; + String kto = null; String holder = null; String ref = null; @@ -460,6 +470,7 @@ public class MustangReaderWriterEdgeTest extends TestCase implements IZUGFeRDExp bic = zi.getBIC(); blz = zi.getBLZ(); iban = zi.getIBAN(); + kto = zi.getKTO(); holder = zi.getHolder(); ref = zi.getForeignReference(); } @@ -468,6 +479,7 @@ public class MustangReaderWriterEdgeTest extends TestCase implements IZUGFeRDExp assertEquals(bic, getOwnBIC()); assertEquals(blz, getOwnBLZ()); assertEquals(iban, getOwnIBAN()); + assertEquals(kto, getOwnKto()); assertEquals(holder, getOwnOrganisationName()); assertEquals(ref, getNumber()); diff --git a/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterTest.java b/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterTest.java index ee4b5d2d..621fb874 100644 --- a/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterTest.java +++ b/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterTest.java @@ -56,6 +56,11 @@ public class MustangReaderWriterTest extends TestCase implements IZUGFeRDExporta return "RE-20171118/506"; } + @Override + public String getOwnKto() { + return "44421800"; + } + @Override public String getOwnBLZ() { return "41441604"; @@ -353,6 +358,7 @@ public class MustangReaderWriterTest extends TestCase implements IZUGFeRDExporta String blz = null; String bic = null; String iban = null; + String kto = null; String holder = null; String ref = null; @@ -362,6 +368,7 @@ public class MustangReaderWriterTest extends TestCase implements IZUGFeRDExporta blz = zi.getBLZ(); bic = zi.getBIC(); iban = zi.getIBAN(); + kto = zi.getKTO(); holder = zi.getHolder(); ref = zi.getForeignReference(); } @@ -370,6 +377,7 @@ public class MustangReaderWriterTest extends TestCase implements IZUGFeRDExporta assertEquals(blz, "41441604"); assertEquals(bic, "COBADEFFXXX"); assertEquals(iban, "DE88 2008 0000 0970 3757 00"); + assertEquals(kto, "44421800"); assertEquals(holder, "Bei Spiel GmbH"); assertEquals(ref, "RE-20170509/505"); @@ -522,6 +530,7 @@ public class MustangReaderWriterTest extends TestCase implements IZUGFeRDExporta String amount = null; String bic = null; String iban = null; + String kto = null; String holder = null; String ref = null; if (zi.canParse()) { @@ -529,6 +538,7 @@ public class MustangReaderWriterTest extends TestCase implements IZUGFeRDExporta amount = zi.getAmount(); bic = zi.getBIC(); iban = zi.getIBAN(); + kto = zi.getKTO(); holder = zi.getHolder(); ref = zi.getForeignReference(); } @@ -536,6 +546,7 @@ public class MustangReaderWriterTest extends TestCase implements IZUGFeRDExporta assertEquals(amount, "571.04"); assertEquals(bic, getOwnBIC()); assertEquals(iban, getOwnIBAN()); + assertEquals(kto, getOwnKto()); assertEquals(holder, getOwnOrganisationName()); assertEquals(ref, getNumber()); diff --git a/src/test/resources/MustangGnuaccountingBeispielRE-20170509_505.pdf b/src/test/resources/MustangGnuaccountingBeispielRE-20170509_505.pdf index 07a14203..d2bcf218 100644 Binary files a/src/test/resources/MustangGnuaccountingBeispielRE-20170509_505.pdf and b/src/test/resources/MustangGnuaccountingBeispielRE-20170509_505.pdf differ diff --git a/src/test/resources/migration/input/ZUGFeRD1-invoice-adjusted.xml b/src/test/resources/migration/input/ZUGFeRD1-invoice-adjusted.xml index 9667d4b5..70db824b 100644 --- a/src/test/resources/migration/input/ZUGFeRD1-invoice-adjusted.xml +++ b/src/test/resources/migration/input/ZUGFeRD1-invoice-adjusted.xml @@ -77,6 +77,7 @@ Überweisung DE88 2008 0000 0970 3757 00 + 44421800 COBADEFFXXX diff --git a/src/test/resources/migration/input/ZUGFeRD1-invoice.xml b/src/test/resources/migration/input/ZUGFeRD1-invoice.xml index a0948cb2..4b3ddba2 100644 --- a/src/test/resources/migration/input/ZUGFeRD1-invoice.xml +++ b/src/test/resources/migration/input/ZUGFeRD1-invoice.xml @@ -77,6 +77,7 @@ Überweisung DE88 2008 0000 0970 3757 00 + 44421800 COBADEFFXXX diff --git a/src/test/resources/migration/reference/ZUGFeRD2-invoice.xml b/src/test/resources/migration/reference/ZUGFeRD2-invoice.xml index 5eb5637c..12043217 100644 --- a/src/test/resources/migration/reference/ZUGFeRD2-invoice.xml +++ b/src/test/resources/migration/reference/ZUGFeRD2-invoice.xml @@ -177,6 +177,7 @@ Migrated by Mustangproject XSLT Überweisung DE88 2008 0000 0970 3757 00 + 44421800 COBADEFFXXX