konto_check 0.2.1 → 5.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/lib/konto_check.rb CHANGED
@@ -1,19 +1,21 @@
1
+ # vi: ft=ruby:set si:set fileencoding=UTF-8
2
+
1
3
  # load the c extension
2
4
  require 'konto_check_raw'
3
5
 
4
6
  #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
+ #Numbers. All currently defined test methods by Deutsche Bundesbank
8
+ #(April 2013: 00 to E0) are implemented.
7
9
  #
8
10
  #<b>ATTENTION:</b> There are a few important changes in the API between version 0.0.2 (version
9
11
  #by Peter Horn/Provideal), version 0.0.6 (jeanmartin) and this version:
10
12
  #
11
13
  #* 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)
14
+ #* The function KontoCheck::konto_check( blz,kto) changed the order of parameters from (kto,blz) to (blz,kto)
13
15
  #
14
16
  #Another change affects only the version 0.0.6 by jeanmartin:
15
17
  #
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).
18
+ #* 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
19
  #
18
20
  #Because this class is inteded for german bank accounts, the rest of the
19
21
  #documentation is in german too.
@@ -58,7 +60,7 @@ module KontoCheck
58
60
  #mögliche Suchschlüssel für die Funktion KontoCheck::suche()
59
61
  #
60
62
  #:ort, :plz, :pz, :bic, :blz, :namen, :namen_kurz
61
- SEARCH_KEYS = [:ort, :plz, :pz, :bic, :blz, :namen, :namen_kurz]
63
+ SEARCH_KEYS = [:ort, :plz, :pz, :bic, :blz, :namen, :namen_kurz, :regel, :volltext, :multiple]
62
64
  #Aliasnamen für einige Suchschlüssel der Funktion KontoCheck::suche()
63
65
  #
64
66
  #:bankleitzahl, :city, :zip, :name, :kurzname, :shortname, :pruefziffer
@@ -69,15 +71,20 @@ module KontoCheck
69
71
  :name => :namen,
70
72
  :kurzname => :namen_kurz,
71
73
  :shortname => :namen_kurz,
72
- :pruefziffer => :pz
74
+ :pruefziffer => :pz,
75
+ :regel => :regel,
76
+ :vt => :volltext,
77
+ :fulltext => :volltext,
78
+ :m => :multiple,
79
+ :x => :multiple
73
80
  }
74
81
 
75
82
  class << self
76
83
 
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>
84
+ #===KontoCheck::lut_info()
85
+ #=====KontoCheckRaw::lut_info( [lutfile])
86
+ #=====KontoCheck::lut_info1( lutfile)
87
+ #=====KontoCheck::lut_info2( lutfile)
81
88
  #
82
89
  #Diese Funktion liefert den Infoblock des Datensatzes zurück, der mittels
83
90
  #init() in den Speichergeladen wurde. Weitere Infos über die LUT-Datei
@@ -88,10 +95,10 @@ module KontoCheck
88
95
  KontoCheckRaw::lut_info()[3]
89
96
  end
90
97
 
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>
98
+ #===KontoCheck::lut_info1( lutfile)
99
+ #=====KontoCheck::lut_info()
100
+ #=====KontoCheck::lut_info2()
101
+ #=====KontoCheckRaw::lut_info()
95
102
  #
96
103
  #Diese Funktion liefert den Infoblock des ersten Datensatzes der angegebenen
97
104
  #LUT-Datei zurück. Weitere Infos über die LUT-Datei lassen sich mit der
@@ -101,10 +108,10 @@ module KontoCheck
101
108
  KontoCheckRaw::lut_info(filename)[3]
102
109
  end
103
110
 
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>
111
+ #===KontoCheck::lut_info2( lutfile)
112
+ #=====KontoCheck::lut_info()
113
+ #=====KontoCheck::lut_info1( lutfile)
114
+ #=====KontoCheckRaw::lut_info( [lutfile])
108
115
  #
109
116
  #Diese Funktion liefert den Infoblock des zweiten Datensatzes der angegebenen
110
117
  #LUT-Datei zurück. Weitere Infos über die LUT-Datei lassen sich mit der
@@ -115,8 +122,8 @@ module KontoCheck
115
122
  end
116
123
 
117
124
 
118
- #===<tt>KontoCheck::dump_lutfile(lutfile)</tt>
119
- #=====<tt>KontoCheckRaw::dump_lutfile(lutfile)</tt>
125
+ #===KontoCheck::dump_lutfile( lutfile)
126
+ #=====KontoCheckRaw::dump_lutfile( lutfile)
120
127
  #
121
128
  #Diese Funktion liefert detaillierte Informationen über alle Blocks, die in der
122
129
  #LUT-Datei gespeichert sind, sowie noch einige Internas der LUT-Datei. Im
@@ -126,10 +133,10 @@ module KontoCheck
126
133
  KontoCheckRaw::dump_lutfile(filename).first
127
134
  end
128
135
 
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>
136
+ #===KontoCheck::encoding( [mode])
137
+ #=====KontoCheckRaw::encoding( [mode])
138
+ #=====KontoCheck::encoding_str( [mode])
139
+ #=====KontoCheckRaw::keep_raw_data( mode)
133
140
  #
134
141
  #Diese Funktion legt den benutzten Zeichensatz für Fehlermeldungen durch die
135
142
  #Funktion KontoCheck::retval2txt() und einige Felder der LUT-Datei (Name,
@@ -189,10 +196,10 @@ module KontoCheck
189
196
  KontoCheckRaw::encoding(*args)
190
197
  end
191
198
 
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>
199
+ #===KontoCheck::encoding_str( [mode])
200
+ #=====KontoCheckRaw::encoding_str( [mode])
201
+ #=====KontoCheck::encoding( [mode])
202
+ #=====KontoCheckRaw::keep_raw_data( mode)
196
203
  #
197
204
  #Diese Funktion entspricht der Funktion KontoCheck::encoding(). Allerdings
198
205
  #ist der Rückgabewert nicht numerisch, sondern ein String, der die aktuelle
@@ -226,8 +233,8 @@ module KontoCheck
226
233
  KontoCheckRaw::encoding_str(*args)
227
234
  end
228
235
 
229
- #===<tt>KontoCheck::retval2txt(retval)</tt>
230
- #=====<tt>KontoCheckRaw::retval2txt(retval)</tt>
236
+ #===KontoCheck::retval2txt( retval)
237
+ #=====KontoCheckRaw::retval2txt( retval)
231
238
  #
232
239
  #Diese Funktion konvertiert einen numerischen Rückgabewert in einen String. Der
233
240
  #benutzte Zeichensatz wird über die Funktion KontoCheck::encoding() festgelegt.
@@ -238,8 +245,8 @@ module KontoCheck
238
245
  KontoCheckRaw::retval2txt(retval)
239
246
  end
240
247
 
241
- #===<tt>KontoCheck::retval2iso(retval)</tt>
242
- #=====<tt>KontoCheckRaw::retval2iso(retval)</tt>
248
+ #===KontoCheck::retval2iso( retval)
249
+ #=====KontoCheckRaw::retval2iso( retval)
243
250
  #
244
251
  #Diese Funktion konvertiert einen numerischen Rückgabewert in einen String.
245
252
  #Der benutzte Zeichensatz ist ISO 8859-1.
@@ -248,9 +255,9 @@ module KontoCheck
248
255
  KontoCheckRaw::retval2iso(retval)
249
256
  end
250
257
 
251
- #===<tt>KontoCheck::retval2txt_short(retval)</tt>
252
- #=====<tt>KontoCheckRaw::retval2txt_short(retval)</tt>
253
- #=====<tt>KontoCheck::retval2txt_kurz(retval)</tt>
258
+ #===KontoCheck::retval2txt_short( retval)
259
+ #=====KontoCheckRaw::retval2txt_short( retval)
260
+ #=====KontoCheck::retval2txt_kurz( retval)
254
261
  #
