List 6-168 Business.SlipコンポーネントのCancelAccountingSlipメソッド
1: Public Sub CancelAccountingSlip(ByVal SlipID)
2: ' 指定された伝票を経理処理ずみから発送ずみに戻す
3: ' 【引数】
4: ' SlipID = 発送ずみに戻したい伝票の伝票番号
5: ' 【戻り値】
6: ' なし
7: Dim objContext As ObjectContext
8: Dim objDataSlip As DataObj.Slip
9: Dim old_ACCOUNTINGUSER As Variant, old_ACCOUNTINGDATE As Variant
10: Dim old_ACCOUNTINGCOMMENT As Variant
11: Dim old_SENDUSER As Variant, old_SENDDATE As Variant
12: Dim old_SENDCOMMENT As Variant
13: Dim SlipStatus As SlipStatus
14:
15: ' オブジェクトコンテキストの取得
16: Set objContext = GetObjectContext()
17:
18: ' エラーハンドラの設定
19: On Error GoTo ErrHandle
20:
21: ' DataObj.Slipコンポーネントの実体化
22: Set objDataSlip = CreateObject("DataObj.Slip")
23:
24: ' 伝票が存在することを確認
25: If objDataSlip.IsDeleted(SlipID) <> ID_Exists Then
26: ' 伝票が存在しない
27: Err.Raise Errorcode.Err_NOTFOUND, App.Title, _
"指定された伝票は存在しません"
28: End If
29:
30: ' 伝票の状態を取得
31: SlipStatus = objDataSlip.Get_SlipStatus(SlipID)
32: If (SlipStatus <> Accounted) Then
33: ' 伝票が経理処理ずみではない
34: Err.Raise BusinessError.ERR_CANTUPDATE, App.Title, _
"その伝票は経理処理ずみではありません"
35: End If
36:
37: ' 権限の確認
38: If Not objContext.IsSecurityEnabled() Then
39: ' セキュリティ設定が無効
40: Err.Raise ERR_NOSECURE, App.Title, _
"セキュリティ機構が無効です"
41: End If
42:
43: ' 経理処理ずみにしたユーザーの情報を取得
44: objDataSlip.GetRecord_Accounting SlipID, old_ACCOUNTINGUSER, _
old_ACCOUNTINGDATE, old_ACCOUNTINGCOMMENT
45: ' 経理処理ずみとしたユーザーと呼び出したユーザーが一致するか
46: If objContext.Security.GetOriginalCallerName() <> old_ACCOUNTINGUSER Then
47: ' 一致しない
48: ' AccountingAdminロールまたはAllAdminロールに属するのであれば,
49: ' 一致しなくてもよいものとする
50: If Not (objContext.IsCallerInRole("AccountingAdmin") Or _
objContext.IsCallerInRole("AllAdmin")) Then
51: ' AccountingAdminロールまたはAllAdminロールに属さない
52: Err.Raise ERR_NOSECURE, App.Title, _
"他人が経理処理ずみにした伝票を元に戻すことはできません"
53: End If
54: End If
55:
56: ' ACCOUNTINGFLAGフィールドの値をFalseにする
57: objDataSlip.Set_ACCOUNTINGFLAG SlipID, False, Null
58: ' SENDFLAGフィールドの値をTrueにする
59: objDataSlip.GetRecord_Send SlipID, old_SENDUSER, old_SENDDATE, old_SENDCOMMENT
60: objDataSlip.Set_SENDFLAG SlipID, True, old_SENDCOMMENT
61:
62: ' コンポーネントの解放
63: Set objDataSlip = Nothing
64:
65: ' トランザクションのコミット
66: objContext.SetComplete
67:
68: ' オブジェクトコンテキストの解放
69: Set objContext = Nothing
70:
71: Exit Sub
72:
73: ErrHandle:
74: ' エラーハンドラ
75: objContext.SetAbort
76: Set objDataSlip = Nothing
77:
78: ' エラーの再発行
79: Err.Raise Err.Number, Err.Source, Err.Description, _
Err.HelpFile, Err.HelpContext
80: End Sub