# Package org.kapott.hbci.GV

package org.kapott.hbci.GV

Dieses Package enthält alle Klassen zur internen Repräsentation von (Highlevel-)Jobs. Die einzige Klasse, die als Schnittstelle zu HBCI-Jobs innerhalb einer Anwendung benötigt wird, ist die Klasse `HBCIJob`.

Beim Festlegen von auszuführenden Jobs werden Highlevel-Jobs und Lowlevel-Jobs unterschieden. Diese Unterscheidung hat nichts mit der Art der Jobs an sich zu tun, sondern mit der Art und Weise, wie sie spezifiziert und parametrisiert werden können:

Alle von HBCI4Java unterstützten Jobs liegen in einer internen Beschreibungssprache vor (XML). Diese Sprache ist eng an die Beschreibung der Geschäftsvorfälle aus der HBCI-Spezifikation gekoppelt. In ihr ist jedem unterstützten Job ein Lowlevel-Jobname zugeordnet, der den Job eindeutig identifiziert. Zu jedem Job gibt es eine bestimmte Anzahl von Parametern, die zur Ausführung dieses Jobs benötigt werden (z.B. Kontoverbindungen, Geldbeträge, usw.). Jeder dieser Parameter hat dabei einen Lowlevel-Parameternamen. Dieser Lowlevel-Parametername stammt aus dem internen Beschreibungsformat des Jobs und ist teilweise sehr aufwändig zu schreiben (weil sehr lang) und schlecht zu merken (weil softwareorientiert).

Um die Arbeit mit häufig benutzten Jobs zu vereinfachen, wurden für die meisten Jobs Highlevel-Frontends entwickelt. Dabei handelt es sich HBCI4Java-intern um separate Klassen, die jeweils für bestimmte Lowlevel-Jobs zuständig sind. Die meisten Jobs können und sollten also über ihre Highlevel-Schnittstelle erzeugt und parametrisiert werden. Dazu gibt es für jeden Job, der durch die Highlevel-Schnittstelle unterstützt wird, einen Highlevel-Jobnamen. Außerdem gibt es für die benötigten Job-Parameter entsprechende Highlevel-Parameternamen. Diese sind zum einen kürzer als die Lowlevel-Parameternamen, außerdem sind sie intuitiver und leichter zu merken.

Beim Erzeugen von Jobs sollte also immer dem Highlevel-Interface der Vorzug gegeben werden, sofern es für den jeweiligen Job eine solche Schnittstelle gibt. Die Jobs, für die eine Highlevel-Schnittstelle existiert, sind unten aufgelistet. Prinzipiell kann natürlich jeder Job auch über die Lowlevel-Schnittstelle erzeugt und ausgewertet werden. Eine Liste aller Lowlevel-Jobs und deren Parameter erhält man mit den Tools ShowLowlevelGVs bzw. ShowLowlevelGVRs oder zur Laufzeit durch die Verwendung der Methoden `getLowlevel*` der `HBCIHandler`-Klasse. Da es zur Zeit nicht für alle Lowlevel-Jobs entsprechende Klassen für die Highlevel-Unterstützung gibt, sollten diese Methoden benutzt werden, um zu überprüfen, ob ein bestimmter Job gar nicht oder nur nicht per Highlevel-Interface unterstützt wird.

Folgende Unterschiede existieren also zwischen High- und Lowlevel-Jobs:

| Highlevel-Interface | Lowlevel-Interface
--- | --- | ---
Erzeugen des Jobs | `HBCIHandler.newJob(HighlevelName)` Eine Liste gültiger HighlevelNamen befindet sich in dieser Beschreibung weiter unten | `HBCIHandler.newLowlevelJob(LowlevelName)` Eine Liste gültiger LowlevelNamen erhält man zur Laufzeit durch `HBCIHandler.getSupportedLowlevelGVs()` bzw. offline mit dem Tool `ShowLowlevelGVs`.

Setzen von Parametern

`HBCIJob.setParam(HLparamName,...)`
Gültige Werte für `HLparamName` finden sich in der Job-Beschreibung weiter unten. Es können auch komplexe Parameter gesetzt werden (siehe zum Beispiel `HBCIJob.setParam(String,Konto)`).

`HBCIJob.setParam(LLparamName,value)`
Eine Liste gültiger `LLparamName`n erhält man zur Laufzeit durch `HBCIHandler.getLowlevelGVParameters()` bzw. offline mit dem Tool `ShowLowlevelGVs`.

Ergebnisdaten (`HBCIJob.getJobResult()`)

Klasse des zurückgegeben Objektes abhängig vom Job (siehe Beschreibung unten). Die Job-Rückgabedaten sind bereits anwendungsfreundlich aufbereitet

Klasse des zurückgegebenen Objektes ist immer `HBCIJobResult`. Darin enthalten sind die "puren" Datenelement-Daten, wie sie aus der HBCI-Antwortnachricht extrahiert wurden. Der Inhalt der einzelnen Datenelemte kann über bestimmte Namen ermittelt werden (`HBCIHandler.getLowlevelResultProperties()` bzw. `ShowLowlevelGVRs`).

## Beschreibung der unterstützten Highlevel-Jobs

