この特集のトップページへ
Chapter 6:ビジネスロジックの設計

head2.gif 6.4.2 伝票情報の編集
 いったん追加した伝票を,あとから編集したくなることもあるだろう。そのため,AddSlipメソッド(List 6-94)で追加された伝票を,あとから更新する機能を実装しておく必要がある。

 ただし,すべてのフィールドの値をユーザーに自由に編集させるわけにはゆかない。なぜなら,たとえば伝票の小計を任意に書き換えられてしまうと,製品価格の合計値と伝票に記載された小計値とのあいだで不整合が生じるおそれがあるからである。伝票の整合性を保つためにも,ユーザーに更新を許可する情報は制限しなければならない。

 伝票テーブルのレコードのうち,ユーザーが直接更新できる情報は,次の2つである。

  • 取引先の顧客番号(CUSTOMERIDフィールドの値)
  • 単独で請求書を作るかどうかを表すフラグ(ONEBILLFLAGフィールドの値)

 また,伝票追加情報テーブルのうち,ユーザーが直接更新できる情報は,次の6つである。

  • 顧客の部署名(DIVISIONフィールドの値)
  • 顧客の担当者名(PERSONフィールドの値)
  • 納入予定日(DELIVERDATEフィールドの値)
  • 発送先の住所(SENT_ADDRフィールドの値)
  • 発送先の電話番号(SENT_TELフィールドの値)
  • 摘要(MEMOフィールドの値)

 それでは,これらの伝票情報を編集するメソッドを実装してゆくことにする。


One Point! ただし,あえて小計値を編集できるように設計したい場合もあるだろう。たとえば「特定の顧客に対しては何割引かで販売したい」というようなケースでは,最終的な小計値をユーザーが編集できるようにしたいこともある。しかし,そのような場合でも,小計値を直接ユーザーに変更させるべきではないだろう。むしろ,価格が負で,かつ在庫が無限であるような仮想の製品項目(「割引」という製品)を作り,小計値は伝票に含まれる明細の価格合計に統一したほうがよい。このように実装しておけば,あとから「割引」という仮想の製品の出荷数や出荷金額を調べることで,月次や年次で「どれだけ割り引いたのか」を集計することもできるようになる。
prevpg.gif Chapter 6 55/92 nextpg.gif