kontocheck 0.4.2 → 0.4.4

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/Rakefile CHANGED
@@ -27,7 +27,7 @@ begin
27
27
  gem.description = %Q{Check whether a certain bic/account-no-combination can possibly be valid. It uses the C library konto_check (see http://sourceforge.net/projects/kontocheck/) by Michael Plugge.}
28
28
  gem.email = "jan@general-scripting.com"
29
29
  gem.homepage = "http://github.com/jeanmartin/konto_check"
30
- gem.authors = ["Provideal Systems GmbH","Michael Plugge","Jan Schwenzien"]
30
+ gem.authors = ["Michael Plugge","Jan Schwenzien","Provideal Systems GmbH"]
31
31
  gem.add_development_dependency "thoughtbot-shoulda", ">= 0"
32
32
  #gem.files.exclude "ext"
33
33
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
data/VERSION.yml CHANGED
@@ -1,4 +1,5 @@
1
- major: 0
2
- minor: 4
3
- patch: 2
4
-
1
+ ---
2
+ :major: 0
3
+ :minor: 4
4
+ :patch: 4
5
+ :build:
@@ -48,9 +48,9 @@
48
48
 
49
49
  /* Definitionen und Includes */
50
50
  #ifndef VERSION
51
- #define VERSION "4.2"
51
+ #define VERSION "4.4"
52
52
  #endif
53
- #define VERSION_DATE "2012-10-24"
53
+ #define VERSION_DATE "2013-02-02"
54
54
 
55
55
  #ifndef INCLUDE_KONTO_CHECK_DE
56
56
  #define INCLUDE_KONTO_CHECK_DE 1
@@ -14102,7 +14102,7 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
14102
14102
  /* Berechnung nach der Methode C6 +���4 */
14103
14103
  /*
14104
14104
  * ######################################################################
14105
- * # Berechnung nach der Methode C6 (gendert zum 6. Juni 2011) #
14105
+ * # Berechnung nach der Methode C6 (letze nderung 4.3.2013) #
14106
14106
  * ######################################################################
14107
14107
  * # Modulus 10, Gewichtung 1, 2, 1, 2, 1, 2, 1, 2 #
14108
14108
  * # #
@@ -14111,12 +14111,7 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
14111
14111
  * # 10-stellig darzustellen. Die 10. Stelle der Konto-nummer ist die #
14112
14112
  * # Pr�fziffer. #
14113
14113
  * # #
14114
- * # Kontonummern, die an der 1. Stelle von links der 10-stelligen #
14115
- * # Kontonummer einen der Wert 4 oder 8 beinhalten sind falsch. #
14116
- * # #
14117
- * # Kontonummern, die an der 1. Stelle von links der 10-stelligen #
14118
- * # Kontonummer einen der Werte 0, 1, 2, 3, 5, 6, 7 oder 9 beinhalten #
14119
- * # sind wie folgt zu pr�fen: #
14114
+ * # Alle Kontonummern sind wie folgt zu pr�fen: #
14120
14115
  * # #
14121
14116
  * # F�r die Berechnung der Pr�fziffer werden die Stellen 2 bis 9 der #
14122
14117
  * # Kontonummer verwendet. Diese Stellen sind links um eine Zahl #
@@ -14130,9 +14125,11 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
14130
14125
  * # 1 4451981 #
14131
14126
  * # 2 4451992 #
14132
14127
  * # 3 4451993 #
14128
+ * # 4 4344992 #
14133
14129
  * # 5 4344990 #
14134
14130
  * # 6 4344991 #
14135
14131
  * # 7 5499570 #
14132
+ * # 8 4451994 #
14136
14133
  * # 9 5499579 #
14137
14134
  * # #
14138
14135
  * # Die Berechnung und m�gliche Ergebnisse entsprechen der Methode 00. #
@@ -14157,9 +14154,15 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
14157
14154
  case '1': pz=33; break;
14158
14155
  case '2': pz=36; break;
14159
14156
  case '3': pz=38; break; /* neu zum 7.6.2010 */
14160
- case '5': pz=33; break; /* neu zum 6.6.2011 */
14161
- case '6': pz=34; break; /* neu zum 6.6.2011 */
14157
+ #if PZ_METHODEN_2013_03_04
14158
+ case '4': pz=45; break; /* neu zum 4.3.2013 */
14159
+ #endif
14160
+ case '5': pz=41; break; /* neu zum 6.6.2011 */
14161
+ case '6': pz=43; break; /* neu zum 6.6.2011 */
14162
14162
  case '7': pz=31; break;
14163
+ #if PZ_METHODEN_2013_03_04
14164
+ case '8': pz=40; break; /* neu zum 4.3.2013 */
14165
+ #endif
14163
14166
  case '9': pz=40; break;
14164
14167
  default: return INVALID_KTO;
14165
14168
  }
@@ -14539,7 +14542,7 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
14539
14542
  /* Berechnung nach der Methode D1 +���4 */
14540
14543
  /*
14541
14544
  * ######################################################################
14542
- * # Berechnung nach der Methode D1 (gendert zum 5.9.2011) #
14545
+ * # Berechnung nach der Methode D1 (letzte nderung 4.3.2013) #
14543
14546
  * ######################################################################
14544
14547
  * # Modulus 10, Gewichtung 1, 2, 1, 2, 1, 2, 1, 2 #
14545
14548
  * # #
@@ -14549,11 +14552,11 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
14549
14552
  * # Pr�fziffer. #
14550
14553
  * # #
14551
14554
  * # Kontonummern, die an der 1. Stelle von links der 10-stelligen #
14552
- * # Kontonummer einen der Wert 7 oder 8 beinhalten sind falsch. #
14555
+ * # Kontonummer den Wert 8 enthalten sind falsch. #
14553
14556
  * # #
14554
14557
  * # Kontonummern, die an der 1. Stelle von links der 10-stelligen #
14555
- * # Kontonummer einen der Werte 0, 1, 2, 3, 4, 5, 6 oder 9 beinhalten #
14556
- * # sind wie folgt zu pr�fen: #
14558
+ * # Kontonummer einen der Werte 0, 1, 2, 3, 4, 5, 6, 7 oder 9 #
14559
+ * # beinhalten sind wie folgt zu pr�fen: #
14557
14560
  * # #
14558
14561
  * # F�r die Berechnung der Pr�fziffer werden die Stellen 2 bis 9 der #
14559
14562
  * # Kontonummer von links verwendet. Diese Stellen sind links um eine #
@@ -14570,6 +14573,7 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
14570
14573
  * # 4 4363384 #
14571
14574
  * # 5 4363385 #
14572
14575
  * # 6 4363386 #
14576
+ * # 7 4363387 #
14573
14577
  * # 9 4363389 #
14574
14578
  * # #
14575
14579
  * # Die Berechnung und m�gliche Ergebnisse entsprechen der #
@@ -14590,7 +14594,11 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
14590
14594
  retvals->pz_methode=131;
14591
14595
  }
14592
14596
  #endif
14597
+ #if PZ_METHODEN_2013_03_04
14598
+ if(*kto=='8')return INVALID_KTO;
14599
+ #else
14593
14600
  if(*kto=='7' || *kto=='8')return INVALID_KTO;
14601
+ #endif
14594
14602
  pz=31;
14595
14603
 
14596
14604
  #ifdef __ALPHA
@@ -15447,6 +15455,58 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
15447
15455
  if(pz)pz=10-pz;
15448
15456
  CHECK_PZ10;
15449
15457
 
15458
+ /* Berechnungsmethoden E0 bis E9 +���3
15459
+ Berechnung nach der Methode E0 +���4 */
15460
+ /*
15461
+ * ######################################################################
15462
+ * # Berechnung nach der Methode E0 #
15463
+ * ######################################################################
15464
+ * # Modulus 10, Gewichtung 2, 1, 2, 1, 2, 1, 2, 1, 2 #
15465
+ * # Die Stellen der Kontonummer sind von rechts nach links mit den #
15466
+ * # Ziffern 2, 1, 2, 1, 2 usw. zu multiplizieren. Die jeweiligen #
15467
+ * # Produkte werden addiert, nachdem jeweils aus den zweistelligen #
15468
+ * # Produkten die Quersumme gebildet wurde (z. B. Produkt 18 = #
15469
+ * # Quersumme 9) plus den Wert 7. Nach der Addition bleiben au�er #
15470
+ * # der Einerstelle alle anderen Stellen unber�cksichtigt. Die #
15471
+ * # Einerstelle wird von dem Wert 10 subtrahiert. Das Ergebnis ist #
15472
+ * # die Pr�fziffer (10. Stelle der Kontonummer). #
15473
+ * ######################################################################
15474
+ */
15475
+
15476
+ case 140:
15477
+ #if DEBUG>0
15478
+ if(retvals){
15479
+ retvals->methode="E0";
15480
+ retvals->pz_methode=140;
15481
+ }
15482
+ #endif
15483
+
15484
+ /* Das Verfahren entspricht (bis auf die zus�tzliche 7) genau dem
15485
+ * Verfahren 00; der Programmcode ist auch von diesem kopiert.
15486
+ */
15487
+ #ifdef __ALPHA
15488
+ pz = ((kto[0]<'5') ? (kto[0]-'0')*2 : (kto[0]-'0')*2-9)
15489
+ + (kto[1]-'0')
15490
+ + ((kto[2]<'5') ? (kto[2]-'0')*2 : (kto[2]-'0')*2-9)
15491
+ + (kto[3]-'0')
15492
+ + ((kto[4]<'5') ? (kto[4]-'0')*2 : (kto[4]-'0')*2-9)
15493
+ + (kto[5]-'0')
15494
+ + ((kto[6]<'5') ? (kto[6]-'0')*2 : (kto[6]-'0')*2-9)
15495
+ + (kto[7]-'0')
15496
+ + ((kto[8]<'5') ? (kto[8]-'0')*2 : (kto[8]-'0')*2-9);
15497
+ #else
15498
+ pz=(kto[1]-'0')+(kto[3]-'0')+(kto[5]-'0')+(kto[7]-'0');
15499
+ if(kto[0]<'5')pz+=(kto[0]-'0')*2; else pz+=(kto[0]-'0')*2-9;
15500
+ if(kto[2]<'5')pz+=(kto[2]-'0')*2; else pz+=(kto[2]-'0')*2-9;
15501
+ if(kto[4]<'5')pz+=(kto[4]-'0')*2; else pz+=(kto[4]-'0')*2-9;
15502
+ if(kto[6]<'5')pz+=(kto[6]-'0')*2; else pz+=(kto[6]-'0')*2-9;
15503
+ if(kto[8]<'5')pz+=(kto[8]-'0')*2; else pz+=(kto[8]-'0')*2-9;
15504
+ #endif
15505
+ pz+=7;
15506
+ MOD_10_80; /* pz%=10 */
15507
+ if(pz)pz=10-pz;
15508
+ CHECK_PZ10;
15509
+
15450
15510
 
15451
15511
  /* nicht abgedeckte F�lle +���3 */
15452
15512
  /*
@@ -19539,7 +19599,7 @@ static int cmp_suche_sort(const void *ap,const void *bp)
19539
19599
  DLL_EXPORT int lut_suche_sort1(int anzahl,int *blz_base,int *zweigstellen_base,int *idx,int *anzahl_o,int **idx_op,int **cnt_op,int uniq)
19540
19600
  {
19541
19601
  int i,j,last_idx,*idx_a,*cnt_o;
19542
- #line 17560 "konto_check.lxx"
19602
+ #line 17614 "konto_check.lxx"
19543
19603
 
19544
19604
  if(idx_op)*idx_op=NULL;
19545
19605
  if(cnt_op)*cnt_op=NULL;
@@ -20477,7 +20537,7 @@ static int convert_encoding(char **data,UINT4 *len)
20477
20537
  DLL_EXPORT const char *pz2str(int pz,int *ret)
20478
20538
  {
20479
20539
  if(ret){
20480
- if(pz>=140)
20540
+ if(pz>=141)
20481
20541
  *ret=NOT_DEFINED;
20482
20542
  else
20483
20543
  *ret=OK;
@@ -81,6 +81,13 @@
81
81
 
82
82
  #define FLESSA_KORREKTUR 1
83
83
 
84
+ /* Zum Gueltigkeitstermin 4. Maerz 2013 erfolgen Aenderungen der
85
+ * Pruefzifferberechnungsmethoden C6 und D1; mit dem folgenden Makro werden
86
+ * diese Änderungen aktiviert.
87
+ */
88
+ #define PZ_METHODEN_2013_03_04 1
89
+
90
+
84
91
  /* Das Makro DEFAULT_ENCODING legt die Ausgabe-Kodierung für die Funktion
85
92
  * kto_check_retval2txt() und die Blocks Name, Kurzname und Ort aus der
86
93
  * LUT-Datei fest. Die folgenden Werte sind möglich:
@@ -56,7 +56,7 @@
56
56
 
57
57
  #define RUNTIME_ERROR(error) do{ \
58
58
  snprintf(error_msg,511,"KontoCheck::%s, %s",kto_check_retval2txt_short(error),kto_check_retval2txt(error)); \
59
- rb_raise(rb_eRuntimeError,error_msg); \
59
+ rb_raise(rb_eRuntimeError, "%s", error_msg); \
60
60
  }while(0)
61
61
 
62
62
  // Defining a space for information and references about the module to be stored internally
@@ -106,7 +106,7 @@ static void get_params_file(int argc,VALUE* argv,char *arg1s,int *arg1i,int *arg
106
106
  *(arg1s+len)=0;
107
107
  }
108
108
  else
109
- rb_raise(rb_eRuntimeError,"Unable to convert given filename.");
109
+ rb_raise(rb_eRuntimeError, "%s", "Unable to convert given filename.");
110
110
  }
111
111
 
112
112
  /**
@@ -226,9 +226,9 @@ static void get_params(int argc,VALUE* argv,char *arg1s,char *arg2s,int *argi,in
226
226
  break;
227
227
  default:
228
228
  if(!optargs)
229
- rb_raise(rb_eRuntimeError,"Unable to convert given blz.");
229
+ rb_raise(rb_eRuntimeError, "%s", "Unable to convert given blz.");
230
230
  else
231
- rb_raise(rb_eRuntimeError,"Unable to convert given value.");
231
+ rb_raise(rb_eRuntimeError, "%s", "Unable to convert given value.");
232
232
  break;
233
233
  }
234
234
  if(optargs==2)switch(TYPE(arg2_rb)){ /* f�r konto_check(): kto holen */
@@ -243,7 +243,7 @@ static void get_params(int argc,VALUE* argv,char *arg1s,char *arg2s,int *argi,in
243
243
  snprintf(arg2s,16,"%5.0f",NUM2DBL(arg2_rb));
244
244
  break;
245
245
  default:
246
- rb_raise(rb_eRuntimeError,"Unable to convert given kto.");
246
+ rb_raise(rb_eRuntimeError, "%s", "Unable to convert given kto.");
247
247
  break;
248
248
  }
249
249
  }