Kundenmitteilung an die Bank
Dauerauftrag einrichten
Liste bestehender Daueraufträge abholen
Bestehenden Dauerauftrag bearbeiten
Bestehenden Dauerauftrag löschen
Einzelüberweisung
Umbuchung
Einzelüberweisung mit prüfziffergesichertem Verwendungszweck (BZÜ)
Eilüberweisung
Spendenüberweisung
Auslandsüberweisung
SEPA-Einzelüberweisung
Terminierte Einzelüberweisung
Liste noch anstehender terminierten Überweisungen abholen
Noch anstehende terminierte Überweisung verändern
Noch anstehende terminierte Überweisung löschen
Sammelüberweisung einreichen
Sammellastschrift einreichen
Einzellastschrift einreichen
Lastschriftwiderruf
Kontoumsätze anzeigen
Neue Kontoumsätze anzeigen
Saldoabfrage eines Kontos
Saldenabfrage aller Kundenkonten
Saldenabfrage eines SEPA-Kontos
Festgeldkonditionen abholen
Liste bestehender Festgeldanlagen abholen
Liste aller bestehender Festgeldanlagen abholen
Kontostammdaten abholen
Karten-Informationen abholen
Übersicht über Kreditinstitutsinformationen abholen
Bestellen bzw. Abholen von Kreditinstitutsinformationen
Statusinformationen zu Geschäftsvorfällen abholen
Abholen von Informationen über TAN-Listen
Ändern der PIN für HBCI-PIN/TAN

### Kundenmitteilung an die Bank

Mit diesem Geschäftsvorfall kann ein Bankkunde eine Nachricht an seine Bank versenden. Der Inhalt dieser Nachricht hat keinen Auftragscharakter.

Highlevel-Name | `CustomMsg`
Highlevel-Parameter
| `msg` | String | obligatorisch | die zu übermittelnde Nachricht
| `my` | Konto | optional | Kontoverbindung des Bankkunden
| `curr` | String | optional | Währung des Kundenkontos ("`EUR`")
| `betreff` | String | optional | Betreff der Nachricht
| `recpt` | String | optional | Empfänger der Nachricht (z.B. ein bestimmter Ansprechpartner)
Rückgabedaten-Klasse | `HBCIJobResult` |

### Dauerauftrag einrichten

Mit diesem Geschäftsvorfall kann ein neuer Dauerauftrag eingerichtet werden.

Highlevel-Name | `DauerNew` |
Highlevel-Parameter |  |
| `src` | Konto | obligatorisch | das Konto, welches bei dem Dauerauftrag belastet wird (Kundenkonto)
| `dst` | Konto | obligatorisch | das auf welches die Gutschrift erfolgt (fremdes Konto)
| `btg` | Value | obligatorisch | Geldbetrag, der bei dem Dauerauftrag überwiesen wird.
| `name` | String | obligatorisch | Name des Empfängers ("Begünstigter").
| `name2` | String | optional | Fortsetzung Name des Empfängers ("Begünstigter").
| `firstdate` | Date | obligatorisch | Datum der ersten Ausführung des Dauerauftrages.
| `lastdate` | Date | optional | Datum der letzten Ausführung des Dauerauftrages.
| `timeunit` | String | obligatorisch | Zeiteinheit für den Turnus-Wert. Entweder "`M`" für Monat oder "`W`" für Woche.
| `turnus` | int | obligatorisch | Dieser Wert gibt an, aller wieviel "`timeunit`"s der Dauerauftrag ausgeführt werden soll.
| `execday` | int | obligatorisch | Dieser Wert gibt bei `timeunit=M` den Tag des Monats (1-31) und bei `timeunit=W` den Wochentag (1-7) der Ausführung an. Gültige Werte sind den Job-Restriktionen zu entnehmen.
| `usage, usage_2, usage_3,...` | String | optional | Verwendungszweckzeilen
| `key` | String | optional | Textschlüssel für Art der Überweisung (default="`52`").
Rückgabedaten-Klasse | `GVRDauerNew` |

### Liste bestehender Daueraufträge abholen

Mit diesem Geschäftsvorfall kann eine Übersicht der bestehenden Daueraufträge abgeholt werden.

Highlevel-Name | `DauerList` |
Highlevel-Parameter |  |
| `my` | Konto | optional | das Kundenkonto, für welches der Dauerauftragsbestand abgeholt werden soll. Ist kein Konto angegeben, so wird das erste in den UPD aufgeführte Konto benutzt.
| `orderid` | String | optional | Auftrags-Identifikationsnummer für einen bestimmten Auftrag, dessen Daten abgeholt werden sollen.
Rückgabedaten-Klasse | `GVRDauerList` |

### Bestehenden Dauerauftrag bearbeiten

Mit diesem Geschäftsvorfall kann ein bestehender Dauerauftrag verändert werden. Dazu muss die `orderid` des zu ändernden Auftrages bekannt sein. Zur Ermittlung und Verwendung von Order-IDs siehe entsprechenden Abschnitt in der Beschreibung zur `Löschung terminierter Überweisungen`. Es müssen nur die Job-Parameter angegeben werden, die tatsächlich verändert werden sollen, die Angabe aller anderen Job-Parameter ist optional.

Aus den Job-Restriktionen kann ermittelt werden, welche Parameter überhaupt geändert werden dürfen.