255
262
  #Diese Funktion konvertiert einen numerischen Rückgabewert in einen kurzen
256
263
  #String. Die Ausgabe ist der Makroname, wie er in C benutzt wird.
@@ -260,9 +267,9 @@ module KontoCheck
260
267
  end
261
268
  alias_method :retval2txt_kurz, :retval2txt_short
262
269
 
263
- #===<tt>KontoCheck::retval2txt_kurz(retval)</tt>
264
- #=====<tt>KontoCheckRaw::retval2txt_short(retval)</tt>
265
- #=====<tt>KontoCheck::retval2txt_short(retval)</tt>
270
+ #===KontoCheck::retval2txt_kurz( retval)
271
+ #=====KontoCheckRaw::retval2txt_short( retval)
272
+ #=====KontoCheck::retval2txt_short( retval)
266
273
  #
267
274
  #Diese Funktion konvertiert einen numerischen Rückgabewert in einen kurzen
268
275
  #String. Die Ausgabe ist der Makroname, wie er in C benutzt wird. Die Funktion
@@ -272,8 +279,8 @@ module KontoCheck
272
279
  KontoCheckRaw::retval2txt_short(retval)
273
280
  end
274
281
 
275
- #===<tt>KontoCheck::retval2dos(retval)</tt>
276
- #=====<tt>KontoCheckRaw::retval2dos(retval)</tt>
282
+ #===KontoCheck::retval2dos( retval)
283
+ #=====KontoCheckRaw::retval2dos( retval)
277
284
  #
278
285
  #Diese Funktion konvertiert einen numerischen Rückgabewert in einen String.
279
286
  #Der benutzte Zeichensatz ist cp850 (DOS).
@@ -282,8 +289,8 @@ module KontoCheck
282
289
  KontoCheckRaw::retval2dos(retval)
283
290
  end
284
291
 
285
- #===<tt>KontoCheck::retval2html(retval)</tt>
286
- #=====<tt>KontoCheckRaw::retval2html(retval)</tt>
292
+ #===KontoCheck::retval2html( retval)
293
+ #=====KontoCheckRaw::retval2html( retval)
287
294
  #
288
295
  #Diese Funktion konvertiert einen numerischen Rückgabewert in einen String.
289
296
  #Für Umlaute werden HTML-Entities benutzt.
@@ -292,8 +299,8 @@ module KontoCheck
292
299
  KontoCheckRaw::retval2html(retval)
293
300
  end
294
301
 
295
- #===<tt>KontoCheck::retval2utf8(retval)</tt>
296
- #=====<tt>KontoCheckRaw::retval2utf8(retval)</tt>
302
+ #===KontoCheck::retval2utf8( retval)
303
+ #=====KontoCheckRaw::retval2utf8( retval)
297
304
  #
298
305
  #Diese Funktion konvertiert einen numerischen Rückgabewert in einen String.
299
306
  #Der benutzte Zeichensatz ist UTF-8.
@@ -302,8 +309,8 @@ module KontoCheck
302
309
  KontoCheckRaw::retval2utf8(retval)
303
310
  end
304
311
 
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>
312
+ #===KontoCheck::generate_lutfile( inputfile,outputfile [,user_info [,gueltigkeit [,felder [,filialen [,set [,iban_file]]]]]])
313
+ #=====KontoCheckRaw::generate_lutfile( inputfile,outputfile [,user_info [,gueltigkeit [,felder [,filialen [,set [,iban_file]]]]]])
307
314
  #
308
315
  #Diese Funktion generiert eine neue LUT-Datei aus der BLZ-Datei der Deutschen Bundesbank. Die folgenden
309
316
  #Parameter werden unterstützt:
@@ -346,8 +353,8 @@ module KontoCheck
346
353
  KontoCheckRaw::generate_lutfile(*args)
347
354
  end
348
355
 
349
- #===<tt>KontoCheck::init([<p1>[,<p2>[,<set>]]])</tt>
350
- #=====<tt>KontoCheckRaw::init([<p1>[,<p2>[,<set>]]])</tt>
356
+ #===KontoCheck::init( [p1 [,p2 [,set]]])
357
+ #=====KontoCheckRaw::init( [p1 [,p2 [,set]]])
351
358
  #Die Variablen p1 und p2 stehen für level und lutfile (in beliebiger
352
359
  #Reihenfolge); die Zuordnung der beiden Parameter erfolgt on the fly durch eine
353
360
  #Typüberprüfung.
@@ -424,8 +431,31 @@ module KontoCheck
424
431
  KontoCheckRaw::init(*args)
425
432
  end
426
433
 
427
- #===<tt>KontoCheck::load_bank_data(<datafile>)</tt>
428
- #=====<tt>KontoCheckRaw::load_bank_data(<datafile>)</tt>
434
+ #===KontoCheck::lut_blocks( )
435
+ #=====KontoCheckRaw::lut_blocks1( )
436
+ #=====KontoCheckRaw::lut_blocks( mode)
437
+ #Die Funktion gibt Auskunft, ob bei der Initialisierung alle angeforderten
438
+ #Blocks der LUT-Datei geladen wurden. Die korrespondierende Funktion
439
+ #KontoCheckRaw::lut_blocks( mode) gibt noch einige weitere Infos über die
440
+ #geladenen Blocks aus.
441
+ #
442
+ #====Aufruf:
443
+ #ret=KontoCheck::lut_blocks( )
444
+ #
445
+ #====Rückgabe:
446
+ #Rückgabe ist ein skalarer Wert, der Information über den Initialisierungsprozess gibt:
447
+ #
448
+ #* -136 LUT2_BLOCKS_MISSING "ok, bei der Initialisierung konnten allerdings ein oder mehrere Blocks nicht geladen werden"
449
+ #* -40 LUT2_NOT_INITIALIZED "die Programmbibliothek wurde noch nicht initialisiert"
450
+ #* -9 ERROR_MALLOC "kann keinen Speicher allokieren"
451
+ #* 1 OK "ok"
452
+
453
+ def lut_blocks()
454
+ KontoCheckRaw::lut_blocks1()
455
+ end
456
+
457
+ #===KontoCheck::load_bank_data( datafile)
458
+ #=====KontoCheckRaw::load_bank_data( datafile)
429
459
  #
430
460
  #Diese Funktion war die alte Initialisierungsroutine für konto_check; es ist
431
461
  #nun durch die Funktionen KontoCheck::init() und KontoCheck::generate_lutfile()
@@ -452,10 +482,10 @@ module KontoCheck
452
482
  KontoCheckRaw::load_bank_data(*args)
453
483
  end
454
484
 
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>
485
+ #===KontoCheck::current_lutfile_name()
486
+ #=====KontoCheckRaw::current_lutfile_name()
487
+ #=====KontoCheck::current_lutfile_set()
488
+ #=====KontoCheck::current_init_level()
459
489
  #
460
490
  #Diese Funktion bestimmt den Dateinamen der zur Initialisierung benutzten LUT-Datei.
461
491
 
@@ -463,10 +493,10 @@ module KontoCheck
463
493
  KontoCheckRaw::current_lutfile_name().first
464
494
  end
465
495
 
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>
496
+ #===KontoCheck::current_lutfile_set()
497
+ #=====KontoCheckRaw::current_lutfile_name()
498
+ #=====KontoCheck::current_lutfile_name()
499
+ #=====KontoCheck::current_init_level()
470
500
  #
471
501
  #Diese Funktion bestimmt das Set der LUT-Datei, das bei der Initialisierung benutzt wurde.
472
502
 