@@ -281,6 +281,52 @@ static VALUE konto_check(int argc,VALUE* argv,VALUE self)
281
281
  return rb_ary_new3(2,retval>0?Qtrue:Qfalse,INT2FIX(retval));
282
282
  }
283
283
 
284
+ /**
285
+ * KontoCheck::konto_check(<blz>, <kto>, <pz>)
286
+ *
287
+ * check whether the given account number kto kann possibly be
288
+ * a valid number of the bank with the bic blz.
289
+ *
290
+ * possible return values (and short description):
291
+ *
292
+ * LUT2_NOT_INITIALIZED "die Programmbibliothek wurde noch nicht initialisiert"
293
+ * MISSING_PARAMETER "Bei der Kontopr�fung fehlt ein notwendiger Parameter (BLZ oder Konto)"
294
+ *
295
+ * NOT_IMPLEMENTED "die Methode wurde noch nicht implementiert"
296
+ * UNDEFINED_SUBMETHOD "Die (Unter)Methode ist nicht definiert"
297
+ * INVALID_BLZ "Die (Unter)Methode ist nicht definiert"
298
+ * INVALID_BLZ_LENGTH "die Bankleitzahl ist nicht achtstellig"
299
+ * INVALID_KTO "das Konto ist ung�ltig"
300
+ * INVALID_KTO_LENGTH "ein Konto mu� zwischen 1 und 10 Stellen haben"
301
+ * FALSE "falsch"
302
+ * NOT_DEFINED "die Methode ist nicht definiert"
303
+ * BAV_FALSE "BAV denkt, das Konto ist falsch (konto_check h�lt es f�r richtig)"
304
+ * OK "ok"
305
+ * OK_NO_CHK "ok, ohne Pr�fung"
306
+ */
307
+ static VALUE konto_check_pz(int argc,VALUE* argv,VALUE self)
308
+ {
309
+ char kto[16],blz[16], pz[3],error_msg[512];
310
+ int retval, len;
311
+ strncpy(blz,RSTRING_PTR(argv[0]),15);
312
+ if((len=RSTRING_LEN(argv[0]))>15)len=15;
313
+ *(blz+len)=0;
314
+
315
+ strncpy(kto,RSTRING_PTR(argv[1]),15);
316
+ if((len=RSTRING_LEN(argv[1]))>15)len=15;
317
+ *(kto+len)=0;
318
+
319
+ strncpy(pz,RSTRING_PTR(argv[2]),2);
320
+ if((len=RSTRING_LEN(argv[2]))>2)len=2;
321
+ *(pz+len)=0;
322
+
323
+
324
+ if((retval=kto_check_pz(pz,kto,blz))==LUT2_NOT_INITIALIZED || retval==MISSING_PARAMETER)RUNTIME_ERROR(retval);
325
+ return rb_ary_new3(2,retval>0?Qtrue:Qfalse,INT2FIX(retval));
326
+ }
327
+
328
+
329
+
284
330
 
