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

head1.gif 6.4 伝票管理処理

 では次に,伝票を管理するBusiness.Slipコンポーネントに必要とされるメソッドについて考えよう。伝票管理はいままで考えてきた顧客管理や製品管理よりも若干複雑である。なぜなら,Fig.6-72に示すように,伝票は,伝票情報テーブル,明細情報テーブル,伝票追加情報テーブルという3つのテーブルで表現されるからである。

Fig.6-72 伝票を表現する3つのテーブル
fig6_72

head2.gif 6.4.1 伝票の作成
 まずは,伝票を作成するときにどのようなメソッドが必要であるのかを考えてみる。Fig.6-72に示したように,伝票は,伝票情報テーブル,明細情報テーブル,伝票追加情報テーブルの3つで構成される。このうち,伝票を作成するときに必要となるのは,伝票情報テーブルと伝票追加情報テーブルのみである。明細情報が存在しなくても伝票としては成立するから,明細情報テーブルは必須というわけではない。そこで,しばらくのあいだは明細情報テーブルの存在を無視することにし,伝票情報テーブルと伝票追加情報テーブルの2つについて考えてゆくことにする。

 すでに「3.2 データベーステーブルの設計」で述べたように,伝票情報テーブルはTable 6-14のように,伝票追加情報テーブルはTable 6-15のように,それぞれ定義した。

Table 6-14 伝票情報テーブル
フィールド名サイズNULL解説
ID数値型(オートナンバー)不可伝票を識別するための唯一無二の番号。伝票番号として使われる
CUSTOMERID数値型不可この伝票の対象となる顧客を示す顧客番号。顧客情報テーブルのIDフィールドに格納されているいずれかの値が格納される
MADEDATE日付型不可伝票の起票日
SUBTOTAL金銭型不可小計。この伝票に含まれるすべての注文の金額(税抜)を加えたもの
TAX金銭型不可消費税。現状では小計×1.05
TOTAL金銭型不可合計(税込金額)。小計+消費税
BILLID数値型この伝票を集計結果として含む請求書の請求書番号。請求書情報テーブルのIDフィールドに格納されているいずれかの値が格納される。未集計のときにはNULLが格納される
BILLDATE日付型この伝票を集計結果として含む請求書が作られた日時
MADEBILLFLAGBoolean型この伝票を集計結果として含む請求書が作られているかどうかのフラグ。Trueで請求書が作られていることを,Falseで作られていないことを示す
ONEBILLFLAGBoolean型この伝票に対して独立した請求書を作るかどうかのフラグ。Trueで独立した請求書を作ることを,Falseで月単位で集計した請求書に含めることを示す
REQ_CONSENTFLAGBoolean型承認の依頼をしているかどうかのフラグ。Trueで承認依頼中,Falseで承認依頼をまだしていないことを示す
REQ_CONSENTDATE日付型承認依頼をした日時
REQ_CONSENTCOMMENT文字型承認依頼時のコメント。営業部上司へのコメントとなる
CONSENTEDFLAGBoolean型承認したかどうかのフラグ。Trueで承認した,Falseで承認していないことを示す。通常は営業部の上司が設定するが,伝票の取引額が一定以下であり上司の承認が不要である伝票については,システム側でこのフラグをTrueに設定する
CONSENTEDDATE日付型承認された日時
CONSENTEDCOMMENT文字型80承認の際のコメント
REJECTEDFLAGBoolean型上司によって却下されたかどうかを示すフラグ。Trueで却下されたことを,Falseで却下されていないことを示す
REJECTEDDATE日付型却下された日時
REJECTEDCOMMENT文字型80却下理由
SENDFLAGBoolean型この伝票に含まれている製品が発送されたかどうかのフラグ。Trueで発送ずみであることを,Falseで未発送であることを示す
SENDDATE日付型発送日
SENDCOMMENT文字型80発送の際のコメント
ACCOUNTINGFLAGBoolean型経理部がその伝票をチェックしたかどうかのフラグ。チェックしたならばTrue,まだチェックしていなければFalse。このフラグがTrueになると,それが請求書を作成する際に集計の対象となる
ACCOUNTINGDATE日付型経理部が伝票をチェックした日
ACCOUNTINGCOMMENT文字型80経理部のコメント
MADEUSER文字型256不可この伝票を起票したユーザーのアカウント名
REQ_CONSENTUSER文字型256この伝票を承認依頼したユーザーのアカウント名
CONSENTEDUSER文字型256この伝票を承認したユーザーのアカウント名
REJECTEDUSER文字型256この伝票を却下したユーザーのアカウント名
SENDUSER文字型256発送処理をしたユーザーのアカウント名
ACCOUNTINGUSER文字型256経理処理をしたユーザーのアカウント名
LASTUSER文字型256不可最終更新者のアカウント名
LASTDATE日付型不可最終更新日
DELETEDFLAGBoolean型削除されたかどうかのフラグ。Trueで削除されたことを,Falseで削除されていないことを示す
Table 6-15 伝票追加情報テーブル
フィールド名サイズNULL解説
ID数値型(オートナンバー)不可レコードを識別するための唯一無二の番号
SLIPID数値型不可この情報と結び付けられている伝票の伝票番号。伝票テーブルのIDフィールドに格納されているいずれかの値が格納される
DIVISION文字型64顧客側の部署名
PERSON文字型64顧客側の担当者名
DELIVERDATE日付型納入予定日
SENT_ADDR文字型255発送先の住所。製品管理部が製品をこの住所に発送する
SENT_TEL文字型32発送先の電話番号。製品管理部が製品発送の際の連絡用として用いる
MEMO文字型80摘要
MADEDATE日付型不可伝票の起票日
MADEUSER文字型256不可この伝票を起票したユーザーのアカウント名
LASTDATE日付型不可最終更新日
LASTUSER文字型256不可最終更新者のアカウント名
DELETEDFLAGBoolean型削除されたかどうかのフラグ。Trueで削除されたことを,Falseで削除されていないことを示す
prevpg.gif Chapter 6 52/92 nextpg.gif