List 6-129 Business.SlipコンポーネントのDeleteSlipDetailメソッド
1: Public Function DeleteSlipDetail(ByVal ID As Variant)
2: ' 指定された明細情報を削除する
3: ' 【引数】
4: ' ID = 削除したい明細のレコードID
5: ' 【戻り値】
6: ' なし
7: Dim objContext As ObjectContext
8: Dim objDataSlip As DataObj.Slip, objDataSlipDetail As DataObj.SlipDetail
9: Dim old_CUSTOMERID As Variant, old_SUBTOTAL As Variant, old_TAX As Variant
10: Dim old_TOTAL As Variant, old_MADEDATE As Variant, old_MADEUSER As Variant
11: Dim old_LASTUSER As Variant, old_LASTDATE As Variant
12: Dim SUBTOTAL As Currency, TAX As Currency, TOTAL As Currency
13: Dim SlipID As Long
14:
15: ' オブジェクトコンテキストの確認
16: Set objContext = GetObjectContext()
17:
18: ' エラーハンドラの設定
19: On Error GoTo ErrHandle
20:
21: ' 現在の明細を削除
22: ' DataObj.SlipDetailコンポーネントの実体化
23: Set objDataSlipDetail = CreateObject("DataObj.SlipDetail")
24:
25: SlipID = objDataSlipDetail.SetDeleted(ID)
26:
27: ' DataObj.Slipコンポーネントの実体化
28: Set objDataSlip = CreateObject("DataObj.Slip")
29:
30: ' 削除されていないことを確認
31: If objDataSlip.IsDeleted(SlipID) <> ID_Exists Then
32: Err.Raise Errorcode.Err_NOTFOUND, App.Title, _
"指定された伝票番号を持つ伝票が見つかりません"
33: End If
34:
35: ' 伝票の現在の状態が承認待ち以上であれば編集は不可
36: If objDataSlip.Get_SlipStatus(SlipID) >= RequestingConsent Then
37: Err.Raise ERR_CANTUPDATE, App.Title, _
"承認待ち以上まで進んでいるため変更できません"
38: End If
39:
40: ' 伝票の現在の状態を確認
41: objDataSlip.GetRecord_Slip SlipID, old_CUSTOMERID, _
old_SUBTOTAL, old_TAX, old_TOTAL, _
old_MADEDATE, old_MADEUSER, _
old_LASTDATE, old_LASTUSER
42:
43: ' 変更する権限があるかどうかをチェック
44: If Not objContext.IsSecurityEnabled() Then
45: ' セキュリティ設定が無効
46: Err.Raise ERR_NOSECURE, App.Title, _
"セキュリティ機構が無効です"
47: End If
48:
49: ' 作成者と呼び出し者が一致するか
50: If objContext.Security.GetOriginalCallerName() <> old_MADEUSER Then
51: ' 一致しない
52: ' SalesManagerロール,SalesAdminロール,AllAdminロールに属するのであれば,
53: ' 一致しなくてもよいものとする
54: If Not (objContext.IsCallerInRole("SalesManager") Or _
objContext.IsCallerInRole("SalesAdmin") Or _
objContext.IsCallerInRole("AllAdmin")) Then
55: ' SalesManagerロール,SalesAdminロール,AllAdminロールに属さない
56: Err.Raise ERR_NOSECURE, App.Title, _
"他人が作成した伝票を更新することはできません"
57: End If
58: End If
59:
60: ' 伝票の合計の再計算
61: SUBTOTAL = objDataSlipDetail.GetSubTotal(SlipID)
62: TAX = SUBTOTAL * 0.05
63: TOTAL = SUBTOTAL + TAX
64: objDataSlip.SetTotal SlipID, SUBTOTAL, TAX, TOTAL
65:
66: ' コンポーネントの解放
67: Set objDataSlipDetail = Nothing
68: Set objDataSlip = Nothing
69:
70: ' トランザクションをコミット
71: objContext.SetComplete
72:
73: ' オブジェクトコンテキストの解放
74: Set objContext = Nothing
75:
76: Exit Function
77:
78: ErrHandle:
79: ' エラーハンドラ
80: objContext.SetAbort
81: Set objContext = Nothing
82: Set objDataSlip = Nothing
83: Set objDataSlipDetail = Nothing
84:
85: ' エラーの再発行
86: Err.Raise Err.NUMBER, Err.Source, Err.Description, _
Err.HelpFile, Err.HelpContext
87: End Function