Highlevel-Name | `DauerEdit` |
Highlevel-Parameter | sämtliche Parameter wie bei `DauerNew`, allerdings alle optional; außerdem: |
| `orderid` | String | obligatorisch | Auftrags-Identifikationsnummer für den zu bearbeitenden Auftrag
| `date` | Date | optional | Datum, ab wann der Auftrag geändert werden soll
Rückgabedaten-Klasse | `GVRDauerEdit` |

### Bestehenden Dauerauftrag löschen

Mit diesem Geschäftsvorfall kann ein bestehender Dauerauftrag gelöscht werden. Für die Angabe, welcher Dauerauftrag gelöscht werden soll, gibt es prinzipiell zwei Möglichkeiten:

1. Wenn die Bank keine Order-IDs (Auftrags-Identifikationsnummern) unterstützt, dann müssen für die Identifikation des "richtigen" Dauerauftrages alle Dauerauftrags-Parameter angegeben werden, die auch beim Einrichten des Dauerauftrages verwendet wurden (siehe `Dauerauftrag einrichten`).
2. Unterstützt die Bank Order-IDs, gibt es wiederum zwei Möglichkeiten:
   1. Es werden alle Parameter wie beim Erzeugen des Dauerauftrages und zusätzlich die Order-ID angegeben.
   2. Es genügt die Angabe der Order-ID. Dazu muss allerdings vor dem Erzeugen des Jobs "`Dauerauftrag löschen`" die Liste der existierenden Daueraufträge abgeholt werden (siehe `Liste bestehender Daueraufträge abholen`), damit HBCI4Java die verwendete Order-ID kennt und die restlichen Auftrags-Parameter "selbst ausfüllen" kann.
Siehe dazu auch den entsprechenden Abschnitt in der Beschreibung zur `Löschung terminierter Überweisungen`

Highlevel-Name | `DauerDel` |
Highlevel-Parameter | sämtliche Parameter wie bei `DauerNew`, allerdings alle optional; außerdem: |
| `orderid` | String | optional | Auftrags-Identifikationsnummer für den zu löschenden Auftrag
| `date` | Date | optional | Datum, wann der Auftrag gelöscht werden soll
Rückgabedaten-Klasse | `HBCIJobResult` |

### Einzelüberweisung

Mit diesem Geschäftsvorfall wird eine einzelne Überweisung in Auftrag gegeben.

Highlevel-Name | `Ueb` |
Highlevel-Parameter |  |
| `src` | Konto | obligatorisch | Belastungskonto des Kunden
| `dst` | Konto | obligatorisch | Konto, auf dem der Betrag gutgeschrieben werden soll
| `btg` | Value | obligatorisch | Geldbetrag, der überwiesen werden soll.
| `name` | String | obligatorisch | Name des Empfängers ("Begünstigter").
| `name2` | String | optional | Fortsetzung Name des Empfängers ("Begünstigter").
| `usage, usage_2, usage_3,...` | String | optional | Verwendungszweckzeilen
| `key` | String | optional | Textschlüssel für Transaktionsart (default="`51`").
Rückgabedaten-Klasse | `HBCIJobResult` |

### Umbuchung

Eine Umbuchung entspricht im wesentlichen einer Überweisung, wird aber von einigen Kreditinstituten intern anders ausgeführt. Voraussetzung für das Verwenden von Umbuchungen anstelle von "normalen" Überweisungen ist, dass das Empfängerkonto bei der gleichen Bank wie das Auftraggeberkonto geführt wird und ebenfalls dem Auftraggeber gehört. Mit diesem Geschäftsvorfall kann also eine Überweisung zwischen zwei eigenen Konten bei der gleichen Bank durchgeführt werden.

Highlevel-Name | `Umb` |
Highlevel-Parameter | wie bei Einzelüberweisung |
Rückgabedaten-Klasse | `HBCIJobResult` |

### Einzelüberweisung mit prüfziffergesichertem Verwendungszweck (BZÜ)

Mit diesem Geschäftsvorfall wird eine einzelne Überweisung in Auftrag gegeben. Dabei enthält die erste Zeile des Verwendungszweckes einen 13-stelligen String, wovon 12 Ziffern tatsächlich Nutzdaten sind, die 13.Ziffer ist eine Prüfziffer über die restlichen 12. Beim Anlegen eines solchen Geschäftsvorfalles wird automatisch überprüft, ob die 13-stellige Ziffernfolge konsistent ist.

Highlevel-Name | `UebBZU` |
Highlevel-Parameter | wie bei Einzelüberweisung, aber ohne die erste Verwendungszweckzeile (`usage`), dafür: |
| `bzudata` | String | obligatorisch | 13-stellige Zeichenkette (enthält Prüfziffer).
| `key` | String | optional | Textschlüssel für Transaktionsart (default="`67`").
Rückgabedaten-Klasse | `HBCIJobResult` |

### Eilüberweisung

Eine Eilüberweisung funktioniert analog einer "normalen" Überweisung, wird aber u.U. schneller bearbeitet (die genauen bankfachlichen Hintergründe sind hier nicht relevant).

Highlevel-Name | `UebEil` |
Highlevel-Parameter | wie bei Einzelüberweisung |
Rückgabedaten-Klasse | `HBCIJobResult` |

