List 6-165 Business.SlipコンポーネントのSendSlipメソッド
1: Public Sub SendSlip(ByVal SlipID As Long, _
ByVal Comment As Variant)
2: ' 指定された伝票を発送ずみにする
3: ' 【引数】
4: ' SlipID = 発送ずみとしたい伝票の伝票番号
5: ' Comment = 発送ずみにするときのコメント
6: ' 【戻り値】
7: ' なし
8: Dim objContext As ObjectContext
9: Dim objDataSlip As DataObj.Slip
10: Dim objDataStock As DataObj.STOCK
11: Dim objDataProduct As DataObj.Product
12: Dim objRec As ADODB.Recordset
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 <> Consented) 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: If Not (objContext.IsCallerInRole("Products") Or _
objContext.IsCallerInRole("ProductsAdmin") Or _
objContext.IsCallerInRole("AllAdmin")) Then
44: ' Products,ProductsAdmin,AllAdminロールに属さない
45: Err.Raise ERR_NOSECURE, App.Title, _
"発送する権限がありません"
46: End If
47:
48: ' SENDFLAGフィールドの値をTrueにする
49: objDataSlip.Set_SENDFLAG SlipID, True, Comment
50: ' CONSENTEDFLAGフィールドの値をFalseにする
51: objDataSlip.Set_CONSENTEDFLAG SlipID, False, Null
52:
53:
54: ' DataObj.Stockコンポーネントの実体化
55: Set objDataStock = CreateObject("DataObj.Stock")
56: ' DataObj.Productコンポーネントの実体化
57: Set objDataProduct = CreateObject("DataObj.Product")
58:
59: ' この伝票から生じた出庫予定レコードを取得
60: Set objRec = objDataStock.GetRecordsBySlipID(SlipID)
61:
62: ' すべての出庫予定に対してループ
63: While Not objRec.EOF
64: ' 出庫予定レコードを施行ずみにする
65: objDataStock.SetConfirmedFlag objRec.Fields("ID").Value, True
66: ' 在庫数を減らす
67: '(NUMBERフィールドには負の数が入っている点に注意)
68: objDataProduct.AddStock objRec.Fields("PRODUCTID").Value, _
objRec.Fields("NUMBER").Value
69: ' 予約数を減らす
70: '(NUMBERフィールドには負の数が入っている点に注意)
71: objDataProduct.AddBackOrder objRec.Fields("PRODUCTID").Value, _
objRec.Fields("NUMBER").Value
72:
73: ' 次のレコードに移動
74: objRec.MoveNext
75: Wend
76:
77: objRec.Close
78: Set objRec = Nothing
79:
80: ' 各種コンポーネントの解放
81: Set objDataProduct = Nothing
82: Set objDataStock = Nothing
83: Set objDataSlip = Nothing
84:
85: ' トランザクションのコミット
86: objContext.SetComplete
87:
88: ' オブジェクトコンテキストの解放
89: Set objContext = Nothing
90:
91: Exit Sub
92:
93: ErrHandle:
94: ' エラーハンドラ
95: objContext.SetAbort
96: Set objDataSlip = Nothing
97: Set objDataStock = Nothing
98: Set objDataProduct = Nothing
99: Set objRec = Nothing
100:
101: ' エラーの再発行
102: Err.Raise Err.Number, Err.Source, Err.Description, _
Err.HelpFile, Err.HelpContext
103: End Sub