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

head2.gif 6.5.2 承認依頼処理
 まずは,承認依頼処理の実装から始めよう。承認依頼処理において,主に必要な処理は次の3つである。

  1. REQ_CONSENTFLAGフィールドの値をTrueに設定
     伝票レコードのREQ_CONSENTEDFLAGフィールドの値をTrueに設定し,「承認依頼中」の状態に変更する。

  2. 在庫の確認
     受注された製品の数量を在庫数と比較し,足りるかどうかを確かめる(「3.2.6 在庫の処理」を参照)。受注された製品の数量は,伝票に結び付けられている明細情報テーブル内のレコードに記録されている。

  3. 在庫の予約
     受注された製品の数だけ製品を予約ずみとし,今後追加される伝票によって製品が奪われないようにする(「3.2.6 在庫の処理」を参照)。受注された製品の数は,伝票に結び付けられている明細情報テーブル内のレコードに記載されている。

 この3つの処理に必要なメソッドを,順に実装してゆく。

REQ_CONSENTFLAGフィールドの値をTrueに設定する処理
 まずは,REQ_CONSENTFLAGフィールドの値をTrueに設定するため,伝票情報テーブルを操作するデータオブジェクトであるDataObj.Slipコンポーネントに,REQ_CONSENTFLAGフィールドの値をTrueにするメソッドを実装する。それには,次のような形のメソッドを実装すればよい。

Public Sub Set_REQ_CONSENTFLAG(ByVal SlipID As Long, _
                               ByVal flag As Boolean, _
                               ByVal Comment As Variant)
    ' SlipIDで指定された伝票番号を持つ伝票の
    '     REQ_CONSENTFLAGフィールドの値を
    '     flagで指定された値に変更する。
    ' flagの値がTrueであった場合には,
    '     REQ_CONSENTCOMMENTフィールドの値に
    '     Commentで指定された文字列を格納する。
    ' flagの値がFalseであった場合には,
    '     Comment引数は無視される
End Sub

 上記したSet_REQ_CONSENTFLAGメソッドは,SlipID引数に渡された伝票番号を持つ伝票レコードのREQ_CONSENTFLAGフィールドをflag引数で指定された値に変更する。実際に実装したプログラムは,List 6-142のようになる。List 6-142は,REQ_CONSENTFLAGフィールドの値を変更するだけではなく,flag引数の値がTrueのときには次の3つの処理も実行するようになっている。また,DataObj.Historyコンポーネントを使い,履歴を記録する処理もしている。

flag引数の値がTrueの場合の処理】

  • REQ_CONSENTDATEフィールドの値を,メソッドが呼び出された日時に設定する

  • REQ_CONSENTUSERフィールドの値を,メソッドを呼び出したユーザーのアカウント名に設定する

  • REQ_CONSENTCOMMENTフィールドの値を,Comment引数で指定された値に設定する

 ところで,伝票の状態を示すフラグとしては,REQ_CONSENTFLAGフィールド以外に,次の5つのフィールドがある。

  • CONSENTEDFLAG
  • REJECTEDFLAG
  • SENDFLAG
  • ACCOUNTINGFLAG
  • MADEBILLFLAG

 これらのフラグを設定するメソッドも,List 6-142と同じように実装しておこう。実際に実装したものは,List 6-143List 6-144List 6-145List 6-146List 6-147のようになる。

prevpg.gif Chapter 6 67/92 nextpg.gif