285
331
  /**
286
332
  * KontoCheck::init([lutfile[,level[,set]]])
@@ -376,7 +422,7 @@ static VALUE generate_lutfile_rb(int argc,VALUE* argv,VALUE self)
376
422
  *(input_name+len)=0;
377
423
  }
378
424
  else
379
- rb_raise(rb_eRuntimeError,"Unable to convert given input filename.");
425
+ rb_raise(rb_eRuntimeError, "%s", "Unable to convert given input filename.");
380
426
 
381
427
  if(TYPE(output_name_rb)==RUBY_T_STRING){
382
428
  strncpy(output_name,RSTRING_PTR(output_name_rb),FILENAME_MAX);
@@ -384,7 +430,7 @@ static VALUE generate_lutfile_rb(int argc,VALUE* argv,VALUE self)
384
430
  *(output_name+len)=0;
385
431
  }
386
432
  else
387
- rb_raise(rb_eRuntimeError,"Unable to convert given output filename.");
433
+ rb_raise(rb_eRuntimeError, "%s", "Unable to convert given output filename.");
388
434
 
389
435
  if(NIL_P(user_info_rb)){
390
436
  *user_info=0;
@@ -395,7 +441,7 @@ static VALUE generate_lutfile_rb(int argc,VALUE* argv,VALUE self)
395
441
  *(user_info+len)=0;
396
442
  }
397
443
  else
398
- rb_raise(rb_eRuntimeError,"Unable to convert given user_info string.");
444
+ rb_raise(rb_eRuntimeError, "%s", "Unable to convert given user_info string.");
399
445
 
400
446
  if(NIL_P(gueltigkeit_rb)){
401
447
  *gueltigkeit=0;
@@ -406,7 +452,7 @@ static VALUE generate_lutfile_rb(int argc,VALUE* argv,VALUE self)
406
452
  *(gueltigkeit+len)=0;
407
453
  }
408
454
  else
409
- rb_raise(rb_eRuntimeError,"Unable to convert given gueltigkeit string.");
455
+ rb_raise(rb_eRuntimeError, "%s", "Unable to convert given gueltigkeit string.");
410
456
 
411
457
  if(NIL_P(felder_rb))
412
458
  felder=DEFAULT_LUT_FIELDS_NUM;
@@ -562,7 +608,7 @@ static VALUE lut_info_rb(int argc,VALUE* argv,VALUE self)
562
608
  ****************************************************************************/