@@ -475,10 +505,10 @@ module KontoCheck
475
505
  raw_results[1]
476
506
  end
477
507
 
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>
508
+ #===KontoCheck::current_init_level()
509
+ #=====KontoCheckRaw::current_lutfile_name()
510
+ #=====KontoCheckRaw::current_lutfile_name()
511
+ #=====KontoCheck::current_lutfile_set()
482
512
  #
483
513
  #Diese Funktion bestimmt den aktuell benutzten Initialisierungslevel
484
514
 
@@ -487,17 +517,17 @@ module KontoCheck
487
517
  raw_results[2]
488
518
  end
489
519
 
490
- #===<tt>KontoCheck::free()</tt>
491
- #=====<tt>KontoCheckRaw::free()</tt>
520
+ #===KontoCheck::free()
521
+ #=====KontoCheckRaw::free()
492
522
  #Diese Funktion gibt allen allokierten Speicher wieder frei.
493
523
 
494
524
  def free()
495
525
  KontoCheckRaw::free()
496
526
  end
497
527
 
498
- #===<tt>KontoCheck::konto_check(blz,kto)</tt>
499
- #=====<tt>KontoCheckRaw::konto_check(blz,kto)</tt>
500
- #=====<tt>KontoCheck::valid(blz,kto)</tt>
528
+ #===KontoCheck::konto_check( blz,kto)
529
+ #=====KontoCheckRaw::konto_check( blz,kto)
530
+ #=====KontoCheck::valid( blz,kto)
501
531
  #Test, ob eine BLZ/Konto-Kombination eine gültige Prüfziffer enthält. Die Funktion gibt einen skalaren
502
532
  #Statuswert zurück, der das Ergebnis der Prüfung enthält. Mögliche Rückgabewerte sind:
503
533
  #
@@ -520,18 +550,18 @@ module KontoCheck
520
550
  KontoCheckRaw::konto_check(blz,kto)
521
551
  end
522
552
 
523
- #===<tt>KontoCheck::valid(blz,kto)</tt>
524
- #=====<tt>KontoCheck::konto_check(blz,kto)</tt>
525
- #=====<tt>KontoCheckRaw::konto_check(blz,kto)</tt>
553
+ #===KontoCheck::valid( blz,kto)
554
+ #=====KontoCheck::konto_check( blz,kto)
555
+ #=====KontoCheckRaw::konto_check( blz,kto)
526
556
  #Dies ist ein Alias für die Funktion KontoCheck::konto_check()
527
557
 
528
558
  def valid(blz,kto)
529
- KontoCheckRaw::konto_check(blz,kto)
559
+ KontoCheckRaw::konto_check( blz,kto)
530
560
  end
531
561
 
532
- #===<tt>KontoCheck::konto_check?(blz, kto)</tt>
533
- #=====<tt>KontoCheck::konto_check(blz,kto)</tt>
534
- #=====<tt>KontoCheckRaw::konto_check(blz,kto)</tt>
562
+ #===KontoCheck::konto_check?( blz, kto)
563
+ #=====KontoCheck::konto_check( blz,kto)
564
+ #=====KontoCheckRaw::konto_check( blz,kto)
535
565
  #Test, ob eine BLZ/Konto-Kombination eine gültige Prüfziffer enthält. Die
536
566
  #Funktion gibt einen skalaren Statuswert zurück, der das Ergebnis der Prüfung
537
567
  #enthält. Mögliche Rückgabewerte sind einfach true und false (convenience
@@ -541,18 +571,18 @@ module KontoCheck
541
571
  KontoCheckRaw::konto_check(blz,kto)>0?true:false
542
572
  end
543
573
 
544
- #===<tt>KontoCheck::valid?(blz, kto)</tt>
545
- #=====<tt>KontoCheck::valid(blz, kto)</tt>
546
- #=====<tt>KontoCheckRaw::konto_check(blz, kto)</tt>
574
+ #===KontoCheck::valid?( blz, kto)
575
+ #=====KontoCheck::valid( blz, kto)
576
+ #=====KontoCheckRaw::konto_check (blz, kto)
547
577
  #Dies ist einn Alias für die Funktion KontoCheck::konto_check?. Mögliche Rückgabewerte sind true oder false.
548
578
 
549
579
  def valid?(blz,kto)
550
580
  KontoCheckRaw::konto_check(blz, kto)>0?true:false
551
581
  end
552
582
 
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>
583
+ #===KontoCheck::konto_check_pz (pz,kto [,blz])
584
+ #=====KontoCheckRaw::konto_check_pz (pz,kto [,blz])
585
+ #=====KontoCheck::valid_pz (pz,kto [,blz])
556
586
  #Diese Funktion testet, ob eine gegebene Prüfziffer/Kontonummer-Kombination gültig ist.
557
587
  #
558
588
  #Der zusätzliche Parameter blz ist nur für die Verfahren 52, 53, B6 und C0 notwendig; bei
@@ -580,9 +610,9 @@ module KontoCheck
580
610
  KontoCheckRaw::konto_check_pz(*args)
581
611
  end
582
612
 
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>
613
+ #===KontoCheck::konto_check_pz?( pz,kto [,blz])
614
+ #=====KontoCheckRaw::konto_check_pz (pz,kto [,blz])
615
+ #=====KontoCheck::valid_pz?( pz,kto [,blz])
586
616
  #Diese Funktion testet, ob eine gegebene Prüfziffer/Kontonummer-Kombination
587
617
  #gültig ist. Der Rückgabewert dieser Funktion ist true oder false (convenience
588
618
  #function für KontoCheck::konto_check_pz()).
@@ -596,27 +626,94 @@ module KontoCheck
596
626
  KontoCheckRaw::konto_check_pz(*args)>0?true:false
597
627
  end
598
628
 
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>
629
+ #===KontoCheck::valid_pz( pz,kto [,blz])
630
+ #=====KontoCheck::konto_check_pz( pz,kto [,blz])
631
+ #=====KontoCheckRaw::konto_check_pz( pz,kto [,blz])
602
632
  #Diese Funktion ist ein Alias für KontoCheck::konto_check_pz
603
633
 
604
634
  def valid_pz(*args)
605
635
  KontoCheckRaw::konto_check_pz(*args)
606
636
  end
607
637
 
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>
638
+ #===KontoCheck::valid_pz?( pz,kto [,blz])
639
+ #=====KontoCheck::valid_pz( pz,kto [,blz])
640
+ #=====KontoCheckRaw::konto_check_pz( pz,kto [,blz])
611
641
  #Diese Funktion ist ein Alias für KontoCheck::konto_check_pz?()
612
642
 
613
643
  def valid_pz?(*args)
614
644
  KontoCheckRaw::konto_check_pz(*args)>0?true:false
615
645
  end
616
646
 