### Spendenüberweisung

Dabei handelt es sich im Prinzip um eine normale Einzelüberweisung. Einziger Unterschied ist ein bankintern anders gesetzter Textschlüssel für den Überweisungstyp. Wo dieser Textschlüssel konkret ausgewertet wird, weiß ich leider auch nicht.

Highlevel-Name | `Donation` |
Highlevel-Parameter | wie bei `Einzelüberweisung`, allerdings ohne die Verwendungszweckzeilen; statt dessen: |
| `spenderid` | String | obligatorisch | Name des Spenders oder Kunden-/Mitgliedsnummer
| `plz_street` | String | obligatorisch | PLZ und Straße des Spenders
| `name_ort` | String | obligatorisch | Name und Ort des Einzahlers
| `key` | String | optional | Textschlüssel für Transaktionsart (default="`69`").
Rückgabedaten-Klasse | `HBCIJobResult` |

### Auslandsüberweisung

Mit diesem Geschäftsvorfall kann eine einfache Auslandsüberweisung in Auftrag gegeben werden. Darunter fallen alle Überweisungen in die meisten europäischen Länder, bei denen der zu überweisende Geldbetrag die gesetzliche Meldepflicht (zur Zeit 12500 EUR) nicht übersteigt.

Highlevel-Name | `UebForeign` |
Highlevel-Parameter |  |
| `src` | Konto | obligatorisch | Belastungskonto des Kunden
| `src.name` | String | obligatorisch | Name des Auftraggebers
| `dst` | Konto | optional | Konto, auf dem der Betrag gutgeschrieben werden soll. Es ist entweder dieser Parameter oder die IBAN anzugeben.
| `dst.iban` | String | optional | Alternativ zur Kontoverbindung des Empfängers kann die IBAN des Zielkontos angegeben werden. Es muss genau einer der beiden Parameter angegeben werden.
| `dst.name` | String | obligatorisch | Name des Empfängers ("Begünstigter").
| `dst.kiname` | String | obligatorisch | Vollständiger Name der Zielbank.
| `btg` | Value | obligatorisch | Geldbetrag, der überwiesen werden soll.
| `usage` | String | optional | Verwendungszweck
Rückgabedaten-Klasse | `HBCIJobResult` |

### SEPA-Einzelüberweisung

Dabei handelt es sich um eine Überweisung nach dem SEPA-Standard (ein Projekt, bei dem ein europaweit einheitlicher Zahlungsraum angestrebt wird). Solche Überweisungen können als Ziel sowohl in- als auch ausländische Konten haben. Die normale Kombination von Kontonummer/BLZ wird ersetzt durch die weltweit eindeutige IBAN (entspricht Konto-Identifikation) und BIC (Bankkennung). Derzeit (2009) werden SEPA-Geschäftsvorfälle nicht von allen Banken unterstützt.

Highlevel-Name | `UebSEPA` |
Highlevel-Parameter |  |
| `src` | Konto | obligatorisch | Belastungskonto des Kunden. Entscheidend sind gesetzte Werte für `bic`, `iban` und `name`
| `dst` | Konto | obligatorisch | Konto, auf dem der Betrag gutgeschrieben werden soll. Entscheidend sind auch hier gesetzte Werte für `bic`, `iban` und `name`
| `btg` | Value | obligatorisch | Geldbetrag, der überwiesen werden soll. Die Währung muss immer `EUR` sein
| `usage` | String | optional | Verwendungszweck (max. 140 Zeichen)
Rückgabedaten-Klasse | `HBCIJobResult` |

### Terminierte Einzelüberweisung

Dabei handelt es sich um eine Einzelüberweisung, bei der zusätzlich das Datum angegeben wird, zu dem diese Überweisung ausgeführt werden soll. Das Datum darf in der Regel nicht zu nah in der Zukunft liegen (meist mind. 2 Tage) und muss ein Werktag sein. Die Mindestvorlaufzeit zur Einreichung einer terminierten Überweisung ist aus den Job-Restriktionen zu erfahren.

Highlevel-Name | `TermUeb` |
Highlevel-Parameter | wie bei `Einzelüberweisung`, zusätzlich: |
| `date` | Date | obligatorisch | Datum der geplanten Ausführung der Überweisung
Rückgabedaten-Klasse | `GVRTermUeb` |

### Liste noch anstehender terminierten Überweisungen abholen

Mit diesem Geschäftsvorfall kann eine Liste aller noch anstehenden terminierten Überweisungen abgeholt werden.

Highlevel-Name | `TermUebList` |
Highlevel-Parameter |  |
| `my` | Konto | optional | Kundenkonto, für das die Liste abgeholt werden soll; ist kein Konto angegeben, so wird das erste Konto aus den UPD verwendet.
| `startdate` | Date | optional | nur Aufträge abholen, die an oder nach diesem Datum ausgeführt werden sollen
| `enddate` | Date | optional | nur Aufträge abholen, die an oder vor diesem Datum ausgeführt werden sollen
Rückgabedaten-Klasse | `GVRTermUebList` |

### Noch anstehende terminierte Überweisung verändern

