Sei sulla pagina 1di 9

CREATE OR REPLACE PROCEDURE create_project(ERRBUF OUT VARCHAR2 ,RETCODE OUT VARCHAR2 ,P_PM_PRODUCT_CODE VARCHAR2 ,P_CREATE_FROM_PROJ_NUM VARCHAR2 ) IS m NUMBER := 0; a NUMBER

:= 0; b NUMBER := 0; parent_level1 VARCHAR2(30); parent_level2 VARCHAR2(30); v_task_index NUMBER; number_of_tasks1 NUMBER; number_of_tasks2 NUMBER; l_api_version_number NUMBER :=1.0 ; l_commit VARCHAR2(1):= 'F'; l_return_status VARCHAR2(1); l_init_msg_list VARCHAR2(1); l_msg_count NUMBER; l_msg_data VARCHAR2(2000); l_data VARCHAR2(2000); l_msg_index_out NUMBER; l_created_from_project_id NUMBER; l_pm_product_code VARCHAR2(10); l_project_name VARCHAR2(30); l_pm_project_reference VARCHAR2(25); l_project_status_code VARCHAR2(30); l_distribution_rule VARCHAR2(30); l_public_sector_flag VARCHAR2(1); l_carrying_out_organization_id NUMBER; l_start_date DATE; l_completion_date DATE; l_actual_start_date DATE; l_actual_finish_date DATE; l_early_start_date DATE; l_early_finish_date DATE; l_late_start_date DATE; l_late_finish_date DATE; l_project_role_type VARCHAR2(20); l_class_category VARCHAR2(30); l_class_code VARCHAR2(30); l_project_id NUMBER(15); l_workflow_started VARCHAR2(30); l_pa_project_number VARCHAR2(25); l_project_description VARCHAR2(250); l_customer_id NUMBER; l_person_id NUMBER; l_task_id NUMBER(15); l_pm_task_reference VARCHAR2(25); l_task_index NUMBER; l_tasks_in pa_project_pub.task_in_tbl_type; l_task_rec pa_project_pub.task_in_rec_type; l_key_member_rec pa_project_pub.project_role_rec_type; l_key_member_tbl pa_project_pub.project_role_tbl_type; l_task_return_status VARCHAR2(1); l_user_id number; l_responsibility_id number; l_temp_str VARCHAR2(2000); l_mesg_count NUMBER;

i NUMBER:=0; level1 number; API_ERROR EXCEPTION; CURSOR c_get_proj_dtl IS SELECT * FROM cumm_staging_proj; CURSOR c_get_task_dtl(p_project_number varchar2) IS SELECT * FROM cumm_staging_task WHERE project_number=p_project_number AND PARENT_TASK_STATUS='Y'; CURSOR c_get_sub_task_dtl(p_parent_task_number varchar2) IS SELECT * FROM cumm_staging_task WHERE project_number=p_parent_task_number AND PARENT_TASK_STATUS='N'; CURSOR c_get_player_dtl(p_project_number varchar2) IS SELECT * FROM cumm_key_mem_tbl WHERE project_number=p_project_number; BEGIN fnd_file.put_line(fnd_file.log,'Initializing Global Values'); BEGIN fnd_file.put_line(fnd_file.log,'Getting Global Values'); select user_id, responsibility_id into l_user_id, l_responsibility_id from pa_user_resp_v where user_name = 'MASTANVALI'; fnd_file.put_line(fnd_file.log,'Setting the Global Values'); pa_interface_utils_pub.set_global_info( p_api_version_number => 1.0, p_responsibility_id => l_responsibility_id, p_user_id => l_user_id, p_msg_count => l_msg_count, p_msg_data => l_msg_data, p_return_status => l_return_status); fnd_file.put_line(fnd_file.log,'End of Global Section'); EXCEPTION WHEN OTHERS THEN fnd_file.put_line(fnd_file.log,'Error while setting global variables : ' ||sqlcode||sqlerrm); END; fnd_file.put_line(fnd_file.log,'Initializing Project Data'); BEGIN fnd_file.put_line(fnd_file.log,'Template Project is : '||P_CREAT E_FROM_PROJ_NUM); SELECT project_id ,carrying_out_organization_id ,distribution_rule INTO l_created_from_project_id ,l_carrying_out_organization_id ,l_distribution_rule FROM pa_projects_v

