List 6-192 Business.BillコンポーネントのCancelSubmitBillメソッド
1: Public Sub CancelSubmitBill(ByVal BillID As Long)
2: ' 指定された請求書を入金ずみから送付ずみにまで戻す
3: ' 【引数】
4: ' BillID = 請求書送付ずみに戻したい請求書の請求書番号
5: ' 【戻り値】
6: ' なし
7: Dim objContext As ObjectContext
8: Dim objDataBill As DataObj.Bill
9: Dim old_CUSTOMERID As Variant, old_STARTDATE As Variant
10: Dim old_ENDDATE As Variant, old_SUBTOTAL As Variant
11: Dim old_TAX As Variant, old_TOTAL As Variant
12: Dim old_SENDBILLFLAG As Variant, old_PAIDFLAG As Variant
13: Dim old_SUBMITUSER As Variant, old_SUBMITDATE As Variant
14: Dim old_MEMO As Variant, old_MADEUSER As Variant
15: Dim old_MADEDATE As Variant, old_LASTUSER As Variant
16: Dim old_LASTDATE As Variant
17:
18: ' オブジェクトコンテキストの取得
19: Set objContext = GetObjectContext()
20:
21: ' エラーハンドラの設定
22: On Error GoTo ErrHandle
23:
24: ' DataObj.Billコンポーネントを実体化
25: Set objDataBill = CreateObject("DataObj.Bill")
26:
27: ' 請求書の状態を取得
28: If objDataBill.Get_BillStatus(BillID) <> BILL_Paid Then
29: ' 入金ずみではない
30: Err.Raise BusinessError.ERR_CANTUPDATE, App.Title, _
"指定された請求書は入金ずみではありません"
31: End If
32:
33: ' ユーザーの確認
34: If Not objContext.IsSecurityEnabled() Then
35: ' セキュリティ設定が無効
36: Err.Raise Err_NOSECURE, App.Title, _
"セキュリティ機構が無効です"
37: End If
38:
39: ' 現在の情報を取得
40: objDataBill.GetRecord BillID, old_CUSTOMERID, old_STARTDATE, old_ENDDATE, _
old_SUBTOTAL, old_TAX, old_TOTAL, old_SENDBILLFLAG, _
old_PAIDFLAG, old_SUBMITUSER, old_SUBMITDATE, _
old_MEMO, old_MADEUSER, old_MADEDATE, old_LASTUSER, _
old_LASTDATE
41:
42: ' 入金処理したユーザーは,このメソッドを呼び出したユーザーと一致するかどうかを判定
43: If objContext.Security.GetOriginalCallerName() <> old_SUBMITUSER Then
44: ' 一致しない
45: ' AccountingAdminロール,AllAdminロールならOK
46: If Not (objContext.IsCallerInRole("AccountingAdmin") Or _
objContext.IsCallerInRole("AllAdmin")) Then
47: ' AccountingAdminロールやAllAdminロールに属さない
48: Err.Raise Err_NOSECURE, App.Title, _
"他人が入金ずみとした請求書を変更することはできません"
49: End If
50: End If
51:
52: ' 以上で権限の調査が完了
53:
54: ' PAIDFLAGフィールドの値をFalseにする
55: objDataBill.Set_PAIDFLAG BillID, False, Null
56: ' SENDBILLFLAGフィールドの値をTrueにする
57: objDataBill.Set_SENDBILLFLAG BillID, True
58:
59: ' DataObj.Billコンポーネントの解放
60: Set objDataBill = Nothing
61:
62: ' トランザクションのコミット
63: objContext.SetComplete
64:
65: ' オブジェクトコンテキストの解放
66: Set objContext = Nothing
67:
68: Exit Sub
69:
70: ErrHandle:
71: ' エラーハンドラ
72: objContext.SetAbort
73:
74: Set objDataBill = Nothing
75: Set objContext = Nothing
76:
77: ' エラーの再発行
78: Err.Raise Err.Number, Err.Source, Err.Description, _
Err.HelpFile, Err.HelpContext
79: End Sub