消費税はめんどくさい

世の中の、実装と設計がげふふんして独立だってのいや不可分だろうアホと云う論議からすっかり置いていかれる事必至の、「ためしにナイスな販売管理システムを考えてみる」のコーナー、久々の復活だ!

売掛金をまとめて請求書を作る時、頭が痛いのが消費税に関してでR。ネタが降臨したのでメモしておこう。

消費税の誤差をなんとかしてみる

取引先は20日締めとしよう。で、業務ルールとして、消費税は四捨五入って事になっているとする。あと、簡単にする為に、現時点での前月残も入金もな無しで御願い。はじめての取引って事です。

まずは、7月にこんな売上が立ちましたよ。

 ID  売上日 商品             数量 単価    売上    消費税  赤黒 請求F
 --- ------ ---------------- ---- ------- ------- ------- ---- --------
   1 07/20  ギャンブル大将      1   9,045   9,045     452 黒   請求対象
   2 07/20  インベーダー作戦    1   9,045   9,045     452 黒   請求対象

で、20日なので請求締めしましょう。2明細とも請求対象ですから、全部もってきちゃいましょうね。

 請求期間 6/21〜7/20
 
 前月残  入金額  当月売上
 ------- ------- --------
       0       0    18090

と、途中ですが、さて消費税はどうするかって云うと、明細の消費税を合計なんかしません。取引先は請求された売上金額の合計に対して消費税を払う訳ですから、またここで算定します。

 ■請求期間 6/21〜7/20
 
 前月残  入金額  当月売上 消費税 請求金額
 ------- ------- -------- ------ --------
       0       0   18,090    905   18,995
 ■明細
 ID  売上日 商品             数量 単価    売上   
 --- ------ ---------------- ---- ------- -------
   1 07/20  ギャンブル大将      1   9,045   9,045
   2 07/20  インベーダー作戦    1   9,045   9,045

帳票イメージとしてはこんな感じですね。消費税が1円見事に膨れました。よくある話です。

請求書には18,995円って出しちゃってる訳ですから、入金はその金額でされますわな。これでもって売掛金を消し込む訳ですが、このままでは1円入金が余ってしまいます。

そんな訳で、この差額を管理しないといけません。差額は請求する事によって発生する訳ですから、請求データに持っておくのが吉でしょう。導出項目なのでモデリング上どう持つか(持たないか)は議論のある所ですが、ここではカラムがあるような形にしておきます。

雑損益みたいな位置付けになりますが、この名前だとプラスなんだかマイナスなんだか判らんので、雑収入で固定します。後々の勘定もこれ。つまり、請求金額が膨れたらもうけなのでプラス、売掛金が多かったら損なのでマイナス。

  • 請求ID
  • 請求開始日
  • 請求締め日
  • 前月請求残
  • 当月売上
  • 消費税
  • 請求金額
  • 雑収入

ベタだけどこれだけ持っておけばいいか。入金額に関しては、入金日が請求開始日と締め日の間のものを入金テーブルからもってくりゃええわけです。

で、帳票イメージでなくて、データで表すと、上記請求はこうですかね。

請求テーブル
 ID 開始日 締め日 前月残 当月売上 消費税 請求金額 雑収入
 -- ------ ------ ------ -------- ------ -------- ------
  1 06/21  07/20       0   18,090    905   18,995      1

7月の債権管理表みたいな帳票にはこう出る。

 前月債権残 当月入金 当月売上 消費税 雑収入 当月債権残
 ---------- -------- -------- ------ ------ ----------
          0        0   18,090    904      1     18,995

雑収入は、締め日が7月の請求から持ってきて合計します。

本当は、与信管理など用いる上で債権残には、その時点での消込済み未決済手形の金額(入金されたけど現金化されてないもの)も入れなきゃいけないんですが、ややこしくなるので省略です。

8月1日に入金があったじょー。

 入金テーブル(省略してます)
 ID  入金日 区分  金額   
 --- ------ ----- ------ 
 001  08/01 現金  18,995

8月は売上が立たなかったとして、8月の債権管理表はこうでごじゃいます。

 前月債権残 当月入金 当月売上 消費税 雑収入 当月債権残
 ---------- -------- -------- ------ ------ ----------
     18,995   18,995        0      0      0          0

綺麗に消えましたね。

さてと、この前月債権残ってのはどこから持ってこようかって話しになるんですが、こう云うのはサマリーテーブルを作るのが吉な訳です。となると、このサマリーテーブル、単に売上明細から税込み金額を合計して持ってくりゃいいって話ではありません。請求データの雑収入もとってこなきゃいけないんだ。そうか。