WHERE segment1=p_create_from_proj_num; EXCEPTION WHEN OTHERS THEN fnd_file.put_line(fnd_file.log,'Error while setting global variables : ' ||sqlcode||sqlerrm); END; FOR proj IN c_get_proj_dtl LOOP BEGIN SELECT INTO FROM WHERE customer_id l_customer_id ra_customers customer_name=proj.CUSTOMER_NAME;

EXCEPTION WHEN OTHERS THEN fnd_file.put_line(fnd_file.log,'Customer Name is not found: '||sqlc ode||sqlerrm); END; fnd_file.put_line(fnd_file.log,'Initializing task info for project: '||p roj.project_number); BEGIN number_of_tasks1:=0; SELECT count(*) INTO number_of_tasks1 FROM cumm_staging_task WHERE project_number=proj.project_number AND PARENT_TASK_STATUS='Y'; --2 EXCEPTION WHEN OTHERS THEN fnd_file.put_line(fnd_file.log,'Error in Tasks' ||sqlcode ||'-'| |substr(sqlerrm,1,255)); END; fnd_file.put_line(fnd_file.log,'Number of Parent tasks: ' ||number_of _tasks1); FOR level1 IN 1..number_of_tasks1 LOOP FOR task IN c_get_task_dtl(proj.project_number) LOOP BEGIN i:=i+1; b:= 0; l_task_rec.pm_task_reference :=task.task_number; l_task_rec.task_name := task.task_name; l_task_rec.pm_parent_task_reference :=''; l_task_rec.task_start_date := task.task_start_date; l_task_rec.task_completion_date := task.task_end_date;

l_task_rec.actual_start_date := task.actual_start_date ; l_task_rec.actual_finish_date := task.actual_finish_da te; l_task_rec.early_start_date := task.early_start_date; l_task_rec.early_finish_date :=task.early_finish_date; l_task_rec.late_start_date := task.late_start_date; l_task_rec.late_finish_date := task.late_finish_date; l_task_rec.address_id := NULL; l_tasks_in(i):= l_task_rec; parent_level1:=task.task_number; fnd_file.put_line(fnd_file.log,'Parent level is: ' ||parent_leve l1); EXCEPTION WHEN OTHERS THEN fnd_file.put_line(fnd_file.log,'Error in Tasks' ||sqlcode ||'-'| |substr(sqlerrm,1,255)); END; BEGIN number_of_tasks2:=0; SELECT count(*) INTO number_of_tasks2 FROM cumm_staging_task WHERE task_number=task.task_number AND PARENT_TASK_STATUS='N'; --2 EXCEPTION WHEN OTHERS THEN fnd_file.put_line(fnd_file.log,'Error in Tasks' ||sqlcod e ||'-'||substr(sqlerrm,1,255)); END; fnd_file.put_line(fnd_file.log,'Number of Sub Tasks for Pare nt task: '||task.task_number||' is : ' ||number_of_tasks1); FOR sub_task IN c_get_sub_task_dtl(task.task_number) LOOP BEGIN --i:= i + 1; b:= b + 1; l_task_rec.pm_task_reference :=task.task_number; l_task_rec.task_name :=sub_task.task_name; l_task_rec.pm_parent_task_reference := parent_le vel1; l_tasks_in(a) := l_task_rec; --parent_level2 := a; EXCEPTION WHEN OTHERS THEN fnd_file.put_line(fnd_file.log,'a1 - Error ' ||sqlcode | |'-'||substr(sqlerrm,1,255)); END; END LOOP; END LOOP; END LOOP; ----Task loop

