領収書はモデルに含めるか

巡回先の方のお題

領収書(レシート)はモデルに含めるか否か。領収書は、販売や支払いのレポート(ビュー)でしかないので、情報が重複してしまう。

何時も情報を戴いてばかりでは申し訳無いので、書いちゃおうかな。どきどき。

現金商売だと確かに領収書は一過性のビューに思えるし、販売や支払(これは「入金」とした方が主体がシステム側である事が明確になってよいと思う)の情報が重複する。紙として出された物はビューに過ぎないので、帳票に実際にこう乗りますよと云う情報はモデルとして要らない。

ただし、領収書を出すと云う事は、こう云う事だ。

  1. 売上計上しました。
  2. 請求締めをしました。
  3. 入金がありました。
  4. 入金でもって請求に紐付く売上を消込みました。

現金商売だとなかなかこう云う実感は湧かないと思うけど、掛け商売ではその場で終わらずに日付をまたぐので、上記フローをきっちり意識してモデリングする必要がある。

ここで、本質的な所は現金商売の八百屋だろうと掛け商売の商社だろうと変わらない、としてみる。すると以上の業務フローはきちんと記録しなければならない。

つまり、具体的に云うと、売上IDと入金IDを外部キーとして持つ消込情報を都度パカパカ作らねばならない。すると、入金額の分納も、複数売上まとめて払います、なんだったら先に来月の分まで前払いします、ってのも対応出来る。現金商売の場合、幸福な事にたまたま全てが1:1になる、と考えれば良い。

で、領収書とは、「請求した金額の内、幾ら幾ら戴きました」と云う事なので、その本質はこの消込情報に他ならない。

俺アンサー、領収書の情報は要らない。但し、「この請求に含まれた売上に対して、この入金で消込みました」と云う情報は必要。さすれば返品があろうがなんだろうが、履歴管理はチリバツ、過去の消込を捕まえてどうこうすればよろしい、どんとこいである。

YAGNIの問題があるか。八百屋に前払いも分納もあるもんかって云う。うーん、これは価値観かなあ。俺は現金商売でも上記建付けは必須と思いますですが。というか、ずっとこうだったからこうじゃないと気持ち悪いんだもんってだけかー。うーむ。

あ、YAGNIと云えば、帳簿は商売やるからにゃつけねばならないので、やっぱり居るんじゃないかなー、こう云うの。あれ、「現金/売上」で一発だから要らないのか。あー。