List 6-113 Chk_Viewプロシージャ
  1: Public Sub Chk_View(ByRef objContext As ObjectContext, _
                         ByRef IsDeleted As DataObj.DELETEDFLAG, _
                         ByRef SlipStatus As DataObj.SlipStatus)
  2:     ' 参照権限があるかどうかを調査
  3:     
  4:     ' 存在するかどうか
  5:     If IsDeleted = ID_NotFound Then
  6:         ' 見つからない
  7:         Err.Raise Err_NOTFOUND, App.Title, _
                       "指定された伝票番号を持つ伝票が見つかりません"
  8:     End If
  9:     
 10:     ' セキュリティ機能が有効であることを調査
 11:     If Not objContext.IsSecurityEnabled() Then
 12:         ' セキュリティ設定が無効
 13:         Err.Raise ERR_NOSECURE, App.Title, _
                       "セキュリティ機構が無効です"
 14:     End If
 15:     
 16:     ' SalesManager,SalesAdmin,AllAdminロールに属すれば参照可能
 17:     If objContext.IsCallerInRole("SalesManager") Or _
            objContext.IsCallerInRole("SalesAdmin") Or _
            objContext.IsCallerInRole("AllAdmin") Then
 18:         ' SalesManagerロール,SalesAdminロール,AllAdminロールに所属
 19:         ' 以降のチェックは不要
 20:         Exit Sub
 21:     End If
 22:     
 23:     
 24:     ' 削除ずみかどうか
 25:     If IsDeleted = ID_Deleted Then
 26:         ' 削除ずみである
 27:         Err.Raise ERR_NOSECURE, App.Title, _
                       "指定された伝票番号を持つ伝票が存在しません"
 28:     End If
 29:     
 30:     ' 削除ずみでなければSalesロールに属すれば参照可能
 31:     If objContext.IsCallerInRole("Sales") Then
 32:         ' 以降のチェックは不要
 33:         Exit Sub
 34:     End If
 35:     
 36:     ' 伝票の状態を判定
 37:     If SlipStatus >= Consented Then
 38:         ' 承認ずみになっているならば,Productsロールや
 39:         ' ProductsAdminロールに属するユーザーは参照可能
 40:         If objContext.IsCallerInRole("Products") Or _
                objContext.IsCallerInRole("ProductsAdmin") Then
 41:             ' 以降のチェックは不要
 42:             Exit Sub
 43:         End If
 44:     End If
 45:     
 46:     If SlipStatus >= Send Then
 47:         ' 発送ずみになっているならば,Accountingロールや
 48:         ' AccountingAdminロールに属するユーザーは参照可能
 49:         If objContext.IsCallerInRole("Accounting") Or _
                objContext.IsCallerInRole("AccountingAdmin") Then
 50:             ' 以降のチェックは不要
 51:             Exit Sub
 52:         End If
 53:     End If
 54: End Sub