563
609
 
564
610
  static VALUE load_bank_data(VALUE self, VALUE path_rb) {
565
- rb_raise(rb_eRuntimeError, "Perhaps you used the old interface of konto_check.\n"
611
+ rb_raise(rb_eRuntimeError, "%s", "Perhaps you used the old interface of konto_check.\n"
566
612
  "Use KontoCheck::init() to initialize the library\n"
567
613
  "and check the order of function arguments for konto_test(blz,kto)");
568
614
  }
@@ -1413,6 +1459,7 @@ void Init_konto_check_raw()
1413
1459
  rb_define_module_function(KontoCheck,"init",init,-1);
1414
1460
  rb_define_module_function(KontoCheck,"free",free_rb,0);
1415
1461
  rb_define_module_function(KontoCheck,"konto_check",konto_check,-1);
1462
+ rb_define_module_function(KontoCheck,"konto_check_pz",konto_check_pz,-1);
1416
1463
  rb_define_module_function(KontoCheck,"bank_valid",bank_valid,-1);
1417
1464
  rb_define_module_function(KontoCheck,"bank_filialen",bank_filialen,-1);
1418
1465
  rb_define_module_function(KontoCheck,"bank_alles",bank_alles,-1);
data/kontocheck.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "kontocheck"
8
- s.version = "0.4.2"
8
+ s.version = "0.4.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Provideal Systems GmbH", "Michael Plugge", "Jan Schwenzien"]
12
- s.date = "2012-11-25"
11
+ s.authors = ["Michael Plugge", "Jan Schwenzien", "Provideal Systems GmbH"]
12
+ s.date = "2013-05-26"
13
13
  s.description = "Check whether a certain bic/account-no-combination can possibly be valid. It uses the C library konto_check (see http://sourceforge.net/projects/kontocheck/) by Michael Plugge."
14
14
  s.email = "jan@general-scripting.com"
15
15
  s.extensions = ["ext/konto_check_raw/extconf.rb"]
@@ -31,6 +31,7 @@ Gem::Specification.new do |s|
31
31
  "init.rb",
32
32
  "kontocheck.gemspec",
33
33
  "lib/konto_check.rb",
34
+ "lib/kontocheck.rb",
34
35
  "test/helper.rb",
35
36
  "test/test_konto_check.rb"
36
37
  ]
data/lib/kontocheck.rb ADDED
@@ -0,0 +1 @@
1
+ require 'konto_check'
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kontocheck
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
8
- - Provideal Systems GmbH
9
8
  - Michael Plugge
10
9
  - Jan Schwenzien
10
+ - Provideal Systems GmbH
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2012-11-25 00:00:00.000000000 Z
14
+ date: 2013-05-26 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: thoughtbot-shoulda
@@ -53,6 +53,7 @@ files:
53
53
  - init.rb
54
54
  - kontocheck.gemspec
55
55
  - lib/konto_check.rb
56
+ - lib/kontocheck.rb
56
57
  - test/helper.rb
57
58
  - test/test_konto_check.rb
58
59
  homepage: http://github.com/jeanmartin/konto_check