なんで「そうか」って云ってるかと云うと、前にやったシステムは仕訳大統一理論だったから、請求データ生成時に雑収入を算定したらすぐにその分の消込仕訳を作ってたんだねー。で、仕訳を軸で取引先・勘定・部門・通貨ごとに売上だの入金だの仕入だの支払だのを横断する残高サマリーを作ってたのだった。今回はそれは無しの方向なので、売上・債権に特化してサマリーを作る。

となるとだ、そうか、サマリーってこの債権管理表のまんまのイメージなんじゃないか?ぎゃー帳票出すの楽!

  • 年月
  • 取引先ID
  • 前月売掛残
  • 当月入金額
  • 当月売上
  • 消費税
  • 雑収入
  • 当月債権残

いいのかなあ。まあいいや。

請求と作りは似ておりますが、請求はあくまでも請求期間内のサマリーあって、この債権サマリーは管理会計上の要件を満たすものであるので月次であって、別に管理せんといかんよな。だからいいのだ。

なんか書いてる内に既存システムのバグ製造箇所の明確なソリューションが。うーん、人生これインプロヴィゼーション(いいえ事前にしっかり設計しましょう)。

えー、消し込みの事は後で考えます。なんかややこしそうだなあ。

赤伝の恐怖

えー、ここからが本題なのですが。こんなケースがありました。

まずは、7月にこんな売上が立ちましたよ。

 ID  売上日 商品             数量 単価    売上    消費税  赤黒 請求F    請求STS
 --- ------ ---------------- ---- ------- ------- ------- ---- -------- -------
   1 07/20  ギャンブル大将      1   9,045   9,045     452 黒   請求対象 未請求
   2 07/20  インベーダー作戦    1   9,045   9,045     452 黒   請求対象 未請求

で、20日なので請求締めしましょう。2明細とも請求対象ですから、全部もってきちゃいましょうね。

 ■請求期間 6/21〜7/20
 
 前月残  入金額  当月売上 消費税 請求金額
 ------- ------- -------- ------ --------
       0       0   18,090    905   18,995
 ■明細
 ID  売上日 商品             数量 単価    売上   
 --- ------ ---------------- ---- ------- -------
   1 07/20  ギャンブル大将      1   9,045   9,045
   2 07/20  インベーダー作戦    1   9,045   9,045

テーブル上はこうです。

請求テーブル
 ID 開始日 締め日 前月残 当月売上 消費税 請求金額 雑収入
 -- ------ ------ ------ -------- ------ -------- ------
  1 06/21  07/20       0   18,090    905   18,995      1

ここまでは上の奴のコピペです。

さて、なんと!営業の人が売上先を間違えちゃってたよ!もう請求締めちゃったよ!ってな事になりまして、赤伝切って無かった事に。

 ID  売上日 商品             数量 単価    売上    消費税  赤黒 請求F    請求STS
 --- ------ ---------------- ---- ------- ------- ------- ---- -------- -------
   1 07/20  ギャンブル大将      1   9,045   9,045     452 元   請求対象 請求済み
   2 07/20  インベーダー作戦    1   9,045   9,045     452 元   請求対象 請求済み
   3 07/21  ギャンブル大将     -1   9,045  -9,045    -452 赤   請求対象 未請求
   4 07/21  インベーダー作戦   -1   9,045  -9,045    -452 赤   請求対象 未請求

元伝票が請求済みの場合の赤は、請求対象になるんでしたな。「復習」するは我にあり、リンクははらんぞ面倒だ。

売上日が21日なので、これは8/20締めの請求に載る事となります。やってみると判りますが、ちゃんと同額のマイナスになります。

請求テーブル
 ID 開始日 締め日 前月残 当月売上 消費税 請求金額 雑収入
 -- ------ ------ ------ -------- ------ -------- ------
  2 07/21  08/20  18,995  -18,090   -905        0     -1

雑収入もちゃんとプラマイひっくり返ります。そんな訳で今回お客様から連絡あったケースは正常に動いてました。

が!これってたまたまなんじゃないでしょうか?ちゃんと絶対値が同じでプラマイひっくり返る保証って、あるんだろうか?すんごい心配!

消費税算定方法が切り捨て切り上げ四捨五入色々ルールあると思いますが、プラスの時はこう、マイナスの時はこう、とか複雑なルールを採用してらっしゃるお客様もあるんじゃないでしょうかね。

そうするとですよ、この方法だともしかしたら、雑収入の絶対値が同じにならず綺麗に消えない、そうすると請求残も綺麗に消えないって事態になりゃせんでしょうか。こわいよーこわいよー。

ってお話でした。解決策は、と云うかそれ以前に本当に恐いことになるかの検証も、まだ考えておらん!

仕事しよう。