asoview! TECH BLOG

アソビュー株式会社のテックブログ

精算システムについて

アソビュー Advent Calendar 2019の19日目。
こんにちは。アソビューで精算システムやSREチームを担当している並木です。
マイクラ歴3年になるのに、いまだに豆腐建築から抜け出せません。
建築センスをください。

簡単な経歴

・SIerとして、銀行の勘定系システムを担当
・Webベンチャーの営業っぽい雑用係を担当
・アソビューにJOIN
元々銀行のシステムを担当していたこともあり
アソビューでは主に精算周りのシステムに関わらせていただいております。
今回は、精算システムにおける計算処理の注意点などを書きたいと思います。
※アソビューのシステムに関連する部分もありますが、基本的には一般論として書かせていただきますので、ご容赦ください。

法改正対応

記憶にも新しい

消費税の改正 8% → 10%

実際にシステムにどんな影響があるか?

税率計算の処理

  • 増税のたびに影響範囲の確認、修正規模が多くなりがちな悪い実装例
  • 影響範囲は変わらないが、修正規模が小さく、結果テストなどに掛かる工数も減らせる良い実装例
悪い実装例
  • ※言語はCOBOLにて実装した場合のイメージとなります。あくまでイメージです。

料率をDBでの管理ではなく、code にベタ打ち固定で記載している場合は
全ての固定箇所に修正が必要になり、修正範囲の確認から修正、テストと掛かる工数も大きくなりがちです。
このような例はミスも起こりやすく、「お金を取り扱うシステム」としてはよくない例となります。

  WORKING-STORAGE  SECTION.
     01  ONIGIRI     PIC 999 VALUE 150.
     01  SYOUHIZEI    PIC 9999.
     01  ZEIKOMI     PIC 9999.
     01  ZEIRITSU    PIC 9   VALUE 8.  -- 消費税率 計算時は /100 で使用
~~
         COMPUTE     SYOUHIZEI =  ONIGIRI * (ZEIRITSU / 100).
         COMPUTE     ZEIKOMI =  ONIGIRI + SYOUHIZEI
~~

実際に計算してみると
150円のおにぎりの消費税を固定で8%税率で計算し
それを加算することで税込金額として算出。

   150 + 12 = 162円 

が計算結果となります。

良い実装例

レコードの構成イメージ

f:id:yusuke-namiki:20191215221008p:plain

DBで料率を管理し、増税時に掛かる作業としては

最新レコードの挿入(inesrt)
直近レコードの終了日の更新(update)

のみであり、このDBを呼び出している箇所全てに適用されるため
影響範囲の特定も容易で、テストも機械的に実施できることになります。

  WORKING-STORAGE  SECTION.
     01  ONIGIRI     PIC 999 VALUE 150.
     01  SYOUHIZEI    PIC 9999.
     01  ZEIKOMI     PIC 9999.
     01  ZEIRITSU    PIC 99.  -- 消費税率 計算時は /100 で使用
~~
     select zeiritsu
       from db-syouhiziei
        where now() between start_day and end_day 
-- 今日がどの税率なのかを判定させる条件
     MOVE zeiritsu TO ZEIRITSU

         COMPUTE     SYOUHIZEI =  ONIGIRI * (ZEIRITSU / 100).
         COMPUTE     ZEIKOMI =  ONIGIRI + SYOUHIZEI
~~

これであれば今の日付を見て、最新の税率を取得して計算しているので
税率の最新レコードの insert と一つ前のレコードの update 処理さえ忘れていなければ
実際の計算処理には影響が出なくなります。

帳票類(レシート、振替用紙などなど)

消費税(税率8%) ¥108 

といった形で固定で出力している場合には、計算処理同様に
最新の税率を取得して出力するなどの工夫が必要になります。
キャッシュレスに先んじてペーパレスは事前に対応していることが多かったため
そこまで大掛かりな回収は必要ではなかった認識でいます。

今回は触れていませんが 軽減税率の場合のレシート出力については、政府からも対応例が出ていますね。 https://www.gov-online.go.jp/tokusyu/keigen_zeiritsu/jigyosya/kubunkisai.html

まとめ

いかがでしたでしょうか。
今回は消費税のことにのみ触れていますが、法改正に関わるシステム改修に関して
一部ではありますが、サンプルを記載してみました。

昨今では法改正に関わるシステム改修がテレビなどでも取り沙汰されるようになりましたので
「どんなことしてるんだろう?」の理解の一助になれば幸いです。

最後に

記載した内容について、開発と運用の責任者を募集中です!
※COBOLは必須スキルではありません。むしろいらな・・ry
成長著しいベンチャーで社内基幹システムの開発・運用責任者大募集! | アソビュー株式会社