Mit diesem Geschäftsvorfall kann eine noch nicht ausgeführte terminierte Überweisung verändert werden. Aus den Job-Restriktionen ist ersichtlich, ob das überhaupt möglich ist und wenn ja, welche Parameter verändert werden dürfen. Für diesen Geschäftsvorfall wird die Auftrags-Identifikationsnummer (`orderid`) des zu bearbeitenden Auftrages benötigt. Es müssen nur die Parameter angegeben werden, die tatsächlich geändert werden sollen. Alle anderen Job-Parameter müssen nicht mit angegeben werden (sie werden automatisch anhand der Order-ID ermittelt). Zur Benutzung von Order-IDs siehe entsprechenden Abschnitt in der Beschreibung zu `Löschen einer terminierten Überweisung`.

Highlevel-Name | `TermUebEdit` |
Highlevel-Parameter | wie bei `Terminierte Überweisung`, jedoch alles optional; zusätzlich: |
| `orderid` | String | obligatorisch | Die Auftragsidentifikationsnummer des zu bearbeitenden Auftrages.
Rückgabedaten-Klasse | `GVRTermUebEdit` |

### Noch anstehende terminierte Überweisung löschen

Mit diesem Geschäftsvorfall kann eine noch nicht ausgeführte terminierte Überweisung gelöscht werden. Für diesen Geschäftsvorfall wird nur die Order-ID eines terminierten Überweisungsauftrages benötigt.

Order-IDs werden bei den Geschäftsvorfällen `Einrichten einer terminierten Überweisung`, `Ändern einer terminierten Überweisung` sowie `Abrufen des Bestandes terminierter Überweisungen` zurückgegeben. Auch wenn die entsprechenden Order-IDs bereits offline bekannt sind (z.B. aus früheren HBCI-Dialogen), so muss erst ein Auftrag ausgeführt werden, der die Order-ID für den zu löschenden Auftrag tatsächlich zurückgibt (also in der Regel ein `Abrufen des Bestandes...`). Der Grund ist der, dass HBCI4Java zusätzlich benötigte Auftragsdaten intern zwischenspeichert und gegebenenfalls benutzt. Diese Zwischenspeicherung ist aber an ein konkretes `HBCIPassport`-Objekt gebunden, weshalb die Verwendung von Order-IDs, welche nicht zur Laufzeit erzeugt wurden, zu einer Exception führt.

Highlevel-Name | `TermUebDel` |
Highlevel-Parameter |  |
| `orderid` | String | obligatorisch | Die Auftragsidentifikationsnummer des zu löschenden Auftrages.
Rückgabedaten-Klasse | `HBCIJobResult` |

### Sammelüberweisung einreichen

Mit diesem Geschäftsvorfall kann ein Sammelüberweisungsauftrag eingereicht werden. Die Daten müssen dabei bereits im DTAUS-Format vorliegen. Für die Erzeugung von DTAUS-Datensätzen kann die Klasse DTAUS benutzt werden.

Highlevel-Name | `MultiUeb` |
Highlevel-Parameter |  |
| `my` | Konto | obligatorisch | Kontoverbindung des Auftraggebers
| `data` | String | obligatorisch | DTAUS-Daten mit den Überweisungsinformationen
Rückgabedaten-Klasse | `HBCIJobResult` |

### Sammellastschrift einreichen

Mit diesem Geschäftsvorfall kann ein Sammellastschriftauftrag eingereicht werden. Die Daten müssen dazu bereits im DTAUS-Format vorliegen. Für die Erzeugung von DTAUS-Datensätzen kann die Klasse DTAUS benutzt werden.

Highlevel-Name | `MultiLast` |
Highlevel-Parameter |  |
| `my` | Konto | obligatorisch | Kontoverbindung des Auftraggebers
| `data` | String | obligatorisch | DTAUS-Daten mit den Überweisungsinformationen
Rückgabedaten-Klasse | `HBCIJobResult` |

### Einzellastschrift einreichen

Mit diesem Geschäftsvorfall wird ein einzelner Auftrag zum Lastschrifteinzug eingereicht.

Highlevel-Name | `Last` |
Highlevel-Parameter |  |
| `my` | Konto | obligatorisch | Konto des Bankkunden
| `other` | Konto | obligatorisch | Konto, welches mit dem Betrag belastet werden soll
| `btg` | Value | obligatorisch | Geldbetrag, der eingezogen werden soll.
| `name` | String | obligatorisch | Name des Zahlungspflichtigen
| `name2` | String | optional | Fortsetzung Name des Zahlungspflichtigen.
| `type` | String | optional | Typ der Lastschrift. Defaultmäßig wird hier "05" verwendet, es ist auch der Code "04" zulässig.
| `usage, usage_2, usage_3,...` | String | optional | Verwendungszweckzeilen
Rückgabedaten-Klasse | `HBCIJobResult` |

### Lastschriftwiderruf

Damit kann eine Lastschrift, mit der das eigene Konto belastet wurde, "zurückgegeben" werden.

