The following lines contain the word 'select', 'insert', 'update' or 'delete':
IF p_function_name = 'PA_PM_UPDATE_PROJECT' AND
G_Update_Project IS NOT NULL THEN
p_function_allowed := G_Update_Project;
IF p_function_name = 'PA_PM_DELETE_PROJECT' AND
G_Delete_Project IS NOT NULL THEN
p_function_allowed := G_Delete_Project;
IF p_function_name = 'PA_PM_UPDATE_PROJ_PROGRESS' AND
G_Update_Proj_Progress IS NOT NULL THEN
p_function_allowed := G_Update_Proj_Progress;
IF p_function_name = 'PA_PM_UPDATE_TASK' AND
G_Update_Task IS NOT NULL THEN
p_function_allowed := G_Update_Task;
IF p_function_name = 'PA_PM_DELETE_TASK' AND
G_Delete_Task IS NOT NULL THEN
p_function_allowed := G_Delete_Task;
IF p_function_name = 'PA_PM_UPDATE_BUDGET' AND
G_Update_Budget IS NOT NULL THEN
p_function_allowed := G_Update_Budget;
IF p_function_name = 'PA_PM_DELETE_DRAFT_BUDGET' AND
G_Delete_Draft_Budget IS NOT NULL THEN
p_function_allowed := G_Delete_Draft_Budget;
IF p_function_name = 'PA_PM_UPDATE_BUDGET_LINE' AND
G_Update_Budget_Line IS NOT NULL THEN
p_function_allowed := G_Update_Budget_Line;
IF p_function_name = 'PA_PM_DELETE_BUDGET_LINE' AND
G_Delete_Budget_Line IS NOT NULL THEN
p_function_allowed := G_Delete_Budget_Line;
IF p_function_name = 'PA_PM_UPDATE_EARNED_VALUE' AND
G_Update_Earned_Value IS NOT NULL THEN
p_function_allowed := G_Update_Earned_Value;
IF p_function_name = 'PA_PM_UPDATE_RESOURCE_LIST' AND
G_Update_Res_List IS NOT NULL THEN
p_function_allowed := G_Update_Res_List;
IF p_function_name = 'PA_PM_DELETE_RESOURCE_LIST' AND
G_Delete_Res_List IS NOT NULL THEN
p_function_allowed := G_Delete_Res_List;
G_Update_Res_List_Member IS NOT NULL THEN
p_function_allowed := G_Update_Res_List_Member;
G_Delete_Res_List_Member IS NOT NULL THEN
p_function_allowed := G_Delete_Res_List_Member;
IF p_function_name = 'PA_AF_DELETE_AGREEMENT' AND
G_Delete_Agreement IS NOT NULL THEN
p_function_allowed := G_Delete_Agreement;
IF p_function_name = 'PA_AF_UPDATE_AGREEMENT' AND
G_Update_Agreement IS NOT NULL THEN
p_function_allowed := G_Update_Agreement;
IF p_function_name = 'PA_AF_DELETE_FUNDING' AND
G_Delete_Funding IS NOT NULL THEN
p_function_allowed := G_Delete_Funding;
IF p_function_name = 'PA_AF_UPDATE_FUNDING' AND
G_Update_Funding IS NOT NULL THEN
p_function_allowed := G_Update_Funding;
IF p_function_name = 'PA_PM_UPDATE_PROJECT' THEN
G_Update_Project := p_function_allowed;
IF p_function_name = 'PA_PM_DELETE_PROJECT' THEN
G_Delete_Project := p_function_allowed;
IF p_function_name = 'PA_PM_UPDATE_PROJ_PROGRESS' THEN
G_Update_Proj_Progress := p_function_allowed;
IF p_function_name = 'PA_PM_UPDATE_TASK' THEN
G_Update_Task := p_function_allowed;
IF p_function_name = 'PA_PM_DELETE_TASK' THEN
G_Delete_Task := p_function_allowed;
IF p_function_name = 'PA_PM_UPDATE_BUDGET' THEN
G_Update_Budget := p_function_allowed;
IF p_function_name = 'PA_PM_DELETE_DRAFT_BUDGET' THEN
G_Delete_Draft_Budget := p_function_allowed;
IF p_function_name = 'PA_PM_UPDATE_BUDGET_LINE' THEN
G_Update_Budget_Line := p_function_allowed;
IF p_function_name = 'PA_PM_DELETE_BUDGET_LINE' THEN
G_Delete_Budget_Line := p_function_allowed;
IF p_function_name = 'PA_PM_UPDATE_EARNED_VALUE' THEN
G_Update_Earned_Value := p_function_allowed;
IF p_function_name = 'PA_PM_UPDATE_RESOURCE_LIST' THEN
G_Update_Res_List := p_function_allowed;
IF p_function_name = 'PA_PM_DELETE_RESOURCE_LIST' THEN
G_Delete_Res_List := p_function_allowed;
G_Update_Res_List_Member := p_function_allowed;
G_Delete_Res_List_Member := p_function_allowed;
IF p_function_name = 'PA_AF_DELETE_AGREEMENT' THEN
G_Delete_Agreement := p_function_allowed ;
IF p_function_name = 'PA_AF_UPDATE_AGREEMENT' THEN
G_Update_Agreement := p_function_allowed ;
IF p_function_name = 'PA_AF_DELETE_FUNDING' THEN
G_Delete_Funding := p_function_allowed ;
IF p_function_name = 'PA_AF_UPDATE_FUNDING' THEN
G_Update_Funding := p_function_allowed ;
2. Checks if the user has QUERY and UPDATE permissions on the given project
3. For the given function name whether function security exists or not.
If any of the checks fail, 'F' is returned and if the user has all the required
permissions / function security, 'T' is returned.
This API is called from all BUDGETS AMG APIs.
This procedure internally calls:
1. pa_security.initialize
2. pa_security.allow_query
3. check_function_security
Created : 25-Dec-2002 bvarnasi
15-Sep-03 vejayara As part of PCS changes, the function security check is done based
on the plan type. Refer bug for more details
*/
PROCEDURE CHECK_BUDGET_SECURITY (
p_api_version_number IN NUMBER,
p_project_id IN PA_PROJECTS_ALL.PROJECT_ID%TYPE,
p_fin_plan_type_id IN PA_FIN_PLAN_TYPES_B.FIN_PLAN_TYPE_ID%TYPE,
p_calling_context IN VARCHAR2,
p_function_name IN VARCHAR2,
p_version_type IN VARCHAR2,
x_return_status OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
x_ret_code OUT NOCOPY VARCHAR2 ) IS --File.Sql.39 bug 4440895
l_api_version_number CONSTANT NUMBER := 1.0;
ELSIF pa_security.allow_update (x_project_id => p_project_id ) = 'N' THEN
IF p_pa_debug_mode = 'Y' THEN
pa_debug.g_err_stage := 'Update Permission does not exist for project id '||p_project_id;
ELSIF p_function_name = 'PA_PM_DELETE_DRAFT_BUDGET' THEN
PA_PM_FUNCTION_SECURITY_PUB.check_function_security(
p_api_version_number => p_api_version_number,
p_responsibility_id => l_resp_id,
p_function_name => 'PA_PM_DELETE_DRAFT_BUDGET',
p_msg_count => l_msg_count,
p_msg_data => l_msg_data,
p_return_status => x_return_status,
p_function_allowed => l_ret_code);
pa_debug.g_err_stage := 'PA_PM_DELETE_DRAFT_BUDGET : '||x_ret_code;
ELSIF p_function_name = 'PA_PM_UPDATE_BUDGET' THEN
PA_PM_FUNCTION_SECURITY_PUB.check_function_security(
p_api_version_number => p_api_version_number,
p_responsibility_id => l_resp_id,
p_function_name => 'PA_PM_UPDATE_BUDGET',
p_msg_count => l_msg_count,
p_msg_data => l_msg_data,
p_return_status => x_return_status,
p_function_allowed => l_ret_code);
pa_debug.g_err_stage := 'PA_PM_UPDATE_BUDGET : '||x_ret_code;
ELSIF p_function_name = 'PA_PM_DELETE_BUDGET_LINE' THEN
PA_PM_FUNCTION_SECURITY_PUB.check_function_security(
p_api_version_number => p_api_version_number,
p_responsibility_id => l_resp_id,
p_function_name => 'PA_PM_DELETE_BUDGET_LINE',
p_msg_count => l_msg_count,
p_msg_data => l_msg_data,
p_return_status => x_return_status,
p_function_allowed => l_ret_code);
pa_debug.g_err_stage := 'PA_PM_DELETE_BUDGET_LINE : '||x_ret_code;
ELSIF p_function_name = 'PA_PM_UPDATE_BUDGET_LINE' THEN
PA_PM_FUNCTION_SECURITY_PUB.check_function_security(
p_api_version_number => p_api_version_number,
p_responsibility_id => l_resp_id,
p_function_name => 'PA_PM_UPDATE_BUDGET_LINE',
p_msg_count => l_msg_count,
p_msg_data => l_msg_data,
p_return_status => x_return_status,
p_function_allowed => l_ret_code);
pa_debug.g_err_stage := 'PA_PM_UPDATE_BUDGET_LINE : '||x_ret_code;
p_function_name = 'PA_PM_DELETE_DRAFT_BUDGET' OR
p_function_name = 'PA_PM_UPDATE_BUDGET' OR
p_function_name = 'PA_PM_ADD_BUDGET_LINE' OR
p_function_name = 'PA_PM_DELETE_BUDGET_LINE' OR
p_function_name = 'PA_PM_UPDATE_BUDGET_LINE' THEN
-- In case of FINPLAN, check fn security for COST or ALL version
IF p_version_type = PA_FP_CONSTANTS_PKG.G_VERSION_TYPE_COST OR
p_version_type = PA_FP_CONSTANTS_PKG.G_VERSION_TYPE_ALL THEN
IF l_plan_class = 'APPROVED_BUDGET' THEN
l_function_name := 'PA_FP_APP_BDGT_MNT_COST_PLAN';
ELSIF p_function_name = 'PA_PM_DELETE_BASELINE_BUDGET' THEN
IF l_plan_class = 'APPROVED_BUDGET' THEN
l_function_name := 'PA_FP_DEL_BSLN_APPRVD_BDGT';
ELSIF p_function_name = 'PA_PM_UPDATE_CHG_DOC' THEN -- for maintaing CI versions
-- check fn security for COST or ALL version
IF p_version_type = PA_FP_CONSTANTS_PKG.G_VERSION_TYPE_COST OR
p_version_type = PA_FP_CONSTANTS_PKG.G_VERSION_TYPE_ALL THEN
l_function_name := 'PA_FP_MNT_CHG_DOC_COST_FIN_IMP';