今月頭から消費税率が変更になりましたが、システム上で、どの様にして消費税率を変更しているのかをご説明いたします。
先日、消費税の税率が変わりましたが、みなさんの会社は、税率の変更にともないシステムの税率の変更を行いましたか?システム会社が何か設定していきましたか?
今回の税率の変更タイミングが、サービス提供時、もしくは、納品時が4月1日0時0分以前か、以後かによって5%か8%かを切り替える様です。
契約ベース、請求ベースではなく、サービス提供タイミング、もしくは、納品タイミングであるためシステムでサービス提供日を管理していなければ、曖昧な状態となってしまいます。
また、サービス提供が3~4月とまたがっている場合は、どの様に計算するのであろう。
流通系の会社の場合、仕入れが3月で5%で、納品時が4月の8%となってしまいます。差分の3%は、どうすれば良いのだろう。等、様々な疑問が出てきました。
話が横にそれてしまいましたので元に戻します。
パッケージ販売の会計ソフト等では、サービスのタイミングを知りえる方法もないため発生した金額を登録するだけとなりますが、
例えばECサイト等のネット上での決済システムの場合、当然ながら、システムの関係上、4月1日0時0分で変更しなくとも、どこかのタイミングで税率を変更しなければなりません。
そんなシステムの税率の変更は、どうやって変更しているかを、みなさんご存知でしょうか?
昔「2000年問題」と呼ばれたシステム業界での一大行事がありましたが、その時の様に、夜中に0時にシステムエンジニアがシステムに張り付いて、
日付が変わったら5%で計算していたプログラムを8%に切り替えているのではないか?
そう思っておられる方は今の時代、もういないと思います。
実際には、どの様に切り替えているかを、一応、ご説明しましょう。
複数の税率を設定します。そして、それぞれの税率を適応する期間を設定しておきます。
以下の様に設定しておけば、その時間になったタイミングで自動的にシステムが消費税を切り替えてくれます。
5%は、1997年4月1日~2014年3月31日
8%は、2014年4月1日~2015年9月30日
10%は、2014年10月1日~
普通に考えれば、システムなですから、この様な設定は当然であり、みなさんもご存じの事と思います。
一般的に、変動する可能性のある数値等は、何かあった時には直ぐに変更できるようプログラム上ではなく、データベースへ数値データとして、もしくは、プログラムとは別のファイルへ出しておきます。
しかし、時々、それが出来ていないプログラマがいたりします。
以前、コンパイル(コンピュータが理解できる言葉へ変換する事)するタイプの言語での開発で、データベースの接続文字列や設定をプログラム上に書いてしまいコンパイルしてしまったためデータベースの接続文字列も設定内容も全く変更できなくなってしまった事があります。
当然ですが、当社とお客様で使用しているサーバのIPアドレス、データベースのパスワード、等は全く異なるわけでお客様のところへ納品した時に、設定を変更できない事になってしまう訳です。
制作した本人に確認したところ「データベース接続文字列、設定内容を変更してからコンパイルして下さい。」と平然と言われてしまいました。
プログラマの一般的な常識として、その方法は良くない事を伝え、修正してもらいましたが。
ちなみに、このプログラム内にデータベースの接続文字列や設定を書き込んでしまう事をハードコーティングというのですが、
このハードコーディングは、IT業界では上記の様なハンドリングが悪くなってしまうため非常に嫌われます。
話は戻りますが、消費税等の変更しなければならない可能性のある数値は、別ファイルやデータベースへ出し、いつでも変更できる様な仕様にしておくのが一般的です。
基本的に、どのシステム開発会社でもハードコーディングは嫌いますのでご安心ください。一般的な知識を持ったプログラマであれば、ハードコーディングは行いません。ですので、消費税の変更対応は、あなたのシステムでも対応できているはずです。
2014年4月4日 福田一成