konto_check 0.2.1 → 5.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/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