konto_check 0.0.2 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +21 -0
- data/README.textile +595 -18
- data/Rakefile +15 -8
- data/VERSION.yml +2 -2
- data/ext/{konto_check → konto_check_raw}/extconf.rb +3 -1
- data/ext/{konto_check → konto_check_raw}/konto_check.c +6058 -2679
- data/ext/{konto_check → konto_check_raw}/konto_check.h +220 -43
- data/ext/konto_check_raw/konto_check_raw_ruby.c +2557 -0
- data/init.rb +1 -0
- data/konto_check.gemspec +25 -29
- data/lib/konto_check.rb +976 -0
- metadata +24 -28
- data/.document +0 -5
- data/.gitignore +0 -25
- data/ext/konto_check/konto_check_ruby.c +0 -129
data/init.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'konto_check'
|
data/konto_check.gemspec
CHANGED
@@ -1,52 +1,48 @@
|
|
1
1
|
# Generated by jeweler
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{konto_check}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = ["Provideal Systems GmbH"]
|
12
|
-
s.date = %q{
|
13
|
-
s.description = %q{Check whether a certain bic/account-no-combination can possibly be valid. It uses the C library kontocheck (see http://sourceforge.net/projects/kontocheck/) by Michael Plugge.}
|
11
|
+
s.authors = ["Provideal Systems GmbH", "Jan Schwenzien", "Michael Plugge"]
|
12
|
+
s.date = %q{2011-08-05}
|
13
|
+
s.description = %q{Check whether a certain bic/account-no-combination or an IBAN can possibly be valid, retrieve informations about a bank or search for BICs matching certain criteria. It uses the C library kontocheck (see http://sourceforge.net/projects/kontocheck/) by Michael Plugge.}
|
14
14
|
s.email = %q{info@provideal.net}
|
15
|
-
s.extensions = ["ext/
|
15
|
+
s.extensions = ["ext/konto_check_raw/extconf.rb"]
|
16
16
|
s.extra_rdoc_files = [
|
17
17
|
"LICENSE",
|
18
|
-
|
18
|
+
"README.textile",
|
19
|
+
"ext/konto_check_raw/konto_check_raw_ruby.c"
|
19
20
|
]
|
20
21
|
s.files = [
|
21
|
-
"
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
22
|
+
"CHANGES",
|
23
|
+
"LICENSE",
|
24
|
+
"README.textile",
|
25
|
+
"Rakefile",
|
26
|
+
"VERSION.yml",
|
27
|
+
"ext/konto_check_raw/extconf.rb",
|
28
|
+
"ext/konto_check_raw/konto_check.c",
|
29
|
+
"ext/konto_check_raw/konto_check.h",
|
30
|
+
"ext/konto_check_raw/konto_check_raw_ruby.c",
|
31
|
+
"init.rb",
|
32
|
+
"konto_check.gemspec",
|
33
|
+
"lib/konto_check.rb",
|
34
|
+
"test/helper.rb",
|
35
|
+
"test/test_konto_check.rb"
|
34
36
|
]
|
35
37
|
s.homepage = %q{http://github.com/provideal/konto_check}
|
36
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
37
38
|
s.require_paths = ["lib"]
|
38
|
-
s.rubygems_version = %q{1.
|
39
|
-
s.summary = %q{Checking german BICs/Bank account numbers}
|
40
|
-
s.test_files = [
|
41
|
-
"test/helper.rb",
|
42
|
-
"test/test_konto_check.rb"
|
43
|
-
]
|
39
|
+
s.rubygems_version = %q{1.6.2}
|
40
|
+
s.summary = %q{Checking german BICs/Bank account numbers and IBANs, retrieve information about german Banks, search for Banks matching certain criteria}
|
44
41
|
|
45
42
|
if s.respond_to? :specification_version then
|
46
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
47
43
|
s.specification_version = 3
|
48
44
|
|
49
|
-
if Gem::Version.new(Gem::
|
45
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
50
46
|
s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
51
47
|
else
|
52
48
|
s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
data/lib/konto_check.rb
ADDED
@@ -0,0 +1,976 @@
|
|
1
|
+
# load the c extension
|
2
|
+
require 'konto_check_raw'
|
3
|
+
|
4
|
+
#This is a C/Ruby library to check the validity of German Bank Account
|
5
|
+
#Numbers. All currently defined test methods by Deutsche Bundesbank (April
|
6
|
+
#2011: 00 to D8) are implemented.
|
7
|
+
#
|
8
|
+
#<b>ATTENTION:</b> There are a few important changes in the API between version 0.0.2 (version
|
9
|
+
#by Peter Horn/Provideal), version 0.0.6 (jeanmartin) and this version:
|
10
|
+
#
|
11
|
+
#* The function KontoCheck::load_bank_data() is no longer used; it is replaced by KontoCheck::init() and KontoCheck::generate_lutfile().
|
12
|
+
#* The function KontoCheck::konto_check(blz,kto) changed the order of parameters from (kto,blz) to (blz,kto)
|
13
|
+
#
|
14
|
+
#Another change affects only the version 0.0.6 by jeanmartin:
|
15
|
+
#
|
16
|
+
#* In KontoCheck::init(level,name,set) the order of the two first parameters is now free; the order is determined by the type of the variable (level is integer, filename string).
|
17
|
+
#
|
18
|
+
#Because this class is inteded for german bank accounts, the rest of the
|
19
|
+
#documentation is in german too.
|
20
|
+
#
|
21
|
+
#Diese Bibliothek implementiert die Prüfziffertests für deutsche Bankkonten.
|
22
|
+
#Die meisten Konten enthalten eine Prüfziffer; mit dieser kann getestet
|
23
|
+
#werden, ob eine Bankleitzahl plausibel ist oder nicht. Auf diese Weise
|
24
|
+
#können Zahlendreher oder Zifferverdopplungen oft festgestellt werden. Es ist
|
25
|
+
#natürlich nicht möglich, zu bestimmen, ob ein Konto wirklich existiert; dazu
|
26
|
+
#müßte jeweils eine Anfrage bei der Bank gemacht werden ;-).
|
27
|
+
#
|
28
|
+
#Die Bibliothek ist in zwei Teile gesplittet: KontoCheckRaw bildet die direkte
|
29
|
+
#Schnittstelle zur C-Bibliothek und ist daher manchmal etwas sperrig;
|
30
|
+
#KontoCheck ist dagegen mehr Ruby-artig ausgelegt. KontoCheck gibt meist nur
|
31
|
+
#eine Teilmenge von KontoCheckRaw zurück, aber (hoffentlich) die Teile, die man
|
32
|
+
#unmittelbar von den jeweiligen Funktionen erwartet. Eine Reihe einfacher
|
33
|
+
#Funktionen sind auch in beiden Versionen identisch.
|
34
|
+
#
|
35
|
+
#Die Bankleitzahldaten werden in einem eigenen (komprimierten) Format in einer
|
36
|
+
#sogenannten LUT-Datei gespeichert. Diese Datei läßt sich mit der Funktion
|
37
|
+
#KontoCheck::generate_lutfile bzw. KontoCheckRaw::generate_lutfile aus der
|
38
|
+
#Datei der Deutschen Bundesbank (online erhältlich unter
|
39
|
+
#http://www.bundesbank.de/zahlungsverkehr/zahlungsverkehr_bankleitzahlen_download.php)
|
40
|
+
#erzeugen. Die LUT-Datei hat den großen Vorteil, daß die Datenblocks (BLZ,
|
41
|
+
#Prüfziffer, Bankname, Ort, ...) unabhängig voneinander gespeichert sind; jeder
|
42
|
+
#Block kann für sich geladen werden. In einer Datei können zwei Datensätze der
|
43
|
+
#Bundesbank mit unterschiedlichem Gültigkeitsdatum enthalten sein. Wenn bei der
|
44
|
+
#Initialisierung kein bestimmter Datensatz ausgewählt wird, prüft die
|
45
|
+
#Bibliothek aufgrund des mit jedem Datensatz gespeicherten Gültigkeitszeitraums
|
46
|
+
#welcher Satz aktuell gültig ist und lädt diesen dann in den Speicher.
|
47
|
+
#
|
48
|
+
#Numerische Werte (z.B. Bankleitzahlen, Kontonummern, PLZ,...) können als
|
49
|
+
#Zahlwerte oder als String angegeben werden; sie werden automatisch
|
50
|
+
#konvertiert. Prüfziffermethoden können ebenfalls als Zahl oder String
|
51
|
+
#angegeben werden; die Angabe als Zahl ist allerdings nicht immer eindeutig. So
|
52
|
+
#kann z.B. 131 sowohl für D1 als auch 13a stehen; daher ist es besser, die
|
53
|
+
#Prüfziffermethode als String anzugeben (in diesem Beispiel würde 131 als 13a
|
54
|
+
#interpretiert).
|
55
|
+
|
56
|
+
module KontoCheck
|
57
|
+
|
58
|
+
#mögliche Suchschlüssel für die Funktion KontoCheck::suche()
|
59
|
+
#
|
60
|
+
#:ort, :plz, :pz, :bic, :blz, :namen, :namen_kurz
|
61
|
+
SEARCH_KEYS = [:ort, :plz, :pz, :bic, :blz, :namen, :namen_kurz]
|
62
|
+
#Aliasnamen für einige Suchschlüssel der Funktion KontoCheck::suche()
|
63
|
+
#
|
64
|
+
#:bankleitzahl, :city, :zip, :name, :kurzname, :shortname, :pruefziffer
|
65
|
+
SEARCH_KEY_MAPPINGS = {
|
66
|
+
:bankleitzahl => :blz,
|
67
|
+
:city => :ort,
|
68
|
+
:zip => :plz,
|
69
|
+
:name => :namen,
|
70
|
+
:kurzname => :namen_kurz,
|
71
|
+
:shortname => :namen_kurz,
|
72
|
+
:pruefziffer => :pz
|
73
|
+
}
|
74
|
+
|
75
|
+
class << self
|
76
|
+
|
77
|
+
#===<tt>KontoCheck::lut_info()</tt>
|
78
|
+
#=====<tt>KontoCheckRaw::lut_info([lutfile])</tt>
|
79
|
+
#=====<tt>KontoCheck::lut_info1(lutfile)</tt>
|
80
|
+
#=====<tt>KontoCheck::lut_info2(lutfile)</tt>
|
81
|
+
#
|
82
|
+
#Diese Funktion liefert den Infoblock des Datensatzes zurück, der mittels
|
83
|
+
#init() in den Speichergeladen wurde. Weitere Infos über die LUT-Datei
|
84
|
+
#lassen sich mit der Funktion KontoCheckRaw::lut_info() sowie
|
85
|
+
#KontoCheck::dump_lutfile() erhalten.
|
86
|
+
|
87
|
+
def lut_info()
|
88
|
+
KontoCheckRaw::lut_info()[3]
|
89
|
+
end
|
90
|
+
|
91
|
+
#===<tt>KontoCheck::lut_info1(<lutfile>)</tt>
|
92
|
+
#=====<tt>KontoCheck::lut_info()</tt>
|
93
|
+
#=====<tt>KontoCheck::lut_info2()</tt>
|
94
|
+
#=====<tt>KontoCheckRaw::lut_info()</tt>
|
95
|
+
#
|
96
|
+
#Diese Funktion liefert den Infoblock des ersten Datensatzes der angegebenen
|
97
|
+
#LUT-Datei zurück. Weitere Infos über die LUT-Datei lassen sich mit der
|
98
|
+
#Funktion KontoCheckRaw::lut_info() sowie KontoCheck::dump_lutfile() erhalten.
|
99
|
+
|
100
|
+
def lut_info1(filename)
|
101
|
+
KontoCheckRaw::lut_info(filename)[3]
|
102
|
+
end
|
103
|
+
|
104
|
+
#===<tt>KontoCheck::lut_info2(lutfile)</tt>
|
105
|
+
#=====<tt>KontoCheck::lut_info()</tt>
|
106
|
+
#=====<tt>KontoCheck::lut_info1(lutfile)</tt>
|
107
|
+
#=====<tt>KontoCheckRaw::lut_info([lutfile])</tt>
|
108
|
+
#
|
109
|
+
#Diese Funktion liefert den Infoblock des zweiten Datensatzes der angegebenen
|
110
|
+
#LUT-Datei zurück. Weitere Infos über die LUT-Datei lassen sich mit der
|
111
|
+
#Funktion KontoCheckRaw::lut_info() sowie KontoCheck::dump_lutfile() erhalten.
|
112
|
+
|
113
|
+
def lut_info2(filename)
|
114
|
+
KontoCheckRaw::lut_info(filename)[4]
|
115
|
+
end
|
116
|
+
|
117
|
+
|
118
|
+
#===<tt>KontoCheck::dump_lutfile(lutfile)</tt>
|
119
|
+
#=====<tt>KontoCheckRaw::dump_lutfile(lutfile)</tt>
|
120
|
+
#
|
121
|
+
#Diese Funktion liefert detaillierte Informationen über alle Blocks, die in der
|
122
|
+
#LUT-Datei gespeichert sind, sowie noch einige Internas der LUT-Datei. Im
|
123
|
+
#Fehlerfall wird nil zurückgegeben.
|
124
|
+
|
125
|
+
def dump_lutfile(filename)
|
126
|
+
KontoCheckRaw::dump_lutfile(filename).first
|
127
|
+
end
|
128
|
+
|
129
|
+
#===<tt>KontoCheck::encoding([mode])</tt>
|
130
|
+
#=====<tt>KontoCheckRaw::encoding([mode])</tt>
|
131
|
+
#=====<tt>KontoCheck::encoding_str([mode])</tt>
|
132
|
+
#=====<tt>KontoCheckRaw::keep_raw_data(mode)</tt>
|
133
|
+
#
|
134
|
+
#Diese Funktion legt den benutzten Zeichensatz für Fehlermeldungen durch die
|
135
|
+
#Funktion KontoCheck::retval2txt() und einige Felder der LUT-Datei (Name,
|
136
|
+
#Kurzname, Ort) fest. Wenn die Funktion nicht aufgerufen wird, wird der Wert
|
137
|
+
#DEFAULT_ENCODING aus konto_check.h benutzt.
|
138
|
+
#
|
139
|
+
#_Achtung_: Das Verhalten der Funktion hängt von dem Flag keep_raw_data der
|
140
|
+
#C-Bibliothek ab. Falls das Flag gesetzt ist, werden die Rohdaten der Blocks
|
141
|
+
#Name, Kurzname und Ort im Speicher gehalten; bei einem Wechsel der Kodierung
|
142
|
+
#wird auch für diese Blocks die Kodierung umgesetzt. Falls das Flag nicht
|
143
|
+
#gesetzt ist, sollte die Funktion *vor* der Initialisierung aufgerufen werden,
|
144
|
+
#da in dem Fall die Daten der LUT-Datei nur bei der Initialisierung konvertiert
|
145
|
+
#werden. Mit der Funktion KontoCheckRaw::keep_raw_data() kann das Flag gesetzt
|
146
|
+
#oder gelöscht werden.
|
147
|
+
#
|
148
|
+
#Für den Parameter mode werden die folgenden Werte akzeptiert (die Strings sind
|
149
|
+
#nicht case sensitiv; Mi oder mI oder MI ist z.B. auch möglich; wird der
|
150
|
+
#Parameter nicht angegeben, wird die aktuelle Kodierung ausgegeben):
|
151
|
+
#
|
152
|
+
# 0: aktuelle Kodierung ausgeben
|
153
|
+
# 1, 'i', 'I': ISO-8859-1
|
154
|
+
# 2, 'u', 'U': UTF-8
|
155
|
+
# 3, 'h', 'H': HTML
|
156
|
+
# 4, 'd', 'D': DOS CP 850
|
157
|
+
# 51, 'mi': ISO-8859-1, Makro für Fehlermeldungen
|
158
|
+
# 52, 'mu': UTF-8, Makro für Fehlermeldungen
|
159
|
+
# 53, 'mh': HTML, Makro für Fehlermeldungen
|
160
|
+
# 54, 'md': DOS CP 850, Makro für Fehlermeldungen
|
161
|
+
#
|
162
|
+
#Rückgabewert ist die aktuelle Kodierung als Integer (falls zwei Kodierungen
|
163
|
+
#angegeben sind, ist die erste die der Statusmeldungen, die zweite die der
|
164
|
+
#LUT-Blocks):
|
165
|
+
#
|
166
|
+
# 0: "noch nicht spezifiziert" (vor der Initialisierung)
|
167
|
+
# 1: "ISO-8859-1";
|
168
|
+
# 2: "UTF-8";
|
169
|
+
# 3: "HTML entities";
|
170
|
+
# 4: "DOS CP 850";
|
171
|
+
# 12: "ISO-8859-1/UTF-8";
|
172
|
+
# 13: "ISO-8859-1/HTML";
|
173
|
+
# 14: "ISO-8859-1/DOS CP 850";
|
174
|
+
# 21: "UTF-8/ISO-8859-1";
|
175
|
+
# 23: "UTF-8/HTML";
|
176
|
+
# 24: "UTF-8/DOS CP-850";
|
177
|
+
# 31: "HTML entities/ISO-8859-1";
|
178
|
+
# 32: "HTML entities/UTF-8";
|
179
|
+
# 34: "HTML entities/DOS CP-850";
|
180
|
+
# 41: "DOS CP-850/ISO-8859-1";
|
181
|
+
# 42: "DOS CP-850/UTF-8";
|
182
|
+
# 43: "DOS CP-850/HTML";
|
183
|
+
# 51: "Makro/ISO-8859-1";
|
184
|
+
# 52: "Makro/UTF-8";
|
185
|
+
# 53: "Makro/HTML";
|
186
|
+
# 54: "Makro/DOS CP 850";
|
187
|
+
|
188
|
+
def encoding(*args)
|
189
|
+
KontoCheckRaw::encoding(*args)
|
190
|
+
end
|
191
|
+
|
192
|
+
#===<tt>KontoCheck::encoding_str([mode])</tt>
|
193
|
+
#=====<tt>KontoCheckRaw::encoding_str([mode])</tt>
|
194
|
+
#=====<tt>KontoCheck::encoding([mode])</tt>
|
195
|
+
#=====<tt>KontoCheckRaw::keep_raw_data(mode)</tt>
|
196
|
+
#
|
197
|
+
#Diese Funktion entspricht der Funktion KontoCheck::encoding(). Allerdings
|
198
|
+
#ist der Rückgabewert nicht numerisch, sondern ein String, der die aktuelle
|
199
|
+
#Kodierung angibt. Die folgenden Rückgabewerte sind möglich (falls zwei
|
200
|
+
#Kodierungen angegeben sind, ist die erste die der Statusmeldungen, die
|
201
|
+
#zweite die der LUT-Blocks):
|
202
|
+
#
|
203
|
+
# "noch nicht spezifiziert" (vor der Initialisierung)
|
204
|
+
# "ISO-8859-1";
|
205
|
+
# "UTF-8";
|
206
|
+
# "HTML entities";
|
207
|
+
# "DOS CP 850";
|
208
|
+
# "ISO-8859-1/UTF-8";
|
209
|
+
# "ISO-8859-1/HTML";
|
210
|
+
# "ISO-8859-1/DOS CP 850";
|
211
|
+
# "UTF-8/ISO-8859-1";
|
212
|
+
# "UTF-8/HTML";
|
213
|
+
# "UTF-8/DOS CP-850";
|
214
|
+
# "HTML entities/ISO-8859-1";
|
215
|
+
# "HTML entities/UTF-8";
|
216
|
+
# "HTML entities/DOS CP-850";
|
217
|
+
# "DOS CP-850/ISO-8859-1";
|
218
|
+
# "DOS CP-850/UTF-8";
|
219
|
+
# "DOS CP-850/HTML";
|
220
|
+
# "Makro/ISO-8859-1";
|
221
|
+
# "Makro/UTF-8";
|
222
|
+
# "Makro/HTML";
|
223
|
+
# "Makro/DOS CP 850";
|
224
|
+
|
225
|
+
def encoding_str(*args)
|
226
|
+
KontoCheckRaw::encoding_str(*args)
|
227
|
+
end
|
228
|
+
|
229
|
+
#===<tt>KontoCheck::retval2txt(retval)</tt>
|
230
|
+
#=====<tt>KontoCheckRaw::retval2txt(retval)</tt>
|
231
|
+
#
|
232
|
+
#Diese Funktion konvertiert einen numerischen Rückgabewert in einen String. Der
|
233
|
+
#benutzte Zeichensatz wird über die Funktion KontoCheck::encoding() festgelegt.
|
234
|
+
#Falls diese Funktion nicht aufgerufen wurde, wird der Wert des Makros
|
235
|
+
#DEFAULT_ENCODING aus konto_check.h benutzt.
|
236
|
+
|
237
|
+
def retval2txt(retval)
|
238
|
+
KontoCheckRaw::retval2txt(retval)
|
239
|
+
end
|
240
|
+
|
241
|
+
#===<tt>KontoCheck::retval2iso(retval)</tt>
|
242
|
+
#=====<tt>KontoCheckRaw::retval2iso(retval)</tt>
|
243
|
+
#
|
244
|
+
#Diese Funktion konvertiert einen numerischen Rückgabewert in einen String.
|
245
|
+
#Der benutzte Zeichensatz ist ISO 8859-1.
|
246
|
+
|
247
|
+
def retval2iso(retval)
|
248
|
+
KontoCheckRaw::retval2iso(retval)
|
249
|
+
end
|
250
|
+
|
251
|
+
#===<tt>KontoCheck::retval2txt_short(retval)</tt>
|
252
|
+
#=====<tt>KontoCheckRaw::retval2txt_short(retval)</tt>
|
253
|
+
#=====<tt>KontoCheck::retval2txt_kurz(retval)</tt>
|
254
|
+
#
|
255
|
+
#Diese Funktion konvertiert einen numerischen Rückgabewert in einen kurzen
|
256
|
+
#String. Die Ausgabe ist der Makroname, wie er in C benutzt wird.
|
257
|
+
|
258
|
+
def retval2txt_short(retval)
|
259
|
+
KontoCheckRaw::retval2txt_short(retval)
|
260
|
+
end
|
261
|
+
alias_method :retval2txt_kurz, :retval2txt_short
|
262
|
+
|
263
|
+
#===<tt>KontoCheck::retval2txt_kurz(retval)</tt>
|
264
|
+
#=====<tt>KontoCheckRaw::retval2txt_short(retval)</tt>
|
265
|
+
#=====<tt>KontoCheck::retval2txt_short(retval)</tt>
|
266
|
+
#
|
267
|
+
#Diese Funktion konvertiert einen numerischen Rückgabewert in einen kurzen
|
268
|
+
#String. Die Ausgabe ist der Makroname, wie er in C benutzt wird. Die Funktion
|
269
|
+
#ist ein Alias zu KontoCheck::retval2txt_short().
|
270
|
+
|
271
|
+
def retval2txt_kurz(retval)
|
272
|
+
KontoCheckRaw::retval2txt_short(retval)
|
273
|
+
end
|
274
|
+
|
275
|
+
#===<tt>KontoCheck::retval2dos(retval)</tt>
|
276
|
+
#=====<tt>KontoCheckRaw::retval2dos(retval)</tt>
|
277
|
+
#
|
278
|
+
#Diese Funktion konvertiert einen numerischen Rückgabewert in einen String.
|
279
|
+
#Der benutzte Zeichensatz ist cp850 (DOS).
|
280
|
+
#
|
281
|
+
def retval2dos(retval)
|
282
|
+
KontoCheckRaw::retval2dos(retval)
|
283
|
+
end
|
284
|
+
|
285
|
+
#===<tt>KontoCheck::retval2html(retval)</tt>
|
286
|
+
#=====<tt>KontoCheckRaw::retval2html(retval)</tt>
|
287
|
+
#
|
288
|
+
#Diese Funktion konvertiert einen numerischen Rückgabewert in einen String.
|
289
|
+
#Für Umlaute werden HTML-Entities benutzt.
|
290
|
+
|
291
|
+
def retval2html(retval)
|
292
|
+
KontoCheckRaw::retval2html(retval)
|
293
|
+
end
|
294
|
+
|
295
|
+
#===<tt>KontoCheck::retval2utf8(retval)</tt>
|
296
|
+
#=====<tt>KontoCheckRaw::retval2utf8(retval)</tt>
|
297
|
+
#
|
298
|
+
#Diese Funktion konvertiert einen numerischen Rückgabewert in einen String.
|
299
|
+
#Der benutzte Zeichensatz ist UTF-8.
|
300
|
+
|
301
|
+
def retval2utf8(retval)
|
302
|
+
KontoCheckRaw::retval2utf8(retval)
|
303
|
+
end
|
304
|
+
|
305
|
+
#===<tt>KontoCheck::generate_lutfile(inputfile,outputfile [,user_info [,gueltigkeit [,felder [,filialen [,set [,iban_file]]]]]])</tt>
|
306
|
+
#=====<tt>KontoCheckRaw::generate_lutfile(inputfile,outputfile [,user_info [,gueltigkeit [,felder [,filialen [,set [,iban_file]]]]]])</tt>
|
307
|
+
#
|
308
|
+
#Diese Funktion generiert eine neue LUT-Datei aus der BLZ-Datei der Deutschen Bundesbank. Die folgenden
|
309
|
+
#Parameter werden unterstützt:
|
310
|
+
#* inputfile: Eingabedatei (Textdatei) der Bundesbank
|
311
|
+
#* outputfile: Name der Ausgabedatei
|
312
|
+
#* user_info: Info-String der in die LUT-Datei geschrieben wird (frei wählbar; wird in den Info-Block aufgenommen)
|
313
|
+
#* gueltigkeit: Gültigkeit des Datensatzes im Format JJJJMMTT-JJJJMMTT. Diese Angabe wird benutzt, um festzustellen, ob ein Datensatz aktuell noch gültig ist.
|
314
|
+
#* felder: (0-9) Welche Daten aufgenommmen werden sollen (PZ steht in der folgenden Tabelle für Prüfziffer, NAME_NAME_KURZ ist ein Block, der sowohl den Namen als auch den Kurznamen der Bank enthält; dieser läßt sich besser komprimieren als wenn beide Blocks getrennt sind):
|
315
|
+
# 0. BLZ,PZ
|
316
|
+
# 1. BLZ,PZ,NAME_KURZ
|
317
|
+
# 2. BLZ,PZ,NAME_KURZ,BIC
|
318
|
+
# 3. BLZ,PZ,NAME,PLZ,ORT
|
319
|
+
# 4. BLZ,PZ,NAME,PLZ,ORT,BIC
|
320
|
+
# 5. BLZ,PZ,NAME_NAME_KURZ,PLZ,ORT,BIC
|
321
|
+
# 6. BLZ,PZ,NAME_NAME_KURZ,PLZ,ORT,BIC,NACHFOLGE_BLZ
|
322
|
+
# 7. BLZ,PZ,NAME_NAME_KURZ,PLZ,ORT,BIC,NACHFOLGE_BLZ,AENDERUNG
|
323
|
+
# 8. BLZ,PZ,NAME_NAME_KURZ,PLZ,ORT,BIC,NACHFOLGE_BLZ,AENDERUNG,LOESCHUNG
|
324
|
+
# 9. BLZ,PZ,NAME_NAME_KURZ,PLZ,ORT,BIC,NACHFOLGE_BLZ,AENDERUNG,LOESCHUNG,PAN,NR
|
325
|
+
#* filialen: (0 oder 1) Flag, ob nur die Daten der Hauptstellen (0) oder auch die der Filialen aufgenommen werden sollen
|
326
|
+
#* set (0, 1 oder 2): Datensatz-Nummer. Jede LUT-Datei kann zwei Datensätze enthalten. Falls bei der Initialisierung nicht ein bestimmter Datensatz ausgewählt wird, wird derjenige genommen, der (laut Gültigkeitsstring) aktuell gültig ist.
|
327
|
+
#* iban_file: Datei der Banken, die einer Selbstberechnung des IBAN nicht zugestimmt haben. Näheres dazu (inklusive Weblink) findet sich bei der Funktion KontoCheckRaw::iban_gen(blz,kto).
|
328
|
+
#
|
329
|
+
#Mögliche Rückgabewerte:
|
330
|
+
#
|
331
|
+
# -112 (KTO_CHECK_UNSUPPORTED_COMPRESSION) "die notwendige Kompressions-Bibliothek wurden beim Kompilieren nicht eingebunden"
|
332
|
+
# -57 (LUT2_GUELTIGKEIT_SWAPPED) "Im Gültigkeitsdatum sind Anfangs- und Enddatum vertauscht"
|
333
|
+
# -56 (LUT2_INVALID_GUELTIGKEIT) "Das angegebene Gültigkeitsdatum ist ungültig (Soll: JJJJMMTT-JJJJMMTT)"
|
334
|
+
# -32 (LUT2_COMPRESS_ERROR) "Fehler beim Komprimieren eines LUT-Blocks"
|
335
|
+
# -31 (LUT2_FILE_CORRUPTED) "Die LUT-Datei ist korrumpiert"
|
336
|
+
# -30 (LUT2_NO_SLOT_FREE) "Im Inhaltsverzeichnis der LUT-Datei ist kein Slot mehr frei"
|
337
|
+
# -15 (INVALID_BLZ_FILE) "Fehler in der blz.txt Datei (falsche Zeilenlänge)"
|
338
|
+
# -11 (FILE_WRITE_ERROR) "kann Datei nicht schreiben"
|
339
|
+
# -10 (FILE_READ_ERROR) "kann Datei nicht lesen"
|
340
|
+
# -9 (ERROR_MALLOC) "kann keinen Speicher allokieren"
|
341
|
+
# -7 (INVALID_LUT_FILE) "die blz.lut Datei ist inkosistent/ungültig"
|
342
|
+
# 1 (OK) "ok"
|
343
|
+
# 7 (LUT1_FILE_GENERATED) "ok; es wurde allerdings eine LUT-Datei im alten Format (1.0/1.1) generiert"
|
344
|
+
|
345
|
+
def generate_lutfile(*args)
|
346
|
+
KontoCheckRaw::generate_lutfile(*args)
|
347
|
+
end
|
348
|
+
|
349
|
+
#===<tt>KontoCheck::init([<p1>[,<p2>[,<set>]]])</tt>
|
350
|
+
#=====<tt>KontoCheckRaw::init([<p1>[,<p2>[,<set>]]])</tt>
|
351
|
+
#Die Variablen p1 und p2 stehen für level und lutfile (in beliebiger
|
352
|
+
#Reihenfolge); die Zuordnung der beiden Parameter erfolgt on the fly durch eine
|
353
|
+
#Typüberprüfung.
|
354
|
+
#
|
355
|
+
#Diese Funktion initialisiert die Bibliothek und lädt die gewünschten
|
356
|
+
#Datenblocks in den Speicher. Alle Argumente sind optional; in konto_check.h
|
357
|
+
#werden die Defaultwerte definiert.
|
358
|
+
#
|
359
|
+
#Die beiden ersten Parameter sind der Dateiname und der
|
360
|
+
#Initialisierungslevel. Der Dateiname ist immer als String anzugeben, der
|
361
|
+
#Initialisierungslevel immer als Zahl, ansonsten wird eine TypeError
|
362
|
+
#Exception geworfen. Auf diese Weise ist es problemlos möglich festzustellen,
|
363
|
+
#wie die Parameter p1 und p2 den Variablen lutfile und level zuzuordnen
|
364
|
+
#sind.
|
365
|
+
#
|
366
|
+
#Für die LUT-Datei ist als Defaultwert sowohl für den Pfad als auch den
|
367
|
+
#Dateinamen eine Liste möglich, die sequenziell abgearbeitet wird; diese wird
|
368
|
+
#in konto_check.h spezifiziert (Compilerzeit-Konstante der C-Bibliothek). Die
|
369
|
+
#folgenden Werte sind in der aktuellen konto_check.h definiert:
|
370
|
+
#
|
371
|
+
# DEFAULT_LUT_NAME blz.lut, blz.lut2f, blz.lut2
|
372
|
+
# DEFAULT_LUT_PATH ., /usr/local/etc/, /etc/, /usr/local/bin/, /opt/konto_check/ (für nicht-Windows-Systeme)
|
373
|
+
# DEFAULT_LUT_PATH ., C:\\, C:\\Programme\\konto_check (für Windows-Systeme)
|
374
|
+
#
|
375
|
+
#Der Defaultwert für level ist ebenfalls in konto_check.h definiert; in der
|
376
|
+
#aktuellen Version ist er 5. Bei diesem Level werden die Blocks BLZ,
|
377
|
+
#Prüfziffer, Name, Kurzname, PLZ, Ort und BIC geladen.
|
378
|
+
#
|
379
|
+
#Falls der Parameter set nicht angegeben ist, wird versucht, das aktuell
|
380
|
+
#gültige Set aus dem Systemdatum und dem Gültigkeitszeitraum der in der
|
381
|
+
#LUT-Datei gespeicherten Sets zu bestimmen.
|
382
|
+
#
|
383
|
+
#Hier noch einmal ein Überblick über die Parameter:
|
384
|
+
#
|
385
|
+
#* lutfile: die LUT-Datei, mit der initialisiert werden soll
|
386
|
+
#* level: (0-9) Welche Daten geladen werden sollen (PZ steht in der folgenden Tabelle für Prüfziffer, NAME_NAME_KURZ ist ein Block, der sowohl den Namen als auch den Kurznamen der Bank enthält; dieser läßt sich besser komprimieren als wenn beide Blocks getrennt sind):
|
387
|
+
# 0. BLZ,PZ
|
388
|
+
# 1. BLZ,PZ,NAME_KURZ
|
389
|
+
# 2. BLZ,PZ,NAME_KURZ,BIC
|
390
|
+
# 3. BLZ,PZ,NAME,PLZ,ORT
|
391
|
+
# 4. BLZ,PZ,NAME,PLZ,ORT,BIC
|
392
|
+
# 5. BLZ,PZ,NAME_NAME_KURZ,PLZ,ORT,BIC
|
393
|
+
# 6. BLZ,PZ,NAME_NAME_KURZ,PLZ,ORT,BIC,NACHFOLGE_BLZ
|
394
|
+
# 7. BLZ,PZ,NAME_NAME_KURZ,PLZ,ORT,BIC,NACHFOLGE_BLZ,AENDERUNG
|
395
|
+
# 8. BLZ,PZ,NAME_NAME_KURZ,PLZ,ORT,BIC,NACHFOLGE_BLZ,AENDERUNG,LOESCHUNG
|
396
|
+
# 9. BLZ,PZ,NAME_NAME_KURZ,PLZ,ORT,BIC,NACHFOLGE_BLZ,AENDERUNG,LOESCHUNG,PAN,NR
|
397
|
+
#* set (1 oder 2): Datensatz
|
398
|
+
#
|
399
|
+
#Mögliche Rückgabewerte:
|
400
|
+
#
|
401
|
+
# -112 (KTO_CHECK_UNSUPPORTED_COMPRESSION) "die notwendige Kompressions-Bibliothek wurden beim Kompilieren nicht eingebunden"
|
402
|
+
# -64 (INIT_FATAL_ERROR) "Initialisierung fehlgeschlagen (init_wait geblockt)"
|
403
|
+
# -63 (INCREMENTAL_INIT_NEEDS_INFO) "Ein inkrementelles Initialisieren benötigt einen Info-Block in der LUT-Datei"
|
404
|
+
# -62 (INCREMENTAL_INIT_FROM_DIFFERENT_FILE) "Ein inkrementelles Initialisieren mit einer anderen LUT-Datei ist nicht möglich"
|
405
|
+
# -38 (LUT2_PARTIAL_OK) "es wurden nicht alle Blocks geladen"
|
406
|
+
# -36 (LUT2_Z_MEM_ERROR) "Memory error in den ZLIB-Routinen"
|
407
|
+
# -35 (LUT2_Z_DATA_ERROR) "Datenfehler im komprimierten LUT-Block"
|
408
|
+
# -34 (LUT2_BLOCK_NOT_IN_FILE) "Der Block ist nicht in der LUT-Datei enthalten"
|
409
|
+
# -33 (LUT2_DECOMPRESS_ERROR) "Fehler beim Dekomprimieren eines LUT-Blocks"
|
410
|
+
# -31 (LUT2_FILE_CORRUPTED) "Die LUT-Datei ist korrumpiert"
|
411
|
+
# -20 (LUT_CRC_ERROR) "Prüfsummenfehler in der blz.lut Datei"
|
412
|
+
# -10 (FILE_READ_ERROR) "kann Datei nicht lesen"
|
413
|
+
# -9 (ERROR_MALLOC) "kann keinen Speicher allokieren"
|
414
|
+
# -7 (INVALID_LUT_FILE) "die blz.lut Datei ist inkosistent/ungültig"
|
415
|
+
# -6 (NO_LUT_FILE) "die blz.lut Datei wurde nicht gefunden"
|
416
|
+
#
|
417
|
+
# 1 (OK) "ok"
|
418
|
+
# 6 (LUT1_SET_LOADED) "Die Datei ist im alten LUT-Format (1.0/1.1)"
|
419
|
+
#
|
420
|
+
#Anmerkung: Falls der Statuscode LUT2_PARTIAL_OK ist, waren bei der
|
421
|
+
#Initialisierung nicht alle Blocks in der LUT-Datei enthalten.
|
422
|
+
|
423
|
+
def init(*args)
|
424
|
+
KontoCheckRaw::init(*args)
|
425
|
+
end
|
426
|
+
|
427
|
+
#===<tt>KontoCheck::load_bank_data(<datafile>)</tt>
|
428
|
+
#=====<tt>KontoCheckRaw::load_bank_data(<datafile>)</tt>
|
429
|
+
#
|
430
|
+
#Diese Funktion war die alte Initialisierungsroutine für konto_check; es ist
|
431
|
+
#nun durch die Funktionen KontoCheck::init() und KontoCheck::generate_lutfile()
|
432
|
+
#ersetzt. Zur Initialisierung benutzte sie die Textdatei der Deutschen
|
433
|
+
#Bundesbank und generiertge daraus eine LUT-Datei, die dann von der
|
434
|
+
#Initialisierungsroutine der C-Bibliothek benutzt wurde.
|
435
|
+
#
|
436
|
+
#Die init() Funktion ist wesentlich schneller (7..20 mal so schnell) und hat
|
437
|
+
#eine Reihe weiterer Vorteile. So ist es z.B. möglich, zwwei Datensätze mit
|
438
|
+
#unterschiedlichem Gültigkeitszeitraum in einer Datei zu halten und den jeweils
|
439
|
+
#gültigen Satz automatisch (nach der Systemzeit) auswählen zu lassen. Die
|
440
|
+
#einzelnen Datenblocks (Bankleitzahlen, Prüfziffermethoden, PLZ, Ort...) sind
|
441
|
+
#in der LUT-Datei in jeweils unabhängigen Blocks gespeichert und können einzeln
|
442
|
+
#geladen werden; die Bankdatei von der Deutschen Bundesbank enthält alle Felder
|
443
|
+
#in einem linearen Format, so daß einzelne Blocks nicht unabhängig von anderen
|
444
|
+
#geladen werden können.
|
445
|
+
#
|
446
|
+
#Die Funktion load_bank_data() wird nur noch als ein schibbolet benutzt, um
|
447
|
+
#zu testen, ob jemand das alte Interface benutzt. Bei der Routine
|
448
|
+
#KontoCheck::konto_check() wurde die Reihenfolge der Parameter getauscht, so
|
449
|
+
#daß man in dem Falle den alten Code umstellen muß.
|
450
|
+
|
451
|
+
def load_bank_data(*args)
|
452
|
+
KontoCheckRaw::load_bank_data(*args)
|
453
|
+
end
|
454
|
+
|
455
|
+
#===<tt>KontoCheck::current_lutfile_name()</tt>
|
456
|
+
#=====<tt>KontoCheckRaw::current_lutfile_name()</tt>
|
457
|
+
#=====<tt>KontoCheck::current_lutfile_set()</tt>
|
458
|
+
#=====<tt>KontoCheck::current_init_level()</tt>
|
459
|
+
#
|
460
|
+
#Diese Funktion bestimmt den Dateinamen der zur Initialisierung benutzten LUT-Datei.
|
461
|
+
|
462
|
+
def current_lutfile_name()
|
463
|
+
KontoCheckRaw::current_lutfile_name().first
|
464
|
+
end
|
465
|
+
|
466
|
+
#===<tt>KontoCheck::current_lutfile_set()</tt>
|
467
|
+
#=====<tt>KontoCheckRaw::current_lutfile_name()</tt>
|
468
|
+
#=====<tt>KontoCheck::current_lutfile_name()</tt>
|
469
|
+
#=====<tt>KontoCheck::current_init_level()</tt>
|
470
|
+
#
|
471
|
+
#Diese Funktion bestimmt das Set der LUT-Datei, das bei der Initialisierung benutzt wurde.
|
472
|
+
|
473
|
+
def current_lutfile_set()
|
474
|
+
raw_results = KontoCheckRaw::current_lutfile_name()
|
475
|
+
raw_results[1]
|
476
|
+
end
|
477
|
+
|
478
|
+
#===<tt>KontoCheck::current_init_level()</tt>
|
479
|
+
#=====<tt>KontoCheckRaw::current_lutfile_name()</tt>
|
480
|
+
#=====<tt>KontoCheckRaw::current_lutfile_name()</tt>
|
481
|
+
#=====<tt>KontoCheck::current_lutfile_set()</tt>
|
482
|
+
#
|
483
|
+
#Diese Funktion bestimmt den aktuell benutzten Initialisierungslevel
|
484
|
+
|
485
|
+
def current_init_level()
|
486
|
+
raw_results = KontoCheckRaw::current_lutfile_name()
|
487
|
+
raw_results[2]
|
488
|
+
end
|
489
|
+
|
490
|
+
#===<tt>KontoCheck::free()</tt>
|
491
|
+
#=====<tt>KontoCheckRaw::free()</tt>
|
492
|
+
#Diese Funktion gibt allen allokierten Speicher wieder frei.
|
493
|
+
|
494
|
+
def free()
|
495
|
+
KontoCheckRaw::free()
|
496
|
+
end
|
497
|
+
|
498
|
+
#===<tt>KontoCheck::konto_check(blz,kto)</tt>
|
499
|
+
#=====<tt>KontoCheckRaw::konto_check(blz,kto)</tt>
|
500
|
+
#=====<tt>KontoCheck::valid(blz,kto)</tt>
|
501
|
+
#Test, ob eine BLZ/Konto-Kombination eine gültige Prüfziffer enthält. Die Funktion gibt einen skalaren
|
502
|
+
#Statuswert zurück, der das Ergebnis der Prüfung enthält. Mögliche Rückgabewerte sind:
|
503
|
+
#
|
504
|
+
# -69 MISSING_PARAMETER "Bei der Kontoprüfung fehlt ein notwendiger Parameter (BLZ oder Konto)"
|
505
|
+
# -40 LUT2_NOT_INITIALIZED "die Programmbibliothek wurde noch nicht initialisiert"
|
506
|
+
#
|
507
|
+
# -77 BAV_FALSE "BAV denkt, das Konto ist falsch (konto_check hält es für richtig)"
|
508
|
+
# -29 UNDEFINED_SUBMETHOD "Die (Unter)Methode ist nicht definiert"
|
509
|
+
# -12 INVALID_KTO_LENGTH "ein Konto muß zwischen 1 und 10 Stellen haben"
|
510
|
+
# -5 INVALID_BLZ_LENGTH "die Bankleitzahl ist nicht achtstellig"
|
511
|
+
# -4 INVALID_BLZ "die Bankleitzahl ist ungültig"
|
512
|
+
# -3 INVALID_KTO "das Konto ist ungültig"
|
513
|
+
# -2 NOT_IMPLEMENTED "die Methode wurde noch nicht implementiert"
|
514
|
+
# -1 NOT_DEFINED "die Methode ist nicht definiert"
|
515
|
+
# 0 FALSE "falsch"
|
516
|
+
# 1 OK "ok"
|
517
|
+
# 2 OK_NO_CHK "ok, ohne Prüfung"
|
518
|
+
|
519
|
+
def konto_check(blz,kto)
|
520
|
+
KontoCheckRaw::konto_check(blz,kto)
|
521
|
+
end
|
522
|
+
|
523
|
+
#===<tt>KontoCheck::valid(blz,kto)</tt>
|
524
|
+
#=====<tt>KontoCheck::konto_check(blz,kto)</tt>
|
525
|
+
#=====<tt>KontoCheckRaw::konto_check(blz,kto)</tt>
|
526
|
+
#Dies ist ein Alias für die Funktion KontoCheck::konto_check()
|
527
|
+
|
528
|
+
def valid(blz,kto)
|
529
|
+
KontoCheckRaw::konto_check(blz,kto)
|
530
|
+
end
|
531
|
+
|
532
|
+
#===<tt>KontoCheck::konto_check?(blz, kto)</tt>
|
533
|
+
#=====<tt>KontoCheck::konto_check(blz,kto)</tt>
|
534
|
+
#=====<tt>KontoCheckRaw::konto_check(blz,kto)</tt>
|
535
|
+
#Test, ob eine BLZ/Konto-Kombination eine gültige Prüfziffer enthält. Die
|
536
|
+
#Funktion gibt einen skalaren Statuswert zurück, der das Ergebnis der Prüfung
|
537
|
+
#enthält. Mögliche Rückgabewerte sind einfach true und false (convenience
|
538
|
+
#function für konto_check()).
|
539
|
+
|
540
|
+
def konto_check?(blz,kto)
|
541
|
+
KontoCheckRaw::konto_check(blz,kto)>0?true:false
|
542
|
+
end
|
543
|
+
|
544
|
+
#===<tt>KontoCheck::valid?(blz, kto)</tt>
|
545
|
+
#=====<tt>KontoCheck::valid(blz, kto)</tt>
|
546
|
+
#=====<tt>KontoCheckRaw::konto_check(blz, kto)</tt>
|
547
|
+
#Dies ist einn Alias für die Funktion KontoCheck::konto_check?. Mögliche Rückgabewerte sind true oder false.
|
548
|
+
|
549
|
+
def valid?(blz,kto)
|
550
|
+
KontoCheckRaw::konto_check(blz, kto)>0?true:false
|
551
|
+
end
|
552
|
+
|
553
|
+
#===<tt>KontoCheck::konto_check_pz(pz,kto[,blz])</tt>
|
554
|
+
#=====<tt>KontoCheckRaw::konto_check_pz(pz,kto[,blz])</tt>
|
555
|
+
#=====<tt>KontoCheck::valid_pz(pz,kto[,blz])</tt>
|
556
|
+
#Diese Funktion testet, ob eine gegebene Prüfziffer/Kontonummer-Kombination gültig ist.
|
557
|
+
#
|
558
|
+
#Der zusätzliche Parameter blz ist nur für die Verfahren 52, 53, B6 und C0 notwendig; bei
|
559
|
+
#diesen Verfahren geht die BLZ in die Berechnung der Prüfziffer ein. Bei allen anderen
|
560
|
+
#Prüfzifferverfahren wird er ignoriert. Wird er bei einem dieser Verfahren nicht angegeben,
|
561
|
+
#wird stattdessen eine Test-BLZ eingesetzt.
|
562
|
+
#
|
563
|
+
#Die Funktion gibt einen skalaren Statuswert zurück, der das Ergebnis der
|
564
|
+
#Prüfung enthält. Mögliche Rückgabewerte sind:
|
565
|
+
#
|
566
|
+
# -69 (MISSING_PARAMETER) "bei der Kontoprüfung fehlt ein notwendiger Parameter (BLZ oder Konto)"
|
567
|
+
# -40 (LUT2_NOT_INITIALIZED) "die Programmbibliothek wurde noch nicht initialisiert"
|
568
|
+
#
|
569
|
+
# -77 (BAV_FALSE) "BAV denkt, das Konto ist falsch (konto_check hält es für richtig)"
|
570
|
+
# -29 (UNDEFINED_SUBMETHOD) "die (Unter)Methode ist nicht definiert"
|
571
|
+
# -12 (INVALID_KTO_LENGTH) "ein Konto muß zwischen 1 und 10 Stellen haben"
|
572
|
+
# -3 (INVALID_KTO) "das Konto ist ungültig"
|
573
|
+
# -2 (NOT_IMPLEMENTED) "die Methode wurde noch nicht implementiert"
|
574
|
+
# -1 (NOT_DEFINED) "die Methode ist nicht definiert"
|
575
|
+
# 0 (FALSE) "falsch"
|
576
|
+
# 1 (OK) "ok"
|
577
|
+
# 2 (OK_NO_CHK) "ok, ohne Prüfung"
|
578
|
+
|
579
|
+
def konto_check_pz(*args)
|
580
|
+
KontoCheckRaw::konto_check_pz(*args)
|
581
|
+
end
|
582
|
+
|
583
|
+
#===<tt>KontoCheck::konto_check_pz?(pz,kto[,blz])</tt>
|
584
|
+
#=====<tt>KontoCheckRaw::konto_check_pz(pz,kto[,blz])</tt>
|
585
|
+
#=====<tt>KontoCheck::valid_pz?(pz,kto[,blz])</tt>
|
586
|
+
#Diese Funktion testet, ob eine gegebene Prüfziffer/Kontonummer-Kombination
|
587
|
+
#gültig ist. Der Rückgabewert dieser Funktion ist true oder false (convenience
|
588
|
+
#function für KontoCheck::konto_check_pz()).
|
589
|
+
#
|
590
|
+
#Der zusätzliche Parameter blz ist nur für die Verfahren 52, 53, B6 und C0 notwendig; bei
|
591
|
+
#diesen Verfahren geht die BLZ in die Berechnung der Prüfziffer ein. Bei allen anderen
|
592
|
+
#Prüfzifferverfahren wird er ignoriert. Wird er bei einem dieser Verfahren nicht angegeben,
|
593
|
+
#wird stattdessen eine Test-BLZ eingesetzt.
|
594
|
+
|
595
|
+
def konto_check_pz?(*args)
|
596
|
+
KontoCheckRaw::konto_check_pz(*args)>0?true:false
|
597
|
+
end
|
598
|
+
|
599
|
+
#===<tt>KontoCheck::valid_pz(pz,kto[,blz])</tt>
|
600
|
+
#=====<tt>KontoCheck::konto_check_pz(pz,kto[,blz])</tt>
|
601
|
+
#=====<tt>KontoCheckRaw::konto_check_pz(pz,kto[,blz])</tt>
|
602
|
+
#Diese Funktion ist ein Alias für KontoCheck::konto_check_pz
|
603
|
+
|
604
|
+
def valid_pz(*args)
|
605
|
+
KontoCheckRaw::konto_check_pz(*args)
|
606
|
+
end
|
607
|
+
|
608
|
+
#===<tt>KontoCheck::valid_pz?(pz,kto[,blz])</tt>
|
609
|
+
#=====<tt>KontoCheck::valid_pz(pz,kto[,blz])</tt>
|
610
|
+
#=====<tt>KontoCheckRaw::konto_check_pz(pz,kto[,blz])</tt>
|
611
|
+
#Diese Funktion ist ein Alias für KontoCheck::konto_check_pz?()
|
612
|
+
|
613
|
+
def valid_pz?(*args)
|
614
|
+
KontoCheckRaw::konto_check_pz(*args)>0?true:false
|
615
|
+
end
|
616
|
+
|
617
|
+
#==== <tt>KontoCheck::bank_valid(blz [,filiale])</tt>
|
618
|
+
#======<tt>KontoCheckRaw::bank_valid(blz [,filiale])</tt>
|
619
|
+
#======<tt>KontoCheck::bank_valid?(blz [,filiale])</tt>
|
620
|
+
#Diese Funktion testet, ob eine gegebene BLZ gültig ist. Der Rückgabewert ist ein
|
621
|
+
#Statuscode mit den unten angegebenen Werten. Falls das Argument filiale auch
|
622
|
+
#angegeben ist, wird zusätzlich noch getestet, ob eine Filiale mit dem gegebenen
|
623
|
+
#Index existiert.
|
624
|
+
#
|
625
|
+
#Mögliche Rückgabewerte sind:
|
626
|
+
#
|
627
|
+
# -55 (LUT2_INDEX_OUT_OF_RANGE) "Der Index für die Filiale ist ungültig"
|
628
|
+
# -53 (LUT2_BLZ_NOT_INITIALIZED) "Das Feld BLZ wurde nicht initialisiert"
|
629
|
+
# -5 (INVALID_BLZ_LENGTH) "die Bankleitzahl ist nicht achtstellig"
|
630
|
+
# -4 (INVALID_BLZ) "die Bankleitzahl ist ungültig"
|
631
|
+
# 1 (OK) "ok"
|
632
|
+
|
633
|
+
def bank_valid(*args)
|
634
|
+
KontoCheckRaw::bank_valid(*args)
|
635
|
+
end
|
636
|
+
|
637
|
+
#====<tt>KontoCheck::bank_valid?(blz [,filiale])</tt>
|
638
|
+
#======<tt>KontoCheckRaw::bank_valid(blz [,filiale])</tt>
|
639
|
+
#======<tt>KontoCheck::bank_valid(blz [,filiale])</tt>
|
640
|
+
#Dies ist eine convenience function zu KontoCheck::bank_valid(). Es wird getestet, ob
|
641
|
+
#die gegebene BLZ (und evl. noch der Filialindex) gültig ist. Der Rückgabewert ist
|
642
|
+
#nur true oder false.
|
643
|
+
|
644
|
+
def bank_valid?(*args)
|
645
|
+
KontoCheckRaw::bank_valid(*args)>0?true:false
|
646
|
+
end
|
647
|
+
|
648
|
+
#===<tt>KontoCheck::bank_filialen(blz)</tt>
|
649
|
+
#=====<tt>KontoCheckRaw::bank_filialen(blz)</tt>
|
650
|
+
#
|
651
|
+
#Diese Funktion liefert die Anzahl Filialen einer Bank (inklusive Hauptstelle).
|
652
|
+
#Die LUT-Datei muß dazu natürlich mit den Filialdaten generiert sein, sonst
|
653
|
+
#wird für alle Banken nur 1 zurückgegeben.
|
654
|
+
|
655
|
+
def bank_filialen(*args)
|
656
|
+
KontoCheckRaw::bank_filialen(*args).first
|
657
|
+
end
|
658
|
+
|
659
|
+
#===<tt>KontoCheck::bank_name(blz[,filiale])</tt>
|
660
|
+
#=====<tt>KontoCheckRaw::bank_name(blz[,filiale])</tt>
|
661
|
+
#
|
662
|
+
#Diese Funktion liefert den Namen einer Bank, oder nil im Fehlerfall.
|
663
|
+
|
664
|
+
def bank_name(*args)
|
665
|
+
KontoCheckRaw::bank_name(*args).first
|
666
|
+
end
|
667
|
+
|
668
|
+
#===<tt>KontoCheck::bank_name_kurz(blz [,filiale])</tt>
|
669
|
+
#=====<tt>KontoCheckRaw::bank_name_kurz(blz [,filiale])</tt>
|
670
|
+
#
|
671
|
+
#Diese Funktion liefert den Kurznamen einer Bank, oder nil im Fehlerfall.
|
672
|
+
|
673
|
+
def bank_name_kurz(*args)
|
674
|
+
KontoCheckRaw::bank_name_kurz(*args).first
|
675
|
+
end
|
676
|
+
|
677
|
+
#===<tt>KontoCheck::bank_ort(blz [,filiale])</tt>
|
678
|
+
#=====<tt>KontoCheckRaw::bank_ort(blz [,filiale])</tt>
|
679
|
+
#
|
680
|
+
#Diese Funktion liefert den Ort einer Bank. Falls der Parameter filiale nicht
|
681
|
+
#angegeben ist, wird der Sitz der Hauptstelle ausgegeben. Im Fehlerfall wird
|
682
|
+
#für den Ort nil zurückgegeben.
|
683
|
+
|
684
|
+
def bank_ort(*args)
|
685
|
+
KontoCheckRaw::bank_ort(*args).first
|
686
|
+
end
|
687
|
+
|
688
|
+
#===<tt>KontoCheck::bank_plz(blz [,filiale])</tt>
|
689
|
+
#=====<tt>KontoCheckRaw::bank_plz(blz [,filiale])</tt>
|
690
|
+
#
|
691
|
+
#Diese Funktion liefert die Postleitzahl einer Bank. Falls der Parameter
|
692
|
+
#filiale nicht angegeben ist, wird die PLZ der Hauptstelle ausgegeben. Im
|
693
|
+
#Fehlerfall wird für die PLZ nil zurückgegeben.
|
694
|
+
|
695
|
+
def bank_plz(*args)
|
696
|
+
KontoCheckRaw::bank_plz(*args).first
|
697
|
+
end
|
698
|
+
|
699
|
+
#===<tt>KontoCheck::bank_pz(blz)</tt>
|
700
|
+
#=====<tt>KontoCheckRaw::bank_pz(blz)</tt>
|
701
|
+
#
|
702
|
+
#Diese Funktion liefert die Prüfziffer einer Bank. Die Funktion unterstützt
|
703
|
+
#keine Filialen; zu jeder BLZ kann es in der LUT-Datei nur eine
|
704
|
+
#Prüfziffermethode geben.
|
705
|
+
|
706
|
+
def bank_pz(blz)
|
707
|
+
KontoCheckRaw::bank_pz(blz).first
|
708
|
+
end
|
709
|
+
|
710
|
+
#===<tt>KontoCheck::bank_bic(blz [,filiale])</tt>
|
711
|
+
#=====<tt>KontoCheckRaw::bank_bic(blz [,filiale])</tt>
|
712
|
+
#
|
713
|
+
#Diese Funktion liefert den BIC (Bank Identifier Code) einer Bank. Im
|
714
|
+
#Fehlerfall wird nil zurückgegeben.
|
715
|
+
|
716
|
+
def bank_bic(*args)
|
717
|
+
KontoCheckRaw::bank_bic(*args).first
|
718
|
+
end
|
719
|
+
|
720
|
+
#===<tt>KontoCheck::bank_aenderung(blz [,filiale])</tt>
|
721
|
+
#=====<tt>KontoCheckRaw::bank_aenderung(blz [,filiale])</tt>
|
722
|
+
#
|
723
|
+
#Diese Funktion liefert das 'Änderung' Flag einer Bank (als string). Mögliche
|
724
|
+
#Werte sind: A (Addition), M (Modified), U (Unchanged), D (Deletion).
|
725
|
+
|
726
|
+
def bank_aenderung(*args)
|
727
|
+
KontoCheckRaw::bank_aenderung(*args).first
|
728
|
+
end
|
729
|
+
|
730
|
+
#===<tt>KontoCheck::bank_loeschung(blz [,filiale])</tt>
|
731
|
+
#=====<tt>KontoCheckRaw::bank_loeschung(blz [,filiale])</tt>
|
732
|
+
#
|
733
|
+
#Diese Funktion liefert das Lösch-Flag für eine Bank zurück (als Integer;
|
734
|
+
#mögliche Werte sind 0 und 1); im Fehlerfall wird nil zurückgegeben.
|
735
|
+
|
736
|
+
def bank_loeschung(*args)
|
737
|
+
KontoCheckRaw::bank_loeschung(*args).first
|
738
|
+
end
|
739
|
+
|
740
|
+
#===<tt>KontoCheck::bank_nachfolge_blz(blz [,filiale])</tt>
|
741
|
+
#=====<tt>KontoCheckRaw::bank_nachfolge_blz(blz [,filiale])</tt>
|
742
|
+
#Diese Funktion liefert die Nachfolge-BLZ für eine Bank, die gelöscht werden
|
743
|
+
#soll (bei der das 'Löschung' Flag 1 ist).
|
744
|
+
|
745
|
+
def bank_nachfolge_blz(*args)
|
746
|
+
KontoCheckRaw::bank_nachfolge_blz(*args).first
|
747
|
+
end
|
748
|
+
|
749
|
+
#===<tt>KontoCheck::bank_pan(blz [,filiale])</tt>
|
750
|
+
#=====<tt>KontoCheckRaw::bank_pan(blz [,filiale])</tt>
|
751
|
+
#
|
752
|
+
#Diese Funktion liefert den PAN (Primary Account Number) einer Bank.
|
753
|
+
|
754
|
+
def bank_pan(*args)
|
755
|
+
KontoCheckRaw::bank_pan(*args).first
|
756
|
+
end
|
757
|
+
|
758
|
+
#===<tt>KontoCheck::bank_nr(blz [,filiale])</tt>
|
759
|
+
#=====<tt>KontoCheckRaw::bank_nr(blz [,filiale])</tt>
|
760
|
+
#
|
761
|
+
#Diese Funktion liefert die laufende Nummer einer Bank (internes Feld der BLZ-Datei). Der Wert
|
762
|
+
#wird wahrscheinlich nicht oft benötigt, ist aber der Vollständigkeit halber enthalten.
|
763
|
+
|
764
|
+
def bank_nr(*args)
|
765
|
+
KontoCheckRaw::bank_nr(*args).first
|
766
|
+
end
|
767
|
+
|
768
|
+
#===<tt>KontoCheck::bank_alles(blz [,filiale])</tt>
|
769
|
+
#=====<tt>KontoCheckRaw::bank_alles(blz [,filiale])</tt>
|
770
|
+
#
|
771
|
+
#Dies ist eine Mammutfunktion, die alle vorhandenen Informationen über eine
|
772
|
+
#Bank zurückliefert. Das Ergebnis ist ein Array mit den folgenden Komponenten:
|
773
|
+
# 0: Statuscode
|
774
|
+
# 1: Anzahl Filialen
|
775
|
+
# 2: Name
|
776
|
+
# 3: Kurzname
|
777
|
+
# 4: PLZ
|
778
|
+
# 5: Ort
|
779
|
+
# 6: PAN
|
780
|
+
# 7: BIC
|
781
|
+
# 8: Prüfziffer
|
782
|
+
# 9: Laufende Nr.
|
783
|
+
# 10: Änderungs-Flag
|
784
|
+
# 11: Löeschung-Flag
|
785
|
+
# 12: Nachfolge-BLZ
|
786
|
+
#
|
787
|
+
#Der Statuscode (Element 0) kann folgende Werte annehmen:
|
788
|
+
#
|
789
|
+
# -40 (LUT2_NOT_INITIALIZED) "die Programmbibliothek wurde noch nicht initialisiert"
|
790
|
+
# -38 (LUT2_PARTIAL_OK) "es wurden nicht alle Blocks geladen"
|
791
|
+
# -5 (INVALID_BLZ_LENGTH) "die Bankleitzahl ist nicht achtstellig"
|
792
|
+
# -4 (INVALID_BLZ) "die Bankleitzahl ist ungültig"
|
793
|
+
# 1 (OK) "ok"
|
794
|
+
#
|
795
|
+
#Anmerkung: Falls der Statuscode LUT2_PARTIAL_OK ist, wurden bei der
|
796
|
+
#Initialisierung nicht alle Blocks geladen (oder es sind nicht alle verfügbar);
|
797
|
+
#die entsprechenden Elemente haben dann den Wert nil.
|
798
|
+
|
799
|
+
def bank_alles(*args)
|
800
|
+
KontoCheckRaw::bank_alles(*args)
|
801
|
+
end
|
802
|
+
|
803
|
+
#===<tt>KontoCheck::iban2bic(iban)</tt>
|
804
|
+
#=====<tt>KontoCheckRaw::iban2bic(iban)</tt>
|
805
|
+
#
|
806
|
+
#Diese Funktion bestimmt zu einer (deutschen!) IBAN den zugehörigen BIC (Bank
|
807
|
+
#Identifier Code). Der BIC wird für eine EU-Standard-Überweisung im
|
808
|
+
#SEPA-Verfahren (Single Euro Payments Area) benötigt; für die deutschen Banken
|
809
|
+
#ist er in der BLZ-Datei enthalten. Nähere Infos gibt es z.B. unter
|
810
|
+
#http://www.bic-code.de/ .
|
811
|
+
|
812
|
+
def iban2bic(*args)
|
813
|
+
KontoCheckRaw::iban2bic(*args).first
|
814
|
+
end
|
815
|
+
|
816
|
+
#===<tt>KontoCheck::iban_check(iban)</tt>
|
817
|
+
#=====<tt>KontoCheckRaw::iban_check(iban)</tt>
|
818
|
+
#
|
819
|
+
#Diese Funktion testet einen IBAN. Dabei wird sowohl die Prüfziffer des IBAN
|
820
|
+
#getestet als auch (bei deutschen Konten) die Prüfziffer der Bankverbindung
|
821
|
+
#(aus der Kontonummer). Diese Funktion gibt nur den globalen Status zurück;
|
822
|
+
#bei der Funktion KontoCheckRaw::iban_check() kann man zusätzlich noch den
|
823
|
+
#Status der Kontenprüfung abfragen.
|
824
|
+
#
|
825
|
+
#Mögliche Rückgabewerte sind:
|
826
|
+
#
|
827
|
+
# -67 (IBAN_OK_KTO_NOT) "Die Prüfziffer der IBAN stimmt, die der Kontonummer nicht"
|
828
|
+
# -66 (KTO_OK_IBAN_NOT) "Die Prüfziffer der Kontonummer stimmt, die der IBAN nicht"
|
829
|
+
# 0 (FALSE) "falsch"
|
830
|
+
# 1 (OK) "ok"
|
831
|
+
|
832
|
+
def iban_check(*args)
|
833
|
+
KontoCheckRaw::iban_check(*args).first
|
834
|
+
end
|
835
|
+
|
836
|
+
#===<tt>KontoCheck::iban_gen(kto,blz)</tt>
|
837
|
+
#=====<tt>KontoCheckRaw::iban_gen(kto,blz)</tt>
|
838
|
+
#Diese Funktion generiert aus (deutscher) BLZ und Konto einen IBAN. Hierbei
|
839
|
+
#ist zu beachten, daß nicht alle Banken der Selbstberechnung zugestimmt
|
840
|
+
#haben. Es gibt von den Sparkassen eine Liste dieser Institute; sie ist auch
|
841
|
+
#in der LUT-Datei mit der ID 22 (1. Eigene IBAN) enthalten. Bei diesen Banken
|
842
|
+
#wird - falls der Block in der LUT-Datei enthalten ist - keine Berechnung
|
843
|
+
#durchgeführt, sondern die Status-Variable auf NO_OWN_IBAN_CALCULATION
|
844
|
+
#gesetzt.
|
845
|
+
#
|
846
|
+
#Alle Banken der Liste erzeugen eine Statusmeldung mit dem Wert
|
847
|
+
#OK_UNTERKONTO_ATTACHED, OK_UNTERKONTO_POSSIBLE oder OK_UNTERKONTO_GIVEN. Falls
|
848
|
+
#einer dieser Stauswerte zurückgegeben wird, ist somit immer Vorsicht geboten;
|
849
|
+
#der generierte IBAN sollte direkt bei dem zugehörigen Institut überprüft
|
850
|
+
#werden.
|
851
|
+
#
|
852
|
+
#Hier ein Auszug aus der Anleitung des SEPA Account Converters:
|
853
|
+
#
|
854
|
+
#Der SEPA Account Converter ist so eingestellt, dass nur Kontoverbindungen in IBAN und
|
855
|
+
#BIC umgerechnet werden, bei denen das ausgebende Kreditinstitut der Umrechnung
|
856
|
+
#zugestimmt hat. Kreditinstitute, welche einer Umrechnung nicht zugestimmt haben und
|
857
|
+
#welche zum Teil spezielle, dem SEPA Account Converter nicht bekannte Umrechnungs-
|
858
|
+
#methoden verwenden, sind in der Datei "CONFIG.INI" hinterlegt. Durch Löschen der Datei
|
859
|
+
#"CONFIG.INI" aus dem Programmverzeichnis haben Sie die Möglichkeit, eine Umrechnung
|
860
|
+
#für alle Konten durchzuführen. Bitte beachten Sie dabei, dass die so erhaltenen IBAN und
|
861
|
+
#BIC fehlerhaft sein können und deshalb mit ihren Kunden zu überprüfen sind.
|
862
|
+
#
|
863
|
+
#Weblinks:
|
864
|
+
#
|
865
|
+
# https://www.sparkasse-rhein-neckar-nord.de/pdf/content/sepa/kurzanleitung.pdf
|
866
|
+
# https://www.sparkasse-rhein-neckar-nord.de/firmenkunden/internationales_geschaeft/sepa/vorteile/index.php
|
867
|
+
# https://www.sparkasse-rhein-neckar-nord.de/firmenkunden/internationales_geschaeft/sepa/vorteile/sepa_account_converter.msi
|
868
|
+
#
|
869
|
+
#Es ist möglich, sowohl die Prüfung auf Stimmigkeit der Kontonummer als auch
|
870
|
+
#auf Zulässigkeit der Selbstberechnung zu deaktivieren. Falls die IBAN trotz
|
871
|
+
#fehlender Zustimmung der Bank berechnet werden, ist vor die BLZ ein @ zu
|
872
|
+
#setzen; falls auch bei falscher Bankverbindung ein IBAN berechnet werden
|
873
|
+
#soll, ist vor die BLZ ein + zu setzen. Um beide Prüfungen zu deaktiviern,
|
874
|
+
#kann @+ (oder +@) vor die BLZ gesetzt werden. Die so erhaltenen IBANs sind
|
875
|
+
#dann i.A. allerdings wohl nicht gültig.
|
876
|
+
#
|
877
|
+
#Rückgabewert ist der generierte IBAN oder nil, falls ein Fehler aufgetreten ist. Die genauere
|
878
|
+
#Fehlerursache läßt sich mit der Funktion KontoCheckRaw::iban_gen() feststellen.
|
879
|
+
|
880
|
+
def iban_gen(*args)
|
881
|
+
KontoCheckRaw::iban_gen(*args).first
|
882
|
+
end
|
883
|
+
|
884
|
+
#===<tt>KontoCheck::ipi_gen(zweck)</tt>
|
885
|
+
#=====<tt>KontoCheckRaw::ipi_gen(zweck)</tt>
|
886
|
+
#
|
887
|
+
#Diese Funktion generiert einen "Strukturierten Verwendungszweck" für SEPA-Überweisungen.
|
888
|
+
#Der Rückgabewert ist der Strukturierte Verwendungszweck als String oder nil, falls ein Fehler
|
889
|
+
#aufgetreten ist.
|
890
|
+
#
|
891
|
+
#Der String für den Strukturierten Verwendungszweck darf maximal 18 Byte lang sein und nur
|
892
|
+
#alphanumerische Zeichen enthalten (also auch keine Umlaute). Die Funktion KontoCheckRaw::ipi_gen()
|
893
|
+
#gibt einen Statuscode zurück, der etwas nähere Infos im Fehlerfall enthält.
|
894
|
+
|
895
|
+
def ipi_gen(zweck)
|
896
|
+
KontoCheckRaw::ipi_gen(zweck).first
|
897
|
+
end
|
898
|
+
|
899
|
+
#===<tt>KontoCheck::ipi_check(zweck)</tt>
|
900
|
+
#=====<tt>KontoCheckRaw::ipi_check(zweck)</tt>
|
901
|
+
#
|
902
|
+
#Die Funktion testet, ob ein Strukturierter Verwendungszweck gültig ist (Anzahl Zeichen, Prüfziffer). Der
|
903
|
+
#Rückgabewert ist true oder false.
|
904
|
+
|
905
|
+
def ipi_check(zweck)
|
906
|
+
KontoCheckRaw::ipi_check(zweck)>0?true:false
|
907
|
+
end
|
908
|
+
|
909
|
+
#===<tt>KontoCheck::suche()</tt>
|
910
|
+
#=====<tt>KontoCheck::search()</tt>
|
911
|
+
#=====<tt>KontoCheck::SEARCH_KEYS</tt>
|
912
|
+
#=====<tt>KontoCheck::SEARCH_KEY_MAPPINGS</tt>
|
913
|
+
#=====<tt>KontoCheckRaw::bank_suche_bic(search_bic)</tt>
|
914
|
+
#=====<tt>KontoCheckRaw::bank_suche_blz(blz1[,blz2])</tt>
|
915
|
+
#=====<tt>KontoCheckRaw::bank_suche_namen(name)</tt>
|
916
|
+
#=====<tt>KontoCheckRaw::bank_suche_namen_kurz(short_name)</tt>
|
917
|
+
#=====<tt>KontoCheckRaw::bank_suche_plz(plz1[,plz2])</tt>
|
918
|
+
#=====<tt>KontoCheckRaw::bank_suche_pz(pz1[,pz2])</tt>
|
919
|
+
#=====<tt>KontoCheckRaw::bank_suche_ort(suchort)</tt>
|
920
|
+
#
|
921
|
+
#Diese Funktion sucht alle Banken, die auf bestimmte Suchmuster passen.
|
922
|
+
#Momentan sind nur grundlegende Suchfunktionen eingebaut, und es wird auch nur
|
923
|
+
#die Suche nach einem Kriterium unterstützt; in einer späteren Version werden
|
924
|
+
#die Möglichkeiten noch erweitert werden.
|
925
|
+
#
|
926
|
+
#Eine Suche ist möglich nach den Schlüsseln BIC, Bankleitzahl, Postleitzahl,
|
927
|
+
#Prüfziffer, Ort, Name oder Kurzname. Bei den alphanumerischen Feldern (BIC,
|
928
|
+
#Ort, Name, Kurzname) ist der Suchschlüssel der Wortanfang des zu suchenden
|
929
|
+
#Feldes (ohne Unterscheidung zwischen Groß- und Kleinschreibung); bei den
|
930
|
+
#numerischen Feldern (BLZ, PLZ, Prüfziffer) ist die Suche nach einem bestimmten
|
931
|
+
#Wert oder nach einem Wertebereich möglich; dieser wird dann angegeben als
|
932
|
+
#Array mit zwei Elementen. Der Rückgabewert ist jeweils ein Array mit den
|
933
|
+
#Bankleitzahlen, oder nil falls die Suche fehlschlug. Die Ursache für eine
|
934
|
+
#fehlgeschlagene Suche läßt sich nur mit den Funktionen der KontoCheckRaw
|
935
|
+
#Bibliothek näher lokalisieren.
|
936
|
+
#
|
937
|
+
#Die Funktion KontoCheck::search() ist ein Alias für die Funktion
|
938
|
+
#KontoCheck::suche().
|
939
|
+
#
|
940
|
+
#Die möglichen Suchschlüssel sind in den Variablen KontoCheck::SEARCH_KEYS
|
941
|
+
#definiert; in der Variablen KontoCheck::SEARCH_KEY_MAPPINGS finden sich noch
|
942
|
+
#einige Aliasdefinitionen zu den Suchschlüsseln.
|
943
|
+
#
|
944
|
+
#Hier einige Beispiele möglicher Suchaufrufe:
|
945
|
+
#
|
946
|
+
# s=KontoCheck::suche( :blz => [13051172,13070172] ) BLZ-Bereich
|
947
|
+
# s=KontoCheck::suche( :blz => [13051172,13070172,333] ) überzählige Array-Elemente werden ignoriert
|
948
|
+
# s=KontoCheck::suche( :bic => 'genodef1wi' ) BIC Teilstring
|
949
|
+
# s=KontoCheck::suche( :plz => [68100,68200] ) PLZ-Bereich
|
950
|
+
# s=KontoCheck::suche( :pz => 90 ) Prüfziffer numerisch
|
951
|
+
# s=KontoCheck::suche( :pz => '90' ) Prüfziffer als String
|
952
|
+
# s=KontoCheck::suche( :pz => ['95',98] ) Prüfzifferbereich gemischt String/numerisch auch möglich
|
953
|
+
# s=KontoCheck::suche( :name => 'postbank' )
|
954
|
+
# s=KontoCheck::suche( :ort => 'lingenfeld' )
|
955
|
+
|
956
|
+
def suche(options={})
|
957
|
+
key = options.keys.first.to_sym
|
958
|
+
value = options[key]
|
959
|
+
key = SEARCH_KEY_MAPPINGS[key] if SEARCH_KEY_MAPPINGS.keys.include?(key)
|
960
|
+
raise 'search key not supported' unless SEARCH_KEYS.include?(key)
|
961
|
+
raw_results = KontoCheckRaw::send("bank_suche_#{key}", value)
|
962
|
+
raw_results[1]
|
963
|
+
end
|
964
|
+
alias_method :search, :suche
|
965
|
+
|
966
|
+
#===<tt>KontoCheck::version()</tt>
|
967
|
+
#=====<tt>KontoCheckRaw::version()</tt>
|
968
|
+
#Diese Funktion gibt den Versions-String der C-Bibliothek zurück.
|
969
|
+
|
970
|
+
def version()
|
971
|
+
KontoCheckRaw::version()
|
972
|
+
end
|
973
|
+
|
974
|
+
end
|
975
|
+
|
976
|
+
end
|