617
- #==== <tt>KontoCheck::bank_valid(blz [,filiale])</tt>
618
- #======<tt>KontoCheckRaw::bank_valid(blz [,filiale])</tt>
619
- #======<tt>KontoCheck::bank_valid?(blz [,filiale])</tt>
647
+ #===KontoCheck::konto_check_regel( blz,kto)
648
+ #=====KontoCheck::konto_check_regel?( blz,kto)
649
+ #=====KontoCheckRaw::konto_check_regel( blz,kto)
650
+ #=====KontoCheckRaw::konto_check_regel_dbg( blz,kto)
651
+ #Test, ob eine BLZ/Konto-Kombination eine gültige Prüfziffer enthält. Die Funktion gibt einen skalaren
652
+ #Statuswert zurück, der das Ergebnis der Prüfung enthält. Vor dem Test werden die IBAN-Regeln angewendet,
653
+ #dadurch werden u.U. Konto und BLZ ersetzt.
654
+ #Falls nicht alle für IBAN-Berechnung notwendigen Blocks geladen sind, werden diese automatisch noch
655
+ #nachgeladen. Dadurch tauchen hier auch die Rückgabewerte für die Initialisierung auf.
656
+ #Mögliche Rückgabewerte sind:
657
+ #
658
+ # -135 FALSE_UNTERKONTO_ATTACHED "falsch, es wurde ein Unterkonto hinzugefügt (IBAN-Regel)"
659
+ # -133 BLZ_MARKED_AS_DELETED "Die BLZ ist in der Bundesbank-Datei als gelöscht markiert und somit ungültig"
660
+ # -128 IBAN_INVALID_RULE "Die BLZ passt nicht zur angegebenen IBAN-Regel"
661
+ # -127 IBAN_AMBIGUOUS_KTO "Die Kontonummer ist nicht eindeutig (es gibt mehrere Möglichkeiten)"
662
+ # -125 IBAN_RULE_UNKNOWN "Die IBAN-Regel ist nicht bekannt"
663
+ # -124 NO_IBAN_CALCULATION "Für die Bankverbindung ist keine IBAN-Berechnung erlaubt"
664
+ # -112 KTO_CHECK_UNSUPPORTED_COMPRESSION "die notwendige Kompressions-Bibliothek wurden beim Kompilieren nicht eingebunden"
665
+ # -77 BAV_FALSE "BAV denkt, das Konto ist falsch (konto_check hält es für richtig)"
666
+ # -69 MISSING_PARAMETER "Für die aufgerufene Funktion fehlt ein notwendiger Parameter"
667
+ # -64 INIT_FATAL_ERROR "Initialisierung fehlgeschlagen (init_wait geblockt)"
668
+ # -63 INCREMENTAL_INIT_NEEDS_INFO "Ein inkrementelles Initialisieren benötigt einen Info-Block in der LUT-Datei"
669
+ # -62 INCREMENTAL_INIT_FROM_DIFFERENT_FILE "Ein inkrementelles Initialisieren mit einer anderen LUT-Datei ist nicht möglich"
670
+ # -40 LUT2_NOT_INITIALIZED "die Programmbibliothek wurde noch nicht initialisiert"
671
+ # -38 LUT2_PARTIAL_OK "es wurden nicht alle Blocks geladen"
672
+ # -36 LUT2_Z_MEM_ERROR "Memory error in den ZLIB-Routinen"
673
+ # -35 LUT2_Z_DATA_ERROR "Datenfehler im komprimierten LUT-Block"
674
+ # -34 LUT2_BLOCK_NOT_IN_FILE "Der Block ist nicht in der LUT-Datei enthalten"
675
+ # -33 LUT2_DECOMPRESS_ERROR "Fehler beim Dekomprimieren eines LUT-Blocks"
676
+ # -31 LUT2_FILE_CORRUPTED "Die LUT-Datei ist korrumpiert"
677
+ # -29 UNDEFINED_SUBMETHOD "Die (Unter)Methode ist nicht definiert"
678
+ # -20 LUT_CRC_ERROR "Prüfsummenfehler in der blz.lut Datei"
679
+ # -12 INVALID_KTO_LENGTH "ein Konto muß zwischen 1 und 10 Stellen haben"
680
+ # -10 FILE_READ_ERROR "kann Datei nicht lesen"
681
+ # -9 ERROR_MALLOC "kann keinen Speicher allokieren"
682
+ # -7 INVALID_LUT_FILE "die blz.lut Datei ist inkosistent/ungültig"
683
+ # -6 NO_LUT_FILE "die blz.lut Datei wurde nicht gefunden"
684
+ # -5 INVALID_BLZ_LENGTH "die Bankleitzahl ist nicht achtstellig"
685
+ # -4 INVALID_BLZ "die Bankleitzahl ist ungültig"
686
+ # -3 INVALID_KTO "das Konto ist ungültig"
687
+ # -2 NOT_IMPLEMENTED "die Methode wurde noch nicht implementiert"
688
+ # -1 NOT_DEFINED "die Methode ist nicht definiert"
689
+ # 0 FALSE "falsch"
690
+ # 1 OK "ok"
691
+ # 1 OK "ok"
692
+ # 2 OK_NO_CHK "ok, ohne Prüfung"
693
+ # 6 LUT1_SET_LOADED "Die Datei ist im alten LUT-Format (1.0/1.1)"
694
+ # 18 OK_KTO_REPLACED "ok, die Kontonummer wurde allerdings ersetzt"
695
+ # 21 OK_IBAN_WITHOUT_KC_TEST "ok, die Bankverbindung ist (ohne Test) als richtig anzusehen"
696
+ # 25 OK_UNTERKONTO_ATTACHED "ok, es wurde ein (weggelassenes) Unterkonto angefügt"
697
+
698
+ def konto_check_regel(blz,kto)
699
+ KontoCheckRaw::konto_check_regel(blz,kto)
700
+ end
701
+
702
+ #===KontoCheck::konto_check_regel?( blz,kto)
703
+ #=====KontoCheck::konto_check_regel( blz,kto)
704
+ #=====KontoCheckRaw::konto_check_regel( blz,kto)
705
+ #=====KontoCheckRaw::konto_check_regel_dbg( blz,kto)
706
+ #Diese Funktion testet, ob eine gegebene Prüfziffer/Kontonummer-Kombination
707
+ #gültig ist (mit IBAN-Regeln). Der Rückgabewert dieser Funktion ist nur true
708
+ #oder false (convenience function für KontoCheck::konto_check_regel()).
709
+
710
+ def konto_check_regel?(*args)
711
+ KontoCheckRaw::konto_check_regel(*args)>0?true:false
712
+ end
713
+
714
+ #==== KontoCheck::bank_valid( blz [,filiale])
715
+ #======KontoCheckRaw::bank_valid( blz [,filiale])
716
+ #======KontoCheck::bank_valid?( blz [,filiale])
620
717
  #Diese Funktion testet, ob eine gegebene BLZ gültig ist. Der Rückgabewert ist ein
621
718
  #Statuscode mit den unten angegebenen Werten. Falls das Argument filiale auch
622
719
  #angegeben ist, wird zusätzlich noch getestet, ob eine Filiale mit dem gegebenen
@@ -634,9 +731,9 @@ module KontoCheck
634
731
  KontoCheckRaw::bank_valid(*args)
635
732
  end
636
733
 
637
- #====<tt>KontoCheck::bank_valid?(blz [,filiale])</tt>
638
- #======<tt>KontoCheckRaw::bank_valid(blz [,filiale])</tt>
639
- #======<tt>KontoCheck::bank_valid(blz [,filiale])</tt>
734
+ #====KontoCheck::bank_valid?( blz [,filiale])
735
+ #======KontoCheckRaw::bank_valid( blz [,filiale])
736
+ #======KontoCheck::bank_valid( blz [,filiale])
640
737
  #Dies ist eine convenience function zu KontoCheck::bank_valid(). Es wird getestet, ob
641
738
  #die gegebene BLZ (und evl. noch der Filialindex) gültig ist. Der Rückgabewert ist
642
739
  #nur true oder false.
@@ -645,8 +742,8 @@ module KontoCheck
645
742
  KontoCheckRaw::bank_valid(*args)>0?true:false
646
743
  end
647
744
 
648
- #===<tt>KontoCheck::bank_filialen(blz)</tt>
649
- #=====<tt>KontoCheckRaw::bank_filialen(blz)</tt>
745
+ #===KontoCheck::bank_filialen( blz)
746
+ #=====KontoCheckRaw::bank_filialen(blz)
650
747
  #
651
748
  #Diese Funktion liefert die Anzahl Filialen einer Bank (inklusive Hauptstelle).