Highlevel-Name | `StornoLast` |
Highlevel-Parameter |  |
| `my` | Konto | obligatorisch | Konto des Bankkunden
| `other` | Konto | obligatorisch | Gegenkonto, dem die ursprüngliche Lastschrift gutgeschrieben wurde
| `btg` | Value | obligatorisch | Betrag der ursprünglichen Lastschrift
| `date` | Date | obligatorisch | Datum des ursprünglichen Lastschriftauftrages
| `name` | String | obligatorisch | Name des Auftraggebers der ursprünglichen Lastschrift
| `name2` | String | optional | Fortsetzung Name des Auftraggebers.
| `primanota` | String | optional | Primanota-Nummer der ursprünglichen Lastschrift
Rückgabedaten-Klasse | `HBCIJobResult` |

### Kontoumsätze anzeigen

Mit diesem Geschäftsvorfall kann eine Übersicht über die Kontoumsatzdaten eines Kontos abgeholt werden.

Highlevel-Name | `KUmsAll` |
Highlevel-Parameter |  |
| `my` | Konto | optional | Das Konto, für das Umsatzinformationen abgeholt werden sollen. Wird hier kein Konto angegeben, so wird das erste Konto aus den UPD verwendet.
| `startdate` | Date | optional | Nur Umsatzdaten abholen, die an oder nach diesem Datum gebucht wurden
| `enddate` | Date | optional | Nur Umsatzdaten abholen, die an oder vor diesem Datum gebucht wurden
Rückgabedaten-Klasse | `GVRKUms` |

### Neue Kontoumsätze anzeigen

Mit diesem Geschäftsvorfall kann eine Übersicht über die Kontoumsatzdaten eines Kontos abgeholt werden. Dabei werden nur die Umsatzdaten zurückgegeben, die seit dem letzten Aufruf dieses Geschäftsvorfalles neu hinzugekommen sind.

Highlevel-Name | `KUmsNew` |
Highlevel-Parameter |  |
| `my` | Konto | optional | Das Konto, für das Umsatzinformationen abgeholt werden sollen. Wird hier kein Konto angegeben, so wird das erste Konto aus den UPD verwendet.
Rückgabedaten-Klasse | `GVRKUms` |

### Saldoabfrage eines Kontos

Mit diesem Geschäftsvorfall wird der Saldo eines Kundenkontos abgefragt.

Highlevel-Name | `SaldoReq` |
Highlevel-Parameter |  |
| `my` | Konto | optional | Das Konto, für das der Saldo ermittelt werden soll. Wird hier kein Konto angegeben, so wird das erste Konto aus den UPD verwendet.
Rückgabedaten-Klasse | `GVRSaldoReq` |

### Saldenabfrage aller Kundenkonten

Mit diesem Geschäftsvorfall werden die Salden aller Kundenkonten abgefragt.

Highlevel-Name | `SaldoReqAll` |
Highlevel-Parameter |  |
| `my` | Konto | optional | Ein Kundenkonto. Wird hier kein Konto angegeben, so wird das erste Konto aus den UPD verwendet.
Rückgabedaten-Klasse | `GVRSaldoReq` |

### Saldoabfrage eines SEPA-Kontos

Mit diesem Geschäftsvorfall kann der Saldo eines SEPA-fähigen Kontos abgefragt werden.

Highlevel-Name | `SaldoReqSEPA` |
Highlevel-Parameter |  |
| `my` | Konto | obligatorisch | Das Konto, für das der Saldo ermittelt werden soll. Bei diesem Konto müssen mindestens BIC und IBAN gesetzt sein, abhängig von der Bank evtl. zusätzlich auch die Kontowährung.
Rückgabedaten-Klasse | `GVRSaldoReq` |

### Festgeldkonditionen abholen

Mit diesem Geschäftsvorfall können die aktuell gültigen Konditionen für Festgeldanlagen vom Kreditinstitut abgeholt werden.

Highlevel-Name | `FestCondList` |
Highlevel-Parameter |  |
| `curr` | String | obligatorisch | Die Währung, in der die Festgeldanlagen geführt werden sollen ("EUR").
Rückgabedaten-Klasse | `GVRFestCondList` |

### Liste bestehender Festgeldanlagen abholen

Mit diesem Geschäftsvorfall kann eine Übersicht über bestehende Festgeldanlagen zu einem bestimmten Anlagekonto abgeholt werden.

Highlevel-Name | `FestList` |
Highlevel-Parameter |  |
| `my` | Konto | obligatorisch | Festgeld-Anlagekonto, für dessen Festgeldanlagen Informationen abgeholt werden sollen.
Rückgabedaten-Klasse | `GVRFestList` |

### Liste aller bestehender Festgeldanlagen abholen

Mit diesem Geschäftsvorfall kann eine Übersicht über alle bestehende Festgeldanlagen abgeholt werden.

Highlevel-Name | `FestListAll` |
Highlevel-Parameter |  |
| `my` | Konto | optional | Kontoverbindung eines existierenden Anlagekontos oder eines "normalen" Kontos.
Rückgabedaten-Klasse | `GVRFestList` |

### Kontostammdaten abholen

Dieser Geschäftsvorfall ermöglicht das Abholen von Kontostammdaten. Er ist erst ab HBCI 2.2 spezifiziert, wird aber unter Umständen von einigen Banken bereits in früheren HBCI-Versionen angeboten.

Highlevel-Name | `AccInfo` |
Highlevel-Parameter |  |
| `my` | Konto | obligatorisch | Kontoverbindung, für die Stammdaten ermittelt werden sollen.
| `all` | J oder N | optional | J, wenn für alle verfügbaren Konten die Daten abgeholt werden sollen, sonst N (default)
Rückgabedaten-Klasse | `GVRAccInfo` |

