この特集のトップページへ
>
Chapter 3:データストア層の構築
3.2.5 伝票の流れ
以上で,「3.1.2 全体構造」で説明したデータベーステーブルは一通り構築したことになるが,まだもう少しデータベーステーブルを考慮する必要がある。考慮すべき問題の1つは伝票の流れを管理することであり,もう1つは在庫のチェック機構を設けることである。在庫のチェック機構については「3.2.6 在庫処理」で説明することにして,ここでは伝票の流れについて考えよう。
「3.1 構築するアプリケーションモデル」で説明したように,伝票は営業部で作成され,製品管理部に流れ,製品が発送されたのちに経理部に流れる。この流れをデータベーステーブルに保存しておく必要がある。そうしないと,営業部のメンバーが書きかけの伝票を製品管理部のメンバーが参照して誤って発送してしまったり,または製品管理部のメンバーが製品を発送していないにもかかわらず経理部のメンバーが請求書を発行してしまったりすることになりかねない。
そこで,伝票情報テーブルに,その時点における伝票の状態と,状態が変化した日時とを保存するフィールドを追加する(Table 3-10)。
Table 3-10 伝票の状態を追加した伝票情報テーブル
フィールド名 |
型 |
サイズ |
NULL |
解説 |
ID |
数値型 |
− |
不可 |
伝票を識別するための唯一無二の番号。伝票番号として使われる |
CUSTOMERID |
数値型 |
− |
不可 |
この伝票の対象となる顧客を示す顧客番号。顧客情報テーブルのIDフィールドに格納されているいずれかの値が格納される |
MADEDATE |
日付型 |
− |
不可 |
伝票の起票日 |
DIVISION | 文字型 | 64 | 可 | 顧客側の部署名 |
PERSON | 文字型 | 64 | 可 | 顧客側の担当者名 |
DELIVERDATE | 日付型 | − | 不可 | 納入予定日 |
SENT_ADDR | 文字型 | 255 | 可 | 発送先の住所。製品管理部が製品をこの住所に発送する |
SENT_TEL | 文字型 | 32 | 可 | 発送先の電話番号。製品管理部が製品発送の際の連絡先として用いる |
SUBTOTAL |
金銭型 |
− |
不可 |
小計。この伝票に含まれるすべての注文の金額(税抜)を加えたもの |
TAX |
金銭型 |
− |
不可 |
消費税。現状では,小計×1.05 |
TOTAL |
金銭型 |
− |
不可 |
合計(税込金額)。小計+消費税 |
MEMO | 文字型 | 80 | 可 | 摘要 |
BILLID | 数値型 | − | 可 | この伝票を集計結果として含む請求書の請求書番号。請求書情報テーブルのIDフィールドに格納されているいずれかの値が格納される |
BILLDATE | 日付型 | − | 可 | この伝票を集計結果として含む請求書が作られた日 |
MADEBILLFLAG | Boolean型 | − | − | この伝票を集計結果として含む請求書が作られているかどうかのフラグ。Trueで請求書が作られていることを,Falseで作られていないことを示す |
ONEBILLFLAG | Boolean型 | − | − | この伝票に対して独立した請求書を作るかどうかのフラグ。Trueで独立した請求書を作ることを,Falseで月単位で集計した請求書に含めることを示す |
REQ_CONSENTFLAG | Boolean型 | − | − | 承認の依頼をしているかのフラグ。Trueで承認依頼中,Falseで承認依頼をまだしていないことを示す |
REQ_CONSENTDATE | 日付型 | − | 可 | 承認依頼をした日 |
REQ_CONSENTCOMMENT | 文字型 | 80 | 可 | 承認依頼時のコメント。営業部上司へのコメントとなる |
CONSENTEDFLAG | Boolean型 | − | − | 承認したかどうかのフラグ。Trueで承認した,Falseで承認していないことを示す。通常は営業部の上司が設定するが,伝票の取引額が一定以下であり上司の承認が不要である伝票については,システム側でこのフラグをTrueに設定する |
CONSENTEDDATE | 日付型 | − | 可 | 承認された日 |
CONSENTEDCOMMENT | 文字型 | 80 | 可 | 承認の際のコメント |
REJECTEDFLAG | Boolean型 | − | − | 上司によって却下されたかどうかを示すフラグ。Trueで却下されたことを,Falseで却下されていないことを示す |
REJECTEDDATE | 日付型 | − | 可 | 却下された日 |
REJECTEDCOMMENT | 文字型 | 80 | 可 | 却下理由 |
SENDFLAG | Boolean型 | − | − | この伝票に含まれている製品が発送されたかどうかのフラグ。Trueで発送ずみであることを,Falseで未発送であることを示す |
SENDDATE | 日付型 | − | 可 | 発送日 |
SENDCOMMENT | 文字型 | 80 | 可 | 発送の際のコメント |
ACCOUNTINGFLAG | Boolean型 | − | − | 経理部がその伝票をチェックしたかどうかのフラグ。チェックしたならばTrue,まだチェックしていなければFalse。このフラグがTrueになると,それが請求書を作成する際に集計の対象となる |
ACCOUNTINGDATE | 日付型 | − | 可 |
経理部が伝票をチェックした日 |
ACCOUNTINGCOMMENT | 文字型 | 80 | 可 | 経理部のコメント |
追加したフィールドの詳細は,次のとおりである。
- ○REQ_CONSENTFLAG,REQ_CONSENTDATE,REQ_CONSENTCOMMENT
- 営業部のメンバーが上司に承認を依頼するときに設定されるフィールドである。営業部のメンバーが上司に承認を依頼している最中はREQ_CONSENTFLAGフィールドをTrueに設定し,承認を依頼した日時をREQ_CONSENTDATEフィールドに設定する。REQ_CONSENTCOMMENTフィールドは,上司へのコメントを格納するためのものである。
- ○CONSENTEDFLAG,CONSENTEDDATE,CONSENTEDCOMMENT
- 営業部の上司が承認処理をするときに設定されるフィールドである。営業部の上司は,承認を依頼されている伝票(REQ_CONSENTFLAGフィールドがTrueの伝票)を参照し,不備がなければユーザーインタフェースに用意された[承認]といったボタンを押す。このとき,CONSENTEDFLAGフィールドにTrueを設定し,ボタンが押された日時をCONSENTEDDATEフィールドに設定する。CONSENTEDCOMMENTフィールドには,営業部の上司が入力した承認時のコメントを格納するものとする。
なお,「3.1 構築するアプリケーションモデル」で説明したように,このサンプルでは伝票の取引額が一定額以下のときには,上司の承認を得ずに直接製品管理部に伝票を回送できるようにする。この場合には,営業部の上司の承認はとらず,システム側で自動的にCONSENTEDFLAGフィールドをTrueにする。 - ○REJECTEDFLAG,REJECTEDDATE,REJECTEDCOMMENT
- 営業部の上司が承認処理をするときに設定されるフィールドである。営業部の上司は,承認を依頼されている伝票(REQ_CONSENTFLAGフィールドがTrueの伝票)を参照し,不備があったならばユーザーインタフェースに用意された[却下]といったボタンを押す。このときREJECTEDFLAGフィールドにTrueを設定し,ボタンが押された日時をREJECTEDFLAGフィールドに設定する。REJECTEDFLAGフィールドにTrueが設定された伝票は,却下として扱われ,営業部の部下に差し戻される。REJECTEDCOMMENTフィールドには営業部の上司が入力した却下理由を格納するものとする。
- ○SENDFLAG,SENDDATE,SENDCOMMENT
- 製品管理部が発送処理をするときに設定されるフィールドである。製品管理部のメンバーは,営業部から回ってきた承認ずみの伝票(CONSENTEDFLAGフィールドがTrueの伝票)を参照し,設定された納期(DELIVERDATEフィールドに格納された日時)が迫ったら,伝票に記載されている製品を発送する。そのうえで,SENDFLAGフィールドをTrueに設定し,その日時をSENDDATEフィールドに設定する。SENDCOMMENTフィールドには,製品発送時のコメントを格納する。
- ○ACCOUNTINGFLAG,ACCOUNTINGDATE,ACCOUNTINGCOMMENT
- 経理部が伝票をチェックするときに設定されるフィールドである。経理部のメンバーは,製品管理部から回ってきた発送ずみの伝票(SENDFLAGフィールドがTrueの伝票)を参照し,伝票をチェックする。このとき,ACCOUNTINGFLAGフィールドにTrueを設定し,その日時をACCOUNTINGDATEフィールドに設定する。もし伝票ごとに独立した請求書を作りたい場合には,ここでONEBILLFLAGフィールドにTrueを設定する(「3.2.4 請求書情報テーブル」を参照)。ACCOUNTINGCOMMENTフィールドには,経理部のコメントを格納する。
ACCOUNTINGFLAGフィールドがTrueに設定された伝票は,自動的に集計され,請求書が作られることになる。
以上の説明からもわかるように,伝票ごとに独立した請求書を作成するときには,経理部のメンバーがその旨を把握していなければならない。常にそのような請求書を作成する場合はともかくとして,受注時に営業部のメンバーが顧客からその旨を依頼された場合,あるいは営業部のメンバーが単発的な受注であると判断した場合などには,営業部のメンバーが起票するときに「請求書を伝票ごとに発行してほしい」などとREQ_CONSENTCOMMENTフィールドに記入しなければならない。
以上の各フィールドの値と伝票の流れとの関係を図示すると,Fig.3-11のようになる。
Fig.3-11 伝票情報テーブルのフィールドと伝票の流れとの関係
以上のようにして伝票の状態を管理することによって,書きかけの伝票をもとにして製品が発送されてしまったり,経理部が確認していない伝票が請求書に含まれてしまったりすることがなくなる。
Chapter 3 9/17 |