Skip to content
This repository has been archived by the owner on May 16, 2018. It is now read-only.

Commit

Permalink
Property "cannationalacc" aus HISPAS wird jetzt ausgewertet und Beim …
Browse files Browse the repository at this point in the history
…Befuellen der Job-Properties bei SEPA-Auftraegen auch verwendet. Zum Hintergrund siehe http://www.onlinebanking-forum.de/forum/topic.php?p=99015#real99015 sowie der Kommentar in AbstractSEPAGV#cannationalAcc().
  • Loading branch information
willuhn committed Jan 1, 2014
1 parent 88ceecb commit 1117898
Show file tree
Hide file tree
Showing 10 changed files with 136 additions and 29 deletions.
8 changes: 8 additions & 0 deletions src/org/kapott/hbci/GV/AbstractGVLastSEPA.java
Expand Up @@ -59,6 +59,14 @@ public AbstractGVLastSEPA(HBCIHandler handler, String lowlevelName, AbstractGVRL
addConstraint("src.bic", "My.bic", null, LogFilter.FILTER_MOST);
addConstraint("src.iban", "My.iban", null, LogFilter.FILTER_IDS);

if (this.canNationalAcc(handler)) // nationale Bankverbindung mitschicken, wenn erlaubt
{
addConstraint("src.country", "My.KIK.country", "", LogFilter.FILTER_NONE);
addConstraint("src.blz", "My.KIK.blz", "", LogFilter.FILTER_MOST);
addConstraint("src.number", "My.number", "", LogFilter.FILTER_IDS);
addConstraint("src.subnumber","My.subnumber", "", LogFilter.FILTER_MOST);
}

addConstraint("_sepadescriptor", "sepadescr", this.getPainVersion().getURN(), LogFilter.FILTER_NONE);
addConstraint("_sepapain", "sepapain", null, LogFilter.FILTER_IDS);

Expand Down
56 changes: 55 additions & 1 deletion src/org/kapott/hbci/GV/AbstractSEPAGV.java
Expand Up @@ -8,7 +8,6 @@
import java.util.Enumeration;
import java.util.List;
import java.util.Properties;
import java.util.Set;

import org.kapott.hbci.GV.generators.ISEPAGenerator;
import org.kapott.hbci.GV.generators.SEPAGeneratorFactory;
Expand All @@ -17,6 +16,8 @@
import org.kapott.hbci.manager.HBCIHandler;
import org.kapott.hbci.manager.HBCIUtils;
import org.kapott.hbci.manager.HBCIUtilsInternal;
import org.kapott.hbci.passport.HBCIPassport;
import org.kapott.hbci.passport.HBCIPassportInternal;
import org.kapott.hbci.sepa.PainVersion;
import org.kapott.hbci.sepa.PainVersion.Type;

Expand Down Expand Up @@ -73,6 +74,59 @@ public AbstractSEPAGV(HBCIHandler handler, String name, HBCIJobResultImpl jobRes
this.pain = this.determinePainVersion(handler);
}

/**
* Durchsucht das BPD-Segment "HISPAS" nach dem Property "cannationalacc"
* um herauszufinden, ob beim Versand eines SEPA-Auftrages die nationale Bankverbindung
* angegeben sein darf.
*
* Siehe FinTS_3.0_Messages_Geschaeftsvorfaelle_2013-05-28_final_version.pdf - Kapitel B.3.2
*
* @param handler
* @return true, wenn der BPD-Parameter von der Bank mit "J" befuellt ist und die
* nationale Bankverbindung angegeben sein darf.
*/
protected boolean canNationalAcc(HBCIHandler handler)
{
// Checken, ob das Flag im Passport durch die Anwendung hart codiert ist.
// Dort kann die Entscheidung ueberschrieben werden, ob die nationale Kontoverbindung
// mitgeschickt wird oder nicht.
// Das wird voraussichtlich u.a. fuer die Postbank benoetigt, weil die in HISPAS
// zwar mitteilt, dass die nationale Kontoverbindung NICHT angegeben werden soll.
// Beim anschliessenden Einreichen einer SEPA-Ueberweisung beschwert sie sich aber,
// wenn man sie nicht mitgesendet hat. Die verbieten also erst das Senden der
// nationalen Kontoverbindung, verlangen sie anschliessend aber. Ein Fehler der
// Bank. Siehe http://www.onlinebanking-forum.de/forum/topic.php?p=86444#real86444
HBCIPassport passport = handler.getPassport();
if (passport instanceof HBCIPassportInternal)
{
HBCIPassportInternal pi = (HBCIPassportInternal) passport;
Object o = pi.getPersistentData("cannationalacc");
if (o != null)
{
String s = o.toString();
HBCIUtils.log("value of \"cannationalacc\" overwritten in passport, value: " + s,HBCIUtils.LOG_INFO);
return s.equalsIgnoreCase("J");
}
}

HBCIUtils.log("searching for value of \"cannationalacc\" in HISPAS",HBCIUtils.LOG_INFO);

// Ansonsten suchen wir in HISPAS - aber nur, wenn wir die Daten schon haben
if (handler.getSupportedLowlevelJobs().getProperty("SEPAInfo") == null)
{
HBCIUtils.log("no HISPAS data found",HBCIUtils.LOG_INFO);
return false; // Ne, noch nicht. Dann lassen wir das erstmal weg
}


// SEPAInfo laden und darüber iterieren
Properties props = handler.getLowlevelJobRestrictions("SEPAInfo");
String value = props.getProperty("cannationalacc");
HBCIUtils.log("cannationalacc=" + value,HBCIUtils.LOG_INFO);
return value != null && value.equalsIgnoreCase("J");
}


/**
* Diese Methode schaut in den BPD nach den unterstützen pain Versionen
* (bei LastSEPA pain.008.xxx.xx) und vergleicht diese mit den von HBCI4Java
Expand Down
10 changes: 9 additions & 1 deletion src/org/kapott/hbci/GV/GVDauerSEPADel.java
Expand Up @@ -5,7 +5,6 @@
import java.util.Properties;

import org.kapott.hbci.GV_Result.GVRDauerEdit;
import org.kapott.hbci.GV_Result.GVRDauerNew;
import org.kapott.hbci.exceptions.InvalidUserDataException;
import org.kapott.hbci.manager.HBCIHandler;
import org.kapott.hbci.manager.HBCIUtilsInternal;
Expand Down Expand Up @@ -50,6 +49,15 @@ public GVDauerSEPADel(HBCIHandler handler) {

addConstraint("src.bic", "My.bic", null, LogFilter.FILTER_MOST);
addConstraint("src.iban", "My.iban", null, LogFilter.FILTER_IDS);

if (this.canNationalAcc(handler)) // nationale Bankverbindung mitschicken, wenn erlaubt
{
addConstraint("src.country", "My.KIK.country", "", LogFilter.FILTER_NONE);
addConstraint("src.blz", "My.KIK.blz", "", LogFilter.FILTER_MOST);
addConstraint("src.number", "My.number", "", LogFilter.FILTER_IDS);
addConstraint("src.subnumber","My.subnumber", "", LogFilter.FILTER_MOST);
}

addConstraint("_sepadescriptor", "sepadescr", this.getPainVersion().getURN(), LogFilter.FILTER_NONE);
addConstraint("_sepapain", "sepapain", null, LogFilter.FILTER_IDS);
addConstraint("orderid","orderid",null, LogFilter.FILTER_NONE);
Expand Down
10 changes: 9 additions & 1 deletion src/org/kapott/hbci/GV/GVDauerSEPAEdit.java
Expand Up @@ -5,7 +5,6 @@
import java.util.Properties;

import org.kapott.hbci.GV_Result.GVRDauerEdit;
import org.kapott.hbci.GV_Result.GVRDauerNew;
import org.kapott.hbci.exceptions.InvalidUserDataException;
import org.kapott.hbci.manager.HBCIHandler;
import org.kapott.hbci.manager.HBCIUtilsInternal;
Expand Down Expand Up @@ -50,6 +49,15 @@ public GVDauerSEPAEdit(HBCIHandler handler) {

addConstraint("src.bic", "My.bic", null, LogFilter.FILTER_MOST);
addConstraint("src.iban", "My.iban", null, LogFilter.FILTER_IDS);

if (this.canNationalAcc(handler)) // nationale Bankverbindung mitschicken, wenn erlaubt
{
addConstraint("src.country", "My.KIK.country", "", LogFilter.FILTER_NONE);
addConstraint("src.blz", "My.KIK.blz", "", LogFilter.FILTER_MOST);
addConstraint("src.number", "My.number", "", LogFilter.FILTER_IDS);
addConstraint("src.subnumber","My.subnumber", "", LogFilter.FILTER_MOST);
}

addConstraint("_sepadescriptor", "sepadescr", this.getPainVersion().getURN(), LogFilter.FILTER_NONE);
addConstraint("_sepapain", "sepapain", null, LogFilter.FILTER_IDS);
addConstraint("orderid","orderid",null, LogFilter.FILTER_NONE);
Expand Down
17 changes: 11 additions & 6 deletions src/org/kapott/hbci/GV/GVDauerSEPAList.java
Expand Up @@ -23,25 +23,21 @@

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Properties;

import org.kapott.hbci.GV.parsers.ISEPAParser;
import org.kapott.hbci.GV.parsers.SEPAParserFactory;
import org.kapott.hbci.GV_Result.GVRDauerList;
import org.kapott.hbci.manager.HBCIHandler;
import org.kapott.hbci.manager.HBCIUtils;
import org.kapott.hbci.manager.HBCIUtilsInternal;
import org.kapott.hbci.manager.LogFilter;
import org.kapott.hbci.sepa.PainVersion;
import org.kapott.hbci.sepa.PainVersion.Type;
import org.kapott.hbci.status.HBCIMsgStatus;
import org.kapott.hbci.structures.Konto;
import org.kapott.hbci.structures.Value;
import org.kapott.hbci.GV.AbstractSEPAGV;
import org.kapott.hbci.GV.parsers.ISEPAParser;
import org.kapott.hbci.GV.parsers.ParsePain00100203;
import org.kapott.hbci.GV.parsers.SEPAParserFactory;

public final class GVDauerSEPAList extends AbstractSEPAGV
{
Expand Down Expand Up @@ -76,6 +72,15 @@ public GVDauerSEPAList(HBCIHandler handler)

addConstraint("src.bic", "My.bic", null, LogFilter.FILTER_MOST);
addConstraint("src.iban", "My.iban", null, LogFilter.FILTER_IDS);

if (this.canNationalAcc(handler)) // nationale Bankverbindung mitschicken, wenn erlaubt
{
addConstraint("src.country", "My.KIK.country", "", LogFilter.FILTER_NONE);
addConstraint("src.blz", "My.KIK.blz", "", LogFilter.FILTER_MOST);
addConstraint("src.number", "My.number", "", LogFilter.FILTER_IDS);
addConstraint("src.subnumber","My.subnumber", "", LogFilter.FILTER_MOST);
}

addConstraint("_sepadescriptor", "sepadescr", this.getPainVersion().getURN(), LogFilter.FILTER_NONE);
addConstraint("orderid","orderid","", LogFilter.FILTER_NONE);
addConstraint("maxentries","maxentries","", LogFilter.FILTER_NONE);
Expand Down
9 changes: 9 additions & 0 deletions src/org/kapott/hbci/GV/GVDauerSEPANew.java
Expand Up @@ -49,6 +49,15 @@ public GVDauerSEPANew(HBCIHandler handler) {

addConstraint("src.bic", "My.bic", null, LogFilter.FILTER_MOST);
addConstraint("src.iban", "My.iban", null, LogFilter.FILTER_IDS);

if (this.canNationalAcc(handler)) // nationale Bankverbindung mitschicken, wenn erlaubt
{
addConstraint("src.country", "My.KIK.country", "", LogFilter.FILTER_NONE);
addConstraint("src.blz", "My.KIK.blz", "", LogFilter.FILTER_MOST);
addConstraint("src.number", "My.number", "", LogFilter.FILTER_IDS);
addConstraint("src.subnumber","My.subnumber", "", LogFilter.FILTER_MOST);
}

addConstraint("_sepadescriptor", "sepadescr", this.getPainVersion().getURN(), LogFilter.FILTER_NONE);
addConstraint("_sepapain", "sepapain", null, LogFilter.FILTER_IDS);

Expand Down
13 changes: 7 additions & 6 deletions src/org/kapott/hbci/GV/GVTermUebSEPA.java
Expand Up @@ -76,12 +76,13 @@ public GVTermUebSEPA(HBCIHandler handler)
addConstraint("src.bic", "My.bic", null, LogFilter.FILTER_MOST);
addConstraint("src.iban", "My.iban", null, LogFilter.FILTER_IDS);

/*
addConstraint("src.country", "My.KIK.country", "", LogFilter.FILTER_NONE);
addConstraint("src.blz", "My.KIK.blz", "", LogFilter.FILTER_MOST);
addConstraint("src.number", "My.number", "", LogFilter.FILTER_IDS);
addConstraint("src.subnumber","My.subnumber", "", LogFilter.FILTER_MOST);
*/
if (this.canNationalAcc(handler)) // nationale Bankverbindung mitschicken, wenn erlaubt
{
addConstraint("src.country", "My.KIK.country", "", LogFilter.FILTER_NONE);
addConstraint("src.blz", "My.KIK.blz", "", LogFilter.FILTER_MOST);
addConstraint("src.number", "My.number", "", LogFilter.FILTER_IDS);
addConstraint("src.subnumber","My.subnumber", "", LogFilter.FILTER_MOST);
}

addConstraint("_sepadescriptor", "sepadescr", this.getPainVersion().getURN(), LogFilter.FILTER_NONE);
addConstraint("_sepapain", "sepapain", null, LogFilter.FILTER_IDS);
Expand Down
9 changes: 9 additions & 0 deletions src/org/kapott/hbci/GV/GVTermUebSEPADel.java
Expand Up @@ -50,6 +50,15 @@ public GVTermUebSEPADel(HBCIHandler handler)

addConstraint("src.bic", "My.bic", null, LogFilter.FILTER_MOST);
addConstraint("src.iban", "My.iban", null, LogFilter.FILTER_IDS);

if (this.canNationalAcc(handler)) // nationale Bankverbindung mitschicken, wenn erlaubt
{
addConstraint("src.country", "My.KIK.country", "", LogFilter.FILTER_NONE);
addConstraint("src.blz", "My.KIK.blz", "", LogFilter.FILTER_MOST);
addConstraint("src.number", "My.number", "", LogFilter.FILTER_IDS);
addConstraint("src.subnumber","My.subnumber", "", LogFilter.FILTER_MOST);
}

addConstraint("orderid", "orderid", null, LogFilter.FILTER_NONE);

addConstraint("_sepadescriptor", "sepadescr", this.getPainVersion().getURN(), LogFilter.FILTER_NONE);
Expand Down
18 changes: 11 additions & 7 deletions src/org/kapott/hbci/GV/GVTermUebSEPAList.java
Expand Up @@ -23,26 +23,21 @@

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Properties;

import org.kapott.hbci.GV_Result.GVRDauerList;
import org.kapott.hbci.GV.parsers.ISEPAParser;
import org.kapott.hbci.GV.parsers.SEPAParserFactory;
import org.kapott.hbci.GV_Result.GVRTermUebList;
import org.kapott.hbci.manager.HBCIHandler;
import org.kapott.hbci.manager.HBCIUtils;
import org.kapott.hbci.manager.HBCIUtilsInternal;
import org.kapott.hbci.manager.LogFilter;
import org.kapott.hbci.sepa.PainVersion;
import org.kapott.hbci.sepa.PainVersion.Type;
import org.kapott.hbci.status.HBCIMsgStatus;
import org.kapott.hbci.structures.Konto;
import org.kapott.hbci.structures.Value;
import org.kapott.hbci.GV.AbstractSEPAGV;
import org.kapott.hbci.GV.parsers.ISEPAParser;
import org.kapott.hbci.GV.parsers.ParsePain00100203;
import org.kapott.hbci.GV.parsers.SEPAParserFactory;

public final class GVTermUebSEPAList extends AbstractSEPAGV
{
Expand Down Expand Up @@ -77,6 +72,15 @@ public GVTermUebSEPAList(HBCIHandler handler)

addConstraint("src.bic", "My.bic", null, LogFilter.FILTER_MOST);
addConstraint("src.iban", "My.iban", null, LogFilter.FILTER_IDS);

if (this.canNationalAcc(handler)) // nationale Bankverbindung mitschicken, wenn erlaubt
{
addConstraint("src.country", "My.KIK.country", "", LogFilter.FILTER_NONE);
addConstraint("src.blz", "My.KIK.blz", "", LogFilter.FILTER_MOST);
addConstraint("src.number", "My.number", "", LogFilter.FILTER_IDS);
addConstraint("src.subnumber","My.subnumber", "", LogFilter.FILTER_MOST);
}

addConstraint("_sepadescriptor", "sepadescr", this.getPainVersion().getURN(), LogFilter.FILTER_NONE);
addConstraint("startdate","startdate","", LogFilter.FILTER_NONE);
addConstraint("enddate","enddate","", LogFilter.FILTER_NONE);
Expand Down
15 changes: 8 additions & 7 deletions src/org/kapott/hbci/GV/GVUebSEPA.java
Expand Up @@ -80,13 +80,14 @@ public GVUebSEPA(HBCIHandler handler, String name)

addConstraint("src.bic", "My.bic", null, LogFilter.FILTER_MOST);
addConstraint("src.iban", "My.iban", null, LogFilter.FILTER_IDS);

/*
addConstraint("src.country", "My.KIK.country", "", LogFilter.FILTER_NONE);
addConstraint("src.blz", "My.KIK.blz", "", LogFilter.FILTER_MOST);
addConstraint("src.number", "My.number", "", LogFilter.FILTER_IDS);
addConstraint("src.subnumber","My.subnumber", "", LogFilter.FILTER_MOST);
*/

if (this.canNationalAcc(handler)) // nationale Bankverbindung mitschicken, wenn erlaubt
{
addConstraint("src.country", "My.KIK.country", "", LogFilter.FILTER_NONE);
addConstraint("src.blz", "My.KIK.blz", "", LogFilter.FILTER_MOST);
addConstraint("src.number", "My.number", "", LogFilter.FILTER_IDS);
addConstraint("src.subnumber","My.subnumber", "", LogFilter.FILTER_MOST);
}

addConstraint("_sepadescriptor", "sepadescr", this.getPainVersion().getURN(), LogFilter.FILTER_NONE);
addConstraint("_sepapain", "sepapain", null, LogFilter.FILTER_IDS);
Expand Down

0 comments on commit 1117898

Please sign in to comment.