マイナンバー制度をワークフロー化する(2)

2015年6月22日
マイナンバー申請での「誤入力」、、、ありそうだ。。。(怖)

経験論的な話として、社員からの申請にはその5%~10%くらいに「誤入力」が含まれる。(そして往々にしてアルバイトさんよりベテラン社員達からの申請の方がヒドイ!)。わざわざ申請してもらい所得税や社会保険の公的手続きに利用したとしても、そもそも「申請されたナンバー」が間違っていたのでは、手続きそのものをやり直さなければならなくなる。(悲劇)

マイナンバー法の想定では、「提供の要求」(H27法14)をする企業側が、(1)正確な12桁をあずかり、(2)それが本人のモノであることを確認する、、、のだが、、、たとえば子沢山な社員の場合では、何人分もの「12桁」を入力するワケで、「絶対ミスるな」とも言い難い。

以下のワークフローは、マイナンバー(個人番号)入力時に「チェックディジット判定」を行っている。

つまり、入力時の「12桁数字」が「マイナンバーとしてはありえない12ケタ数字」だった場合、入力エラーと表示される仕組みだ。この工夫だけで、誤入力を激減させることができるだろう。なお、このワークフローは、前回エントリの拡張であり、データ項目定義や基本的なフローは同じだ。

[マイナンバー申請フロー(2)]

[マイナンバー申請フロー(2):「1.申請」画面]

そもそも「チェックディジット」とは何か?

一般的な定義は Google さんに譲るとして、日本のマイナンバーでは、12桁数字の12桁目が「検査用数字」になっている。つまり12桁数字は「機構が作為が加わらない方法により生成する11桁の番号」及び「その後に付された1桁の検査用数字」により構成されるわけだ。

(ちなみに法人番号は13ケタで、「12桁の番号…」及び「その前に付された1桁の検査用数字」により構成され、チェックディジットの位置も算出式も異なる)


政府の「法令データ提供システム」にある関連省令の定義によれば、

11 - ( n=1(シグマ)11 (Pn x Qn) ) を11で除した余り)
※ Pn は11桁の最下位を1桁目とする数、Qn は6桁目まで (n+1), 7桁目以上は (n-5)
※ 10, 11 となる場合は「0」

と、省令そのものが軽くシンタックスエラー状態(閉じる括弧が多すぎる)なのだが、、、ま、気を取り直して JavaScript にすると以下のようになる。

  1. <script type="text/javascript">
  2. function CheckDigit(myNumber, myMessage){
  3. jQuery(myNumber).on('keydown keyup keypress change',function(){
  4. //myNumber で指定したTextフォーム値に変化があれば、
  5.  
  6. var thisValueLength = jQuery(this).val().length;
  7.  
  8. //文字数が12桁ならチェックディジットを算出
  9. if( thisValueLength == 12 ){
  10. var mysum = 0;
  11. var thisValue = jQuery(this).val();
  12.  
  13. for( i=0; i<5; i++){
  14. mysum += (11 - i - 5) * parseInt( thisValue.charAt(i) );
  15. }
  16. for( i=5; i<11; i++){
  17. mysum += (11 - i + 1) * parseInt( thisValue.charAt(i) );
  18. }
  19. var checkdigitnum = 11 - mysum % 11;
  20. if( checkdigitnum > 9 ){ checkdigitnum = 0; }
  21.  
  22. var typedcd = parseInt( thisValue.charAt(11) );
  23. //myMessage のHTMLを書き換える
  24. if( typedcd == checkdigitnum ){
  25. jQuery( myMessage ).html("OK");
  26. } else {
  27. jQuery( myMessage ).html("<font color=red>NG</font>");
  28. }
  29. } else {
  30. jQuery( myMessage ).html("<font color=blue>12桁の数字を入力してください</font>");
  31. }
  32.  
  33. });
  34. }
  35.  
  36. CheckDigit('input[name="data[4].input"]', '#mymessage4');
  37. </script>


しかし「正確な12ケタ」については確からしくなったが、、、「本人のものであるかの確認」については、まだまだ改善の余地がありそうだ。(次回に続く)


<データ項目一覧画面>


[雛形ダウンロード (無料)]
<類似プロセス>
≪関連記事≫

[英文記事(English Entry)]

0 件のコメント :

コメントを投稿