652
749
  #Die LUT-Datei muß dazu natürlich mit den Filialdaten generiert sein, sonst
@@ -656,8 +753,8 @@ module KontoCheck
656
753
  KontoCheckRaw::bank_filialen(*args).first
657
754
  end
658
755
 
659
- #===<tt>KontoCheck::bank_name(blz[,filiale])</tt>
660
- #=====<tt>KontoCheckRaw::bank_name(blz[,filiale])</tt>
756
+ #===KontoCheck::bank_name( blz [,filiale])
757
+ #=====KontoCheckRaw::bank_name(blz [,filiale])
661
758
  #
662
759
  #Diese Funktion liefert den Namen einer Bank, oder nil im Fehlerfall.
663
760
 
@@ -665,8 +762,8 @@ module KontoCheck
665
762
  KontoCheckRaw::bank_name(*args).first
666
763
  end
667
764
 
668
- #===<tt>KontoCheck::bank_name_kurz(blz [,filiale])</tt>
669
- #=====<tt>KontoCheckRaw::bank_name_kurz(blz [,filiale])</tt>
765
+ #===KontoCheck::bank_name_kurz( blz [,filiale])
766
+ #=====KontoCheckRaw::bank_name_kurz(blz [,filiale])
670
767
  #
671
768
  #Diese Funktion liefert den Kurznamen einer Bank, oder nil im Fehlerfall.
672
769
 
@@ -674,8 +771,8 @@ module KontoCheck
674
771
  KontoCheckRaw::bank_name_kurz(*args).first
675
772
  end
676
773
 
677
- #===<tt>KontoCheck::bank_ort(blz [,filiale])</tt>
678
- #=====<tt>KontoCheckRaw::bank_ort(blz [,filiale])</tt>
774
+ #===KontoCheck::bank_ort( blz [,filiale])
775
+ #=====KontoCheckRaw::bank_ort(blz [,filiale])
679
776
  #
680
777
  #Diese Funktion liefert den Ort einer Bank. Falls der Parameter filiale nicht
681
778
  #angegeben ist, wird der Sitz der Hauptstelle ausgegeben. Im Fehlerfall wird
@@ -685,8 +782,8 @@ module KontoCheck
685
782
  KontoCheckRaw::bank_ort(*args).first
686
783
  end
687
784
 
688
- #===<tt>KontoCheck::bank_plz(blz [,filiale])</tt>
689
- #=====<tt>KontoCheckRaw::bank_plz(blz [,filiale])</tt>
785
+ #===KontoCheck::bank_plz( blz [,filiale])
786
+ #=====KontoCheckRaw::bank_plz(blz [,filiale])
690
787
  #
691
788
  #Diese Funktion liefert die Postleitzahl einer Bank. Falls der Parameter
692
789
  #filiale nicht angegeben ist, wird die PLZ der Hauptstelle ausgegeben. Im
@@ -696,8 +793,8 @@ module KontoCheck
696
793
  KontoCheckRaw::bank_plz(*args).first
697
794
  end
698
795
 
699
- #===<tt>KontoCheck::bank_pz(blz)</tt>
700
- #=====<tt>KontoCheckRaw::bank_pz(blz)</tt>
796
+ #===KontoCheck::bank_pz( blz)
797
+ #=====KontoCheckRaw::bank_pz(blz)
701
798
  #
702
799
  #Diese Funktion liefert die Prüfziffer einer Bank. Die Funktion unterstützt
703
800
  #keine Filialen; zu jeder BLZ kann es in der LUT-Datei nur eine
@@ -707,8 +804,8 @@ module KontoCheck
707
804
  KontoCheckRaw::bank_pz(blz).first
708
805
  end
709
806
 
710
- #===<tt>KontoCheck::bank_bic(blz [,filiale])</tt>
711
- #=====<tt>KontoCheckRaw::bank_bic(blz [,filiale])</tt>
807
+ #===KontoCheck::bank_bic( blz [,filiale])
808
+ #=====KontoCheckRaw::bank_bic(blz [,filiale])
712
809
  #
713
810
  #Diese Funktion liefert den BIC (Bank Identifier Code) einer Bank. Im
714
811
  #Fehlerfall wird nil zurückgegeben.
@@ -717,8 +814,8 @@ module KontoCheck
717
814
  KontoCheckRaw::bank_bic(*args).first
718
815
  end
719
816
 
720
- #===<tt>KontoCheck::bank_aenderung(blz [,filiale])</tt>
721
- #=====<tt>KontoCheckRaw::bank_aenderung(blz [,filiale])</tt>
817
+ #===KontoCheck::bank_aenderung( blz [,filiale])
818
+ #=====KontoCheckRaw::bank_aenderung(blz [,filiale])
722
819
  #
723
820
  #Diese Funktion liefert das 'Änderung' Flag einer Bank (als string). Mögliche
724
821
  #Werte sind: A (Addition), M (Modified), U (Unchanged), D (Deletion).
@@ -727,8 +824,8 @@ module KontoCheck
727
824
  KontoCheckRaw::bank_aenderung(*args).first
728
825
  end
729
826
 
730
- #===<tt>KontoCheck::bank_loeschung(blz [,filiale])</tt>
731
- #=====<tt>KontoCheckRaw::bank_loeschung(blz [,filiale])</tt>
827
+ #===KontoCheck::bank_loeschung( blz [,filiale])
828
+ #=====KontoCheckRaw::bank_loeschung(blz [,filiale])
732
829
  #
733
830
  #Diese Funktion liefert das Lösch-Flag für eine Bank zurück (als Integer;
734
831
  #mögliche Werte sind 0 und 1); im Fehlerfall wird nil zurückgegeben.
@@ -737,8 +834,8 @@ module KontoCheck
737
834
  KontoCheckRaw::bank_loeschung(*args).first
738
835
  end
739
836
 
740
- #===<tt>KontoCheck::bank_nachfolge_blz(blz [,filiale])</tt>
741
- #=====<tt>KontoCheckRaw::bank_nachfolge_blz(blz [,filiale])</tt>
837
+ #===KontoCheck::bank_nachfolge_blz( blz [,filiale])
838
+ #=====KontoCheckRaw::bank_nachfolge_blz(blz [,filiale])
742
839
  #Diese Funktion liefert die Nachfolge-BLZ für eine Bank, die gelöscht werden
743
840
  #soll (bei der das 'Löschung' Flag 1 ist).
744
841
 
@@ -746,8 +843,8 @@ module KontoCheck
746
843
  KontoCheckRaw::bank_nachfolge_blz(*args).first
747
844
  end
748
845
 
749
- #===<tt>KontoCheck::bank_pan(blz [,filiale])</tt>
750
- #=====<tt>KontoCheckRaw::bank_pan(blz [,filiale])</tt>
846
+ #===KontoCheck::bank_pan( blz [,filiale])
847
+ #=====KontoCheckRaw::bank_pan(blz [,filiale])
751
848
  #
752
849
  #Diese Funktion liefert den PAN (Primary Account Number) einer Bank.
753
850
 
@@ -755,8 +852,8 @@ module KontoCheck
755
852
  KontoCheckRaw::bank_pan(*args).first
756
853
  end
757
854
 
758
- #===<tt>KontoCheck::bank_nr(blz [,filiale])</tt>
759
- #=====<tt>KontoCheckRaw::bank_nr(blz [,filiale])</tt>
855
+ #===KontoCheck::bank_nr( blz [,filiale])
856
+ #=====KontoCheckRaw::bank_nr(blz [,filiale])
760
857
  #
761
858
  #Diese Funktion liefert die laufende Nummer einer Bank (internes Feld der BLZ-Datei). Der Wert
762
859
  #wird wahrscheinlich nicht oft benötigt, ist aber der Vollständigkeit halber enthalten.
