GAミント至上主義

Web Monomaniacal Developer.

令和二年度 源泉徴収の給与所得控除後の給与等の計算処理実装でつらかったこと

業務で年末調整処理の一部、源泉徴収の給与所得控除後の給与等の計算を実装したけど
いろいろつらかったことをメモする。主に行政資料への不満。

従業員として出すだけでも面倒な年末調整ですが、もちろんその背後で行われている処理はもっと面倒です。

www.nta.go.jp


資料だけでこんだけ数も有り、
f:id:uyamazak:20201204174745p:plain

一括ダウンロードするとPDFで30MB超え。

でも今回、業務で必要だったのは下記の1枚だけでした。


Ⅵ 電子計算機等による年末調整
https://www.nta.go.jp/publication/pamph/gensen/nencho2020/pdf/82-83.pdf

でも、この一つだけでも結構ストレスフルでした。

コピペすると数字が全角でつらい

桁数が多いので、手打ちは避けたいのでコピペすると思うんですが、こうなります。全角です。

1,618,999円まで

電子計算機で全角数字使うのかと・・・。
コピペしたあとVSCodeの拡張で半角に変換して使いました・・・。

カラム構造がネ申エクセルのそれ

ここもコピペしたいのですが、コピペすると
f:id:uyamazak:20201204175448p:plain

こうなります。行ごとに整形しなおす必要があります。

1円から
551,000 〃 
1,619,000 〃 
1,620,000 〃 
1,622,000 〃 
1,624,000 〃 
1,628,000 〃 
1,800,000 〃 
3,600,000 〃 
6,600,000 〃 
8,500,000 〃 
550,999円まで
1,618,999 〃 
1,619,999 〃 
1,621,999 〃 
1,623,999 〃 
1,627,999 〃 
1,799,999 〃 
3,599,999 〃 
6,599,999 〃 
8,499,999 〃 
20,000,000 〃 
0円
A-550,000円
A×60%+97,600円
A×60%+98,000円
A×60%+98,800円
A×60%+99,600円
A×60%+100,000円
A×70%-80,000円
A×80%-440,000円
A×90%-1,100,00

推測ですが、エクセルでこの3カラムをつくり、行を使わずセル内部で改行してる作ってると思われます。
f:id:uyamazak:20201204175630p:plain

先日出た改善案どおりに作ってくれればこんな面倒なことしなくて済んだのに・・・。
お役所「Excel」の改善案が公開 ~あかんヤツ→ええヤツの例がわかりやすく、一般市民にも結構参考になる - やじうまの杜 - 窓の杜

来年この資料が直ってなかったらしかるべきところに届け出たいと思います。

計算の意図がよくわからなくて、むかつく

まあ法律でそうなってるんでしょうが、
1,618,999円から1,623,999円の狭い範囲だけ、
なんでこんな処理が必要なんでしょうか。もっとシンプルにしようって人は誰もいなかったんでしょうか。

f:id:uyamazak:20201204180059p:plain

さすがに実装して動かすと、あーこの表↓みたいな段階的な数字にしてるのかーって何となく分かったけど初見はつらい。
1000円未満切り捨てみたいのは会計でよくみるし、全部それでいいじゃんって思ってしまう・・・。
https://www.nta.go.jp/publication/pamph/gensen/nencho2020/pdf/84-92.pdf

電気計算機で実際に動くコード置いとけよ!

こんなネ申エクセルを元にしたPDF資料じゃなくて、プログラミング言語のサンプルコード置いといてくれよ!
と思ったので今回PHPで書いたコードを雑にTypeScript化、変数名に日本語を試してみたかったのもあり、Gistに置いておきました。

日本語でもVSCodeも問題なくnodeでも普通に動いた。

こういう国特有の法律用語って絶対正確な英語にはできないので、日本語のままが楽ちんだなぁと思うけど、いろいろ問題もあるので実際の現場では使えることはなさそう。

問題起きてももちろん責任は取れません。

tscして自分のPCのnode(v14.14.0)で実行するとこんなの風に出ました。

給与所得控除後の給与等の金額 { '給与': 551000, '給与所得控除後の給与等の金額': 1000 }
給与所得控除後の給与等の金額 { '給与': 1872000, '給与所得控除後の給与等の金額': 1230400 }
給与所得控除後の給与等の金額 { '給与': 2612001, '給与所得控除後の給与等の金額': 1748400 }
給与所得控除後の給与等の金額 { '給与': 4272000, '給与所得控除後の給与等の金額': 2977600 }
給与所得控除後の給与等の金額 { '給与': 9800000, '給与所得控除後の給与等の金額': 7850000 }
給与所得控除後の給与等の金額 { '給与': 20000000, '給与所得控除後の給与等の金額': 18050000 }

ちなみに来年には外部のサービスと連携してるつもりなので、こういうコードはもう二度と書かない予定です。
経理の皆様、こういうソフト作ってる皆様お疲れさまです。


プログラミングTypeScript ―スケールするJavaScriptアプリケーション開発

プログラミングTypeScript ―スケールするJavaScriptアプリケーション開発

  • 作者:Boris Cherny
  • 発売日: 2020/03/16
  • メディア: 単行本(ソフトカバー)