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

head2.gif6.3.5 在庫の処理
 以上で,製品の登録,更新,参照,削除に必要なメソッドはすべて実装したことになる。ここまでの処理は,「6.2 顧客管理処理」で説明したプログラムと大差ない。

 しかし,製品を管理するにあたっては,これだけの処理では不十分である。製品管理にあたっては,さらに製品の入出庫管理といった在庫情報の処理を実装する必要がある。

 このサンプルでは,在庫情報テーブルを操作することで在庫を管理する(「3.2.6 在庫の管理」を参照)。在庫情報テーブルは,「3.2.6 在庫の処理」でTable 6-11のように定義した。

Table 6-11 在庫情報テーブル

フィールド名

サイズ

NULL

解説

ID

数値型

(オートナンバー)

不可

レコードに対して唯一無二の値を割り当てる

DATE

日付型

不可

入庫および出庫の予定日

DUEDATE

日付型

入庫および出庫が実際に行われた日

CONFIRMEDFLAGBoolean型入庫および出庫が実際に行われたかどうかのフラグ。行われていればTrue,まだ行われていなければFalse
PRODUCTID

数値型

不可

この明細の対象となる製品を示す製品番号。製品情報テーブルのIDフィールドに格納されているいずれかの値が格納される

NUMBER数値型不可入庫および出庫の数量。入庫の場合には正の数を,出庫の場合には負の数を格納する
MEMO文字型80摘要
SLIPID数値型出庫のとき,この出庫が生じるもととなった伝票の伝票番号。伝票情報テーブルのIDフィールドに格納されているいずれかの値が格納される
MADEUSER文字型256不可この入出庫情報を登録したユーザーのアカウント名
MADEDATE日付型不可この入出庫情報を登録した日時
LASTUSER文字型256不可最終更新者のアカウント名
LASTDATE日付型不可最終更新日
DELETEDFLAGBoolean型削除されたかどうかのフラグ。Trueで削除されたことを,Falseで削除されていないことを示す

 Chapter 3でも説明したが,このサンプルでは在庫情報テーブルを使ってどのようにして在庫を管理するのかを再度まとめておく。

 在庫情報テーブルには,入庫予定と出庫予定のデータが格納される(Fig.6-64)。

Fig.6-64 在庫情報テーブル
fig6_64

 入庫予定なのか出庫予定なのかは,SLIPIDフィールドの値で区別する。SLIPIDフィールドがNull値のときには入庫予定である。出庫予定のときには,SLIPIDフィールドに伝票番号が格納される。また,出庫予定のときには,NUMBERフィールドの値に負の数が格納される。

 入庫が施行されたときには,入庫予定レコードのDUEDATEフィールドに入庫が施行された日時を格納し,CONFIRMEDFLAGフィールドの値をTrueにする。そして,製品情報テーブルのなかにある該当する製品の在庫数(STOCKフィールドの値)を入庫数分だけ増やす(Fig.6-65)。

Fig.6-65 入庫が施行されたときの処理
fig6_65

 出庫が施行されたときにも,入庫が施行されたときの処理と同様に,出庫予定レコードのDUEDATEフィールドに出庫が施行された日時を格納し,CONFIRMEDFLAGフィールドの値をTrueにする。そして,製品情報テーブルのなかにある該当する製品の在庫数(STOCKフィールドの値)ならびに予約数(BACKORDERフィールドの値)を,それぞれ出庫数分だけ減らす処理をする(Fig.6-66)。

Fig.6-66 出庫が施行されたときの処理
fig6_66

 上記のように,在庫の操作には入庫と出庫の2つの処理が含まれる。ただし,出庫は伝票と連動しているため,その処理の一部は「6.4 伝票管理処理」で説明することにして,ここでは主に入庫処理について考えてゆく。

prevpg.gif Chapter 6 42/92 nextpg.gif