konto_check 0.0.2 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|