List 6-167 Business.SlipコンポーネントのAccountingSlipメソッド
  1: Public Sub AccountingSlip(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 SlipStatus As SlipStatus
 11:     
 12:     ' オブジェクトコンテキストの取得
 13:     Set objContext = GetObjectContext()
 14:     
 15:     ' エラーハンドラの設定
 16:     On Error GoTo ErrHandle
 17:     
 18:     ' DataObj.Slipコンポーネントの実体化
 19:     Set objDataSlip = CreateObject("DataObj.Slip")
 20:     
 21:     ' 伝票が存在することを確認
 22:     If objDataSlip.IsDeleted(SlipID) <> ID_Exists Then
 23:         ' 伝票が存在しない
 24:         Err.Raise Errorcode.Err_NOTFOUND, App.Title, _
                       "指定された伝票は存在しません"
 25:     End If
 26:     
 27:     ' 伝票の状態を取得
 28:     SlipStatus = objDataSlip.Get_SlipStatus(SlipID)
 29:     If (SlipStatus <> Send) Then
 30:         ' 伝票が発送ずみでない
 31:         Err.Raise BusinessError.ERR_CANTUPDATE, App.Title, _
                       "その伝票は発送ずみではありません"
 32:     End If
 33:     
 34:     ' 権限の確認
 35:     If Not objContext.IsSecurityEnabled() Then
 36:         ' セキュリティ設定が無効
 37:         Err.Raise ERR_NOSECURE, App.Title, _
                       "セキュリティ機構が無効です"
 38:     End If
 39:     
 40:     If Not (objContext.IsCallerInRole("Accounting") Or _
                 objContext.IsCallerInRole("AccountingAdmin") Or _
                 objContext.IsCallerInRole("AllAdmin")) Then
 41:         ' Accounting,AccountingAdmin,AllAdminロールに属さない
 42:         Err.Raise ERR_NOSECURE, App.Title, _
                       "経理処理する権限がありません"
 43:     End If
 44:     
 45:     ' ACCOUNTINGFLAGフィールドをTrueにする
 46:     objDataSlip.Set_ACCOUNTINGFLAG SlipID, True, Comment
 47:     ' SENDFLAGフィールドをFalseにする
 48:     objDataSlip.Set_SENDFLAG SlipID, False, Null
 49:     
 50:     ' コンポーネントの解放
 51:     Set objDataSlip = Nothing
 52:     
 53:     ' トランザクションのコミット
 54:     objContext.SetComplete
 55:     
 56:     ' オブジェクトコンテキストの解放
 57:     Set objContext = Nothing
 58:     
 59:     Exit Sub
 60:     
 61: ErrHandle:
 62:     ' エラーハンドラ
 63:     objContext.SetAbort
 64:     Set objDataSlip = Nothing
 65:     
 66:     ' エラーの再発行
 67:     Err.Raise Err.Number, Err.Source, Err.Description, _
                   Err.HelpFile, Err.HelpContext
 68: End Sub