DBA Data[Home] [Help]

PACKAGE BODY: APPS.PJI_EV_UTIL

Source


1 PACKAGE BODY Pji_Ev_Util AS
2 -- $Header: PJIPREVB.pls 120.1 2005/09/16 15:25:12 appldev noship $
3 
4 PROCEDURE populate_percent_complete
5 	(p_start_date           IN VARCHAR2,
6 	 p_end_date             IN VARCHAR2,
7 	 p_calendar_id          IN NUMBER,
8 	 p_slice_name           IN VARCHAR2,
9 	 p_project_id           IN VARCHAR2,
10 	 p_proj_element_id      IN VARCHAR2,
11 	 p_structure_version_id	IN	NUMBER,
12 	p_include_sub_tasks_flag	IN VARCHAR2 ,
13 	p_calendar_type	IN VARCHAR2,
14 	p_prg_flag IN VARCHAR2,
15 	 x_msg_count            IN OUT NOCOPY NUMBER,
16 	 x_return_status        OUT NOCOPY VARCHAR2,
17 	 x_err_msg_data         OUT NOCOPY VARCHAR2)
18   IS
19   l_completed_per       NUMBER ;
20   l_object_type pa_proj_elements.object_type%TYPE;
21   l_calendar_type pji_fp_xbs_accum_f.calendar_type%TYPE := p_calendar_type;
22 
23 	 CURSOR ent_periods IS
24 	SELECT ent_period_id period_id , end_date
25 	FROM pji_time_ent_period_v
26 	WHERE end_date >= TO_DATE(p_start_date,'j')
27 	AND start_date <= TO_DATE(p_end_date,'j')
28 	AND 'PJI_TIME_ENT_PERIOD_V'=p_slice_name
29 	UNION ALL
30 	SELECT ent_qtr_id period_id , end_date
31 	FROM pji_time_ent_qtr_v
32 	WHERE end_date >= TO_DATE(p_start_date,'j')
33 	AND start_date <= TO_DATE(p_end_date,'j')
34 	AND 'PJI_TIME_ENT_QTR_V'=p_slice_name
35 	UNION ALL
36 	SELECT ent_year_id period_id , end_date
37 	FROM pji_time_ent_year_v
38 	WHERE end_date >= TO_DATE(p_start_date,'j')
39 	AND start_date <= TO_DATE(p_end_date,'j')
40 	AND 'PJI_TIME_ENT_YEAR_V'=p_slice_name
41 	ORDER BY period_id;
42 
43 	CURSOR gl_pa_periods IS
44 	SELECT cal_period_id period_id , end_date
45 	FROM pji_time_cal_period_v
46 	WHERE end_date >= TO_DATE(p_start_date,'j')
47 	AND start_date <= TO_DATE(p_end_date,'j')
48 	AND calendar_id=p_calendar_id
49 	AND 'PJI_TIME_CAL_PERIOD_V'=p_slice_name
50 	UNION ALL
51 	SELECT cal_qtr_id period_id , end_date
52 	FROM pji_time_cal_qtr_v
53 	WHERE end_date >= TO_DATE(p_start_date,'j')
54 	AND start_date <= TO_DATE(p_end_date,'j')
55 	AND calendar_id=p_calendar_id
56 	AND 'PJI_TIME_CAL_QTR_V'=p_slice_name
57 	UNION ALL
58 	SELECT cal_year_id period_id , end_date
59 	FROM pji_time_cal_year_v
60 	WHERE end_date >= TO_DATE(p_start_date,'j')
61 	AND start_date <= TO_DATE(p_end_date,'j')
62 	AND calendar_id=p_calendar_id
63 	AND 'PJI_TIME_CAL_YEAR_V'=p_slice_name
64 	ORDER BY period_id;
65 
66 CURSOR object_type IS
67 	SELECT object_type
68 	FROM pa_proj_elements
69 	WHERE proj_element_id =  p_proj_element_id
70 	AND project_id =  p_project_id ;
71 
72 
73   BEGIN
74        x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
75 
76 	OPEN object_type;
77 	FETCH object_type INTO  l_object_type;
78 	CLOSE object_type;
79 
80 	DELETE PJI_PRD_PER_COMPLETE_TMP;
81 
82 /* If calendar is enterprise, then open the corresponding cursor and fetch the percent complete */
83        IF (l_calendar_type = 'E')
84         THEN
85 
86 			  FOR rec_ent_periods IN  ent_periods LOOP
87 			  	  IF p_prg_flag = 'N' THEN
88 					 l_completed_per := Pa_Progress_Utils.get_pc_from_sub_tasks_assgn
89 											(p_project_id
90 											,p_proj_element_id
91 											,p_structure_version_id
92 											,p_include_sub_tasks_flag
93 											,'FINANCIAL'
94 											,l_object_type
95 											,rec_ent_periods.end_date);
96 				  ELSE
97 				  	  l_completed_per := NULL;
98 				  END IF;
99 
100 				INSERT INTO PJI_PRD_PER_COMPLETE_TMP (period_id,completed_percentage) VALUES
101 				(rec_ent_periods.period_id,l_completed_per);
102 
103 			END LOOP;
104 
105 
106 	/* else fetch data for pa and gl calendars */
107 	ELSE
108 
109 
110 			  FOR rec_gl_pa_periods IN gl_pa_periods LOOP
111 			  	 IF p_prg_flag = 'N' THEN
112 					 l_completed_per  := Pa_Progress_Utils.get_pc_from_sub_tasks_assgn
113 											(p_project_id
114 											,p_proj_element_id
115 											,p_structure_version_id
116 											,p_include_sub_tasks_flag
117 											,'FINANCIAL'
118 											,l_object_type
119 											,rec_gl_pa_periods.end_date);
120 				 ELSE
121 				 	 l_completed_per := NULL;
122 			     END IF;
123 
124 				INSERT INTO PJI_PRD_PER_COMPLETE_TMP (period_id,completed_percentage) VALUES
125 				(rec_gl_pa_periods.period_id,l_completed_per );
126 
127 
128 			END LOOP;
129 
130 
131 	END IF;
132 
133 
134    EXCEPTION
135    WHEN OTHERS THEN
136        x_return_status :=  Fnd_Api.G_RET_STS_UNEXP_ERROR;
137        x_msg_count := x_msg_count + 1;
138        RAISE;
139 
140 END populate_percent_complete;
141 
142 
143 END Pji_Ev_Util;