@@ -765,8 +862,8 @@ module KontoCheck
765
862
  KontoCheckRaw::bank_nr(*args).first
766
863
  end
767
864
 
768
- #===<tt>KontoCheck::bank_alles(blz [,filiale])</tt>
769
- #=====<tt>KontoCheckRaw::bank_alles(blz [,filiale])</tt>
865
+ #===KontoCheck::bank_alles( blz [,filiale])
866
+ #=====KontoCheckRaw::bank_alles(blz [,filiale])
770
867
  #
771
868
  #Dies ist eine Mammutfunktion, die alle vorhandenen Informationen über eine
772
869
  #Bank zurückliefert. Das Ergebnis ist ein Array mit den folgenden Komponenten:
@@ -800,8 +897,8 @@ module KontoCheck
800
897
  KontoCheckRaw::bank_alles(*args)
801
898
  end
802
899
 
803
- #===<tt>KontoCheck::iban2bic(iban)</tt>
804
- #=====<tt>KontoCheckRaw::iban2bic(iban)</tt>
900
+ #===KontoCheck::iban2bic( iban)
901
+ #=====KontoCheckRaw::iban2bic(iban)
805
902
  #
806
903
  #Diese Funktion bestimmt zu einer (deutschen!) IBAN den zugehörigen BIC (Bank
807
904
  #Identifier Code). Der BIC wird für eine EU-Standard-Überweisung im
@@ -813,8 +910,38 @@ module KontoCheck
813
910
  KontoCheckRaw::iban2bic(*args).first
814
911
  end
815
912
 
816
- #===<tt>KontoCheck::iban_check(iban)</tt>
817
- #=====<tt>KontoCheckRaw::iban_check(iban)</tt>
913
+ #===KontoCheck::ci_check( ci)
914
+ #=====KontoCheckRaw::ci_check( ci)
915
+ #
916
+ #Diese Funktion testet eine Gläubiger-Identifikationsnummer (Credit Identifier, ci)
917
+ #
918
+ #Mögliche Rückgabewerte sind:
919
+ #
920
+ # 0 (FALSE) "falsch"
921
+ # 1 (OK) "ok"
922
+
923
+ def ci_check(*args)
924
+ KontoCheckRaw::ci_check(*args)
925
+ end
926
+
927
+ #===KontoCheck::bic_check( bic)
928
+ #=====KontoCheckRaw::bic_check( bic)
929
+ #
930
+ #Diese Funktion testet einen BIC (nur für deutsche Bankverbindungen).
931
+ #
932
+ #Mögliche Rückgabewerte sind:
933
+ #
934
+ # -145 (BIC_ONLY_GERMAN) "Es werden nur deutsche BICs unterstützt"
935
+ # -144 (INVALID_BIC_LENGTH) "Die Länge des BIC muß genau 8 oder 11 Zeichen sein"
936
+ # 0 (FALSE) "falsch"
937
+ # 1 (OK) "ok"
938
+
939
+ def bic_check(*args)
940
+ KontoCheckRaw::bic_check(*args).first
941
+ end
942
+
943
+ #===KontoCheck::iban_check( iban)
944
+ #=====KontoCheckRaw::iban_check( iban)
818
945
  #
819
946
  #Diese Funktion testet einen IBAN. Dabei wird sowohl die Prüfziffer des IBAN
820
947
  #getestet als auch (bei deutschen Konten) die Prüfziffer der Bankverbindung
@@ -833,56 +960,40 @@ module KontoCheck
833
960
  KontoCheckRaw::iban_check(*args).first
834
961
  end
835
962
 
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:
963
+ #===KontoCheck::iban_gen( kto,blz)
964
+ #=====KontoCheckRaw::iban_gen( kto,blz)
965
+ #Diese Funktion generiert aus (deutscher) BLZ und Konto einen IBAN.
853
966
  #
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
967
+ #Nachdem im Mai 2013 die IBAN-Regeln zur Berechnung von IBAN und BIC aus
968
+ #Kontonummer und BLZ veröffentlicht wurden, gibt es endlich ein verbindliches
969
+ #Verfahren zur Bestimmung der IBAN. Die definierten IBAN-Regeln wurden in der
970
+ #C-Datei eingearbeitet und werden automatisch ausgewertet, falls der Block mit
971
+ #den IBAN-Regeln in der LUT-Datei enthalten ist. Andere LUT-Dateien sollten
972
+ #für die IBAN-Berechnung möglichst nicht verwendet werden, da die Anzahl der
973
+ #BLZs mit Sonderregelungen doch sehr groß ist.
868
974
  #
869
975
  #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
976
+ #die "schwarze Liste" (ausgeschlossene BLZs) zu deaktivieren. Falls die IBAN
977
+ #ohne Test der Blacklist berechnet werden soll, ist vor die BLZ ein @ zu
872
978
  #setzen; falls auch bei falscher Bankverbindung ein IBAN berechnet werden
873
979
  #soll, ist vor die BLZ ein + zu setzen. Um beide Prüfungen zu deaktiviern,
874
980
  #kann @+ (oder +@) vor die BLZ gesetzt werden. Die so erhaltenen IBANs sind
875
- #dann i.A. allerdings wohl nicht gültig.
981
+ #dann u.U. allerdings wohl nicht gültig.
982
+ #
983
+ #Rückgabewert ist der generierte IBAN oder nil, falls ein Fehler aufgetreten
984
+ #ist. Die genauere Fehlerursache läßt sich mit der Funktion
985
+ #KontoCheckRaw::iban_gen() feststellen.
876
986
  #
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.
987
+ #Bei vielen Banken wird die BLZ und damit der BIC ebenfalls ersetzt. Der
988
+ #gültige BIC sowie viele andere Werte interessante Werte lassen sich durch die
989
+ #Funktion KontoCheckRaw::iban_gen() ermitteln.
879
990
 
880
991
  def iban_gen(*args)
881
992
  KontoCheckRaw::iban_gen(*args).first
882
993
  end
883
994
 
884
- #===<tt>KontoCheck::ipi_gen(zweck)</tt>
885
- #=====<tt>KontoCheckRaw::ipi_gen(zweck)</tt>
995
+ #===KontoCheck::ipi_gen( zweck)
996
+ #=====KontoCheckRaw::ipi_gen( zweck)
886
997
  #
887
998
  #Diese Funktion generiert einen "Strukturierten Verwendungszweck" für SEPA-Überweisungen.
888
999
  #Der Rückgabewert ist der Strukturierte Verwendungszweck als String oder nil, falls ein Fehler
@@ -896,8 +1007,8 @@ module KontoCheck
896
1007
  KontoCheckRaw::ipi_gen(zweck).first
897
1008
  end
898
1009
 
899
- #===<tt>KontoCheck::ipi_check(zweck)</tt>
900
- #=====<tt>KontoCheckRaw::ipi_check(zweck)</tt>
1010
+ #===KontoCheck::ipi_check( zweck)
1011
+ #=====KontoCheckRaw::ipi_check( zweck)
901
1012
  #
902
1013
  #Die Funktion testet, ob ein Strukturierter Verwendungszweck gültig ist (Anzahl Zeichen, Prüfziffer). Der
903
1014
  #Rückgabewert ist true oder false.
@@ -906,32 +1017,35 @@ module KontoCheck
906
1017
  KontoCheckRaw::ipi_check(zweck)>0?true:false
907
1018
  end