### Karteninformationen abholen

Dieser Geschäftsvorfall ermöglicht es, Informationen zu den von der Bank ausgegebenen Karten abzuholen. Das wird u.U. benötigt, wenn eine Karte nach Verlust gesperrt werden soll, die dafür notwendigen Kartendaten aber nicht mehr bekannt sind. Dieser Geschäftsvorfall ist erst ab HBCI 2.2 spezifiziert, wird aber unter Umständen von einigen Banken bereits in früheren HBCI-Versionen angeboten.

Highlevel-Name | `CardList` |
Highlevel-Parameter |  |
| `my` | Konto | obligatorisch | Kontoverbindung des Karteninhabers
Rückgabedaten-Klasse | `GVRCardList` |

### Übersicht über Kreditinstitutsinformationen abholen

Mit diesem Geschäftsvorfall kann eine Übersicht über die vom Kreditinstitut bereitgestellten Informationen abgeholt werden. Mit einem weiteren Geschäftsvorfall können dann die Informationen selbst bestellt bzw. abgeholt werden.

Highlevel-Name | `InfoList` |
Highlevel-Parameter |  |
Rückgabedaten-Klasse | `GVRInfoList` |

### Bestellen bzw. Abholen von Kreditinstitutsinformationen

Mit diesem Geschäftsvorfall können bestimmte Kreditinstitutsinformationen angefordert werden. Die dafür benötigten Codes für die jeweiligen Informationen können mit dem Geschäftsvorfall `InfoList` ermittelt werden. Werden Freitextinformationen angefordert, so werden diese direkt in der Antwortnachricht übermittelt, ansonsten wird durch diesen Geschäftsvorfall eine Bestellung der Informationen ausgelöst, die dann anderweitig zugestellt werden (per Post).

Highlevel-Name | `InfoOrder` |
Highlevel-Parameter |  |
| `code, code_2, code_3,...` | String | obligatorisch | Es muss mindestens einer der Informationscodes aus dem GV "`InfoList`" angegeben werden.
| `name` | String | optional | Name des Kunden, wird für die schriftliche Zustellung benötigt (wie auch alle folgenden Parameter)
| `name2` | String | optional | Fortsetzung Name des Kunden
| `street` | String | optional | Strasse der Lieferanschrift
| `ort` | String | optional | Ort der Lieferanschrift
| `plz` | String | optional | PLZ der Lieferanschrift
| `country` | String | optional | Ländercode der Lieferanschrift ("DE")
| `tel` | String | optional | Telefonnumer für Rückfragen
| `fax` | String | optional | Telefaxnummer des Kunden
| `email` | String | optional | Email-Adresse des Kunden
Rückgabedaten-Klasse | `GVRInfoOrder` |

### Statusinformationen zu Geschäftsvorfällen abholen

Mit diesem Geschäftsvorfall können zu allen bisher via HBCI eingereichten Aufträgen Statusinformationen abgeholt werden. Diese enthalten i.d.R. den Returncode, den das Einreichen des entsprechenden Auftrages erzeugt hat, bzw. eine Information über den gegenwärtigen Status der Verarbeitung.

Nach dem Ausführen eines beliebigen Geschäftsvorfalles gibt die Methode `HBCIJob.getJobResult().getJobId()` eine ID zurück, die diesen Job eindeutig kennzeichnet. Diese ID kann dann zur Identifikation der entsprechenden Status-Daten aus dem Status-Protokoll benutzt werden (siehe dazu die Dokumentation der Klasse `GVRStatus`).

Highlevel-Name | `Status` |
Highlevel-Parameter |  |
| `startdate` | Date | optional | Nur Statusprotokolleinträge zurückgebenm die an oder nach diesem Datum erzeugt wurden
| `enddate` | Date | optional | Nur Statusprotokolleinträge zurückgebenm die an oder vor diesem Datum erzeugt wurden
| `jobid` | String | optional | alternativ zu den beiden `Date`-Parametern kann eine Job-Id angegeben werden, für die Statusinformationen benötigt werden. Es werden dann intern automatisch die richtigen Parameterwerte für `startdate` und `enddate` erzeugt und gesetzt.
Rückgabedaten-Klasse | `GVRStatus` |

### Abholen von Informationen über TAN-Listen

Dieser Geschäftsvorfall macht nur bei Verwendung von PIN/TAN-Passports Sinn. Damit können Informationen zu aktuellen TAN-Listen abgeholt werden. Mit diesem Geschäftsvorfall können keine neuen TAN-Listen bestellt werden, es ist auch nicht möglich, mit diesem Geschäftsvorfall die Menge der noch nicht verbrauchten TANs zu ermitteln.

Highlevel-Name | `TANList` |
Highlevel-Parameter |  |
Rückgabedaten-Klasse | `GVRTANList` |

### Ändern der PIN für HBCI-PIN/TAN

