Business-KontoCheck
view release on metacpan or search on metacpan
0_history.txt view on Meta::CPAN
für java deshalb nur der Quellcode mitgeliefert; für den Port ist noch swig
(www.swig.org) sowie ein C-Compiler erforderlich.
- für gawk gibt es ein Patchfile für die Version 4.1.1; dieses wurde direkt
von der gawk-Version 4.1.0 übernommen
- Die Funktionen kto_check_retval2*() wurden in eine eigene Datei retvals.h
ausgelagert; die anderen Quellcodedateien können bei Bedarf problemlos nach
UTF-8 umkodiert werden.
- Die neuen Funktionen bic_*(), biq_*() und iban_*() sind jetzt in allen Ports
(außer awk) enthalten
- vor Speicherallokierungen wurde jeweils ein Typecast eingefügt
- einige Bugfixes in den Funktionen bic_*() und biq_*()
- Fehler in RETURN_OK für die IBAN-Regeln korriegiert (falls eine Bank durch
die Nachfolge-BLZ ersetzt wurde, wurde der Wert OK_BLZ_KTO_REPLACED statt
OK_BLZ_REPLACED zurückgegeben
- die numerischen Funktionen bic_*(), biq_*() und iban_*() geben im Fehlerfall
den Wert 0 zurück, wie die entsprechenden lut_*() Funktionen
- Die Rückgabewerte -80 ... -104 (sie wurden nur im mittlerweile obsoleten
dtaus_test benutzt) sind entfernt
- die Funktion rebuild_blzfile() berücksichtigt jetzt auch die IBAN-Regeln; so ist
es z.B. möglich, mit dem Befehl
./konto_check -r blz.lut2f blz.rebuild 2
den zweiten Datensatz der LUT-Datei in eine BLZ-Datei umzuwandeln. Diese
Datei stimmt bis auf die vier Testkonten (13051172, 16052072, 80053772 und
80053782) und evl. die Reihenfolge bei einzelnen Banken mit der Datei der
Deutschen Bundesbank überein. Der letzte Parameter (1 oder 2) gibt die
Nummer des zu verwendenden Datensatzes an.
Die Funktion ist aktuell nur in der C-Datei enthalten, wird in der nächsten
Version jedoch auch in die anderen Ports gebracht.
- Testroutinen für Perl auf die neue LUT-Datei angepasst
##################################################################################
### 04.03.14 Version 5.3 (final) ###
##################################################################################
- neue IBAN-Regel 57 implementiert
- Änderungen in den IBAN-Regeln 54 und 56 implementiert, Klarstellung in
IBAN-Regel 42 (Deutsche Bundesbank)
- Änderung in der Prüfzifferberechnungsmethode 66 implementiert
- Es ist eine Suche nach den BICs der Hauptstellen implementiert
- In der LUT-Datei gibt es einen neuen Indexblock über die BICs der Hauptstellen
- Die Daten der Bundesbank-Datei die mit den Funktionen lut_name(), lut_ort()...
abgefragt werden, können jetzt auch für BICS und IBANs abgefragt werden (s.u.)
- Viele Vergleiche in den IBAN- und BIC-Funktionen die mit strcmp gemacht wurden,
wurden auf strcasecmp() umgestellt, so daß die Groß/Kleinschreibung bei IBANs
und BICs komplett ignoriert wird.
- Die Funktion pz2str() enthält nur noch die wirklich definierten
Prüfziffermethoden, dafür jedoch auch die Untermethoden
- Die Ruby-Dokumentation wird jetzt über yardoc generiert
- kleinere Änderungen im Ruby-Port
- Fehler in mini1.vb behoben
- einige kleinere Bugs behoben
- neue Funktionen (diese sind momentan erst im C- und PHP-Port
implementiert, in den anderen Sprachen kommen sie spätestens in der nächsten Version):
- lut_suche_bic_h(): Die Funktion entspricht weitgehend der Funktion lut_suche_bic();
für die Nebenstellen wird bei dieser Funktion allerdings der BIC der Hauptstelle
benutzt.
- lut_bic_h(char*,int,int*) und lut_bic_hi(int,int,int*): Diese Funktionen geben den
BIC der jeweiligen Hauptstelle zurück
- lut_blz_i(int,int): eine vergessene Funktion, analog zu lut_blz() mit Integerparameter
für die BLZ
- bic_info(char*,int,int*,int*): Diese Funktion sucht Banken mit einem bestimmten BIC
und gibt die gefundene Anzahl sowie den Startindex in den internen Arrays zurück. Sie
ist für die Funktionsgruppe biq_* (s.u.) gedacht, falls Werte für mehrere Filialen
einer Bank bestimmt werden sollen.
- bic_aenderung(char*,int,int,int*), bic_loeschung(), bic_iban_regel(),
bic_nachfolge_blz(), bic_nr(), bic_pan(), bic_plz(), bic_pz(), bic_bic(), bic_bic_h(),
bic_name(), bic_name_kurz(), bic_ort():
Die Funktionen dieser Gruppe entsprechen den Funktionen lut_*(), nur
daß statt einer BLZ ein BIC angegeben wird.
- biq_aenderung(int,int*), biq_loeschung(), biq_iban_regel(), biq_nachfolge_blz(),
biq_nr(), biq_pan(), biq_plz(), biq_pz(), biq_bic(), biq_bic_h(), biq_name(),
biq_name_kurz(), biq_ort() (das q steht für quick):
diese Funktionen entsprechen denen der Gruppe bic_*(); statt des BIC
wird allerdings ein Index angegeben, der über die Funktion bic_info()
bestimmt wird. Der Parameter mode fehlt in dieser Gruppe; er wird auch bei
bic_info() spezifiziert.
- iban_aenderung(), iban_loeschung(), iban_iban_regel(), iban_nachfolge_blz(),
iban_nr(), iban_pan(), iban_plz(), iban_pz(), iban_bic(), iban_bic_h(),
iban_name(), iban_name_kurz(), iban_ort():
nochmal eine Gruppe mit gleicher Funktionalität, nur wird statt eines
BIC eine IBAN zur Spezifizierung der Banken benutzt. Bei der Banksuche
per BIC ist das Problem, daß oft große Gruppen einen BIC teilen (s. z.B.
die Postbank), und die Filialinformation (z.B. Ort o.ä.) komplett
verlorengeht. Außerdem sind in der Bundesbankdatei nicht alle
Filialcodes enthalten, so daß die bic_*() Funktionen manchmal nur mit
0_history.txt view on Meta::CPAN
möglichst schon zum 9. September einzusetzen. Der Best Guess Ansatz mit dem
Fehlercode 51 (bzw. IBAN_AMBIGUOUS_KTO in konto_check) wird entfernt und
durch Verfahren zur Ermittlung eindeutiger IBANs ersetzt.
- neue Funktion ci_check() für Test von Gläubiger-Identifikationsnummern
(Creditor Identifier, CI). Die Funktion wurde weitgehend von iban_check()
kopiert, hat aber einige Besonderheiten.
- bei IBAN-Berechnungen wird getestet, ob alle notwendigen LUT-Blocks geladen
sind; falls nicht, werden fehlende Daten per inkrementeller Initialisierung
nachgeladen (mittels der Funktion iban_init())
- Berücksichtigung der IBAN-Regeln bei iban2bic() (wichtig z.B. bei Regel 5 oder
falsch erzeugten IBANs). Falls in einer IBAN-Regel vorgegeben wird, daß kein
Test der Bankverbindung erfolgen soll, wird das in iban_check() und iban2bic()
jetzt auch berücksichtigt
- in bestimmten Fehlerfällen (Konto ungültig) lieferte iban_bic_gen() keinen BIC;
das ist jetzt behoben
- Unterkonten können nur hinzugefügt werden, falls die beiden ersten Stellen
der Kontonummer '00' sind (das wurde nicht immer geprüft)
- Korrekturen in den Prüfziffermethoden 13b, 63, C7
- kleine Korrektur in IBAN-Regel 5
- einige kleinere bug fixes und etwas Kosmetik im C-Code
##################################################################################
### 02.08.13 Version 5.0 (final) ###
##################################################################################
- Änderungen der Pruefzifferberechnungsmethoden 57 und 95 (gültig ab 9.9.2013)
implementiert. Die Änderungen werden zum Gültigkeitsdatum automatisch aktiviert.
- Änderungen der IBAN-Regeln zum 9. September 2013 implementiert:
IBAN-Regeln 05, 12, 13, 20, 21, 31, 33, 35, 40 aktualisiert auf Version 1
IBAN-Regeln 48 - 54 neu implementiert
- bei iban_gen() wird unterschieden, ob ein Konto ersetzt wurde (z.B. Spendenkonten),
oder ob nur ein Unterkonto angehängt wurde. Der Rückgabewert OK_UNTERKONTO_ATTACHED
ist jetzt eine positive Statusmeldung, keine Fehlermeldung mehr.
- neue "schwarze Liste" für IBANs (in der Datei iban.blacklist; nähere Info in der Datei)
- einige kleinere Änderungen in den IBAN-Regeln berücksichtigt, die von der
Deutschen Bundesbank per Mail verbreitet wurden (sie werden erst im Dezember
in die offizielle Version aufgenommen, die Institute bitten jedoch darum
sie schon zu berücksichtigen; betrifft die Regeln 10, 15 und 43).
- Überprüfung in iban_check(), ob die übergebene IBAN mit der selbst erzeugten
übereinstimmt, oder ob evl. ein Unterkonto nicht angehängt wurde oder eine
IBAN-Regel nicht beachtet wurde; so werden falsch erzeugte IBANs erkannt
- Alle Leerzeichen werden vor der Verarbeitung aus der IBAN entfernt
(Funktionen iban2bic() sowie iban_check() )
- Ruby: die Funktion version() akzeptiert einen optionalen Integer-Parameter, mit
dem verschiedene Infos über die konto_check-Bibliothek erfragt werden können
- Ruby ist jetzt wieder mit im SVN
- Die Funktion iban_gen() in Ruby, PHP und Perl gibt nun auch die benutzte IBAN-Regel zurück
- PHP: einige Standardwerte für PHP-Generierung wurden geändert:
* Beschreibung der Prüfziffermethoden werden defaultmäßig eingebunden
* symbolische Rückgabewerte werden defaultmäßig definiert
* BAV Kompatibilität ist standardmäßig aus und hat noch einen zusätzlichen
Schalter in konto_check.h (die Funktionalität wird aktuell nicht benutzt)).
* Außerdem in konto_check.ini:
konto_check.init_default_level=9 (statt 5)
konto_check.lut_path1=. (alt: /etc)
konto_check.lut_path2=/etc (alt: .)
- Info zu IBAN-Regeln in den Info-Teil der LUT-Datei übernommen
- Fehler in IBAN-Regel 5 (Commerzbank) bei Kontenkreis 998000000-999499999 berichtigt
- Fehler in IBAN-Regel 46 berichtigt
- Fehler in Prüfziffermethode C7 berichtigt: 10-stellige Konten sind ungültig.
Der Fehler trat nur auf, wenn die Untermethoden C7a oder C7b direkt
aufgerufen wurden (praktisch vor allem bei IBAN-Generierung).
- Behandlung von Unterkonten in Methode C7 überarbeitet
- in Prüfziffermethode 16 wird beim Divisionsrest 1 und unterschiedlichen
Ziffern an der 9. und 10. Stelle der Wert FALSE zurückgegeben (dies ist die
Rückgabe des Bank Account Validators (BAV), sowie des SEPA IBAN Konverters
der Sparkassen als auch des VR Bank IBAN Konverters.
- Bug fix in lut_bic(); die Funktion lieferte manchmal eine access violation
- Die Funktion lut_bic() liefert wieder für Zweigstellen deren BIC, nicht den
der Hauptstelle
- Die comdirect bank behält ihren BIC aus der Bundesbank-Datei
- Das Löschflag 'D' bei lut_aenderung() wird berücksichtigt; BLZs mit diesem
Flag werden nicht mehr bearbeitet.
##################################################################################
### 07.06.13 Version 4.6 ###
##################################################################################
- IBAN-Regeln implementiert und getestet
- Änderungen in Prüfziffermethode 51 und 84 (gültig ab 3.6.2013)
- Kommentar zu Prüfziffermethode E0 angepasst (Klarstellung)
- neue Funktion lut_iban_regel()) zur Bestimmung der IBAN-Regel für eine Bankverbindung
- neue Funktion iban_bic_gen() zur Bestimmung einer IBAN sowie BIC und benutzter
BLZ/Kontonummer
- neue Funktion get_kto_check_version_x() mit etwas mehr Infos
- kleiner Bugfix in main.c: bei der Anzeige der Bankdaten in der Konsole wurde
bei Prüfziffermethoden ab B0 die erste Stelle der Prüfziffermethode immer
falsch ausgegeben.
##################################################################################
0_history.txt view on Meta::CPAN
### 01.05.02 Version 0.1 ###
##################################################################################
erste Version (nur privat, wenige Methoden)
##################################################################################
##################################################################################
##################################################################################
##############################################################################
# PRÜFZIFFERBERECHNUNG VON ÖSTERREICHISCHEN KONTONUMMERN #
# C-/Perl-Bibliothek #
##############################################################################
# #
# Autor : Michael Plugge <konto_check@yahoo.com> #
# Version : 1.3 #
# Datum : 16.01.2008 #
##############################################################################
Versionen der österreichischen Bibliothek:
Version 0.1 (13.7.06, initiale Version)
==============================
- Prüffunktionalität komplett
- die Datei blz-at.lut wird von einem externen Programm generiert
Version 0.2 (20.7.06):
======================
- einige VIM-Faltungen eingefügt
- exit in etlichen Funktionen durch return mit Fehlercode ersetzt
- kto_check_msg herausgenommen wegen Kollision mit der deutschen Version,
funktional ersetzt durch kto_check_retval2txt().
- kleine Änderungen der main() Routine
- falls eine BLZ als erstes Zeichen ein - enthält, wird das Konto auch
getestet, falls die BLZ gelöscht ist; die Rückgabewerte sind in dem Fall
dann OK_GELOESCHT, OK_NO_CHK_GELOESCHT oder FALSE_GELOESCHT.
- Geschwindigkeitsoptimierungen:
* search_blz() für die Methodensuche ersetzt durch Array,
in dem die Methoden gespeichert sind
* atoi() zur Umwandlung der BLZ in Integer ersetzt durch eigene Funktion.
Eine Arrayvariante zur Umwandlung bringt keinen Geschwindigkeitsvorteil.
* l_datum (globale Variable) ersetzt durch Array (binär); das Löschdatum
erhält man nun über die Funktion get_loesch_datum()
Die beiden ersten Funktionen waren im Vergleich zur insgesamt benötigten
Zeit unverhältnismäßig langsam. Daher wurde die zugehörige Prüftabelle und
die Information, ob eine Bankleitzahl gelöscht ist, in zwei Byte-Arrays
mit jeweils 100.000 Elementen transferiert; die Arrayabfrage ist natürlich
wesentlich schneller als der Funktionsaufruf. Durch diese Umstellung wird
die Variable l_datum nicht mehr gesetzt; falls man setzen wollte, müßte
der Index für jede Bankleitzahl gespeichert werden. In diesem Fall müßte
man für das Array für das Löschdatum ein Integer-Array (4 Byte Integer)
benutzen; da das Löschdatum aber wohl nicht oft benötigt wird, wird es
nicht mehr in jedem Fall bestimmt, sondern nur noch durch den
Funktionsaufruf.
- Fehlerkorrekturen:
* im Makro ZIFFERNSUMME_7:
if(pz1>59)pz1-=56; ersetzt durch if(pz1>59)pz1-=54;
(falsche Ziffer eingefügt => Ziffernsumme wird falsch)
* in der Funktion kto_check_at (Rechenvorgang der Prüfziffer):
methode=*ptr++-'0'; ersetzt durch methode=char2num[*ptr++];
(die alte Variante stimmt nur für einen Rechenvorgang bis 9)
* in der Funktion kto_check_at (Array-Version, nach Rechenvorgang der Prüfziffer):
wichtung-='0'; ersetzt durch wichtung=char2num[wichtung];
stelle_1-='1'; ersetzt durch stelle_1=char2num[stelle_1]-1;
(die alte Variante stimmt nur für Werte bis 9)
Version 1.0 (1.9.06):
=====================
- weitere Tests mit realen Konten, noch keine weiteren Fehler gefunden
- einige Kommentare eingefügt
- noch einige VIM-Faltungen eingefügt
- CRC-Test für die lut-Datei (mit adler32 als Prüfsumme)
- optional bei generate_lut_at(): Ausgabe der Bankdaten auch als plain-Datei
in frei wählbarem Format
- neue Funktion dump_lutfile(), die den Inhalt einer lut-Datei als Klartext
ausgibt (Ausgabefelder: BLZ, Löschdatum, Prüftabelle/-parameter).
- Funktion generate_lut_at in die Bibliothek integriert; inpar2lut.c ist dadurch
obsolet geworden (bzw. nur noch für spezielle Prüfzwecke relevant), und daher
aus der Distribution herausgenommen. Die Umlaute werden von CP 850 auf
iso-8859-1 umgesetzt (aktuell nur für die plain Ausgabe; es ist jedoch für
eine spätere Erweiterung der lut-Datei auf zusätzliche Ausgabefelder
relevant).
- das Präprozessor-Makro HTML_UMLAUTE in kto_check_retval2txt() ist jetzt
obsolet; stattdessen gibt es eine zusätzliche Funktion
kto_check_retval2html(), die HTML-Umlaute liefert.
- kleine Änderungen in der Sortier-Routine für generate_lut. Dadurch ändern
sich für einige Bankleitzahlen der lut-Datei das Löschdatum, da nun
Hauptstellen vor Zweigstellen sortiert werden (es wird nur eine Bank
pro BLZ in die lut-Datei aufgenommen; manchmal werden allerdings laut der
Bankleitzahlendatei Hauptstellen vor Zweigstellen gelöscht - schwer
verständlich, aber so steht es da). Ansonsten ist die lut-Datei mit der alten
Version identisch (läßt sich leicht mittels dump_lutfile() überprüfen ;-) ).
0_history.txt view on Meta::CPAN
- 184195 00001 00032 BANKHAUS SCHELHAMMER & SCHATTERA
- 196053 00001 00032 GELOESCHT - Bankhaus Krentschker & Co. Zweigniederlassung Wien
- 267511 00001 00032 GELOESCHT - RAIFFEISENBANK HARD REG.GEN.M.B.H.
- 1337939 00001 00032 GELOESCHT - SECURITY KAPITAL-ANLAGEGESELLSCHAFT M.B.H.
- 4888804 00001 00032 Verwaltungsgenossenschaft der vbankdirekt AG reg.Gen.m.b.H.
Die drei Einträge mit einem + in der ersten Spalte werden in die blz-at.lut
Datei übernommen; falls eine BLZ 00001 auftaucht, wird allerdings der Eintrag
mit der ID 163902 (Tabelle 0, immer ok) benutzt. In der Version 0.2 wurde
stattdessen der Eintrag mit der ID 76040 (Tabelle 32) benutzt (aufgrund der
geänderten Sortierroutine). Die BLZ scheint allerdings keine reale BLZ zu
sein, sondern nur ein Testfall, da die Banken auf den ersten Blick nichts
miteinander zu tun haben und drei verschiedene Prüfverfahren (0, 13 und 32)
angegeben sind.
Version 1.1 (8.9.06):
=======================
Diese Version enthält einige kleine Änderungen, die sich für das cgi-Programm
als nützlich erwiesen haben, sowie zwei Bugfixes:
- falls in kto_check_at() für den Parameter lut_name NULL übergeben wird,
werden nur die Arrays initialisiert, aber keine lut-Datei geladen. Dies ist
nützlich, falls statt einer Bankleitzahl direkt die Prüfparameter angegeben
werden (mit vorgestelltem p). Falls für den Parameter lut_name ein Leerstring
übergeben wird, wird versucht, die Datei DEFAULT_LUT_NAME zu lesen.
- der Filedeskriptor trace ist jetzt als globale Variable (in der DLL auch
exportiert) deklariert; damit kann die trace-Datei auch aus einem anderen
Modul initialisiert werden. Die Trace-Version ist natürlich nicht threadfest,
aber sie wird ja nur zur Fehlersuche benötigt.
- in der Funktion generate_lut_at werden einige große Array-Variablen allokiert
(ca. 3,5 MB bei MAX_BLZ_CNT_AT=30000); sie sind jetzt als static deklariert,
da ansonsten unter Windows das Programm beim Generieren einer lut-Datei mit
einer Schreibschutzverletzung abstürzt.
- die Funktion dump_lutfile() lieferte keine vernünftigen Werte, da während der
Entwicklung (kurzzeitig) die Arrays per malloc allokiert wurden, und später
wieder als Arrays deklariert wurden; in der Funktion war noch die
malloc-Version, und die Adressierung ging schief.
- kleine Änderungen in der main() Routine
- die Fehlermeldungen die von kto_check_retval2txt() geliefert werden, sind
jetzt reine Fehlermeldungen, ohne in ### eingeschlossen zu sein
Version 1.2 (11.9.06):
=======================
- kleiner Fehler in der Trace-Version: falls trace==NULL war, wurden einige
Berechnungen nicht gemacht, und das Ergebnis meist als richtig angesehen
(dies betrifft nur die Trace-Version, nicht die normale; wurde beim
cgi-Programm entdeckt).
- Die Dateien mit dem INPAR Handbuch und -Vertrag werden nach Rücksprache mit
First Data (H. Krickel; jetzt SIX Card Solutions) nicht mehr in das Paket
aufgenommen, sondern sollten direkt bei SIX Card Solutions
(Andreas.Krickl@six-card-solutions.at) angefragt, bzw. von der Website von
SIX Card Solutions Austria heruntergeladen werden (näheres in der Datei
00liesmich unter Punkt 5. Prüfparameter).
Version 2.1 (4.6.07):
=======================
- Die Versionszählung läuft jetzt synchron mit der deutschen Version von
konto_check, da die beiden Pakete für die Perl-Version zusammen verwendet
werden
- einige kleinere Änderungen für die Anpassung an Perl
- Der Datentyp von adler32 wurde von unsigned long auf UINT4 geändert, um
Probleme mit modernen 64 Bit Compilern zu beheben.
Version 1.3 (16.1.08):
======================
- Die eigene Versionszählung für das österreichische Modul wird doch wieder
eingeführt.
- diese Version implementiert das INPAR-Dateiformat; das Programm kann jetzt
beide Dateiformate lesen
- die Funktion dump_lutfile() mußte auf dump_lutfile_at() umbenannt werden,
da in der neuen deutschen Bibliothek jetzt auch eine Funktion mit demselben
Namen, aber wesentlich erweiterter Funktionalität als Teil der LUT2
Routinen vorkommt (diese Funktion ist allerdings nicht nach perl
exportiert).
- einige kleinere Aufräumarbeiten
( run in 1.332 second using v1.01-cache-2.11-cpan-8dfa8b56332 )