908
1019
 
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>
1020
+ #===KontoCheck::suche()
1021
+ #=====KontoCheck::search()
1022
+ #=====KontoCheck::SEARCH_KEYS
1023
+ #=====KontoCheck::SEARCH_KEY_MAPPINGS
1024
+ #=====KontoCheckRaw::bank_suche_bic(search_bic)
1025
+ #=====KontoCheckRaw::bank_suche_blz(blz1 [,blz2])
1026
+ #=====KontoCheckRaw::bank_suche_namen(name)
1027
+ #=====KontoCheckRaw::bank_suche_namen_kurz(short_name)
1028
+ #=====KontoCheckRaw::bank_suche_plz(plz1 [,plz2])
1029
+ #=====KontoCheckRaw::bank_suche_pz(pz1 [,pz2])
1030
+ #=====KontoCheckRaw::bank_suche_ort(suchort)
1031
+ #=====KontoCheckRaw::bank_suche_regel(regel1 [,regel2])
1032
+ #=====KontoCheckRaw::bank_suche_volltext(suchwort)
1033
+ #=====KontoCheckRaw::bank_suche_multiple(suchworte)
920
1034
  #
921
1035
  #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.
1036
+ #Mit dem Schlüssel multiple ist auch eine Suche nach mehreren Kriterien
1037
+ #möglich; näheres findet sich in der Beschreibung von
1038
+ #KontoCheckRaw::bank_suche_multiple().
925
1039
  #
926
1040
  #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
1041
+ #Prüfziffer, Ort, Name oder Kurzname oder Volltext. Bei den alphanumerischen
1042
+ #Feldern (BIC, Ort, Name, Kurzname) ist der Suchschlüssel der Wortanfang des zu
1043
+ #suchenden Feldes (ohne Unterscheidung zwischen Groß- und Kleinschreibung); bei
1044
+ #den numerischen Feldern (BLZ, PLZ, Prüfziffer) ist die Suche nach einem
1045
+ #bestimmten Wert oder nach einem Wertebereich möglich; dieser wird dann
1046
+ #angegeben als Array mit zwei Elementen. Der Rückgabewert ist jeweils ein Array
1047
+ #mit den Bankleitzahlen, oder nil falls die Suche fehlschlug. Die Ursache für
1048
+ #eine fehlgeschlagene Suche läßt sich nur mit den Funktionen der KontoCheckRaw
935
1049
  #Bibliothek näher lokalisieren.
936
1050
  #
937
1051
  #Die Funktion KontoCheck::search() ist ein Alias für die Funktion
@@ -941,6 +1055,14 @@ module KontoCheck
941
1055
  #definiert; in der Variablen KontoCheck::SEARCH_KEY_MAPPINGS finden sich noch
942
1056
  #einige Aliasdefinitionen zu den Suchschlüsseln.
943
1057
  #
1058
+ #Für das Suchkommando von KontoCheckRaw::bank_suche_multiple() gibt es die Alias-
1059
+ #Varianten cmd, such_cmd und search_cmd.
1060
+ #
1061
+ #Bei allen Suchfeldern wird noch die Option :uniq=>[01] unterstützt. Bei uniq==0
1062
+ #werden alle gefundenen Zweigstellen ausgegeben, bei uniq==1 nur jeweils die
1063
+ #erste gefundene Zweigstelle. Das Schlüsselwort ist in allen Suchfunktionen
1064
+ #vorhanden; in der C-Bibliothek ist es nur für lut_suche_multiple() implementiert.
1065
+ #
944
1066
  #Hier einige Beispiele möglicher Suchaufrufe:
945
1067
  #
946
1068
  # s=KontoCheck::suche( :blz => [13051172,13070172] ) BLZ-Bereich
@@ -950,25 +1072,193 @@ module KontoCheck
950
1072
  # s=KontoCheck::suche( :pz => 90 ) Prüfziffer numerisch
951
1073
  # s=KontoCheck::suche( :pz => '90' ) Prüfziffer als String
952
1074
  # s=KontoCheck::suche( :pz => ['95',98] ) Prüfzifferbereich gemischt String/numerisch auch möglich
1075
+ # s=KontoCheck::suche( :regel => [20,25] ) IBAN-Regeln
953
1076
  # s=KontoCheck::suche( :name => 'postbank' )
954
1077
  # s=KontoCheck::suche( :ort => 'lingenfeld' )
1078
+ # r=KontoCheck::suche( :volltext=>'südwest',:uniq=>1) Volltextsuche mit uniq
1079
+ # s=KontoCheck::suche( :multiple=>'deutsche bank mannheim y:sparda x:südwest',:uniq=>1, :cmd=>'ac+xy')
1080
+ # Suche nach mehreren Kriterien: Deutsche Bank in Mannheim oder Sparda Südwest
1081
+ # r=KontoCheck::suche( :multiple=>'deutsche bank mannheim sparda mainz', :cmd=>'abc+de')
1082
+ # nochmal dasselbe, nur Sparda in Mainz
1083
+
955
1084
 
956
1085
  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)
1086
+ search_cmd=value=key=""
1087
+ sort=uniq=1
1088
+ options.each{ |k,v|
1089
+ uniq=v if k.to_s=="uniq"
1090
+ sort=v if k.to_s=="sort"
1091
+ search_cmd=v if k.to_s=="such_cmd" or k.to_s=="search_cmd" or k.to_s=="cmd"
1092
+ if SEARCH_KEYS.include?(k)
1093
+ key=k
1094
+ value=options[k]
1095
+ end
1096
+ if SEARCH_KEY_MAPPINGS.keys.include?(k)
1097
+ key=SEARCH_KEY_MAPPINGS[k]
1098
+ value=options[k]
1099
+ end
1100
+ }
1101
+ raise 'no valid search key found' if key.length==0
1102
+ uniq=2 if uniq>0 # sortieren und uniq
1103
+ uniq=1 if sort>0 && uniq==0 # nur sortieren
1104
+ raw_results = KontoCheckRaw::send("bank_suche_#{key}",value,search_cmd,uniq)
962
1105
  raw_results[1]
963
1106
  end
964
1107
  alias_method :search, :suche
965
1108
 