Dieser Geschäftsvorfall macht nur bei Verwendung von PIN/TAN-Passports Sinn. Damit kann die aktuelle PIN für HBCI-PIN/TAN auf einen neuen Wert geändert werden.
Aus Sicherheitsgründen wird die neue PIN nicht automatisch verwendet. Das heißt, sobald dieser GV erfolgreich bei der Bank eingereicht wurde und das OK empfangen wurde, muss für die nachfolgende Nachricht (Dialog-Ende) die neue PIN explizit eingegeben werden.

Highlevel-Name | `ChangePIN` |
Highlevel-Parameter |  |
| `newpin` | String |  | Die neue PIN.
Rückgabedaten-Klasse | `HBCIJobResult` |

Related Packages
Package
Description
org.kapott.hbci.GV.generators
org.kapott.hbci.GV.parsers
Class
Description
AbstractGVLastSEPA
Abstrakte Basisklasse fuer die terminierten SEPA-Lastschriften.
AbstractMultiGV
AbstractSEPAGV
Abstrakte Basis-Klasse fuer JAXB-basierte SEPA-Jobs.
GVAccInfo
GVCardList
GVChangePIN
GVCustomMsg
GVDauerDel
GVDauerEdit
GVDauerLastSEPAList
Geschaeftsvorfall zum Abrufen der Liste der SEPA-Dauerlastschriften.
GVDauerLastSEPANew
Geschaeftsvorfall zum Anlegen eines neuen SEPA-Dauerlastschriftauftrages.
GVDauerList
GVDauerNew
GVDauerSEPADel
Geschaeftsvorfall zum Loeschen von SEPA-Dauerauftraegen.
GVDauerSEPAEdit
Geschaeftsvorfall zum Bearbeiten eines SEPA-Dauerauftrages.
GVDauerSEPAList
Geschaeftsvorfall zum Abrufen der Liste der SEPA-Dauerauftraege.
GVDauerSEPANew
Geschaeftsvorfall zum Anlegen eines neuen SEPA-Dauerauftrages.
GVDonation
GVFestCondList
GVFestList
GVFestListAll
GVInfoList
GVInfoOrder
GVInstUebSEPA
Job-Implementierung fuer SEPA-Instant Ueberweisungen.
GVKontoauszug
Implementierung des Geschaeftsvorfalls fuer den elektronischen Kontoauszug (HKEKA)
GVKontoauszugPdf
Implementierung des Geschaeftsvorfalls fuer den elektronischen Kontoauszug (HKEKP) im PDF-Format
GVKUmsAll
Implementierung des Geschaeftsvorfalls zum Abruf von Umsaetzen mit Angabe des Zeitraums (HKKAZ).
GVKUmsAllCamt
Implementierung des Geschaeftsvorfalls zum Abruf von Umsaetzen mit Angabe des Zeitraums im CAMT-Format (HKCAZ).
GVKUmsNew
Implementierung des Geschaeftsvorfalls zum Abruf von neuen Umsaetzen (HKKAN).
GVKUmsZeitSEPA
Umsatzabfrage eines SEPA-Kontos
GVLast
GVLastB2BSEPA
Implementierung des HBCI-Jobs fuer die SEPA-B2B-Lastschrift.
GVLastCOR1SEPA
Implementierung des HBCI-Jobs fuer die SEPA-COR1-Lastschrift.
GVLastSEPA
Implementierung des HBCI-Jobs fuer die SEPA-Basis-Lastschrift.
GVMultiLast
GVMultiLastB2BSEPA
Implementierung des HBCI-Jobs fuer die SEPA-B2B-Multi-Lastschrift.
GVMultiLastCOR1SEPA
Implementierung des HBCI-Jobs fuer die SEPA-COR1-Multi-Lastschrift.
GVMultiLastSEPA
Implementierung des HBCI-Jobs fuer die SEPA-Basis-Multi-Lastschrift.
GVMultiUeb
GVMultiUebSEPA
Job-Implementierung fuer SEPA-Multi-Ueberweisungen.
GVReceipt
Geschaeftsvorfall fuer das Senden der Empfangsquittung mittels HKQTG.
GVSaldoReq
GVSaldoReqAll
GVSEPAInfo
GVStatus
GVStornoLast
GVTAN2Step
GVTANList
GVTANMediaList
GVTemplate
GVTermMultiUebSEPA
Job-Implementierung fuer terminierte SEPA-Sammelueberweisungen.
GVTermUeb
GVTermUebDel
GVTermUebEdit
GVTermUebList
GVTermUebSEPA
Job-Implementierung fuer SEPA-Ueberweisungen.
GVTermUebSEPADel
Implementierung des HBCI-Jobs fuer die Löschung einer SEPA-Terminüberweisung.
GVTermUebSEPAEdit
Geschaeftsvorfall zum Bearbeiten einer SEPA-Termin-Ueberweisung.
GVTermUebSEPAList
GVUeb
GVUebBZU
GVUebEil
GVUebForeign
GVUebGar
GVUebSEPA
Job-Implementierung fuer SEPA-Ueberweisungen.
GVUmb
GVUmbSEPA
Job-Implementierung fuer SEPA-Umbuchungen.
GVWPDepotList
GVWPDepotUms
HBCIJob
Schnittstelle für alle Aufträge, die via HBCI ausgeführt werden sollen.
HBCIJobImpl
SepaUtil
Ein paar statische Hilfs-Methoden fuer die Generierung der SEPA-Nachrichten.