Puh, ist das schwierig zu vermitteln... OK, noch
ein Versuch:
@Fellini: Es geht um Basis-Lastschriften (also Core), über die von Mitgliedern eines Vereins die Jahresbeiträge und ggf. Spenden eingezogen werden. Hierzu wird eine Software benutzt, die bisher DTAUS-Dateien erzeugt hat, die dann in eine Banking-Software importiert und von da per HBCI an die Bank übermittelt wurden. Durch die Umstellung der Software auf SEPA-Basislastschriften werden nun statt der DTAUS-Dateien XML-Dateien erzeugt. Deren Dateispezifikation sieht vor, der Bank Änderungen mitzuteilen, wenn sich gegenüber der zuletzt eingereichten Lastschrift eines Zahlungspflichtigen bestimmte Angaben verändert haben. Hierzu gehört:
- Es wurde ein neues Mandat erteilt => Erstlastschrift
- Die Bank des Lastschriftzahlers hat sich geändert => Erstlastschrift + "SMNDA" übermitteln
- Die Bank des Lastschriftzahlers hat sich nicht geändert => Folgelastschrift
- Die Mandatsreferenz hat sich geändert => alte Mandatsreferenz übermitteln
- Die Gläubiger-ID hat sich geändert => alte Gläubiger-Angaben (Name, ID) übermitteln
- Die Kontonummer des Lastschriftzahlers hat sich geändert (bei derselben Bank) => alte Lastschriftzahler-IBAN übermitteln
Je nachdem, welche der obigen Angaben sich geändert haben, müssen also im XML-Element <AmdmntInfDtls> unterschiedliche Angaben übermittelt werden, und der Sequenztyp entweder auf "FRST" oder "RCUR" gesetzt werden (sowie das Fälligkeitsdatum entsprechend dem Sequenztyp gesetzt werden). Jede Menge Dinge also, die ein Programm beachten muß...
Wenn nun ein Mitglied eine neue Bankverbindung mitteilt (IBAN + BIC), dann soll das Programm anhand des Vergleiches von alter und neuer IBAN + BIC selbständig ermitteln können, ob sich nun nur die Kontonummer oder auch die Bank geändert hat, um in der XML-Datei die entsprechenden Angaben zusammenstellen zu können. Da im Programm keine Möglichkeit vorgesehen ist, zu hinterlegen, daß ein Bankwechsel vorliegt (dazu unten mehr), nützt es auch nichts, diese Information vom Mitglied zu erfragen. Die einzige Information, die dem Programm in diesem Fall mitgegeben werden kann, ist die neue IBAN und - falls zukünftig noch vorhanden - die neue BIC. Mit diesen Angaben muß - und kann - das Programm alles Weitere selbständig ermitteln.
Mit BIC ist es einfach, eine geänderte Bank zu erkennen -
ohne BIC nur durch Decodieren der IBAN, was allerdings länderspezifisch unterschiedlich ausfällt.
@onlbanker:
Das mit dem Flag setzen hatte ich oben schon geschrieben: Das ist vom Programm nicht vorgesehen, denn es bringt zu viele potentielle Probleme mit sich. Was wäre z.B., wenn (zugegeben, ein eher theoretischer Fall) das Mitglied zwischen zwei jährlichen Lastschrift-Einzügen zweimal eine Änderung seiner Bankverbindung mitteilt, z.B.
1.) Konto 1 bei Bank 1 -> Konto 2 bei Bank 2
2.) Konto 2 bei Bank 2 -> Konto 3 bei Bank 1
Für sich allein betrachtet handelt es sich jeweils um einen Wechsel der Bank - also würde der Kassierer beim ersten Mal das Flag "Bankwechsel" setzen, und beim zweiten Mal auch, wenn es nicht bereits gesetzt wäre. Um zu erkennen, daß das Mitglied wieder zur alten Bank zurückgewechselt ist und das Flag eigentlich wieder zurückgesetzt werden sollte, müßte er sich entweder daran erinnern, oder in die Korrenspondenz zu diesem Mitglied gucken, oder er müßte es von dem Mitglied direkt erfahren. - Alles möglich, aber fehleranfällig.
Wenn aber das Programm bei der Erstellung neuer Lastschriften einfach die aktuellen Bankverbindungsdaten des Mitglieds mit denen vergleicht, die bei der letzten Lastschrift benutzt wurden, ist der Fall viel klarer: Konto 1 bei Bank 1 (alt) -> Konto 3 bei Bank 1 (neu), also Bank unverändert, aber Konto gewechselt. Das ist doch eine viel sicherer und für den Anwender bequemere Methode, Änderungen zu erkennen.
Ist die Problemstellung jetzt klarer? - Wenn nicht, dann geb ich's auf.
Ich wüßte nicht, wie ich es noch genauer darlegen könnte.
Mich hätte halt nur interesiert, wie das von anderen Programmen wie z.B. "S-Verein", "SPG-Verein" (und wie sie alle heißen) angegangen wird. Gibt es da etwa ein solches manuell zu setzendes Flag, oder analysieren sie die IBAN länderspezifisch (denn anders dürfte es kaum gehen)? Von einem Flag "Bankänderung" o.ä. habe ich in dem PDF-Benutzerhandbuch zu "SPG-Verein" zumindest nichts gefunden.
Gruß,
Stefan
Nachtrag:
Ich habe jetzt die IBAN-Decodierung nach dem
hier angegebenen Format implementiert. Immer wenn sich an den mit "b" (Bankleitzahl") gekennzeichneten Stellen einer IBAN etwas ändert, gehe ich davon aus, daß ein Bankwechsel vorliegt. Damit sollte das Thema nun gegessen sein (solange keine neuen Länder hinzukommen).