966
- #===<tt>KontoCheck::version()</tt>
967
- #=====<tt>KontoCheckRaw::version()</tt>
968
- #Diese Funktion gibt den Versions-String der C-Bibliothek zurück.
1109
+ #===KontoCheck::bank_suche_bic( search_bic [,sort_uniq [,sort]])
1110
+ #=====KontoCheckRaw::bank_suche_bic( search_bic [,sort_uniq [,sort]])
1111
+ #=====KontoCheck::suche()
1112
+ #
1113
+ #Diese Funktion sucht alle Banken, deren BIC mit dem angegebenen Wert <search_bic> beginnen.
1114
+ #Die Rückgabe ist ein Array mit den Bankleitzahlen, die auf das Suchmuster passen.
1115
+
1116
+ def bank_suche_bic(*args)
1117
+ KontoCheckRaw::bank_suche_bic(*args)[1]
1118
+ end
1119
+
1120
+
1121
+ #===KontoCheck::bank_suche_namen( name [,sort_uniq [,sort]])
1122
+ #===KontoCheckRaw::bank_suche_namen( name [,sort_uniq [,sort]])
1123
+ #=====KontoCheck::suche()
1124
+ #
1125
+ #Diese Funktion sucht alle Banken, deren Namen mit dem angegebenen Wert <name> beginnen.
1126
+ #Die Rückgabe ist ein Array mit den Bankleitzahlen, die auf das Suchmuster passen.
1127
+
1128
+ def bank_suche_namen(*args)
1129
+ KontoCheckRaw::bank_suche_namen(*args)[1]
1130
+ end
1131
+
1132
+
1133
+ #===KontoCheck::bank_suche_namen_kurz( name [,sort_uniq [,sort]])
1134
+ #===KontoCheckRaw::bank_suche_namen_kurz( name [,sort_uniq [,sort]])
1135
+ #=====KontoCheck::suche()
1136
+ #
1137
+ #Diese Funktion sucht alle Banken, deren Kurznamen mit dem angegebenen Wert <name> beginnen.
1138
+ #Die Rückgabe ist ein Array mit den Bankleitzahlen, die auf das Suchmuster passen.
1139
+
1140
+ def bank_suche_namen_kurz(*args)
1141
+ KontoCheckRaw::bank_suche_namen_kurz(*args)[1]
1142
+ end
1143
+
1144
+
1145
+ #===KontoCheck::bank_suche_ort( ort [,sort_uniq [,sort]])
1146
+ #===KontoCheckRaw::bank_suche_ort( ort [,sort_uniq [,sort]])
1147
+ #=====KontoCheck::suche()
1148
+ #
1149
+ #Diese Funktion sucht alle Banken, deren Sitz mit dem angegebenen Wert <ort> beginnen.
1150
+ #Die Rückgabe ist ein Array mit den Bankleitzahlen, die auf das Suchmuster passen.
1151
+
1152
+ def bank_suche_ort(*args)
1153
+ KontoCheckRaw::bank_suche_ort(*args)[1]
1154
+ end
1155
+
1156
+
1157
+ #===KontoCheck::bank_suche_blz( blz1 [,blz2 [,sort_uniq [,sort]]])
1158
+ #=====KontoCheckRaw::bank_suche_blz( blz1 [,blz2 [,sort_uniq [,sort]]])
1159
+ #=====KontoCheck::suche()
1160
+ #
1161
+ #Diese Funktion sucht alle Banken, deren BLZ gleich <blz1> ist oder (bei
1162
+ #Angabe von blz2) die im Bereich zwischen <blz1> und <blz2> liegen. Die
1163
+ #Rückgabe ist ein Array mit den Bankleitzahlen, die auf das Suchmuster passen.
1164
+
1165
+ def bank_suche_blz(*args)
1166
+ KontoCheckRaw::bank_suche_blz(*args)[1]
1167
+ end
1168
+
1169
+
1170
+ #===KontoCheck::bank_suche_plz( plz1 [,plz2 [,sort_uniq [,sort]]])
1171
+ #=====KontoCheckRaw::bank_suche_plz( plz1 [,plz2 [,sort_uniq [,sort]]])
1172
+ #=====KontoCheck::suche()
1173
+ #
1174
+ #Diese Funktion sucht alle Banken, deren PLZ gleich <plz1> ist oder (bei
1175
+ #Angabe von plz2) die im Bereich zwischen <plz1> und <plz2> liegen. Die
1176
+ #Rückgabe ist ein Array mit den Bankleitzahlen, die auf das Suchmuster passen.
1177
+
1178
+ def bank_suche_plz(*args)
1179
+ KontoCheckRaw::bank_suche_plz(*args)[1]
1180
+ end
1181
+
1182
+
1183
+ #===KontoCheck::bank_suche_pz( pz1 [,pz2 [,sort_uniq [,sort]]])
1184
+ #=====KontoCheckRaw::bank_suche_pz( pz1 [,pz2 [,sort_uniq [,sort]]])
1185
+ #=====KontoCheck::suche()
1186
+ #
1187
+ #Diese Funktion sucht alle Banken, deren Prüfziffer gleich <pz1> ist oder (bei
1188
+ #Angabe von pz2) die im Bereich zwischen <pz1> und <pz2> liegen. Die Rückgabe
1189
+ #ist ein Array mit den Bankleitzahlen, die auf das Suchmuster passen.
1190
+
1191
+ def bank_suche_pz(*args)
1192
+ KontoCheckRaw::bank_suche_pl(*args)[1]
1193
+ end
1194
+
1195
+
1196
+ #===KontoCheck::bank_suche_regel( regel1 [,regel2 [,sort_uniq [,sort]]])
1197
+ #=====KontoCheckRaw::bank_suche_regel( regel1 [,regel2 [,sort_uniq [,sort]]])
1198
+ #=====KontoCheck::suche()
1199
+ #
1200
+ #Diese Funktion sucht alle Banken, deren IBAN-Regel gleich <regel1> ist oder (bei
1201
+ #Angabe von regel2) die im Bereich zwischen <regel1> und <regel2> liegen. Die Rückgabe
1202
+ #ist ein Array mit den Bankleitzahlen, die auf das Suchmuster passen.
1203
+
1204
+ def bank_suche_regel(*args)
1205
+ KontoCheckRaw::bank_suche_regel(*args)[1]
1206
+ end
1207
+
1208
+
1209
+ #===KontoCheck::bank_suche_volltext( suchwort [,sort_uniq [,sort]])
1210
+ #=====KontoCheckRaw::bank_suche_volltext( suchwort [,sort_uniq [,sort]])
1211
+ #=====KontoCheck::suche()
1212
+ #
1213
+ #Diese Funktion sucht alle Banken, bei denen in Name, Kurzname oder Ort das
1214
+ #angegebenen Wort <suchwort> vorkommt. Dabei wird immer nur ein einziges Wort
1215
+ #gesucht; mehrere Worte führen zu einer Fehlermeldung in der KontoCheckRaw-
1216
+ #Bibliothek. Eine solche Suche läßt sich durch die Funktion
1217
+ #KontoCheck::bank_suche_multiple( ) bewerkstelligen. Die Rückgabe ist ein Array
1218
+ #mit den Bankleitzahlen, die auf das Suchmuster passen.
1219
+
1220
+ def bank_suche_volltext(*args)
1221
+ KontoCheckRaw::bank_suche_volltext(*args)[1]
1222
+ end
1223
+
1224
+
1225
+ #===KontoCheck::bank_suche_multiple( suchtext [,such_cmd] [,uniq])
1226
+ #===KontoCheckRaw::bank_suche_multiple( suchtext [,such_cmd] [,uniq])
1227
+ #=====KontoCheck::suche()
1228
+ #
1229
+ #Diese Funktion sucht alle Banken, die mehreren Kriterien entsprechen. Dabei
1230
+ #können bis zu 26 Teilsuchen definiert werden, die beliebig miteinander
1231
+ #verknüpft werden können (additiv, subtraktiv und multiplikativ). Eine nähere
1232
+ #Beschreibung der Funktion und der Parameter findet sich unter
1233
+ #KontoCheckRaw::bank_suche_multiple( ). Die Rückgabe ist ein Array
1234
+ #mit den Bankleitzahlen, die auf das Suchmuster passen.
1235
+
1236
+ #
1237
+ #====Aufruf:
1238
+ #result=bank_suche_multiple(such_string [,such_cmd] [,uniq])
1239
+
1240
+ def bank_suche_multiple(*args)
1241
+ KontoCheckRaw::bank_suche_multiple(*args)[1]
1242
+ end
1243
+
1244
+
1245
+
1246
+ #===KontoCheck::version( [mode] )
1247
+ #=====KontoCheckRaw::version( [mode] )
1248
+ #Diese Funktion gibt die Versions-Infos der C-Bibliothek zurück.
1249
+ #
1250
+ #====Mögliche Werte für mode:
1251
+ #* 0 bzw. ohne Parameter: Versionsstring der C-Bibliothek
1252
+ #* 1: Versionsnummer
1253
+ #* 2: Versionsdatum
1254
+ #* 3: Compilerdatum und -zeit
1255
+ #* 4: Datum der Prüfziffermethoden
1256
+ #* 5: Datum der IBAN-Regeln
1257
+ #* 6: Klartext-Datum der Bibliotheksversion
1258
+ #* 7: Versionstyp (devel, beta, final)
969
1259
 
970
- def version()
971
- KontoCheckRaw::version()
1260
+ def version(*args)
1261
+ KontoCheckRaw::version(*args)
972
1262
  end
973
1263
 
974
1264
  end