収益認識

いま、ソフトウェア製品を扱う小さなECサイトを営んでいるとする。

(なお、本演習では顧客、消費税、税率、通貨、お釣り、在庫などの概念は扱わないものとする)

注意

本演習は TDD を体験することを主眼としていますので、 プログラミングの速さを競っているのではない 点にご注意ください。 機能を粗く速く実装することよりも、テストを書いて動かすことによるフィードバックを受けながら、 リファクタリングを忘れずに着実に進めていくことが、本演習では重要です。

問題: 製品、契約、売上、収益認識

いま、以下のつの種類(category)のソフトウェア製品(product)を扱っている。

  • ワードプロセッサ
  • スプレッドシート

製品は名前(name)と価格(price)を持つ(今回は消費税を扱わないので、単純に価格と考えてください)。

例:

  • ワードプロセッサ「MS Word」の価格は 18,800円
  • ワードプロセッサ「一太郎」の価格は 20,000円
  • スプレッドシート「MS Excel」の価格は 27,800円
  • スプレッドシート「三四郎」の価格は 5,000円

現時点では1回にどれか1つの製品を1つのみ購入する契約(contract)ができるものとする(カートに一つしか入らない貧弱なECサイトのイメージ)。契約が成立(sign)した場合、

  • ワードプロセッサは契約日(signed_on または signedDate)に直ちに売上(revenue)全額を収益認識(revenue recognition)する
  • スプレッドシートは契約日に売上の2/3、30日後に1/3を収益認識する

なお、収益認識の総和は売上とかならず 完全一致 しなければならない。

例:

  • 本日(2/1)「MS Word」が1つ売れる契約が成立したとき、2/1 に 18,800円収益認識される
  • 本日(2/1)「MS Excel」が1つ売れる契約が成立したとき、2/1 に 18,534円、3/3 に9,266円収益認識される
  • (「一太郎」、「三四郎」に関してもテストしてください)

--

作者 @twada
引用元 URL: https://gist.github.com/twada/856c37103ebd3d1fb973ba2c2654f9d6

クリエイティブ・コモンズ 表示 - 継承 2.1 日本 この演習問題は クリエイティブ・コモンズ 表示 - 継承 2.1 日本 ライセンスの下に提供されています。

また、この演習問題は Martin Fowler の著作 『Patterns of Enterprise Application Architecture』 から着想を得ています。