BEGIN fnd_file.put_line(fnd_file.log,'Initiating Project Creation'); pa_project_pub.init_project; EXCEPTION WHEN OTHERS THEN fnd_file.put_line(fnd_file.log,'Error while Setting init_project : '|| sqlcode||sqlerrm); END; BEGIN pa_project_pub.load_project( p_api_version_number => l_api_versi on_number ,p_return_status => l_return_status ,p_created_from_project_id => l_created_from_project_id ,p_project_name => proj.project_name ,p_description => proj.project_description ,p_pm_project_reference => proj.project_name ,p_pa_project_number =>proj.project_number ,p_carrying_out_organization_id =>l_carrying_out_organization_id ,p_public_sector_flag => l_public_sector_flag ,p_customer_id => l_customer_id ,p_project_status_code => proj.status_code ,p_start_date => proj.project_start_date ,p_completion_date => proj.project_end_date ,p_actual_start_date => proj.actual_start_date ,p_actual_finish_date => proj.actual_finish_date ,p_early_start_date => proj.early_start_date ,p_early_finish_date => proj.early_finish_date ,p_late_start_date => proj.late_start_date ,p_late_finish_date => proj.late_finish_date ,p_distribution_rule => l_distribution_rule); IF l_return_status != 'S' THEN fnd_file.put_line(fnd_file.log,'Error in Calling Load Project API' ||sql code ||'-'||substr(sqlerrm,1,255)); END IF; EXCEPTION WHEN OTHERS THEN fnd_file.put_line(fnd_file.log,'Error Load Project API' ||sqlcode ||'-'||substr(sqlerrm,1,255)); END; fnd_file.put_line(fnd_file.log,'Loading Key Member Info'); BEGIN FOR KEY in c_get_player_dtl(proj.project_number) LOOP m:=m+1; l_project_role_type :=key.PROJECT_ROLE_TYPE; SELECT person_id INTO l_person_id FROM per_people_v7 WHERE full_name=key.member_name AND current_employee_flag='Y'; l_key_member_rec.person_id :=l_person_id; l_key_member_rec.project_role_type :=key.PROJECT_ROLE_TYPE; l_key_member_tbl(m) := l_key_member_rec; pa_project_pub.load_key_member(

p_api_version_number => l_api_version_number ,p_return_status => l_return_status ,p_person_id => l_key_member_tbl(m).person_id ,p_project_role_type =>l_key_member_tbl(m).project_role_type); IF l_return_status != 'S' THEN fnd_file.put_line(fnd_file.log,'Error ' ||sqlcode ||'-'||substr( sqlerrm,1,255)); --RAISE API_ERROR; END IF; END LOOP; --end loop for load key member EXCEPTION WHEN OTHERS THEN fnd_file.put_line(fnd_file.log,'Error ' ||sqlcode ||'-'||substr( sqlerrm,1,255)); END; BEGIN fnd_file.put_line(fnd_file.log,'class_category: '||proj.class_c ategory); fnd_file.put_line(fnd_file.log,'class_code: '||proj.class_code) ; pa_project_pub.load_class_category( p_api_version_number => l_api_version_number ,p_return_status => l_return_status ,p_class_category =>proj.class_category ,p_class_code =>proj.class_code ); IF l_return_status != 'S' THEN fnd_file.put_line(fnd_file.log,'Error ' ||sqlcode ||'-'||substr( sqlerrm,1,255)); END IF; EXCEPTION WHEN OTHERS THEN fnd_file.put_line(fnd_file.log,'Error ' ||sqlcode ||'-'| |substr(sqlerrm,1,255)); END; fnd_file.put_line(fnd_file.log,'Loading Tasks'); BEGIN FOR a IN 1..i LOOP pa_project_pub.load_task( p_api_version_number => l_api_version_ number ,p_return_status => l_return_status ,p_pm_task_reference => l_tasks_in(a).pm_task_reference ,p_task_name => l_tasks_in(a).task_name ,p_pm_parent_task_reference =>l_tasks_in(a).pm_parent_task_refer ence ,p_task_start_date => l_tasks_in(a).task_start_date ,p_task_completion_date =>l_tasks_in(a).task_completion_date ,p_actual_start_date => l_tasks_in(a).actual_start_date ,p_actual_finish_date => l_tasks_in(a).actual_finish_date ,p_early_start_date => l_tasks_in(a).early_start_date ,p_early_finish_date => l_tasks_in(a).early_finish_date ,p_late_start_date => l_tasks_in(a).late_start_date ,p_late_finish_date => l_tasks_in(a).late_finish_date

,p_address_id => l_tasks_in(a).address_id); IF l_return_status != 'S' THEN fnd_file.put_line(fnd_file.log,'Error ' ||sqlcode ||'-'||substr( sqlerrm,1,255)); --RAISE API_ERROR; END IF; END LOOP; --end loop for load_task EXCEPTION WHEN OTHERS THEN fnd_file.put_line(fnd_file.log,'Error While Loading Tasks' ||sqlcode ||'-'||substr(sqlerrm,1,255)); END; fnd_file.put_line(fnd_file.log,'Execute Create Project'); BEGIN pa_project_pub.execute_create_project( p_api_version_number =>l_api_version_number ,p_commit => l_commit ,p_init_msg_list => 'F' ,p_msg_count => l_msg_count ,p_msg_data => l_msg_data ,p_return_status => l_return_status ,p_workflow_started => l_workflow_started ,p_pm_product_code => p_pm_product_code ,p_pa_project_id => l_project_id ,p_pa_project_number => l_pa_project_number); IF l_return_status <> fnd_api.g_ret_sts_success THEN l_mesg_count := fnd_msg_pub.count_msg; l_temp_str := NULL; IF (l_mesg_count > 0) THEN l_temp_str := SUBSTR (fnd_msg_pub.get (fnd_msg_pub.g_first,f nd_api.g_false),1,512); END IF; fnd_file.put_line (fnd_file.output,'"'|| l_project_id|| '"'| | ','|| '"'|| l_temp_str|| '"'); l_temp_str := NULL; END IF; EXCEPTION WHEN OTHERS THEN fnd_file.put_line(fnd_file.log,'Exception in Create Project' ||sqlc ode ||'-'||substr(sqlerrm,1,255)); END; fnd_file.put_line(fnd_file.log,'Fetching the Tasks'); BEGIN SELECT COUNT(*) INTO v_task_index FROM cumm_staging_task WHERE project_number=proj.project_number; EXCEPTION WHEN OTHERS THEN fnd_file.put_line(fnd_file.log,'No Tasks for the project: ' ||sqlco

de ||'-'||substr(sqlerrm,1,255)); END; FOR l_task_index IN 1..i LOOP BEGIN fnd_file.put_line(fnd_file.log,'task index number is : '||l_task _index); pa_project_pub.fetch_task( p_api_version_number => l_api_version _number ,p_return_status => l_return_status ,p_task_index => l_task_index ,p_pa_task_id => l_task_id ,p_pm_task_reference => l_pm_task_reference ,p_task_return_status => l_task_return_status); IF l_return_status != 'S' OR l_task_return_status != 'S' THEN fnd_file.put_line(fnd_file.log,'Error in Fetching the task' ||sq lcode ||'-'||substr(sqlerrm,1,255)); RAISE API_ERROR; END IF; fnd_file.put_line(fnd_file.log,'task return status is : '||l_tas k_return_status||' '||l_return_status); IF l_return_status <> fnd_api.g_ret_sts_success THEN l_mesg_count := fnd_msg_pub.count_msg; l_temp_str := NULL; IF (l_mesg_count > 0) THEN l_temp_str := SUBSTR (fnd_msg_pub.get (fnd_msg_pub.g_first,f nd_api.g_false),1,512); END IF; fnd_file.put_line (fnd_file.output,'"'|| l_project_id|| '"'| | ','|| '"'|| l_temp_str|| '"'); l_temp_str := NULL; END IF; EXCEPTION WHEN OTHERS THEN fnd_file.put_line(fnd_file.log,'Error in Fetching the task' ||sqlcode ||'-'||substr(sqlerrm,1,255)); END; END LOOP; ---end loop for task fetch END LOOP; EXCEPTION WHEN API_ERROR THEN FOR i IN 1..l_msg_count loop pa_interface_utils_pub.get_messages ( p_msg_data => l_msg_data ,p_data => l_data ,p_msg_count => l_msg_count ,p_msg_index_out => l_msg_index_out ); fnd_file.put_line(fnd_file.log,'error mesg '||l_data); END LOOP; WHEN OTHERS THEN fnd_file.put_line(fnd_file.log,'Error ' ||sqlcode ||'-'||substr(sql

errm,1,255)); END; /

Potrebbero piacerti anche