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

head2.gif 6.6.5 請求書の送付ならびに入金確認処理
 次に請求書の送付と入金の確認処理を実装する。

●送付ずみにする
 最初に,請求書の状態を送付ずみにする処理から実装する。請求書の状態を送付ずみにするためには,請求書レコードのSENDBILLFLAGフィールドをTrueにする。

 そのためのメソッドをSet_SENDBILLFLAGという名前でDataObj.Billコンポーネントに実装する(List 6-187)。Set_SENDBILLFLAGメソッドの引数には,請求書番号とSENDBILLFLAGフィールドに設定したい値(TrueFalseかのいずれか)を指定する。すると,指定された請求書のSENDBILLFLAGフィールドの値が指定した値に変更される。請求書の状態を送付ずみにするためには,第2引数にTrueを渡せばよい。

 次に,Set_SENDBILLFLAGメソッド(List 6-187)を使って請求書の状態を送付ずみにするメソッドを実装する。ここでは,このメソッドをビジネスロジックであるBusiness.BillコンポーネントにSendBillという名前で実装した(List 6-188)。SendBillメソッドでは,DataObj.BillコンポーネントのGet_BillStatusメソッド(List 6-178)を呼び出し,伝票が作成ずみの状態であることを確認したあと,Set_SENDBILLFLAGメソッド(List 6-187)を呼び出し,SENDBILLFLAGフィールドの値をTrueに変更する。

 また,誤って送付ずみにしてしまった請求書をもとの状態に戻すためのメソッドも必要となるだろう。そのようなメソッドを,Business.BillコンポーネントにCancelSendBillという名前で実装する(List 6-189)。

 なお,SendBillメソッドならびにCancelSendBillメソッドは,プログラム内でセキュリティを調査していない。その代わり,Accountingロール,AccountingAdminロール,AllAdminロールに属するユーザーしか実行できないように[コンポーネントサービス]管理ツールで設定する。これにより,経理部に属するユーザーまたは管理者以外はこのメソッドを利用できないようになる。


One Point!CancelSendBillメソッドの利用許可を,経理部のユーザーであることを示すAccountingロールに与えるのは,やや問題があるかもしれない。場合によっては,AccountingAdminロールとAllAdminロールといった管理者ロールのみに絞ったほうがよいこともあるだろう。次章から説明するプレゼンテーション層では,請求書を印刷するときにSendBillメソッドを使い,送付ずみというマークを付ける予定である。印刷時には紙詰まりなどが発生することもあるため,いったん送付ずみというマークを指定したものであっても,容易にもとに戻せないと困る。そこで,ここではCancelSendBillメソッドはAccountingロールに利用許可を与え,誰でも送付ずみの請求書をもとに戻すことができるという設計にした。

●入金ずみにする
 次に,請求書の状態を入金ずみにする処理を実装する。入金ずみにする処理も請求書を送付ずみにする処理とほぼ同じである。まず,PAIDFLAGフィールドを変更するためのSet_PAIDFLAGメソッドをDataObj.Billコンポーネントに実装する(List 6-190)。Set_PAIDFLAGメソッドでは,PAIDFLAGフィールドを設定するとともに,摘要を示すMEMOフィールドの値も引数で指定できるようにした。また,このメソッドを呼び出したユーザーのアカウント名をSUBMITUSERフィールドに,呼び出した日時をSUBMITDATEフィールドに,それぞれ格納するようにしておいた(46〜57行目)。

 次に,Set_PAIDFLAGメソッドを用い,指定された請求書の状態を入金ずみとするSubmitBillメソッドと,入金ずみとした請求書の状態を請求書送付ずみに戻すCancelSubmitBillメソッドを,それぞれBusiness.Billコンポーネントに加える(List 6-191List 6-192)。

 List 6-192CancelSubmitBillメソッドでは,入金ずみとしたユーザー(SUBMITUSERフィールドに格納されているアカウント名と一致するユーザー)か,AccoutingAdminロールまたはAllAdminロールに属するユーザー以外は,入金ずみの請求書をもとに戻せないようにした(43〜50行目)。

 また,SubmitBillメソッド(List 6-191)は,プログラム内でセキュリティを調査していない。その代わりに,Accountingロール,AccountingAdminロール,AllAdminロールに属するユーザーしかこのメソッドを実行できないように,[コンポーネントサービス]管理ツールで設定する。これにより,経理部に属するユーザーまたは管理者以外はこのメソッドを利用できないようになる。

prevpg.gif Chapter 6 87/92 nextpg.gif