[js]法人番号は12桁じゃなくて13桁

久しぶりに組んだよ。

結論(作ったもの)

これ。

やること

これ。

なんでつくったか

都度計算はめんどくさい。

なんでエクセルで作らないのか

使用頻度低いから作ってもデータがどこいったか分からんくなる

知識として持っておくべきこと

上のリンクのとおりではあるんだけど、会社法人等番号は12桁で法人番号は13桁。この差の1桁はチェックデジットにより生成されるので、つまりは12桁の中身で決まる数字。どっちかが分かればもう片方も分かるようになる。

登記簿謄本にかかれているのは12桁なんだけど、法人番号検索はその名の通り13桁じゃないと通らない。都度計算するのはアホほどめんどいから知識と手段をもっとく必要がある。

作り方

ソースにベタ貼りしてるから覗いてもらえば分かるけど、やってるのはリンクのPDFの通りで、文字列を取得して細切れにして奇数偶数それぞれをアレして式に落とし込んだだけ。

注意点としては抽出した数字は文字扱いになってるのでそのままだと数字として使用できない。

個別に抽出しなくても、必要なのは奇数の和と偶数の和なんだから、forとかで回せば内容を短縮できた気もするんだけど。Number()もどうにかなったんじゃないのとか。

12桁だしまあ力技で済むかなって。

めったにやらないことだから覚えておきたいのは、わり算のあまりを求めたいときは普段の「/」を「%」に変えること。

あと、数字を連結したいときは「”” + 1 + 2」みたいに手前に空欄を挟むといい。

ちょっとした頭の体操になった。


<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>法人番号生成</title>
<script src="https://code.jquery.com/jquery-3.5.1.js" integrity="sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc=" crossorigin="anonymous"></script>
<script>
$(function(){
	$('button[name="enter"]').click(function(){
		var inputVal = $('input[name="inputA"]').val();
		if(inputVal == ''){ return false;}
		var inputVal01 = Number(inputVal.substr(0,1));
		var inputVal02 = Number(inputVal.substr(1,1));
		var inputVal03 = Number(inputVal.substr(2,1));
		var inputVal04 = Number(inputVal.substr(3,1));
		var inputVal05 = Number(inputVal.substr(4,1));
		var inputVal06 = Number(inputVal.substr(5,1));
		var inputVal07 = Number(inputVal.substr(6,1));
		var inputVal08 = Number(inputVal.substr(7,1));
		var inputVal09 = Number(inputVal.substr(8,1));
		var inputVal10 = Number(inputVal.substr(9,1));
		var inputVal11 = Number(inputVal.substr(10,1));
		var inputVal12 = Number(inputVal.substr(11,1));
		var valOdd = inputVal01 + inputVal03 + inputVal05 + inputVal07 + inputVal09 + inputVal11;
		var valEven = inputVal02 + inputVal04 + inputVal06 + inputVal08 + inputVal10 + inputVal12;

		var Math01 = valOdd * 2 + valEven;
		var Math02 = Math.floor(Math01 % 9);
		var Math03 = 9 - Math02;

console.log('Math01:'+ Math01);
console.log('Math02:'+ Math02);
console.log('Math03:'+ Math03);

		var outputVal = "" + Math03 + inputVal;
		$('input[name="outputA"]').val(outputVal);
	})
})
</script>
</head>

<body>
<div id="wrap">
<ol>
	<li>会社法人等番号(12桁)をハイフン無しで入力</li>
	<li>「生成」をクリック</li>
	<li>生成された13桁を使用</li>
</ol>
<ul>
	<li><input type="text" name="inputA" placeholder="会社法人等番号(12桁)" required></li>
	<li><button name="enter">生成</button></li>
	<li><input type="text" name="outputA" placeholder="法人番号(13桁)"></li>
</ul>
</div>

</body>
</html>

追記:20201118

あの後エクセルで作ってみた。
各桁の抽出はこれ。A1に入ってるものから取り出すとして、

一:=MOD($A$1,10)
十:=MOD(ROUNDDOWN($A$1/10,0),10)
百:=MOD(ROUNDDOWN($A$1/100,0),10)
千:=MOD(ROUNDDOWN($A$1/1000,0),10)

12桁分全部書き出して、奇数行偶数行でそれぞれ合計値を出して計算して。

特定セルの中身を拾ってそうやって分解して生成して、また別の特定セルに貼り付け。非表示にしたところで遠目には普段どおりのエクセルだからなんていうか簡単にぶっ壊れそうというか、何されるか分からんというか、微妙だなって気持ちになった。WEBページで作ったほうが精神的に穏やかかもしんない。

コメント

タイトルとURLをコピーしました