DBA Data[Home] [Help]

PACKAGE BODY: APPS.PA_SCHEDULE_OBJECTS_PVT

Source


1 package body PA_SCHEDULE_OBJECTS_PVT as
2 /*$Header: PASCHOBB.pls 120.18.12010000.2 2008/09/16 06:24:58 dbudhwar ship $*/
3 
4   G_Pkg_Name    CONSTANT VARCHAR2(30):= 'PA _SCHEDULE_OBJECTS_PVT';
5   G1_Debug_Mode VARCHAR2(1)          := NVL(FND_PROFILE.value('PA_DEBUG_MODE'), 'N');
6 -------------------------------------------------------------
7 
8   procedure GENERATE_SCHEDULE (
9      p_api_version			IN	NUMBER	default	1.0
10     ,p_commit				IN	VARCHAR2 default 'N'
11     ,p_calling_module			IN	VARCHAR2 default 'SELF_SERVICE'
12     ,p_debug_mode			IN	VARCHAR2 default 'N'
13     ,p_max_msg_count			IN	NUMBER	 default NULL
14     ,p_number_digit			IN	NUMBER	 default 4
15     ,x_return_status			OUT NOCOPY	VARCHAR2
16     ,x_msg_count			OUT NOCOPY	NUMBER
17     ,x_msg_data				OUT NOCOPY	VARCHAR2
18     ,p_data_structure			IN OUT NOCOPY	PA_SCHEDULE_OBJECTS_TBL_TYPE
19     ,x_Process_Number			OUT NOCOPY	NUMBER
20     ,p_process_flag1			IN	VARCHAR2 default 'N'
21     ,p_derived_field1			IN	VARCHAR2 default 'DURATION'
22     ,p_process_rollup_flag1		IN	VARCHAR2 default 'N'
23     ,p_partial_process_flag1		IN	VARCHAR2 default 'N'
24     ,p_process_dependency_flag1		IN	VARCHAR2 default 'N'
25     ,p_process_constraint_flag1		IN	VARCHAR2 default 'N'
26     ,p_process_task_status_flag1	IN	VARCHAR2 default 'N'
27     ,p_process_progress_flag1		IN	VARCHAR2 default 'N'
28     ,p_process_effort_flag1		IN	VARCHAR2 default 'N'
29     ,p_process_percent_flag1		IN	VARCHAR2 default 'N'
30     ,p_process_number_flag1		IN	VARCHAR2 default 'N'
31     ,p_partial_dates_flag1		IN	VARCHAR2 default 'N'
32     ,p_partial_task_status_flag1	IN	VARCHAR2 default 'N'
33     ,p_partial_progress_flag1		IN	VARCHAR2 default 'N'
34     ,p_partial_effort_flag1		IN	VARCHAR2 default 'N'
35     ,p_partial_percent_flag1		IN	VARCHAR2 default 'N'
36     ,p_partial_number_flag1		IN	VARCHAR2 default 'N'
37     ,p_process_flag2			IN	VARCHAR2 default 'N'
38     ,p_derived_field2			IN	VARCHAR2 default 'DURATION'
39     ,p_process_rollup_flag2		IN	VARCHAR2 default 'N'
40     ,p_partial_process_flag2		IN	VARCHAR2 default 'N'
41     ,p_process_dependency_flag2		IN	VARCHAR2 default 'N'
42     ,p_process_constraint_flag2		IN	VARCHAR2 default 'N'
43     ,p_process_task_status_flag2	IN	VARCHAR2 default 'N'
44     ,p_process_progress_flag2		IN	VARCHAR2 default 'N'
45     ,p_process_effort_flag2		IN	VARCHAR2 default 'N'
46     ,p_process_percent_flag2		IN	VARCHAR2 default 'N'
47     ,p_process_number_flag2		IN	VARCHAR2 default 'N'
48     ,p_partial_dates_flag2		IN	VARCHAR2 default 'N'
49     ,p_partial_task_status_flag2	IN	VARCHAR2 default 'N'
50     ,p_partial_progress_flag2		IN	VARCHAR2 default 'N'
51     ,p_partial_effort_flag2		IN	VARCHAR2 default 'N'
52     ,p_partial_percent_flag2		IN	VARCHAR2 default 'N'
53     ,p_partial_number_flag2		IN	VARCHAR2 default 'N'
54     ,p_process_flag3			IN	VARCHAR2 default 'N'
55     ,p_derived_field3			IN	VARCHAR2 default 'DURATION'
56     ,p_process_rollup_flag3		IN	VARCHAR2 default 'N'
57     ,p_partial_process_flag3		IN	VARCHAR2 default 'N'
58     ,p_process_dependency_flag3		IN	VARCHAR2 default 'N'
59     ,p_process_constraint_flag3		IN	VARCHAR2 default 'N'
60     ,p_process_task_status_flag3	IN	VARCHAR2 default 'N'
61     ,p_process_progress_flag3		IN	VARCHAR2 default 'N'
62     ,p_process_effort_flag3		IN	VARCHAR2 default 'N'
63     ,p_process_percent_flag3		IN	VARCHAR2 default 'N'
64     ,p_process_number_flag3		IN	VARCHAR2 default 'N'
65     ,p_partial_dates_flag3		IN	VARCHAR2 default 'N'
66     ,p_partial_task_status_flag3	IN	VARCHAR2 default 'N'
67     ,p_partial_progress_flag3		IN	VARCHAR2 default 'N'
68     ,p_partial_effort_flag3		IN	VARCHAR2 default 'N'
69     ,p_partial_percent_flag3		IN	VARCHAR2 default 'N'
70     ,p_partial_number_flag3		IN	VARCHAR2 default 'N'
71     ,p_process_flag4			IN	VARCHAR2 default 'N'
72     ,p_derived_field4			IN	VARCHAR2 default 'DURATION'
73     ,p_process_rollup_flag4		IN	VARCHAR2 default 'N'
74     ,p_partial_process_flag4		IN	VARCHAR2 default 'N'
75     ,p_process_dependency_flag4		IN	VARCHAR2 default 'N'
76     ,p_process_constraint_flag4		IN	VARCHAR2 default 'N'
77     ,p_process_task_status_flag4	IN	VARCHAR2 default 'N'
78     ,p_process_progress_flag4		IN	VARCHAR2 default 'N'
79     ,p_process_effort_flag4		IN	VARCHAR2 default 'N'
80     ,p_process_percent_flag4		IN	VARCHAR2 default 'N'
81     ,p_process_number_flag4		IN	VARCHAR2 default 'N'
82     ,p_partial_dates_flag4		IN	VARCHAR2 default 'N'
83     ,p_partial_task_status_flag4	IN	VARCHAR2 default 'N'
84     ,p_partial_progress_flag4		IN	VARCHAR2 default 'N'
85     ,p_partial_effort_flag4		IN	VARCHAR2 default 'N'
86     ,p_partial_percent_flag4		IN	VARCHAR2 default 'N'
87     ,p_partial_number_flag4		IN	VARCHAR2 default 'N'
88     ,p_process_flag5			IN	VARCHAR2 default 'N'
89     ,p_derived_field5			IN	VARCHAR2 default 'DURATION'
90     ,p_process_rollup_flag5		IN	VARCHAR2 default 'N'
91     ,p_partial_process_flag5		IN	VARCHAR2 default 'N'
92     ,p_process_dependency_flag5		IN	VARCHAR2 default 'N'
93     ,p_process_constraint_flag5		IN	VARCHAR2 default 'N'
94     ,p_process_task_status_flag5	IN	VARCHAR2 default 'N'
95     ,p_process_progress_flag5		IN	VARCHAR2 default 'N'
96     ,p_process_effort_flag5		IN	VARCHAR2 default 'N'
97     ,p_process_percent_flag5		IN	VARCHAR2 default 'N'
98     ,p_process_number_flag5		IN	VARCHAR2 default 'N'
99     ,p_partial_dates_flag5		IN	VARCHAR2 default 'N'
100     ,p_partial_task_status_flag5	IN	VARCHAR2 default 'N'
101     ,p_partial_progress_flag5		IN	VARCHAR2 default 'N'
102     ,p_partial_effort_flag5		IN	VARCHAR2 default 'N'
103     ,p_partial_percent_flag5		IN	VARCHAR2 default 'N'
104     ,p_partial_number_flag5		IN	VARCHAR2 default 'N'
105     ,p_process_flag6			IN	VARCHAR2 default 'N'
106     ,p_derived_field6			IN	VARCHAR2 default 'DURATION'
107     ,p_process_rollup_flag6		IN	VARCHAR2 default 'N'
108     ,p_partial_process_flag6		IN	VARCHAR2 default 'N'
109     ,p_process_dependency_flag6		IN	VARCHAR2 default 'N'
110     ,p_process_constraint_flag6		IN	VARCHAR2 default 'N'
111     ,p_process_task_status_flag6	IN	VARCHAR2 default 'N'
112     ,p_process_progress_flag6		IN	VARCHAR2 default 'N'
113     ,p_process_effort_flag6		IN	VARCHAR2 default 'N'
114     ,p_process_percent_flag6		IN	VARCHAR2 default 'N'
115     ,p_process_number_flag6		IN	VARCHAR2 default 'N'
116     ,p_partial_dates_flag6		IN	VARCHAR2 default 'N'
117     ,p_partial_task_status_flag6	IN	VARCHAR2 default 'N'
118     ,p_partial_progress_flag6		IN	VARCHAR2 default 'N'
119     ,p_partial_effort_flag6		IN	VARCHAR2 default 'N'
120     ,p_partial_percent_flag6		IN	VARCHAR2 default 'N'
121     ,p_partial_number_flag6		IN	VARCHAR2 default 'N'
122     ,p_process_ETC_Flag1		IN	VARCHAR2 default 'N'
123     ,p_partial_ETC_Flag1		IN	VARCHAR2 default 'N'
124     ,p_process_ETC_Flag2		IN	VARCHAR2 default 'N'
125     ,p_partial_ETC_Flag2		IN	VARCHAR2 default 'N'
126     ,p_process_ETC_Flag3		IN	VARCHAR2 default 'N'
127     ,p_partial_ETC_Flag3		IN	VARCHAR2 default 'N'
128     ,p_process_ETC_Flag4		IN	VARCHAR2 default 'N'
129     ,p_partial_ETC_Flag4		IN	VARCHAR2 default 'N'
130     ,p_process_ETC_Flag5		IN	VARCHAR2 default 'N'
131     ,p_partial_ETC_Flag5		IN	VARCHAR2 default 'N'
132     ,p_process_ETC_Flag6		IN	VARCHAR2 default 'N'
133     ,p_partial_ETC_Flag6		IN	VARCHAR2 default 'N'
134     ,p_Rollup_Method			IN	VARCHAR2 default 'COST'
135   )
136   IS
137 
138 API_ERROR			EXCEPTION;
139 l_msg_index_out			NUMBER;
140 l_Process_Number		NUMBER;
141 l_msg_count			NUMBER := 0;
142 l_msg_data			VARCHAR2(2000);
143 l_return_status			VARCHAR2(1) := 'N';
144 l_data_record			PA_SCHEDULE_OBJECTS_REC_TYPE;
145 
146 
147 
148 l_OBJECT_TYPE			PA_PLSQL_DATATYPES.Char30TabTyp;
149 l_OBJECT_ID			PA_PLSQL_DATATYPES.IdTabTyp;
150 l_PARENT_OBJECT_TYPE		PA_PLSQL_DATATYPES.Char30TabTyp;
151 l_PARENT_OBJECT_ID		PA_PLSQL_DATATYPES.IdTabTyp;
152 l_CALENDAR_ID			PA_PLSQL_DATATYPES.NumTabTyp;
153 l_CONSTRAINT_TYPE_CODE		PA_PLSQL_DATATYPES.Char1TabTyp;
154 l_CONSTRAINT_DATE		PA_PLSQL_DATATYPES.DateTabTyp;
155 l_WBS_LEVEL			PA_PLSQL_DATATYPES.IdTabTyp;
156 l_SUMMARY_OBJECT_FLAG		PA_PLSQL_DATATYPES.Char1TabTyp; -- 4370746
157 
158 l_START_DATE1			PA_PLSQL_DATATYPES.DateTabTyp;
159 l_START_DATE_OVERRIDE1		PA_PLSQL_DATATYPES.DateTabTyp;
160 l_FINISH_DATE1			PA_PLSQL_DATATYPES.DateTabTyp;
161 l_DURATION1			PA_PLSQL_DATATYPES.NumTabTyp;
162 l_TASK_STATUS1			PA_PLSQL_DATATYPES.NumTabTyp;
163 l_PROGRESS_STATUS_WEIGHT1	PA_PLSQL_DATATYPES.NumTabTyp;
164 l_PROGRESS_OVERRIDE1		PA_PLSQL_DATATYPES.NumTabTyp;
165 l_REMAINING_EFFORT1		PA_PLSQL_DATATYPES.NumTabTyp;
166 l_PERCENT_COMPLETE1		PA_PLSQL_DATATYPES.NumTabTyp;
167 l_PERCENT_OVERRIDE1		PA_PLSQL_DATATYPES.NumTabTyp;
168 l_TASK_WEIGHT1			PA_PLSQL_DATATYPES.NumTabTyp;
169 l_NUMBER_FIELD1			PA_PLSQL_DATATYPES.NumTabTyp;
170 l_ROLLUP_NODE1			PA_PLSQL_DATATYPES.Char1TabTyp;
171 l_DIRTY_FLAG1			PA_PLSQL_DATATYPES.Char1TabTyp;
172 l_Etc_Cost1			PA_PLSQL_DATATYPES.NumTabTyp;
173 l_PPL_ETC_Cost1			PA_PLSQL_DATATYPES.NumTabTyp;
174 l_EQPMT_ETC_COST1		PA_PLSQL_DATATYPES.NumTabTyp;
175 l_PPL_UNPLAND_EFFORT1		PA_PLSQL_DATATYPES.NumTabTyp;
176 l_EQPMT_ETC_EFFORT1		PA_PLSQL_DATATYPES.NumTabTyp;
177 l_SUB_PRJ_ETC_COST1		PA_PLSQL_DATATYPES.NumTabTyp;
178 l_SUB_PRJ_PPL_ETC_COST1		PA_PLSQL_DATATYPES.NumTabTyp;
179 l_SUB_PRJ_EQPMT_ETC_COST1	PA_PLSQL_DATATYPES.NumTabTyp;
180 l_SUB_PRJ_PPL_ETC_EFFORT1	PA_PLSQL_DATATYPES.NumTabTyp;
181 l_SUB_PRJ_EQPMT_ETC_EFFORT1	PA_PLSQL_DATATYPES.NumTabTyp;
182 l_EARNED_VALUE1			PA_PLSQL_DATATYPES.NumTabTyp;
183 l_BAC_VALUE1			PA_PLSQL_DATATYPES.NumTabTyp;
184 l_Perc_Comp_Deriv_Code1		PA_PLSQL_DATATYPES.Char30TabTyp;
185 l_START_DATE2			PA_PLSQL_DATATYPES.DateTabTyp;
186 l_START_DATE_OVERRIDE2		PA_PLSQL_DATATYPES.DateTabTyp;
187 l_FINISH_DATE2			PA_PLSQL_DATATYPES.DateTabTyp;
188 l_DURATION2			PA_PLSQL_DATATYPES.NumTabTyp;
189 l_TASK_STATUS2			PA_PLSQL_DATATYPES.NumTabTyp;
190 l_PROGRESS_STATUS_WEIGHT2	PA_PLSQL_DATATYPES.NumTabTyp;
191 l_PROGRESS_OVERRIDE2		PA_PLSQL_DATATYPES.NumTabTyp;
192 l_REMAINING_EFFORT2		PA_PLSQL_DATATYPES.NumTabTyp;
193 l_PERCENT_COMPLETE2		PA_PLSQL_DATATYPES.NumTabTyp;
194 l_PERCENT_OVERRIDE2		PA_PLSQL_DATATYPES.NumTabTyp;
195 l_TASK_WEIGHT2			PA_PLSQL_DATATYPES.NumTabTyp;
196 l_NUMBER_FIELD2			PA_PLSQL_DATATYPES.NumTabTyp;
197 l_ROLLUP_NODE2			PA_PLSQL_DATATYPES.Char1TabTyp;
198 l_DIRTY_FLAG2			PA_PLSQL_DATATYPES.Char1TabTyp;
199 l_Etc_Cost2			PA_PLSQL_DATATYPES.NumTabTyp;
200 l_PPL_ETC_Cost2			PA_PLSQL_DATATYPES.NumTabTyp;
201 l_EQPMT_ETC_COST2		PA_PLSQL_DATATYPES.NumTabTyp;
202 l_PPL_UNPLAND_EFFORT2		PA_PLSQL_DATATYPES.NumTabTyp;
203 l_EQPMT_ETC_EFFORT2		PA_PLSQL_DATATYPES.NumTabTyp;
204 l_SUB_PRJ_ETC_COST2		PA_PLSQL_DATATYPES.NumTabTyp;
205 l_SUB_PRJ_PPL_ETC_COST2		PA_PLSQL_DATATYPES.NumTabTyp;
206 l_SUB_PRJ_EQPMT_ETC_COST2	PA_PLSQL_DATATYPES.NumTabTyp;
207 l_SUB_PRJ_PPL_ETC_EFFORT2	PA_PLSQL_DATATYPES.NumTabTyp;
208 l_SUB_PRJ_EQPMT_ETC_EFFORT2	PA_PLSQL_DATATYPES.NumTabTyp;
209 l_EARNED_VALUE2			PA_PLSQL_DATATYPES.NumTabTyp;
210 l_BAC_VALUE2			PA_PLSQL_DATATYPES.NumTabTyp;
211 l_Perc_Comp_Deriv_Code2		PA_PLSQL_DATATYPES.Char30TabTyp;
212 l_START_DATE3			PA_PLSQL_DATATYPES.DateTabTyp;
213 l_START_DATE_OVERRIDE3		PA_PLSQL_DATATYPES.DateTabTyp;
214 l_FINISH_DATE3			PA_PLSQL_DATATYPES.DateTabTyp;
215 l_DURATION3			PA_PLSQL_DATATYPES.NumTabTyp;
216 l_TASK_STATUS3			PA_PLSQL_DATATYPES.NumTabTyp;
217 l_PROGRESS_STATUS_WEIGHT3	PA_PLSQL_DATATYPES.NumTabTyp;
218 l_PROGRESS_OVERRIDE3		PA_PLSQL_DATATYPES.NumTabTyp;
219 l_REMAINING_EFFORT3		PA_PLSQL_DATATYPES.NumTabTyp;
220 l_PERCENT_COMPLETE3		PA_PLSQL_DATATYPES.NumTabTyp;
221 l_PERCENT_OVERRIDE3		PA_PLSQL_DATATYPES.NumTabTyp;
222 l_TASK_WEIGHT3			PA_PLSQL_DATATYPES.NumTabTyp;
223 l_NUMBER_FIELD3			PA_PLSQL_DATATYPES.NumTabTyp;
224 l_ROLLUP_NODE3			PA_PLSQL_DATATYPES.Char1TabTyp;
225 l_DIRTY_FLAG3			PA_PLSQL_DATATYPES.Char1TabTyp;
226 l_Etc_Cost3			PA_PLSQL_DATATYPES.NumTabTyp;
227 l_PPL_ETC_Cost3			PA_PLSQL_DATATYPES.NumTabTyp;
228 l_EQPMT_ETC_COST3		PA_PLSQL_DATATYPES.NumTabTyp;
229 l_PPL_UNPLAND_EFFORT3		PA_PLSQL_DATATYPES.NumTabTyp;
230 l_EQPMT_ETC_EFFORT3		PA_PLSQL_DATATYPES.NumTabTyp;
231 l_SUB_PRJ_ETC_COST3		PA_PLSQL_DATATYPES.NumTabTyp;
232 l_SUB_PRJ_PPL_ETC_COST3		PA_PLSQL_DATATYPES.NumTabTyp;
233 l_SUB_PRJ_EQPMT_ETC_COST3	PA_PLSQL_DATATYPES.NumTabTyp;
234 l_SUB_PRJ_PPL_ETC_EFFORT3	PA_PLSQL_DATATYPES.NumTabTyp;
235 l_SUB_PRJ_EQPMT_ETC_EFFORT3	PA_PLSQL_DATATYPES.NumTabTyp;
236 l_EARNED_VALUE3			PA_PLSQL_DATATYPES.NumTabTyp;
237 l_BAC_VALUE3			PA_PLSQL_DATATYPES.NumTabTyp;
238 l_Perc_Comp_Deriv_Code3		PA_PLSQL_DATATYPES.Char30TabTyp;
239 l_START_DATE4			PA_PLSQL_DATATYPES.DateTabTyp;
240 l_START_DATE_OVERRIDE4		PA_PLSQL_DATATYPES.DateTabTyp;
241 l_FINISH_DATE4			PA_PLSQL_DATATYPES.DateTabTyp;
242 l_DURATION4			PA_PLSQL_DATATYPES.NumTabTyp;
243 l_TASK_STATUS4			PA_PLSQL_DATATYPES.NumTabTyp;
244 l_PROGRESS_STATUS_WEIGHT4	PA_PLSQL_DATATYPES.NumTabTyp;
245 l_PROGRESS_OVERRIDE4		PA_PLSQL_DATATYPES.NumTabTyp;
246 l_REMAINING_EFFORT4		PA_PLSQL_DATATYPES.NumTabTyp;
247 l_PERCENT_COMPLETE4		PA_PLSQL_DATATYPES.NumTabTyp;
248 l_PERCENT_OVERRIDE4		PA_PLSQL_DATATYPES.NumTabTyp;
249 l_TASK_WEIGHT4			PA_PLSQL_DATATYPES.NumTabTyp;
250 l_NUMBER_FIELD4			PA_PLSQL_DATATYPES.NumTabTyp;
251 l_ROLLUP_NODE4			PA_PLSQL_DATATYPES.Char1TabTyp;
252 l_DIRTY_FLAG4			PA_PLSQL_DATATYPES.Char1TabTyp;
253 l_Etc_Cost4			PA_PLSQL_DATATYPES.NumTabTyp;
254 l_PPL_ETC_Cost4			PA_PLSQL_DATATYPES.NumTabTyp;
255 l_EQPMT_ETC_COST4		PA_PLSQL_DATATYPES.NumTabTyp;
256 l_PPL_UNPLAND_EFFORT4		PA_PLSQL_DATATYPES.NumTabTyp;
257 l_EQPMT_ETC_EFFORT4		PA_PLSQL_DATATYPES.NumTabTyp;
258 l_SUB_PRJ_ETC_COST4		PA_PLSQL_DATATYPES.NumTabTyp;
259 l_SUB_PRJ_PPL_ETC_COST4		PA_PLSQL_DATATYPES.NumTabTyp;
260 l_SUB_PRJ_EQPMT_ETC_COST4	PA_PLSQL_DATATYPES.NumTabTyp;
261 l_SUB_PRJ_PPL_ETC_EFFORT4	PA_PLSQL_DATATYPES.NumTabTyp;
262 l_SUB_PRJ_EQPMT_ETC_EFFORT4	PA_PLSQL_DATATYPES.NumTabTyp;
263 l_EARNED_VALUE4			PA_PLSQL_DATATYPES.NumTabTyp;
264 l_BAC_VALUE4			PA_PLSQL_DATATYPES.NumTabTyp;
265 l_Perc_Comp_Deriv_Code4		PA_PLSQL_DATATYPES.Char30TabTyp;
266 l_START_DATE5			PA_PLSQL_DATATYPES.DateTabTyp;
267 l_START_DATE_OVERRIDE5		PA_PLSQL_DATATYPES.DateTabTyp;
268 l_FINISH_DATE5			PA_PLSQL_DATATYPES.DateTabTyp;
269 l_DURATION5			PA_PLSQL_DATATYPES.NumTabTyp;
270 l_TASK_STATUS5			PA_PLSQL_DATATYPES.NumTabTyp;
271 l_PROGRESS_STATUS_WEIGHT5	PA_PLSQL_DATATYPES.NumTabTyp;
272 l_PROGRESS_OVERRIDE5		PA_PLSQL_DATATYPES.NumTabTyp;
273 l_REMAINING_EFFORT5		PA_PLSQL_DATATYPES.NumTabTyp;
274 l_PERCENT_COMPLETE5		PA_PLSQL_DATATYPES.NumTabTyp;
275 l_PERCENT_OVERRIDE5		PA_PLSQL_DATATYPES.NumTabTyp;
276 l_TASK_WEIGHT5			PA_PLSQL_DATATYPES.NumTabTyp;
277 l_NUMBER_FIELD5			PA_PLSQL_DATATYPES.NumTabTyp;
278 l_ROLLUP_NODE5			PA_PLSQL_DATATYPES.Char1TabTyp;
279 l_DIRTY_FLAG5			PA_PLSQL_DATATYPES.Char1TabTyp;
280 l_Etc_Cost5			PA_PLSQL_DATATYPES.NumTabTyp;
281 l_PPL_ETC_Cost5			PA_PLSQL_DATATYPES.NumTabTyp;
282 l_EQPMT_ETC_COST5		PA_PLSQL_DATATYPES.NumTabTyp;
283 l_PPL_UNPLAND_EFFORT5		PA_PLSQL_DATATYPES.NumTabTyp;
284 l_EQPMT_ETC_EFFORT5		PA_PLSQL_DATATYPES.NumTabTyp;
285 l_SUB_PRJ_ETC_COST5		PA_PLSQL_DATATYPES.NumTabTyp;
286 l_SUB_PRJ_PPL_ETC_COST5		PA_PLSQL_DATATYPES.NumTabTyp;
287 l_SUB_PRJ_EQPMT_ETC_COST5	PA_PLSQL_DATATYPES.NumTabTyp;
288 l_SUB_PRJ_PPL_ETC_EFFORT5	PA_PLSQL_DATATYPES.NumTabTyp;
289 l_SUB_PRJ_EQPMT_ETC_EFFORT5	PA_PLSQL_DATATYPES.NumTabTyp;
290 l_EARNED_VALUE5			PA_PLSQL_DATATYPES.NumTabTyp;
291 l_BAC_VALUE5			PA_PLSQL_DATATYPES.NumTabTyp;
292 l_Perc_Comp_Deriv_Code5		PA_PLSQL_DATATYPES.Char30TabTyp;
293 l_START_DATE6			PA_PLSQL_DATATYPES.DateTabTyp;
294 l_START_DATE_OVERRIDE6		PA_PLSQL_DATATYPES.DateTabTyp;
295 l_FINISH_DATE6			PA_PLSQL_DATATYPES.DateTabTyp;
296 l_DURATION6			PA_PLSQL_DATATYPES.NumTabTyp;
297 l_TASK_STATUS6			PA_PLSQL_DATATYPES.NumTabTyp;
298 l_PROGRESS_STATUS_WEIGHT6	PA_PLSQL_DATATYPES.NumTabTyp;
299 l_PROGRESS_OVERRIDE6		PA_PLSQL_DATATYPES.NumTabTyp;
300 l_REMAINING_EFFORT6		PA_PLSQL_DATATYPES.NumTabTyp;
301 l_PERCENT_COMPLETE6		PA_PLSQL_DATATYPES.NumTabTyp;
302 l_PERCENT_OVERRIDE6		PA_PLSQL_DATATYPES.NumTabTyp;
303 l_TASK_WEIGHT6			PA_PLSQL_DATATYPES.NumTabTyp;
304 l_NUMBER_FIELD6			PA_PLSQL_DATATYPES.NumTabTyp;
305 l_ROLLUP_NODE6			PA_PLSQL_DATATYPES.Char1TabTyp;
306 l_DIRTY_FLAG6			PA_PLSQL_DATATYPES.Char1TabTyp;
307 l_Etc_Cost6			PA_PLSQL_DATATYPES.NumTabTyp;
308 l_PPL_ETC_Cost6			PA_PLSQL_DATATYPES.NumTabTyp;
309 l_EQPMT_ETC_COST6		PA_PLSQL_DATATYPES.NumTabTyp;
310 l_PPL_UNPLAND_EFFORT6		PA_PLSQL_DATATYPES.NumTabTyp;
311 l_EQPMT_ETC_EFFORT6		PA_PLSQL_DATATYPES.NumTabTyp;
312 l_SUB_PRJ_ETC_COST6		PA_PLSQL_DATATYPES.NumTabTyp;
313 l_SUB_PRJ_PPL_ETC_COST6		PA_PLSQL_DATATYPES.NumTabTyp;
314 l_SUB_PRJ_EQPMT_ETC_COST6	PA_PLSQL_DATATYPES.NumTabTyp;
315 l_SUB_PRJ_PPL_ETC_EFFORT6	PA_PLSQL_DATATYPES.NumTabTyp;
316 l_SUB_PRJ_EQPMT_ETC_EFFORT6	PA_PLSQL_DATATYPES.NumTabTyp;
317 l_EARNED_VALUE6			PA_PLSQL_DATATYPES.NumTabTyp;
318 l_BAC_VALUE6			PA_PLSQL_DATATYPES.NumTabTyp;
319 l_Perc_Comp_Deriv_Code6		PA_PLSQL_DATATYPES.Char30TabTyp;
320 
321 l_task_count                    NUMBER;
322 l_task_flag                     NUMBER;
323 L_DATA_COUNT			NUMBER;
324 l_partial_rollup1		BOOLEAN;
325 l_partial_rollup2		BOOLEAN;
326 l_partial_rollup3		BOOLEAN;
327 l_partial_rollup4		BOOLEAN;
328 l_partial_rollup5		BOOLEAN;
329 l_partial_rollup6		BOOLEAN;
330 l_lowest_task			VARCHAR2(1);
331 
332 l_wbs_level_tab                 SYSTEM.pa_num_tbl_type  := SYSTEM.pa_num_tbl_type();
333 l_task_flag_tab                 SYSTEM.pa_num_tbl_type  := SYSTEM.pa_num_tbl_type();
334 l_task_count_tab                SYSTEM.pa_num_tbl_type  := SYSTEM.pa_num_tbl_type();
335 l_update_flag_tab               SYSTEM.pa_num_tbl_type  := SYSTEM.pa_num_tbl_type();
336 
337 l_child_update_required         VARCHAR2(1);
338 l_parent_update_required         VARCHAR2(1);
339 l_parent_rowid_tab              SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
340 L_CHILD_OBJECT_IDS_TAB          SYSTEM.pa_num_tbl_type  := SYSTEM.pa_num_tbl_type();
341 L_PARENT_OBJECT_IDS_TAB         SYSTEM.pa_num_tbl_type  := SYSTEM.pa_num_tbl_type();
342 l_parent_object_types_tab       SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
343 l_child_object_types_tab        SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
344 l_parent_start_date_tab1        SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
345 l_parent_start_date_tab2        SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
346 l_parent_start_date_tab3        SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
347 l_parent_start_date_tab4        SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
348 l_parent_start_date_tab5        SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
349 l_parent_start_date_tab6        SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
350 l_parent_start_date_or_tab1     SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
351 l_parent_start_date_or_tab2     SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
352 l_parent_start_date_or_tab3     SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
353 l_parent_start_date_or_tab4     SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
354 l_parent_start_date_or_tab5     SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
355 l_parent_start_date_or_tab6     SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
356 l_parent_finish_date_tab1       SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
357 l_parent_finish_date_tab2       SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
358 l_parent_finish_date_tab3       SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
359 l_parent_finish_date_tab4       SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
360 l_parent_finish_date_tab5       SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
361 l_parent_finish_date_tab6       SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
362 l_parent_duration_tab1          SYSTEM.pa_num_tbl_type  := SYSTEM.pa_num_tbl_type();
363 l_parent_duration_tab2          SYSTEM.pa_num_tbl_type  := SYSTEM.pa_num_tbl_type();
364 l_parent_duration_tab3          SYSTEM.pa_num_tbl_type  := SYSTEM.pa_num_tbl_type();
365 l_parent_duration_tab4          SYSTEM.pa_num_tbl_type  := SYSTEM.pa_num_tbl_type();
366 l_parent_duration_tab5          SYSTEM.pa_num_tbl_type  := SYSTEM.pa_num_tbl_type();
367 l_parent_duration_tab6          SYSTEM.pa_num_tbl_type  := SYSTEM.pa_num_tbl_type();
368 
369 l_child_start_date_tab1         SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
370 l_child_start_date_tab2         SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
371 l_child_start_date_tab3         SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
372 l_child_start_date_tab4         SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
373 l_child_start_date_tab5         SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
374 l_child_start_date_tab6         SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
375 l_child_finish_date_tab1        SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
376 l_child_finish_date_tab2        SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
377 l_child_finish_date_tab3        SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
378 l_child_finish_date_tab4        SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
379 l_child_finish_date_tab5        SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
380 l_child_finish_date_tab6        SYSTEM.pa_date_tbl_type := SYSTEM.pa_date_tbl_type();
381 l_child_duration_tab1           SYSTEM.pa_num_tbl_type  := SYSTEM.pa_num_tbl_type();
382 l_child_duration_tab2           SYSTEM.pa_num_tbl_type  := SYSTEM.pa_num_tbl_type();
383 l_child_duration_tab3           SYSTEM.pa_num_tbl_type  := SYSTEM.pa_num_tbl_type();
384 l_child_duration_tab4           SYSTEM.pa_num_tbl_type  := SYSTEM.pa_num_tbl_type();
385 l_child_duration_tab5           SYSTEM.pa_num_tbl_type  := SYSTEM.pa_num_tbl_type();
386 l_child_duration_tab6           SYSTEM.pa_num_tbl_type  := SYSTEM.pa_num_tbl_type();
387 
388 
389 l_object_ids_tab		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
390 l_object_types_tab		SYSTEM.PA_VARCHAR2_30_TBL_TYPE    := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
391 l_count_tab			SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
392 l_sum_tab1			SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
393 l_sum_tab2			SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
394 l_sum_tab3			SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
395 l_sum_tab4			SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
396 l_sum_tab5			SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
397 l_sum_tab6			SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
398 l_task_status_tab1		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
399 l_task_status_tab2		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
400 l_task_status_tab3		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
401 l_task_status_tab4		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
402 l_task_status_tab5		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
403 l_task_status_tab6		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
404 l_perc_comp_deriv_code_tab	SYSTEM.PA_VARCHAR2_30_TBL_TYPE    := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
405 l_bac_value_tab1		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
406 l_bac_value_tab2		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
407 l_bac_value_tab3		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
408 l_bac_value_tab4		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
409 l_bac_value_tab5		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
410 l_bac_value_tab6		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
411 l_percent_complete_tab1		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
412 l_percent_complete_tab2		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
413 l_percent_complete_tab3		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
414 l_percent_complete_tab4		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
415 l_percent_complete_tab5		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
416 l_percent_complete_tab6		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
417 l_percent_override_tab1		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
418 l_percent_override_tab2		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
419 l_percent_override_tab3		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
420 l_percent_override_tab4		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
421 l_percent_override_tab5		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
422 l_percent_override_tab6		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
423 l_earned_value_tab1		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
424 l_earned_value_tab2		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
425 l_earned_value_tab3		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
426 l_earned_value_tab4		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
427 l_earned_value_tab5		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
428 l_earned_value_tab6		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
429 l_ETC_Cost_tab1			SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
430 l_ETC_Cost_tab2			SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
431 l_ETC_Cost_tab3			SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
432 l_ETC_Cost_tab4			SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
433 l_ETC_Cost_tab5			SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
434 l_ETC_Cost_tab6			SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
435 l_PPL_ETC_COST_tab1		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
436 l_PPL_ETC_COST_tab2		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
437 l_PPL_ETC_COST_tab3		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
438 l_PPL_ETC_COST_tab4		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
439 l_PPL_ETC_COST_tab5		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
440 l_PPL_ETC_COST_tab6		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
441 l_EQPMT_ETC_COST_tab1		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
442 l_EQPMT_ETC_COST_tab2		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
443 l_EQPMT_ETC_COST_tab3		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
444 l_EQPMT_ETC_COST_tab4		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
445 l_EQPMT_ETC_COST_tab5		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
446 l_EQPMT_ETC_COST_tab6		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
447 l_PPL_UNPLAND_EFFORT_tab1       SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
448 l_PPL_UNPLAND_EFFORT_tab2       SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
449 l_PPL_UNPLAND_EFFORT_tab3       SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
450 l_PPL_UNPLAND_EFFORT_tab4       SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
451 l_PPL_UNPLAND_EFFORT_tab5       SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
452 l_PPL_UNPLAND_EFFORT_tab6       SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
453 l_EQPMT_ETC_EFFORT_tab1		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
454 l_EQPMT_ETC_EFFORT_tab2		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
455 l_EQPMT_ETC_EFFORT_tab3		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
456 l_EQPMT_ETC_EFFORT_tab4		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
457 l_EQPMT_ETC_EFFORT_tab5		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
458 l_EQPMT_ETC_EFFORT_tab6		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
459 l_SUB_PRJ_ETC_COST_tab1		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
460 l_SUB_PRJ_ETC_COST_tab2		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
461 l_SUB_PRJ_ETC_COST_tab3		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
462 l_SUB_PRJ_ETC_COST_tab4		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
463 l_SUB_PRJ_ETC_COST_tab5		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
464 l_SUB_PRJ_ETC_COST_tab6		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
465 l_SUB_PRJ_PPL_ETC_COST_tab1     SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
466 l_SUB_PRJ_PPL_ETC_COST_tab2     SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
467 l_SUB_PRJ_PPL_ETC_COST_tab3     SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
468 l_SUB_PRJ_PPL_ETC_COST_tab4     SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
469 l_SUB_PRJ_PPL_ETC_COST_tab5     SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
470 l_SUB_PRJ_PPL_ETC_COST_tab6     SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
471 l_SUB_PRJ_EQPMT_ETC_COST_tab1   SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
472 l_SUB_PRJ_EQPMT_ETC_COST_tab2   SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
473 l_SUB_PRJ_EQPMT_ETC_COST_tab3   SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
474 l_SUB_PRJ_EQPMT_ETC_COST_tab4   SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
475 l_SUB_PRJ_EQPMT_ETC_COST_tab5   SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
476 l_SUB_PRJ_EQPMT_ETC_COST_tab6   SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
477 l_SUB_PRJ_PPL_ETC_EFFORT_tab1   SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
478 l_SUB_PRJ_PPL_ETC_EFFORT_tab2   SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
479 l_SUB_PRJ_PPL_ETC_EFFORT_tab3   SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
480 l_SUB_PRJ_PPL_ETC_EFFORT_tab4   SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
481 l_SUB_PRJ_PPL_ETC_EFFORT_tab5   SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
482 l_SUB_PRJ_PPL_ETC_EFFORT_tab6   SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
483 L_SP_EQPMT_ETC_EFFORT_TAB1	SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
484 L_SP_EQPMT_ETC_EFFORT_TAB2	SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
485 L_SP_EQPMT_ETC_EFFORT_TAB3	SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
486 L_SP_EQPMT_ETC_EFFORT_TAB4	SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
487 L_SP_EQPMT_ETC_EFFORT_TAB5	SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
488 L_SP_EQPMT_ETC_EFFORT_TAB6	SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
489 
490 l_temp_object_ids_tab		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
491 l_temp_object_types_tab		SYSTEM.PA_VARCHAR2_30_TBL_TYPE    := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
492 l_temp_dirty_flag_tab1		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
493 l_temp_dirty_flag_tab2		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
494 l_temp_dirty_flag_tab3		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
495 l_temp_dirty_flag_tab4		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
496 l_temp_dirty_flag_tab5		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
497 l_temp_dirty_flag_tab6		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
498 
499 l_int_object_ids_tab		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
500 l_int_object_types_tab		SYSTEM.PA_VARCHAR2_30_TBL_TYPE    := SYSTEM.PA_VARCHAR2_30_TBL_TYPE();
501 l_int_dirty_flag_tab1		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
502 l_int_dirty_flag_tab2		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
503 l_int_dirty_flag_tab3		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
504 l_int_dirty_flag_tab4		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
505 l_int_dirty_flag_tab5		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
506 l_int_dirty_flag_tab6		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
507 
508 l_int_ref_object_ids_tab	SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
509 l_int_ref_dirty_flag_tab1	SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
510 l_int_ref_dirty_flag_tab2	SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
511 l_int_ref_dirty_flag_tab3	SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
512 l_int_ref_dirty_flag_tab4	SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
513 l_int_ref_dirty_flag_tab5	SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
514 l_int_ref_dirty_flag_tab6	SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
515 
516 l_ref_object_ids_tab		SYSTEM.pa_num_tbl_type            := SYSTEM.pa_num_tbl_type();
517 l_dirty_flag_tab1		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
518 l_dirty_flag_tab2		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
519 l_dirty_flag_tab3		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
520 l_dirty_flag_tab4		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
521 l_dirty_flag_tab5		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
522 l_dirty_flag_tab6		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
523 l_ref_dirty_flag_tab1		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
524 l_ref_dirty_flag_tab2		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
525 l_ref_dirty_flag_tab3		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
526 l_ref_dirty_flag_tab4		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
527 l_ref_dirty_flag_tab5		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
528 l_ref_dirty_flag_tab6		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
529 
530 l_update_date_flag_tab1		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
531 l_update_date_flag_tab2		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
532 l_update_date_flag_tab3		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
533 l_update_date_flag_tab4		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
534 l_update_date_flag_tab5		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
535 l_update_date_flag_tab6		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
536 l_child_upd_req_flag_tab1	SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
537 l_child_upd_req_flag_tab2	SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
538 l_child_upd_req_flag_tab3	SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
539 l_child_upd_req_flag_tab4	SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
540 l_child_upd_req_flag_tab5	SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
541 l_child_upd_req_flag_tab6	SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
542 l_child_dirty_flag_tab1		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
543 l_child_dirty_flag_tab2		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
544 l_child_dirty_flag_tab3		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
545 l_child_dirty_flag_tab4		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
546 l_child_dirty_flag_tab5		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
547 l_child_dirty_flag_tab6		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
548 l_parent_dirty_flag_tab1	SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
549 l_parent_dirty_flag_tab2	SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
550 l_parent_dirty_flag_tab3	SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
551 l_parent_dirty_flag_tab4	SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
552 l_parent_dirty_flag_tab5	SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
553 l_parent_dirty_flag_tab6	SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
554 l_update_requ_flag_tab1		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
555 l_update_requ_flag_tab2		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
556 l_update_requ_flag_tab3		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
557 l_update_requ_flag_tab4		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
558 l_update_requ_flag_tab5		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
559 l_update_requ_flag_tab6		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE();
560 
561 l_summ_obj_flag_tab		SYSTEM.PA_VARCHAR2_1_TBL_TYPE	  := SYSTEM.PA_VARCHAR2_1_TBL_TYPE(); -- 4587517
562 
563 
564 l_actual_duration1		NUMBER;
565 l_actual_duration2		NUMBER;
566 l_actual_duration3		NUMBER;
567 l_actual_duration4		NUMBER;
568 l_actual_duration5		NUMBER;
569 l_actual_duration6		NUMBER;
570 l_pc_duration1			NUMBER;
571 l_pc_duration2			NUMBER;
572 l_pc_duration3			NUMBER;
573 l_pc_duration4			NUMBER;
574 l_pc_duration5			NUMBER;
575 l_pc_duration6			NUMBER;
576 l_actual_duration1_a		NUMBER;
577 l_actual_duration2_a		NUMBER;
578 l_actual_duration3_a		NUMBER;
579 l_actual_duration4_a		NUMBER;
580 l_actual_duration5_a		NUMBER;
581 l_actual_duration6_a		NUMBER;
582 l_duration1_a			NUMBER;
583 l_duration2_a			NUMBER;
584 l_duration3_a			NUMBER;
585 l_duration4_a			NUMBER;
586 l_duration5_a			NUMBER;
587 l_duration6_a			NUMBER;
588 l_actual_duration1_t		NUMBER;
589 l_actual_duration2_t		NUMBER;
590 l_actual_duration3_t		NUMBER;
591 l_actual_duration4_t		NUMBER;
592 l_actual_duration5_t		NUMBER;
593 l_actual_duration6_t		NUMBER;
594 l_duration1_t			NUMBER;
595 l_duration2_t			NUMBER;
596 l_duration3_t			NUMBER;
597 l_duration4_t			NUMBER;
598 l_duration5_t			NUMBER;
599 l_duration6_t			NUMBER;
600 l_Weight			NUMBER;
601 l_Weight1			NUMBER;
602 l_Weight2			NUMBER;
603 l_Weight3			NUMBER;
604 l_Weight4			NUMBER;
605 l_Weight5			NUMBER;
606 l_Weight6			NUMBER;
607 l_update_required		VARCHAR2(1):= 'N';
608 l_Count				NUMBER;
609 l_not_started 			VARCHAR2(1);
610 l_completed 			VARCHAR2(1);
611 l_in_progress 			VARCHAR2(1);
612 l_on_hold 			VARCHAR2(1);
613 l_temp_percent1			NUMBER;
614 l_temp_percent2			NUMBER;
615 l_temp_percent3			NUMBER;
616 l_temp_percent4			NUMBER;
617 l_temp_percent5			NUMBER;
618 l_temp_percent6			NUMBER;
619 l_counter			NUMBER;
620 l_count1			NUMBER;
621 l_count2			NUMBER;
622 l_count3			NUMBER;
623 l_count4			NUMBER;
624 l_count5			NUMBER;
625 l_count6			NUMBER;
626 l_task_count1			NUMBER;
627 l_task_count2			NUMBER;
628 l_task_count3			NUMBER;
629 l_task_count4			NUMBER;
630 l_task_count5			NUMBER;
631 l_task_count6			NUMBER;
632 l_null_flag1			NUMBER;
633 l_null_flag2			NUMBER;
634 l_null_flag3			NUMBER;
635 l_null_flag4			NUMBER;
636 l_null_flag5			NUMBER;
637 l_null_flag6			NUMBER;
638 l_new_start_date1		DATE;
639 l_new_start_date2		DATE;
640 l_new_start_date3		DATE;
641 l_new_start_date4		DATE;
642 l_new_start_date5		DATE;
643 l_new_start_date6		DATE;
644 l_new_completion_date1		DATE;
645 l_new_completion_date2		DATE;
646 l_new_completion_date3		DATE;
647 l_new_completion_date4		DATE;
648 l_new_completion_date5		DATE;
649 l_new_completion_date6		DATE;
650 
651 /* Starts Added for the bug#6185523 */
652 l_parent_start_date1_tmp		DATE;
653 l_parent_finish_date1_tmp	DATE;
654 l_parent_duration1_tmp		NUMBER;
655 l_parent_start_date2_tmp		DATE;
656 l_parent_finish_date2_tmp	DATE;
657 l_parent_duration2_tmp		NUMBER;
658 l_parent_start_date3_tmp		DATE;
659 l_parent_finish_date3_tmp	DATE;
660 l_parent_duration3_tmp		NUMBER;
661 l_parent_start_date4_tmp		DATE;
662 l_parent_finish_date4_tmp	DATE;
663 l_parent_duration4_tmp		NUMBER;
664 l_parent_start_date5_tmp		DATE;
665 l_parent_finish_date5_tmp	DATE;
666 l_parent_duration5_tmp		NUMBER;
667 l_parent_start_date6_tmp		DATE;
668 l_parent_finish_date6_tmp	DATE;
669 l_parent_duration6_tmp		NUMBER;
670 dirty_flag1_tmp			VARCHAR2(1);
671 dirty_flag2_tmp			VARCHAR2(1);
672 dirty_flag3_tmp			VARCHAR2(1);
673 dirty_flag4_tmp			VARCHAR2(1);
674 dirty_flag5_tmp			VARCHAR2(1);
675 dirty_flag6_tmp			VARCHAR2(1);
676 /* Ends Added for the bug#6185523 */
677 
678  CURSOR Processed_Data_Structure(C_Process_Number NUMBER) IS
679       SELECT
680 	OBJECT_TYPE,
681 	OBJECT_ID,
682 	PARENT_OBJECT_TYPE,
683 	PARENT_OBJECT_ID,
684 	CALENDAR_ID,
685 	CONSTRAINT_TYPE_CODE,
686 	CONSTRAINT_DATE,
687 	WBS_LEVEL,
688 	START_DATE1,
689 	START_DATE_OVERRIDE1,
690 	FINISH_DATE1,
691 	DURATION1,
692 	TASK_STATUS1,
693 	PROGRESS_STATUS_WEIGHT1,
694 	PROGRESS_OVERRIDE1,
695 	REMAINING_EFFORT1,
696 	PERCENT_COMPLETE1,
697 	PERCENT_OVERRIDE1,
698 	TASK_WEIGHT1,
699 	NUMBER_FIELD1,
700 	ROLLUP_NODE1,
701 	DIRTY_FLAG1,
702 	ETC_Cost1,
703 	PPL_ETC_COST1,
704 	EQPMT_ETC_COST1,
705 	PPL_UNPLAND_EFFORT1,
706 	EQPMT_ETC_EFFORT1,
707 	SUB_PRJ_ETC_COST1,
708 	SUB_PRJ_PPL_ETC_COST1,
709 	SUB_PRJ_EQPMT_ETC_COST1,
710 	SUB_PRJ_PPL_ETC_EFFORT1,
711 	SUB_PRJ_EQPMT_ETC_EFFORT1,
712 	EARNED_VALUE1,
713 	BAC_VALUE1,
714 	START_DATE2,
715 	START_DATE_OVERRIDE2,
716 	FINISH_DATE2,
717 	DURATION2,
718 	TASK_STATUS2,
719 	PROGRESS_STATUS_WEIGHT2,
720 	PROGRESS_OVERRIDE2,
721 	REMAINING_EFFORT2,
722 	PERCENT_COMPLETE2,
723 	PERCENT_OVERRIDE2,
724 	TASK_WEIGHT2,
725 	NUMBER_FIELD2,
726 	ROLLUP_NODE2,
727 	DIRTY_FLAG2,
728 	ETC_Cost2,
729 	PPL_ETC_COST2,
730 	EQPMT_ETC_COST2,
731 	PPL_UNPLAND_EFFORT2,
732 	EQPMT_ETC_EFFORT2,
733 	SUB_PRJ_ETC_COST2,
734 	SUB_PRJ_PPL_ETC_COST2,
735 	SUB_PRJ_EQPMT_ETC_COST2,
736 	SUB_PRJ_PPL_ETC_EFFORT2,
737 	SUB_PRJ_EQPMT_ETC_EFFORT2,
738 	EARNED_VALUE2,
739 	BAC_VALUE2,
740 	START_DATE3,
741 	START_DATE_OVERRIDE3,
742 	FINISH_DATE3,
743 	DURATION3,
744 	TASK_STATUS3,
745 	PROGRESS_STATUS_WEIGHT3,
746 	PROGRESS_OVERRIDE3,
747 	REMAINING_EFFORT3,
748 	PERCENT_COMPLETE3,
749 	PERCENT_OVERRIDE3,
750 	TASK_WEIGHT3,
751 	NUMBER_FIELD3,
752 	ROLLUP_NODE3,
753 	DIRTY_FLAG3,
754 	ETC_Cost3,
755 	PPL_ETC_COST3,
756 	EQPMT_ETC_COST3,
757 	PPL_UNPLAND_EFFORT3,
758 	EQPMT_ETC_EFFORT3,
759 	SUB_PRJ_ETC_COST3,
760 	SUB_PRJ_PPL_ETC_COST3,
761 	SUB_PRJ_EQPMT_ETC_COST3,
762 	SUB_PRJ_PPL_ETC_EFFORT3,
763 	SUB_PRJ_EQPMT_ETC_EFFORT3,
764 	EARNED_VALUE3,
765 	BAC_VALUE3,
766 	START_DATE4,
767 	START_DATE_OVERRIDE4,
768 	FINISH_DATE4,
769 	DURATION4,
770 	TASK_STATUS4,
771 	PROGRESS_STATUS_WEIGHT4,
772 	PROGRESS_OVERRIDE4,
773 	REMAINING_EFFORT4,
774 	PERCENT_COMPLETE4,
775 	PERCENT_OVERRIDE4,
776 	TASK_WEIGHT4,
777 	NUMBER_FIELD4,
778 	ROLLUP_NODE4,
779 	DIRTY_FLAG4,
780 	ETC_Cost4,
781 	PPL_ETC_COST4,
782 	EQPMT_ETC_COST4,
783 	PPL_UNPLAND_EFFORT4,
784 	EQPMT_ETC_EFFORT4,
785 	SUB_PRJ_ETC_COST4,
786 	SUB_PRJ_PPL_ETC_COST4,
787 	SUB_PRJ_EQPMT_ETC_COST4,
788 	SUB_PRJ_PPL_ETC_EFFORT4,
789 	SUB_PRJ_EQPMT_ETC_EFFORT4,
790 	EARNED_VALUE4,
791 	BAC_VALUE4,
792 	START_DATE5,
793 	START_DATE_OVERRIDE5,
794 	FINISH_DATE5,
795 	DURATION5,
796 	TASK_STATUS5,
797 	PROGRESS_STATUS_WEIGHT5,
798 	PROGRESS_OVERRIDE5,
799 	REMAINING_EFFORT5,
800 	PERCENT_COMPLETE5,
801 	PERCENT_OVERRIDE5,
802 	TASK_WEIGHT5,
803 	NUMBER_FIELD5,
804 	ROLLUP_NODE5,
805 	DIRTY_FLAG5,
806 	ETC_Cost5,
807 	PPL_ETC_COST5,
808 	EQPMT_ETC_COST5,
809 	PPL_UNPLAND_EFFORT5,
810 	EQPMT_ETC_EFFORT5,
811 	SUB_PRJ_ETC_COST5,
812 	SUB_PRJ_PPL_ETC_COST5,
813 	SUB_PRJ_EQPMT_ETC_COST5,
814 	SUB_PRJ_PPL_ETC_EFFORT5,
815 	SUB_PRJ_EQPMT_ETC_EFFORT5,
816 	EARNED_VALUE5,
817 	BAC_VALUE5,
818 	START_DATE6,
819 	START_DATE_OVERRIDE6,
820 	FINISH_DATE6,
821 	DURATION6,
822 	TASK_STATUS6,
823 	PROGRESS_STATUS_WEIGHT6,
824 	PROGRESS_OVERRIDE6,
825 	REMAINING_EFFORT6,
826 	PERCENT_COMPLETE6,
827 	PERCENT_OVERRIDE6,
828 	TASK_WEIGHT6,
829 	NUMBER_FIELD6,
830 	ROLLUP_NODE6,
831 	DIRTY_FLAG6,
832 	ETC_Cost6,
833 	PPL_ETC_COST6,
834 	EQPMT_ETC_COST6,
835 	PPL_UNPLAND_EFFORT6,
836 	EQPMT_ETC_EFFORT6,
837 	SUB_PRJ_ETC_COST6,
838 	SUB_PRJ_PPL_ETC_COST6,
839 	SUB_PRJ_EQPMT_ETC_COST6,
840 	SUB_PRJ_PPL_ETC_EFFORT6,
841 	SUB_PRJ_EQPMT_ETC_EFFORT6,
842 	EARNED_VALUE6,
843 	BAC_VALUE6,
844 	PERC_COMP_DERIVATIVE_CODE1,
845 	PERC_COMP_DERIVATIVE_CODE2,
846 	PERC_COMP_DERIVATIVE_CODE3,
847 	PERC_COMP_DERIVATIVE_CODE4,
848 	PERC_COMP_DERIVATIVE_CODE5,
849 	PERC_COMP_DERIVATIVE_CODE6,
850 	SUMMARY_OBJECT_FLAG -- 4370746
851       FROM PA_PROJ_ROLLUP_BULK_TEMP
852       WHERE PROCESS_NUMBER  = C_Process_Number
853       order by Object_Type, Object_ID;
854 
855 -- Bug 4218507 : Added Processed_Data_Structure_rollup
856  CURSOR Processed_Data_Structure_rol(C_Process_Number NUMBER) IS
857       SELECT
858 	OBJECT_TYPE,
859 	OBJECT_ID,
860 	PARENT_OBJECT_TYPE,
861 	PARENT_OBJECT_ID,
862 	CALENDAR_ID,
863 	CONSTRAINT_TYPE_CODE,
864 	CONSTRAINT_DATE,
865 	WBS_LEVEL,
866 	START_DATE1,
867 	START_DATE_OVERRIDE1,
868 	FINISH_DATE1,
869 	DURATION1,
870 	TASK_STATUS1,
871 	PROGRESS_STATUS_WEIGHT1,
872 	PROGRESS_OVERRIDE1,
873 	REMAINING_EFFORT1,
874 	PERCENT_COMPLETE1,
875 	PERCENT_OVERRIDE1,
876 	TASK_WEIGHT1,
877 	NUMBER_FIELD1,
878 	ROLLUP_NODE1,
879 	DIRTY_FLAG1,
880 	ETC_Cost1,
881 	PPL_ETC_COST1,
882 	EQPMT_ETC_COST1,
883 	PPL_UNPLAND_EFFORT1,
884 	EQPMT_ETC_EFFORT1,
885 	SUB_PRJ_ETC_COST1,
886 	SUB_PRJ_PPL_ETC_COST1,
887 	SUB_PRJ_EQPMT_ETC_COST1,
888 	SUB_PRJ_PPL_ETC_EFFORT1,
889 	SUB_PRJ_EQPMT_ETC_EFFORT1,
890 	EARNED_VALUE1,
891 	BAC_VALUE1,
892 	START_DATE2,
893 	START_DATE_OVERRIDE2,
894 	FINISH_DATE2,
895 	DURATION2,
896 	TASK_STATUS2,
897 	PROGRESS_STATUS_WEIGHT2,
898 	PROGRESS_OVERRIDE2,
899 	REMAINING_EFFORT2,
900 	PERCENT_COMPLETE2,
901 	PERCENT_OVERRIDE2,
902 	TASK_WEIGHT2,
903 	NUMBER_FIELD2,
904 	ROLLUP_NODE2,
905 	DIRTY_FLAG2,
906 	ETC_Cost2,
907 	PPL_ETC_COST2,
908 	EQPMT_ETC_COST2,
909 	PPL_UNPLAND_EFFORT2,
910 	EQPMT_ETC_EFFORT2,
911 	SUB_PRJ_ETC_COST2,
912 	SUB_PRJ_PPL_ETC_COST2,
913 	SUB_PRJ_EQPMT_ETC_COST2,
914 	SUB_PRJ_PPL_ETC_EFFORT2,
915 	SUB_PRJ_EQPMT_ETC_EFFORT2,
916 	EARNED_VALUE2,
917 	BAC_VALUE2,
918 	START_DATE3,
919 	START_DATE_OVERRIDE3,
920 	FINISH_DATE3,
921 	DURATION3,
922 	TASK_STATUS3,
923 	PROGRESS_STATUS_WEIGHT3,
924 	PROGRESS_OVERRIDE3,
925 	REMAINING_EFFORT3,
926 	PERCENT_COMPLETE3,
927 	PERCENT_OVERRIDE3,
928 	TASK_WEIGHT3,
929 	NUMBER_FIELD3,
930 	ROLLUP_NODE3,
931 	DIRTY_FLAG3,
932 	ETC_Cost3,
933 	PPL_ETC_COST3,
934 	EQPMT_ETC_COST3,
935 	PPL_UNPLAND_EFFORT3,
936 	EQPMT_ETC_EFFORT3,
937 	SUB_PRJ_ETC_COST3,
938 	SUB_PRJ_PPL_ETC_COST3,
939 	SUB_PRJ_EQPMT_ETC_COST3,
940 	SUB_PRJ_PPL_ETC_EFFORT3,
941 	SUB_PRJ_EQPMT_ETC_EFFORT3,
942 	EARNED_VALUE3,
943 	BAC_VALUE3,
944 	START_DATE4,
945 	START_DATE_OVERRIDE4,
946 	FINISH_DATE4,
947 	DURATION4,
948 	TASK_STATUS4,
949 	PROGRESS_STATUS_WEIGHT4,
950 	PROGRESS_OVERRIDE4,
951 	REMAINING_EFFORT4,
952 	PERCENT_COMPLETE4,
953 	PERCENT_OVERRIDE4,
954 	TASK_WEIGHT4,
955 	NUMBER_FIELD4,
956 	ROLLUP_NODE4,
957 	DIRTY_FLAG4,
958 	ETC_Cost4,
959 	PPL_ETC_COST4,
960 	EQPMT_ETC_COST4,
961 	PPL_UNPLAND_EFFORT4,
962 	EQPMT_ETC_EFFORT4,
963 	SUB_PRJ_ETC_COST4,
964 	SUB_PRJ_PPL_ETC_COST4,
965 	SUB_PRJ_EQPMT_ETC_COST4,
966 	SUB_PRJ_PPL_ETC_EFFORT4,
967 	SUB_PRJ_EQPMT_ETC_EFFORT4,
968 	EARNED_VALUE4,
969 	BAC_VALUE4,
970 	START_DATE5,
971 	START_DATE_OVERRIDE5,
972 	FINISH_DATE5,
973 	DURATION5,
974 	TASK_STATUS5,
975 	PROGRESS_STATUS_WEIGHT5,
976 	PROGRESS_OVERRIDE5,
977 	REMAINING_EFFORT5,
978 	PERCENT_COMPLETE5,
979 	PERCENT_OVERRIDE5,
980 	TASK_WEIGHT5,
981 	NUMBER_FIELD5,
982 	ROLLUP_NODE5,
983 	DIRTY_FLAG5,
984 	ETC_Cost5,
985 	PPL_ETC_COST5,
986 	EQPMT_ETC_COST5,
987 	PPL_UNPLAND_EFFORT5,
988 	EQPMT_ETC_EFFORT5,
989 	SUB_PRJ_ETC_COST5,
990 	SUB_PRJ_PPL_ETC_COST5,
991 	SUB_PRJ_EQPMT_ETC_COST5,
992 	SUB_PRJ_PPL_ETC_EFFORT5,
993 	SUB_PRJ_EQPMT_ETC_EFFORT5,
994 	EARNED_VALUE5,
995 	BAC_VALUE5,
996 	START_DATE6,
997 	START_DATE_OVERRIDE6,
998 	FINISH_DATE6,
999 	DURATION6,
1000 	TASK_STATUS6,
1001 	PROGRESS_STATUS_WEIGHT6,
1002 	PROGRESS_OVERRIDE6,
1003 	REMAINING_EFFORT6,
1004 	PERCENT_COMPLETE6,
1005 	PERCENT_OVERRIDE6,
1006 	TASK_WEIGHT6,
1007 	NUMBER_FIELD6,
1008 	ROLLUP_NODE6,
1009 	DIRTY_FLAG6,
1010 	ETC_Cost6,
1011 	PPL_ETC_COST6,
1012 	EQPMT_ETC_COST6,
1013 	PPL_UNPLAND_EFFORT6,
1014 	EQPMT_ETC_EFFORT6,
1015 	SUB_PRJ_ETC_COST6,
1016 	SUB_PRJ_PPL_ETC_COST6,
1017 	SUB_PRJ_EQPMT_ETC_COST6,
1018 	SUB_PRJ_PPL_ETC_EFFORT6,
1019 	SUB_PRJ_EQPMT_ETC_EFFORT6,
1020 	EARNED_VALUE6,
1021 	BAC_VALUE6,
1022 	PERC_COMP_DERIVATIVE_CODE1,
1023 	PERC_COMP_DERIVATIVE_CODE2,
1024 	PERC_COMP_DERIVATIVE_CODE3,
1025 	PERC_COMP_DERIVATIVE_CODE4,
1026 	PERC_COMP_DERIVATIVE_CODE5,
1027 	PERC_COMP_DERIVATIVE_CODE6,
1028 	SUMMARY_OBJECT_FLAG -- 4370746
1029       FROM PA_PROJ_ROLLUP_BULK_TEMP
1030       WHERE PROCESS_NUMBER  = C_Process_Number
1031       order by calendar_id;
1032 
1033 CURSOR lowest_dirty_object_list_dates IS
1034 SELECT object_id, object_type, start_date1, start_date2, start_date3,
1035        start_date4, start_date5, start_date6, finish_date1,finish_date2, finish_date3,
1036        finish_date4, finish_date5, finish_date6, duration1, duration2, duration3, duration4,
1037        duration5, duration6, dirty_flag1, dirty_flag2, dirty_flag3, dirty_flag4, dirty_flag5, dirty_flag6
1038        , 'N', 'N', 'N', 'N', 'N', 'N'
1039        FROM   PA_PROJ_ROLLUP_BULK_TEMP t1
1040        WHERE  PROCESS_NUMBER  = l_process_number
1041        -- 4218507 : This could be made dependenct on dirty_flag1='Y' only. Not sure whethere this will improve performance
1042        AND    (dirty_flag1='Y' OR dirty_flag2='Y' OR dirty_flag3='Y' OR dirty_flag4='Y' OR dirty_flag5='Y'
1043                OR dirty_flag6='Y')
1044        AND    Not Exists (select * from PA_PROJ_ROLLUP_BULK_TEMP t2
1045 		where t2.PROCESS_NUMBER = l_process_number
1046 		and t2.parent_object_id = t1.object_id
1047 		AND ROWNUM < 2);
1048 
1049 CURSOR dirty_Parent_List (c_object_ID NUMBER ) IS
1050 SELECT object_id, object_type, start_date1, start_date2, start_date3,
1051        start_date4, start_date5, start_date6, finish_date1,finish_date2, finish_date3,
1052        finish_date4, finish_date5, finish_date6, duration1, duration2, duration3, duration4,
1053        duration5, duration6, dirty_flag1, dirty_flag2, dirty_flag3, dirty_flag4, dirty_flag5, dirty_flag6,
1054        start_date_override1, start_date_override2, start_date_override3, start_date_override4,
1055        start_date_override5, start_date_override6
1056 	  FROM   PA_PROJ_ROLLUP_BULK_TEMP
1057 	  WHERE  PROCESS_NUMBER   = l_process_number
1058        -- 4218507 : This could be made dependent on dirty_flag1=Y only
1059 	  AND    (dirty_flag1='Y' OR dirty_flag2='Y' OR dirty_flag3='Y' OR dirty_flag4='Y' OR dirty_flag5='Y' OR
1060                  dirty_flag6='Y')
1061 	  AND object_id <> c_object_id
1062 	  START  WITH object_id   = c_object_ID
1063 	    CONNECT BY object_id  = PRIOR parent_object_id
1064 order by wbs_level desc;
1065 
1066 
1067 CURSOR Parent_Objects_List_Effort IS
1068 SELECT object_id, object_type,REMAINING_EFFORT1,REMAINING_EFFORT2, REMAINING_EFFORT3, REMAINING_EFFORT4
1069 , REMAINING_EFFORT5, REMAINING_EFFORT6
1070 FROM   PA_PROJ_ROLLUP_BULK_TEMP t1
1071 WHERE  process_number = l_process_number
1072 AND OBJECT_TYPE <> 'PA_DELIVERABLES'
1073 AND Exists (SELECT * from PA_PROJ_ROLLUP_BULK_TEMP t2
1074 	  WHERE t2.OBJECT_TYPE <> 'PA_DELIVERABLES'
1075 	  AND t2.parent_object_id = t1.object_id
1076           AND t2.parent_object_type IN ('PA_STRUCTURES','PA_TASKS') -- Bug 4450587
1077 	  AND process_number = l_process_number
1078 	  AND ROWNUM < 2)
1079 Order By WBS_LEVEL DESC;
1080 
1081 -- 4366733 : Deliverable Progress Status should not rollup
1082 CURSOR Parent_Objects_List_prog_sts IS
1083 SELECT Object_ID, object_type, PROGRESS_STATUS_WEIGHT1, PROGRESS_STATUS_WEIGHT2, PROGRESS_STATUS_WEIGHT3
1084 , PROGRESS_STATUS_WEIGHT4, PROGRESS_STATUS_WEIGHT5, PROGRESS_STATUS_WEIGHT6
1085 FROM   PA_PROJ_ROLLUP_BULK_TEMP t1
1086 --WHERE  OBJECT_TYPE IN ('PA_TASKS', 'PA_STRUCTURES', 'PA_DELIVERABLES')
1087 WHERE  OBJECT_TYPE IN ('PA_TASKS', 'PA_STRUCTURES')
1088 AND process_number = l_process_number
1089 AND Exists (Select * From PA_PROJ_ROLLUP_BULK_TEMP t2
1090 --	 Where t2.OBJECT_TYPE IN ('PA_TASKS', 'PA_STRUCTURES', 'PA_DELIVERABLES', 'PA_SUBPROJECTS')
1091 	 Where t2.OBJECT_TYPE IN ('PA_TASKS', 'PA_STRUCTURES', 'PA_SUBPROJECTS')
1092 	  AND t2.parent_object_id = t1.object_id
1093           AND t2.parent_object_type IN ('PA_STRUCTURES','PA_TASKS') -- Bug 4450587
1094 	  AND process_number = l_process_number
1095 	  AND ROWNUM < 2)
1096 Order By WBS_LEVEL DESC;
1097 
1098 
1099 CURSOR parent_objects_list_task_sts IS
1100 SELECT object_id, object_type, task_status1, task_status2, task_status3, task_status4, task_status5, task_status6
1101 FROM PA_PROJ_ROLLUP_BULK_TEMP t1
1102 WHERE PROCESS_NUMBER = l_process_number
1103 AND OBJECT_TYPE <> 'PA_ASSIGNMENTS'
1104       AND Exists (Select * From PA_PROJ_ROLLUP_BULK_TEMP t2
1105 		Where t2.PROCESS_NUMBER = l_process_number
1106       		AND OBJECT_TYPE <> 'PA_ASSIGNMENTS'
1107 		AND t2.parent_object_id = t1.object_id
1108                 AND t2.parent_object_type IN ('PA_STRUCTURES','PA_TASKS') -- Bug 4450587
1109 		AND RowNum < 2)
1110 Order By WBS_LEVEL DESC;
1111 
1112 CURSOR Child_Task_Status_partial(p_parent_id NUMBER) IS
1113 SELECT decode(rollup_node1, 'Y', TASK_STATUS1, -1)
1114       , decode(rollup_node2, 'Y', TASK_STATUS2, -1)
1115       , decode(rollup_node3, 'Y', TASK_STATUS3, -1)
1116       , decode(rollup_node4, 'Y', TASK_STATUS4, -1)
1117       , decode(rollup_node5, 'Y', TASK_STATUS5, -1)
1118       , decode(rollup_node6, 'Y', TASK_STATUS6, -1)
1119 FROM PA_PROJ_ROLLUP_BULK_TEMP
1120 WHERE PROCESS_NUMBER = l_process_number
1121 AND OBJECT_TYPE <> 'PA_ASSIGNMENTS'
1122 AND parent_object_id = p_parent_id
1123 AND parent_object_type IN ('PA_STRUCTURES','PA_TASKS') -- Bug 4450587
1124 ;
1125 
1126 CURSOR Child_Task_Status_full(p_parent_id NUMBER) IS
1127 SELECT TASK_STATUS1, TASK_STATUS2, TASK_STATUS3, TASK_STATUS4, TASK_STATUS5, TASK_STATUS6
1128 FROM PA_PROJ_ROLLUP_BULK_TEMP
1129 WHERE PROCESS_NUMBER = l_process_number
1130 AND OBJECT_TYPE <> 'PA_ASSIGNMENTS'
1131 AND parent_object_id = p_parent_id
1132 AND parent_object_type IN ('PA_STRUCTURES','PA_TASKS') -- Bug 4450587
1133 ;
1134 
1135 -- Perc_Comp_Derivative_Code1 serves purpose for all 6 sets
1136 CURSOR lowest_tasks_per_comp IS
1137 SELECT object_id, OBJECT_TYPE, Perc_Comp_Derivative_Code1, BAC_VALUE1, BAC_VALUE2, BAC_VALUE3, BAC_VALUE4,
1138 BAC_VALUE5, BAC_VALUE6, PERCENT_COMPLETE1, PERCENT_COMPLETE2, PERCENT_COMPLETE3,
1139 PERCENT_COMPLETE4, PERCENT_COMPLETE5, PERCENT_COMPLETE6, PERCENT_OVERRIDE1, PERCENT_OVERRIDE2,
1140 PERCENT_OVERRIDE3, PERCENT_OVERRIDE4, PERCENT_OVERRIDE5, PERCENT_OVERRIDE6, EARNED_VALUE1, EARNED_VALUE2
1141 , EARNED_VALUE3, EARNED_VALUE4, EARNED_VALUE5, EARNED_VALUE6
1142 FROM PA_PROJ_ROLLUP_BULK_TEMP t1
1143 WHERE PROCESS_NUMBER = l_process_number
1144 AND OBJECT_TYPE IN ('PA_TASKS', 'PA_STRUCTURES')
1145 AND nvl(SUMMARY_OBJECT_FLAG, 'N') NOT IN ('Y', 'L') -- 4370746 -- 4586449 : Added 'L'
1146 AND not Exists (Select * From PA_PROJ_ROLLUP_BULK_TEMP t2
1147 		  Where t2.PROCESS_NUMBER = l_process_number
1148       		  AND t2.OBJECT_TYPE IN ('PA_TASKS', 'PA_STRUCTURES')
1149 		  And t2.parent_object_id = t1.object_id
1150                   AND t2.parent_object_type IN ('PA_STRUCTURES','PA_TASKS') -- Bug 4450587
1151 		  AND ROWNUM < 2);
1152 
1153 CURSOR parent_objects_list_per_comp IS
1154 SELECT object_id, OBJECT_TYPE, Perc_Comp_Derivative_Code1, BAC_VALUE1, BAC_VALUE2, BAC_VALUE3, BAC_VALUE4,
1155 BAC_VALUE5, BAC_VALUE6, PERCENT_COMPLETE1, PERCENT_COMPLETE2, PERCENT_COMPLETE3,
1156 PERCENT_COMPLETE4, PERCENT_COMPLETE5, PERCENT_COMPLETE6, PERCENT_OVERRIDE1, PERCENT_OVERRIDE2,
1157 PERCENT_OVERRIDE3, PERCENT_OVERRIDE4, PERCENT_OVERRIDE5, PERCENT_OVERRIDE6, EARNED_VALUE1, EARNED_VALUE2
1158 , EARNED_VALUE3, EARNED_VALUE4, EARNED_VALUE5, EARNED_VALUE6
1159 , summary_object_flag -- 4587517
1160 FROM PA_PROJ_ROLLUP_BULK_TEMP t1
1161 WHERE PROCESS_NUMBER = l_process_number
1162 AND OBJECT_TYPE IN ('PA_TASKS', 'PA_STRUCTURES')
1163 -- 4530036 : SUMMARY_OBJECT_FLAG is added so that
1164 -- earned value gets recalculated even if no childs are passed to summary level
1165 AND( nvl(SUMMARY_OBJECT_FLAG, 'N') IN ('Y','L') -- 4586449 : Added 'L'
1166 OR Exists (Select * From PA_PROJ_ROLLUP_BULK_TEMP t2
1167 		  Where t2.PROCESS_NUMBER = l_process_number
1168       		  AND t2.OBJECT_TYPE IN ('PA_TASKS', 'PA_STRUCTURES')
1169 		  And t2.parent_object_id = t1.object_id
1170                   AND t2.parent_object_type IN ('PA_STRUCTURES','PA_TASKS') -- Bug 4450587
1171 		  AND ROWNUM < 2)
1172    )
1173 Order By WBS_LEVEL DESC;
1174 
1175 CURSOR Parent_Objects_List_ETC_COST IS
1176 SELECT object_id, object_type, ETC_Cost1, ETC_Cost2, ETC_Cost3, ETC_Cost4, ETC_Cost5, ETC_Cost6
1177 , PPL_ETC_COST1, PPL_ETC_COST2, PPL_ETC_COST3, PPL_ETC_COST4, PPL_ETC_COST5, PPL_ETC_COST6
1178 , EQPMT_ETC_COST1, EQPMT_ETC_COST2, EQPMT_ETC_COST3, EQPMT_ETC_COST4, EQPMT_ETC_COST5, EQPMT_ETC_COST6
1179 , PPL_UNPLAND_EFFORT1, PPL_UNPLAND_EFFORT2, PPL_UNPLAND_EFFORT3, PPL_UNPLAND_EFFORT4, PPL_UNPLAND_EFFORT5, PPL_UNPLAND_EFFORT6
1180 , EQPMT_ETC_EFFORT1, EQPMT_ETC_EFFORT2, EQPMT_ETC_EFFORT3, EQPMT_ETC_EFFORT4, EQPMT_ETC_EFFORT5, EQPMT_ETC_EFFORT6
1181 , SUB_PRJ_ETC_COST1, SUB_PRJ_ETC_COST2, SUB_PRJ_ETC_COST3, SUB_PRJ_ETC_COST4, SUB_PRJ_ETC_COST5, SUB_PRJ_ETC_COST6
1182 , SUB_PRJ_PPL_ETC_COST1, SUB_PRJ_PPL_ETC_COST2, SUB_PRJ_PPL_ETC_COST3, SUB_PRJ_PPL_ETC_COST4, SUB_PRJ_PPL_ETC_COST5, SUB_PRJ_PPL_ETC_COST6
1183 , SUB_PRJ_EQPMT_ETC_COST1, SUB_PRJ_EQPMT_ETC_COST2, SUB_PRJ_EQPMT_ETC_COST3, SUB_PRJ_EQPMT_ETC_COST4, SUB_PRJ_EQPMT_ETC_COST5, SUB_PRJ_EQPMT_ETC_COST6
1184 , SUB_PRJ_PPL_ETC_EFFORT1, SUB_PRJ_PPL_ETC_EFFORT2, SUB_PRJ_PPL_ETC_EFFORT3, SUB_PRJ_PPL_ETC_EFFORT4, SUB_PRJ_PPL_ETC_EFFORT5, SUB_PRJ_PPL_ETC_EFFORT6
1185 , SUB_PRJ_EQPMT_ETC_EFFORT1, SUB_PRJ_EQPMT_ETC_EFFORT2, SUB_PRJ_EQPMT_ETC_EFFORT3, SUB_PRJ_EQPMT_ETC_EFFORT4, SUB_PRJ_EQPMT_ETC_EFFORT5, SUB_PRJ_EQPMT_ETC_EFFORT6
1186 , REMAINING_EFFORT1, REMAINING_EFFORT2, REMAINING_EFFORT3, REMAINING_EFFORT4, REMAINING_EFFORT5, REMAINING_EFFORT6
1187 FROM   PA_PROJ_ROLLUP_BULK_TEMP t1
1188 WHERE  PROCESS_NUMBER = l_process_number
1189 AND OBJECT_TYPE NOT IN ( 'PA_DELIVERABLES',  'PA_ASSIGNMENTS', 'PA_SUBPROJECTS')
1190 AND Exists (SELECT * from PA_PROJ_ROLLUP_BULK_TEMP t2
1191 	  WHERE t2.PROCESS_NUMBER = l_process_number
1192 	  AND t2.OBJECT_TYPE <> 'PA_DELIVERABLES'
1193 	  AND t2.parent_object_id = t1.object_id
1194           AND t2.parent_object_type IN ('PA_STRUCTURES','PA_TASKS') -- Bug 4450587
1195 	  AND ROWNUM < 2)
1196 Order By WBS_LEVEL DESC;
1197 
1198 CURSOR all_dirty_object_list_summary IS
1199 SELECT object_id, object_type, dirty_flag1, dirty_flag2, dirty_flag3, dirty_flag4, dirty_flag5, dirty_flag6
1200 FROM PA_PROJ_ROLLUP_BULK_TEMP t1
1201 WHERE PROCESS_NUMBER = l_process_number
1202 AND OBJECT_TYPE <> 'PA_DELIVERABLES'
1203 AND (Dirty_flag1 ='Y' OR Dirty_flag2 ='Y' OR Dirty_flag3 ='Y' OR Dirty_flag4 ='Y' OR Dirty_flag5 ='Y'
1204 	OR Dirty_flag6 ='Y')
1205 AND Exists (select 1 from PA_PROJ_ROLLUP_BULK_TEMP t2
1206 	  where t2.PROCESS_NUMBER = l_process_number
1207 	  and t2.OBJECT_TYPE <> 'PA_DELIVERABLES'
1208 	  and t2.parent_object_id = t1.object_id
1209 	  AND ROWNUM < 2
1210 	      );
1211 
1212 --Bug 5942861. Modified the Cursor so that Connect by and Order by on done on different sets of data.
1213 CURSOR all_Parent_Dirty_Object_List(c_object_id NUMBER, c_dirty_flag1 VARCHAR2, c_dirty_flag2 VARCHAR2
1214     , c_dirty_flag3 VARCHAR2, c_dirty_flag4 VARCHAR2, c_dirty_flag5 VARCHAR2, c_dirty_flag6 VARCHAR2) IS
1215 SELECT t.Object_ID, t.object_type, t.dirty_flag1, t.dirty_flag2, t.dirty_flag3
1216      , t.dirty_flag4, t.dirty_flag5, t.dirty_flag6, c_dirty_flag1 ref_dirty_flag1
1217      , c_dirty_flag2 ref_dirty_flag2, c_dirty_flag3 ref_dirty_flag3, c_dirty_flag4 ref_dirty_flag4
1218      , c_dirty_flag5 ref_dirty_flag5, c_dirty_flag6 ref_dirty_flag6
1219 FROM
1220    (SELECT t2.Object_ID, t2.object_type, t2.dirty_flag1, t2.dirty_flag2, t2.dirty_flag3
1221          , t2.dirty_flag4, t2.dirty_flag5, t2.dirty_flag6,t2.wbs_level order_by_clause
1222 FROM PA_PROJ_ROLLUP_BULK_TEMP T2
1223 WHERE T2.PROCESS_NUMBER = l_process_number
1224 AND T2.Object_ID <> c_object_id
1225 START WITH T2.PROCESS_NUMBER = l_process_number
1226 AND        T2.Object_ID = c_object_id
1227 CONNECT BY T2.PROCESS_NUMBER = l_process_number
1228 AND        T2.Parent_Object_ID = PRIOR T2.Object_ID) t
1229 order by order_by_clause desc;
1230 
1231 CURSOR all_dirty_object_list_lowest IS
1232 SELECT object_id, object_type, dirty_flag1, dirty_flag2, dirty_flag3, dirty_flag4, dirty_flag5, dirty_flag6
1233 FROM PA_PROJ_ROLLUP_BULK_TEMP t1
1234 WHERE PROCESS_NUMBER = l_process_number
1235 AND OBJECT_TYPE <> 'PA_DELIVERABLES'
1236 AND (Dirty_flag1 ='Y' OR Dirty_flag2 ='Y' OR Dirty_flag3 ='Y' OR Dirty_flag4 ='Y' OR Dirty_flag5 ='Y'
1237 	OR Dirty_flag6 ='Y')
1238 AND NOT Exists (select 1 from PA_PROJ_ROLLUP_BULK_TEMP t2
1239 	  where t2.PROCESS_NUMBER = l_process_number
1240 	  and t2.OBJECT_TYPE <> 'PA_DELIVERABLES'
1241 	  and t2.parent_object_id = t1.object_id
1242 	  AND ROWNUM < 2
1243 	      );
1244 
1245 --Bug 5942861. Modified the Cursor so that Connect by and Order by on done on different sets of data.
1246 CURSOR all_child_Dirty_Object_List(c_object_id NUMBER, c_dirty_flag1 VARCHAR2, c_dirty_flag2 VARCHAR2
1247     , c_dirty_flag3 VARCHAR2, c_dirty_flag4 VARCHAR2, c_dirty_flag5 VARCHAR2, c_dirty_flag6 VARCHAR2) IS
1248 SELECT t.Object_ID, t.object_type, t.dirty_flag1, t.dirty_flag2, t.dirty_flag3
1249      , t.dirty_flag4, t.dirty_flag5, t.dirty_flag6, c_dirty_flag1 ref_dirty_flag1
1250      , c_dirty_flag2 ref_dirty_flag2, c_dirty_flag3 ref_dirty_flag3, c_dirty_flag4 ref_dirty_flag4
1251      , c_dirty_flag5 ref_dirty_flag5, c_dirty_flag6 ref_dirty_flag6
1252 FROM
1253 (   SELECT t2.Object_ID, t2.object_type, t2.dirty_flag1, t2.dirty_flag2, t2.dirty_flag3
1254          , t2.dirty_flag4, t2.dirty_flag5, t2.dirty_flag6, t2.wbs_level order_by_clause
1255 FROM PA_PROJ_ROLLUP_BULK_TEMP T2
1256 WHERE T2.PROCESS_NUMBER = l_process_number
1257 AND T2.Object_ID <> c_object_id
1258 START WITH T2.PROCESS_NUMBER = l_process_number
1259 AND        T2.Object_ID = c_object_id
1260 CONNECT BY T2.PROCESS_NUMBER = l_process_number
1261 AND        T2.Object_ID = PRIOR T2.Parent_Object_ID) t
1262 order by t.order_by_clause asc;
1263 
1264 
1265 CURSOR dirty_all_List IS
1266 SELECT object_id, object_type, start_date1, start_date2, start_date3,
1267        start_date4, start_date5, start_date6, finish_date1,finish_date2, finish_date3,
1268        finish_date4, finish_date5, finish_date6, duration1, duration2, duration3, duration4,
1269        duration5, duration6, dirty_flag1, dirty_flag2, dirty_flag3, dirty_flag4, dirty_flag5, dirty_flag6,
1270        start_date_override1, start_date_override2, start_date_override3, start_date_override4,
1271        start_date_override5, start_date_override6, 'N', 'N', 'N', 'N', 'N', 'N' , 'N', 'N', 'N', 'N', 'N', 'N'
1272 	  FROM   PA_PROJ_ROLLUP_BULK_TEMP
1273 	  WHERE  PROCESS_NUMBER   = l_process_number
1274 	  AND    (dirty_flag1='Y' OR dirty_flag2='Y' OR dirty_flag3='Y' OR dirty_flag4='Y' OR dirty_flag5='Y' OR
1275                  dirty_flag6='Y')
1276 order by wbs_level desc;
1277 
1278 BEGIN
1279         g1_debug_mode := NVL(FND_PROFILE.value_specific('PA_DEBUG_MODE',fnd_global.user_id,fnd_global.login_id,275,null,null), 'N');
1280 	IF(p_debug_mode = 'Y') and  g1_debug_mode  = 'Y' THEN
1281 		PA_DEBUG.init_err_stack('PA_SCHEDULE_OBJECTS_PVT.GENERATE_SCHEDULE');
1282 	END IF;
1283 
1284 	-- Initialize the return status to success
1285 
1286 	X_Return_Status := FND_API.G_RET_STS_SUCCESS;
1287 
1288 	l_msg_count := 0;
1289 	x_msg_data := ' ';
1290 
1291 	SAVEPOINT GENERATE_SCHEDULE_SP;
1292 
1293 	-- Derive the next Process Number
1294 	SELECT PA_PROJ_ROLLUP_BULK_TEMP_S.nextval
1295 	INTO   l_Process_Number FROM dual;
1296 
1297 	x_Process_Number := l_Process_Number;
1298 
1299 	l_data_count := P_Data_Structure.COUNT;
1300 
1301         IF g1_debug_mode  = 'Y' THEN
1302                 pa_debug.write(x_Module=>'PA_SCHEDULE_OBJECTS_PVT.GENERATE_SCHEDULE', x_Msg => 'Start', x_Log_Level=> 3);
1303                 pa_debug.write(x_Module=>'PA_SCHEDULE_OBJECTS_PVT.GENERATE_SCHEDULE', x_Msg => 'l_data_count='||l_data_count, x_Log_Level=> 3);
1304         END IF;
1305 
1306 
1307 	IF l_data_count <= 0 THEN
1308 		return;
1309 	END IF;
1310 
1311 	IF (p_partial_dates_flag1       = 'Y') OR
1312 	(p_partial_task_status_flag1 = 'Y') OR
1313 	(p_partial_progress_flag1    = 'Y') OR
1314 	(p_partial_effort_flag1      = 'Y') OR
1315 	(p_partial_percent_flag1     = 'Y')
1316 	THEN
1317 		l_partial_rollup1 := TRUE;
1318 	ELSE
1319 		l_partial_rollup1 := FALSE;
1320 	END IF;
1321 
1322 	IF (p_partial_dates_flag2       = 'Y') OR
1323 	(p_partial_task_status_flag2 = 'Y') OR
1324 	(p_partial_progress_flag2    = 'Y') OR
1325 	(p_partial_effort_flag2      = 'Y') OR
1326 	(p_partial_percent_flag2     = 'Y')
1327 	THEN
1328 		l_partial_rollup2 := TRUE;
1329 	ELSE
1330 		l_partial_rollup2 := FALSE;
1331 	END IF;
1332 
1333 	IF (p_partial_dates_flag3       = 'Y') OR
1334 	(p_partial_task_status_flag3 = 'Y') OR
1335 	(p_partial_progress_flag3    = 'Y') OR
1336 	(p_partial_effort_flag3      = 'Y') OR
1337 	(p_partial_percent_flag3     = 'Y')
1338 	THEN
1339 		l_partial_rollup3 := TRUE;
1340 	ELSE
1341 		l_partial_rollup3 := FALSE;
1342 	END IF;
1343 
1344 	IF (p_partial_dates_flag4       = 'Y') OR
1345 	(p_partial_task_status_flag4 = 'Y') OR
1346 	(p_partial_progress_flag4    = 'Y') OR
1347 	(p_partial_effort_flag4      = 'Y') OR
1348 	(p_partial_percent_flag4     = 'Y')
1349 	THEN
1350 		l_partial_rollup4 := TRUE;
1351 	ELSE
1352 		l_partial_rollup4 := FALSE;
1353 	END IF;
1354 
1355 	IF (p_partial_dates_flag5       = 'Y') OR
1356 	(p_partial_task_status_flag5 = 'Y') OR
1357 	(p_partial_progress_flag5    = 'Y') OR
1358 	(p_partial_effort_flag5      = 'Y') OR
1359 	(p_partial_percent_flag5     = 'Y')
1360 	THEN
1361 		l_partial_rollup5 := TRUE;
1362 	ELSE
1363 		l_partial_rollup5 := FALSE;
1364 	END IF;
1365 
1366 	IF (p_partial_dates_flag6       = 'Y') OR
1367 	(p_partial_task_status_flag6 = 'Y') OR
1368 	(p_partial_progress_flag6    = 'Y') OR
1369 	(p_partial_effort_flag6      = 'Y') OR
1370 	(p_partial_percent_flag6     = 'Y')
1371 	THEN
1372 		l_partial_rollup6 := TRUE;
1373 	ELSE
1374 		l_partial_rollup6 := FALSE;
1375 	END IF;
1376 
1377         IF g1_debug_mode  = 'Y' THEN
1378                 pa_debug.write(x_Module=>'PA_SCHEDULE_OBJECTS_PVT.GENERATE_SCHEDULE', x_Msg => 'After deriving partial rollup flags', x_Log_Level=> 3);
1379         END IF;
1380 
1381 
1382 
1383 	FOR i IN 1..P_Data_Structure.COUNT LOOP
1384 		l_OBJECT_TYPE(i)  		:= p_data_structure(i).OBJECT_TYPE;
1385 		l_OBJECT_ID(i)  		:= p_data_structure(i).OBJECT_ID;
1386 		l_PARENT_OBJECT_TYPE(i) 	:= p_data_structure(i).PARENT_OBJECT_TYPE;
1387 		l_PARENT_OBJECT_ID(i)  		:= p_data_structure(i).PARENT_OBJECT_ID;
1388 		l_CALENDAR_ID(i)  		:= p_data_structure(i).CALENDAR_ID;
1389 		l_CONSTRAINT_TYPE_CODE(i)  	:= p_data_structure(i).CONSTRAINT_TYPE_CODE;
1390 		l_CONSTRAINT_DATE(i)  		:= p_data_structure(i).CONSTRAINT_DATE;
1391 		l_WBS_LEVEL(i)  		:= p_data_structure(i).WBS_LEVEL;
1392 		l_SUMMARY_OBJECT_FLAG(i) 	:= p_data_structure(i).SUMMARY_OBJECT_FLAG; --4370746
1393 
1394 		l_START_DATE1(i)  		:= p_data_structure(i).START_DATE1;
1395 		l_START_DATE_OVERRIDE1(i)  	:= p_data_structure(i).START_DATE_OVERRIDE1;
1396 		l_FINISH_DATE1(i)  		:= p_data_structure(i).FINISH_DATE1;
1397 		l_DURATION1(i)  		:= p_data_structure(i).DURATION1;
1398 		l_TASK_STATUS1(i)  		:= p_data_structure(i).TASK_STATUS1;
1399 		l_PROGRESS_STATUS_WEIGHT1(i)  	:= p_data_structure(i).PROGRESS_STATUS_WEIGHT1;
1400 		l_PROGRESS_OVERRIDE1(i) 	:= p_data_structure(i).PROGRESS_OVERRIDE1;
1401 		l_REMAINING_EFFORT1(i)  	:= p_data_structure(i).REMAINING_EFFORT1;
1402 		l_PERCENT_COMPLETE1(i)  	:= p_data_structure(i).PERCENT_COMPLETE1;
1403 		l_PERCENT_OVERRIDE1(i)  	:= p_data_structure(i).PERCENT_OVERRIDE1;
1404 		l_TASK_WEIGHT1(i)  		:= p_data_structure(i).TASK_WEIGHT1;
1405 		l_NUMBER_FIELD1(i)  		:= p_data_structure(i).NUMBER_FIELD1;
1406 		l_Etc_Cost1(i)			:= p_data_structure(i).ETC_COST1;
1407 		l_PPL_ETC_Cost1(i)		:= p_data_structure(i).PPL_ETC_Cost1;
1408 		l_EQPMT_ETC_COST1(i)		:= p_data_structure(i).EQPMT_ETC_COST1;
1409 		l_PPL_UNPLAND_EFFORT1(i)	:= p_data_structure(i).PPL_UNPLAND_EFFORT1;
1410 		l_EQPMT_ETC_EFFORT1(i)		:= p_data_structure(i).EQPMT_ETC_EFFORT1;
1411 		l_SUB_PRJ_ETC_COST1(i)		:= p_data_structure(i).SUB_PRJ_ETC_COST1;
1412 		l_SUB_PRJ_PPL_ETC_COST1(i)	:= p_data_structure(i).SUB_PRJ_PPL_ETC_COST1;
1413 		l_SUB_PRJ_EQPMT_ETC_COST1(i)	:= p_data_structure(i).SUB_PRJ_EQPMT_ETC_COST1;
1414 		l_SUB_PRJ_PPL_ETC_EFFORT1(i)	:= p_data_structure(i).SUB_PRJ_PPL_ETC_EFFORT1;
1415 		l_SUB_PRJ_EQPMT_ETC_EFFORT1(i)	:= p_data_structure(i).SUB_PRJ_EQPMT_ETC_EFFORT1;
1416 		l_EARNED_VALUE1(i)		:= p_data_structure(i).EARNED_VALUE1;
1417 		l_BAC_VALUE1(i)			:= p_data_structure(i).BAC_VALUE1;
1418 		l_Perc_Comp_Deriv_Code1(i) 	:= p_data_structure(i).PERC_COMP_DERIVATIVE_CODE1;
1419 
1420 		IF(l_partial_rollup1) Then
1421 			IF(p_data_structure(i).ROLLUP_NODE1 = 'N') THEN
1422 				l_ROLLUP_NODE1(i)  := 'N';
1423 			ELSE
1424 				l_ROLLUP_NODE1(i)  := 'Y';
1425 			END IF;
1426 		ELSE
1427 			l_ROLLUP_NODE1(i)  := 'Y';
1428 		END IF;
1429 
1430 		IF(p_partial_process_flag1 = 'Y') Then
1431 			l_DIRTY_FLAG1(i)  := p_data_structure(i).DIRTY_FLAG1;
1432 		ELSE
1433 			l_DIRTY_FLAG1(i)  := 'Y';
1434 		END IF;
1435 
1436 		IF p_process_flag1 <> 'Y' THEN
1437 			l_DIRTY_FLAG1(i)  := null;
1438 			l_ROLLUP_NODE1(i)  := null;
1439 		END IF;
1440 
1441 		l_START_DATE2(i)  		:= p_data_structure(i).START_DATE2;
1442 		l_START_DATE_OVERRIDE2(i)  	:= p_data_structure(i).START_DATE_OVERRIDE2;
1443 		l_FINISH_DATE2(i)  		:= p_data_structure(i).FINISH_DATE2;
1444 		l_DURATION2(i)  		:= p_data_structure(i).DURATION2;
1445 		l_TASK_STATUS2(i)  		:= p_data_structure(i).TASK_STATUS2;
1446 		l_PROGRESS_STATUS_WEIGHT2(i)  	:= p_data_structure(i).PROGRESS_STATUS_WEIGHT2;
1447 		l_PROGRESS_OVERRIDE2(i) 	:= p_data_structure(i).PROGRESS_OVERRIDE2;
1448 		l_REMAINING_EFFORT2(i)  	:= p_data_structure(i).REMAINING_EFFORT2;
1449 		l_PERCENT_COMPLETE2(i)  	:= p_data_structure(i).PERCENT_COMPLETE2;
1450 		l_PERCENT_OVERRIDE2(i)  	:= p_data_structure(i).PERCENT_OVERRIDE2;
1451 		l_TASK_WEIGHT2(i)  		:= p_data_structure(i).TASK_WEIGHT2;
1452 		l_NUMBER_FIELD2(i)  		:= p_data_structure(i).NUMBER_FIELD2;
1453 		l_Etc_Cost2(i)			:= p_data_structure(i).ETC_COST2;
1454 		l_PPL_ETC_Cost2(i)		:= p_data_structure(i).PPL_ETC_Cost2;
1455 		l_EQPMT_ETC_COST2(i)		:= p_data_structure(i).EQPMT_ETC_COST2;
1456 		l_PPL_UNPLAND_EFFORT2(i)	:= p_data_structure(i).PPL_UNPLAND_EFFORT2;
1457 		l_EQPMT_ETC_EFFORT2(i)		:= p_data_structure(i).EQPMT_ETC_EFFORT2;
1458 		l_SUB_PRJ_ETC_COST2(i)		:= p_data_structure(i).SUB_PRJ_ETC_COST2;
1459 		l_SUB_PRJ_PPL_ETC_COST2(i)	:= p_data_structure(i).SUB_PRJ_PPL_ETC_COST2;
1460 		l_SUB_PRJ_EQPMT_ETC_COST2(i)	:= p_data_structure(i).SUB_PRJ_EQPMT_ETC_COST2;
1461 		l_SUB_PRJ_PPL_ETC_EFFORT2(i)	:= p_data_structure(i).SUB_PRJ_PPL_ETC_EFFORT2;
1462 		l_SUB_PRJ_EQPMT_ETC_EFFORT2(i)	:= p_data_structure(i).SUB_PRJ_EQPMT_ETC_EFFORT2;
1463 		l_EARNED_VALUE2(i)		:= p_data_structure(i).EARNED_VALUE2;
1464 		l_BAC_VALUE2(i)			:= p_data_structure(i).BAC_VALUE2;
1465 		l_Perc_Comp_Deriv_Code2(i) 	:= p_data_structure(i).PERC_COMP_DERIVATIVE_CODE2;
1466 
1467 		IF(l_partial_rollup2) Then
1468 			IF(p_data_structure(i).ROLLUP_NODE2 = 'N') THEN
1469 				l_ROLLUP_NODE2(i)  := 'N';
1470 			ELSE
1471 				l_ROLLUP_NODE2(i)  := 'Y';
1472 			END IF;
1473 		ELSE
1474 			l_ROLLUP_NODE2(i)  := 'Y';
1475 		END IF;
1476 
1477 		IF(p_partial_process_flag2 = 'Y') Then
1478 			l_DIRTY_FLAG2(i)  := p_data_structure(i).DIRTY_FLAG2;
1479 		ELSE
1480 			l_DIRTY_FLAG2(i)  := 'Y';
1481 		END IF;
1482 
1483 		IF p_process_flag2 <> 'Y' THEN
1484 			l_DIRTY_FLAG2(i)  := null;
1485 			l_ROLLUP_NODE2(i)  := null;
1486 		END IF;
1487 
1488 
1489 		l_START_DATE3(i)  		:= p_data_structure(i).START_DATE3;
1490 		l_START_DATE_OVERRIDE3(i)  	:= p_data_structure(i).START_DATE_OVERRIDE3;
1491 		l_FINISH_DATE3(i)  		:= p_data_structure(i).FINISH_DATE3;
1492 		l_DURATION3(i)  		:= p_data_structure(i).DURATION3;
1493 		l_TASK_STATUS3(i)  		:= p_data_structure(i).TASK_STATUS3;
1494 		l_PROGRESS_STATUS_WEIGHT3(i)  	:= p_data_structure(i).PROGRESS_STATUS_WEIGHT3;
1495 		l_PROGRESS_OVERRIDE3(i) 	:= p_data_structure(i).PROGRESS_OVERRIDE3;
1496 		l_REMAINING_EFFORT3(i)  	:= p_data_structure(i).REMAINING_EFFORT3;
1497 		l_PERCENT_COMPLETE3(i)  	:= p_data_structure(i).PERCENT_COMPLETE3;
1498 		l_PERCENT_OVERRIDE3(i)  	:= p_data_structure(i).PERCENT_OVERRIDE3;
1499 		l_TASK_WEIGHT3(i)  		:= p_data_structure(i).TASK_WEIGHT3;
1500 		l_NUMBER_FIELD3(i)  		:= p_data_structure(i).NUMBER_FIELD3;
1501 		l_Etc_Cost3(i)			:= p_data_structure(i).ETC_COST3;
1502 		l_PPL_ETC_Cost3(i)		:= p_data_structure(i).PPL_ETC_Cost3;
1503 		l_EQPMT_ETC_COST3(i)		:= p_data_structure(i).EQPMT_ETC_COST3;
1504 		l_PPL_UNPLAND_EFFORT3(i)	:= p_data_structure(i).PPL_UNPLAND_EFFORT3;
1505 		l_EQPMT_ETC_EFFORT3(i)		:= p_data_structure(i).EQPMT_ETC_EFFORT3;
1506 		l_SUB_PRJ_ETC_COST3(i)		:= p_data_structure(i).SUB_PRJ_ETC_COST3;
1507 		l_SUB_PRJ_PPL_ETC_COST3(i)	:= p_data_structure(i).SUB_PRJ_PPL_ETC_COST3;
1508 		l_SUB_PRJ_EQPMT_ETC_COST3(i)	:= p_data_structure(i).SUB_PRJ_EQPMT_ETC_COST3;
1509 		l_SUB_PRJ_PPL_ETC_EFFORT3(i)	:= p_data_structure(i).SUB_PRJ_PPL_ETC_EFFORT3;
1510 		l_SUB_PRJ_EQPMT_ETC_EFFORT3(i)	:= p_data_structure(i).SUB_PRJ_EQPMT_ETC_EFFORT3;
1511 		l_EARNED_VALUE3(i)		:= p_data_structure(i).EARNED_VALUE3;
1512 		l_BAC_VALUE3(i)			:= p_data_structure(i).BAC_VALUE3;
1513 		l_Perc_Comp_Deriv_Code3(i) 	:= p_data_structure(i).PERC_COMP_DERIVATIVE_CODE3;
1514 
1515 		IF(l_partial_rollup3) Then
1516 			IF(p_data_structure(i).ROLLUP_NODE3 = 'N') THEN
1517 				l_ROLLUP_NODE3(i)  := 'N';
1518 			ELSE
1519 				l_ROLLUP_NODE3(i)  := 'Y';
1520 			END IF;
1521 		ELSE
1522 			l_ROLLUP_NODE3(i)  := 'Y';
1523 		END IF;
1524 
1525 		IF(p_partial_process_flag3 = 'Y') Then
1526 			l_DIRTY_FLAG3(i)  := p_data_structure(i).DIRTY_FLAG3;
1527 		ELSE
1528 			l_DIRTY_FLAG3(i)  := 'Y';
1529 		END IF;
1530 
1531 		IF p_process_flag3 <> 'Y' THEN
1532 			l_DIRTY_FLAG3(i)  := null;
1533 			l_ROLLUP_NODE3(i)  := null;
1534 		END IF;
1535 
1536 
1537 		l_START_DATE4(i)  		:= p_data_structure(i).START_DATE4;
1538 		l_START_DATE_OVERRIDE4(i)  	:= p_data_structure(i).START_DATE_OVERRIDE4;
1539 		l_FINISH_DATE4(i)  		:= p_data_structure(i).FINISH_DATE4;
1540 		l_DURATION4(i)  		:= p_data_structure(i).DURATION4;
1541 		l_TASK_STATUS4(i)  		:= p_data_structure(i).TASK_STATUS4;
1542 		l_PROGRESS_STATUS_WEIGHT4(i)  	:= p_data_structure(i).PROGRESS_STATUS_WEIGHT4;
1543 		l_PROGRESS_OVERRIDE4(i) 	:= p_data_structure(i).PROGRESS_OVERRIDE4;
1544 		l_REMAINING_EFFORT4(i)  	:= p_data_structure(i).REMAINING_EFFORT4;
1545 		l_PERCENT_COMPLETE4(i)  	:= p_data_structure(i).PERCENT_COMPLETE4;
1546 		l_PERCENT_OVERRIDE4(i)  	:= p_data_structure(i).PERCENT_OVERRIDE4;
1547 		l_TASK_WEIGHT4(i)  		:= p_data_structure(i).TASK_WEIGHT4;
1548 		l_NUMBER_FIELD4(i)  		:= p_data_structure(i).NUMBER_FIELD4;
1549 		l_Etc_Cost4(i)			:= p_data_structure(i).ETC_COST4;
1550 		l_PPL_ETC_Cost4(i)		:= p_data_structure(i).PPL_ETC_Cost4;
1551 		l_EQPMT_ETC_COST4(i)		:= p_data_structure(i).EQPMT_ETC_COST4;
1552 		l_PPL_UNPLAND_EFFORT4(i)	:= p_data_structure(i).PPL_UNPLAND_EFFORT4;
1553 		l_EQPMT_ETC_EFFORT4(i)		:= p_data_structure(i).EQPMT_ETC_EFFORT4;
1554 		l_SUB_PRJ_ETC_COST4(i)		:= p_data_structure(i).SUB_PRJ_ETC_COST4;
1555 		l_SUB_PRJ_PPL_ETC_COST4(i)	:= p_data_structure(i).SUB_PRJ_PPL_ETC_COST4;
1556 		l_SUB_PRJ_EQPMT_ETC_COST4(i)	:= p_data_structure(i).SUB_PRJ_EQPMT_ETC_COST4;
1557 		l_SUB_PRJ_PPL_ETC_EFFORT4(i)	:= p_data_structure(i).SUB_PRJ_PPL_ETC_EFFORT4;
1558 		l_SUB_PRJ_EQPMT_ETC_EFFORT4(i)	:= p_data_structure(i).SUB_PRJ_EQPMT_ETC_EFFORT4;
1559 		l_EARNED_VALUE4(i)		:= p_data_structure(i).EARNED_VALUE4;
1560 		l_BAC_VALUE4(i)			:= p_data_structure(i).BAC_VALUE4;
1561 		l_Perc_Comp_Deriv_Code4(i) 	:= p_data_structure(i).PERC_COMP_DERIVATIVE_CODE4;
1562 
1563 		IF(l_partial_rollup4) Then
1564 			IF(p_data_structure(i).ROLLUP_NODE4 = 'N') THEN
1565 				l_ROLLUP_NODE4(i)  := 'N';
1566 			ELSE
1567 				l_ROLLUP_NODE4(i)  := 'Y';
1568 			END IF;
1569 		ELSE
1570 			l_ROLLUP_NODE4(i)  := 'Y';
1571 		END IF;
1572 
1573 		IF(p_partial_process_flag4 = 'Y') Then
1574 			l_DIRTY_FLAG4(i)  := p_data_structure(i).DIRTY_FLAG4;
1575 		ELSE
1576 			l_DIRTY_FLAG4(i)  := 'Y';
1577 		END IF;
1578 
1579 		IF p_process_flag4 <> 'Y' THEN
1580 			l_DIRTY_FLAG4(i)  := null;
1581 			l_ROLLUP_NODE4(i)  := null;
1582 		END IF;
1583 
1584 
1585 		l_START_DATE5(i)  		:= p_data_structure(i).START_DATE5;
1586 		l_START_DATE_OVERRIDE5(i)  	:= p_data_structure(i).START_DATE_OVERRIDE5;
1587 		l_FINISH_DATE5(i)  		:= p_data_structure(i).FINISH_DATE5;
1588 		l_DURATION5(i)  		:= p_data_structure(i).DURATION5;
1589 		l_TASK_STATUS5(i)  		:= p_data_structure(i).TASK_STATUS5;
1590 		l_PROGRESS_STATUS_WEIGHT5(i)  	:= p_data_structure(i).PROGRESS_STATUS_WEIGHT5;
1591 		l_PROGRESS_OVERRIDE5(i) 	:= p_data_structure(i).PROGRESS_OVERRIDE5;
1592 		l_REMAINING_EFFORT5(i)  	:= p_data_structure(i).REMAINING_EFFORT5;
1593 		l_PERCENT_COMPLETE5(i)  	:= p_data_structure(i).PERCENT_COMPLETE5;
1594 		l_PERCENT_OVERRIDE5(i)  	:= p_data_structure(i).PERCENT_OVERRIDE5;
1595 		l_TASK_WEIGHT5(i)  		:= p_data_structure(i).TASK_WEIGHT5;
1596 		l_NUMBER_FIELD5(i)  		:= p_data_structure(i).NUMBER_FIELD5;
1597 		l_Etc_Cost5(i)			:= p_data_structure(i).ETC_COST5;
1598 		l_PPL_ETC_Cost5(i)		:= p_data_structure(i).PPL_ETC_Cost5;
1599 		l_EQPMT_ETC_COST5(i)		:= p_data_structure(i).EQPMT_ETC_COST5;
1600 		l_PPL_UNPLAND_EFFORT5(i)	:= p_data_structure(i).PPL_UNPLAND_EFFORT5;
1601 		l_EQPMT_ETC_EFFORT5(i)		:= p_data_structure(i).EQPMT_ETC_EFFORT5;
1602 		l_SUB_PRJ_ETC_COST5(i)		:= p_data_structure(i).SUB_PRJ_ETC_COST5;
1603 		l_SUB_PRJ_PPL_ETC_COST5(i)	:= p_data_structure(i).SUB_PRJ_PPL_ETC_COST5;
1604 		l_SUB_PRJ_EQPMT_ETC_COST5(i)	:= p_data_structure(i).SUB_PRJ_EQPMT_ETC_COST5;
1605 		l_SUB_PRJ_PPL_ETC_EFFORT5(i)	:= p_data_structure(i).SUB_PRJ_PPL_ETC_EFFORT5;
1606 		l_SUB_PRJ_EQPMT_ETC_EFFORT5(i)	:= p_data_structure(i).SUB_PRJ_EQPMT_ETC_EFFORT5;
1607 		l_EARNED_VALUE5(i)		:= p_data_structure(i).EARNED_VALUE5;
1608 		l_BAC_VALUE5(i)			:= p_data_structure(i).BAC_VALUE5;
1609 		l_Perc_Comp_Deriv_Code5(i) 	:= p_data_structure(i).PERC_COMP_DERIVATIVE_CODE5;
1610 
1611 		IF(l_partial_rollup5) Then
1612 			IF(p_data_structure(i).ROLLUP_NODE5 = 'N') THEN
1613 				l_ROLLUP_NODE5(i)  := 'N';
1614 			ELSE
1615 				l_ROLLUP_NODE5(i)  := 'Y';
1616 			END IF;
1617 		ELSE
1618 			l_ROLLUP_NODE5(i)  := 'Y';
1619 		END IF;
1620 
1621 		IF(p_partial_process_flag5 = 'Y') Then
1622 			l_DIRTY_FLAG5(i)  := p_data_structure(i).DIRTY_FLAG5;
1623 		ELSE
1624 			l_DIRTY_FLAG5(i)  := 'Y';
1625 		END IF;
1626 
1627 		IF p_process_flag5 <> 'Y' THEN
1628 			l_DIRTY_FLAG5(i)  := null;
1629 			l_ROLLUP_NODE5(i)  := null;
1630 		END IF;
1631 
1632 		l_START_DATE6(i)  		:= p_data_structure(i).START_DATE6;
1633 		l_START_DATE_OVERRIDE6(i)  	:= p_data_structure(i).START_DATE_OVERRIDE6;
1634 		l_FINISH_DATE6(i)  		:= p_data_structure(i).FINISH_DATE6;
1635 		l_DURATION6(i)  		:= p_data_structure(i).DURATION6;
1636 		l_TASK_STATUS6(i)  		:= p_data_structure(i).TASK_STATUS6;
1637 		l_PROGRESS_STATUS_WEIGHT6(i)  	:= p_data_structure(i).PROGRESS_STATUS_WEIGHT6;
1638 		l_PROGRESS_OVERRIDE6(i) 	:= p_data_structure(i).PROGRESS_OVERRIDE6;
1639 		l_REMAINING_EFFORT6(i)  	:= p_data_structure(i).REMAINING_EFFORT6;
1640 		l_PERCENT_COMPLETE6(i)  	:= p_data_structure(i).PERCENT_COMPLETE6;
1641 		l_PERCENT_OVERRIDE6(i)  	:= p_data_structure(i).PERCENT_OVERRIDE6;
1642 		l_TASK_WEIGHT6(i)  		:= p_data_structure(i).TASK_WEIGHT6;
1643 		l_NUMBER_FIELD6(i)  		:= p_data_structure(i).NUMBER_FIELD6;
1644 		l_Etc_Cost6(i)			:= p_data_structure(i).ETC_COST6;
1645 		l_PPL_ETC_Cost6(i)		:= p_data_structure(i).PPL_ETC_Cost6;
1646 		l_EQPMT_ETC_COST6(i)		:= p_data_structure(i).EQPMT_ETC_COST6;
1647 		l_PPL_UNPLAND_EFFORT6(i)	:= p_data_structure(i).PPL_UNPLAND_EFFORT6;
1648 		l_EQPMT_ETC_EFFORT6(i)		:= p_data_structure(i).EQPMT_ETC_EFFORT6;
1649 		l_SUB_PRJ_ETC_COST6(i)		:= p_data_structure(i).SUB_PRJ_ETC_COST6;
1650 		l_SUB_PRJ_PPL_ETC_COST6(i)	:= p_data_structure(i).SUB_PRJ_PPL_ETC_COST6;
1651 		l_SUB_PRJ_EQPMT_ETC_COST6(i)	:= p_data_structure(i).SUB_PRJ_EQPMT_ETC_COST6;
1652 		l_SUB_PRJ_PPL_ETC_EFFORT6(i)	:= p_data_structure(i).SUB_PRJ_PPL_ETC_EFFORT6;
1653 		l_SUB_PRJ_EQPMT_ETC_EFFORT6(i)	:= p_data_structure(i).SUB_PRJ_EQPMT_ETC_EFFORT6;
1654 		l_EARNED_VALUE6(i)		:= p_data_structure(i).EARNED_VALUE6;
1655 		l_BAC_VALUE6(i)			:= p_data_structure(i).BAC_VALUE6;
1656 		l_Perc_Comp_Deriv_Code6(i) 	:= p_data_structure(i).PERC_COMP_DERIVATIVE_CODE6;
1657 
1658 		IF(l_partial_rollup6) Then
1659 			IF(p_data_structure(i).ROLLUP_NODE6 = 'N') THEN
1660 				l_ROLLUP_NODE6(i)  := 'N';
1661 			ELSE
1662 				l_ROLLUP_NODE6(i)  := 'Y';
1663 			END IF;
1664 		ELSE
1665 			l_ROLLUP_NODE6(i)  := 'Y';
1666 		END IF;
1667 
1668 		IF(p_partial_process_flag6 = 'Y') Then
1669 			l_DIRTY_FLAG6(i)  := p_data_structure(i).DIRTY_FLAG6;
1670 		ELSE
1671 			l_DIRTY_FLAG6(i)  := 'Y';
1672 		END IF;
1673 
1674 		IF p_process_flag6 <> 'Y' THEN
1675 			l_DIRTY_FLAG6(i)  := null;
1676 			l_ROLLUP_NODE6(i)  := null;
1677 		END IF;
1678 
1679 	END LOOP;	-- FOR i IN 1..P_Data_Structure.COUNT LOOP
1680 
1681         IF g1_debug_mode  = 'Y' THEN
1682                 pa_debug.write(x_Module=>'PA_SCHEDULE_OBJECTS_PVT.GENERATE_SCHEDULE', x_Msg => 'After building the table', x_Log_Level=> 3);
1683         END IF;
1684 
1685 	FORALL i IN 1..P_Data_Structure.COUNT
1686 		INSERT INTO PA_PROJ_ROLLUP_BULK_TEMP(
1687 			PROCESS_NUMBER,
1688 			OBJECT_TYPE,
1689 			OBJECT_ID,
1690 			PARENT_OBJECT_TYPE,
1691 			PARENT_OBJECT_ID,
1692 			CALENDAR_ID,
1693 			CONSTRAINT_TYPE_CODE,
1694 			CONSTRAINT_DATE,
1695 			WBS_LEVEL,
1696 			START_DATE1,
1697 			START_DATE_OVERRIDE1,
1698 			FINISH_DATE1,
1699 			DURATION1,
1700 			TASK_STATUS1,
1701 			PROGRESS_STATUS_WEIGHT1,
1702 			PROGRESS_OVERRIDE1,
1703 			REMAINING_EFFORT1,
1704 			PERCENT_COMPLETE1,
1705 			PERCENT_OVERRIDE1,
1706 			TASK_WEIGHT1,
1707 			NUMBER_FIELD1,
1708 			ROLLUP_NODE1,
1709 			DIRTY_FLAG1,
1710 			ETC_Cost1,
1711 			PPL_ETC_COST1,
1712 			EQPMT_ETC_COST1,
1713 			PPL_UNPLAND_EFFORT1,
1714 			EQPMT_ETC_EFFORT1,
1715 			SUB_PRJ_ETC_COST1,
1716 			SUB_PRJ_PPL_ETC_COST1,
1717 			SUB_PRJ_EQPMT_ETC_COST1,
1718 			SUB_PRJ_PPL_ETC_EFFORT1,
1719 			SUB_PRJ_EQPMT_ETC_EFFORT1,
1720 			EARNED_VALUE1,
1721 			BAC_VALUE1,
1722 			PERC_COMP_DERIVATIVE_CODE1,
1723 			START_DATE2,
1724 			START_DATE_OVERRIDE2,
1725 			FINISH_DATE2,
1726 			DURATION2,
1727 			TASK_STATUS2,
1728 			PROGRESS_STATUS_WEIGHT2,
1729 			PROGRESS_OVERRIDE2,
1730 			REMAINING_EFFORT2,
1731 			PERCENT_COMPLETE2,
1732 			PERCENT_OVERRIDE2,
1733 			TASK_WEIGHT2,
1734 			NUMBER_FIELD2,
1735 			ROLLUP_NODE2,
1736 			DIRTY_FLAG2,
1737 			ETC_Cost2,
1738 			PPL_ETC_COST2,
1739 			EQPMT_ETC_COST2,
1740 			PPL_UNPLAND_EFFORT2,
1741 			EQPMT_ETC_EFFORT2,
1742 			SUB_PRJ_ETC_COST2,
1743 			SUB_PRJ_PPL_ETC_COST2,
1744 			SUB_PRJ_EQPMT_ETC_COST2,
1745 			SUB_PRJ_PPL_ETC_EFFORT2,
1746 			SUB_PRJ_EQPMT_ETC_EFFORT2,
1747 			EARNED_VALUE2,
1748 			BAC_VALUE2,
1749 			PERC_COMP_DERIVATIVE_CODE2,
1750 			START_DATE3,
1751 			START_DATE_OVERRIDE3,
1752 			FINISH_DATE3,
1753 			DURATION3,
1754 			TASK_STATUS3,
1755 			PROGRESS_STATUS_WEIGHT3,
1756 			PROGRESS_OVERRIDE3,
1757 			REMAINING_EFFORT3,
1758 			PERCENT_COMPLETE3,
1759 			PERCENT_OVERRIDE3,
1760 			TASK_WEIGHT3,
1761 			NUMBER_FIELD3,
1762 			ROLLUP_NODE3,
1763 			DIRTY_FLAG3,
1764 			ETC_Cost3,
1765 			PPL_ETC_COST3,
1766 			EQPMT_ETC_COST3,
1767 			PPL_UNPLAND_EFFORT3,
1768 			EQPMT_ETC_EFFORT3,
1769 			SUB_PRJ_ETC_COST3,
1770 			SUB_PRJ_PPL_ETC_COST3,
1771 			SUB_PRJ_EQPMT_ETC_COST3,
1772 			SUB_PRJ_PPL_ETC_EFFORT3,
1773 			SUB_PRJ_EQPMT_ETC_EFFORT3,
1774 			EARNED_VALUE3,
1775 			BAC_VALUE3,
1776 			PERC_COMP_DERIVATIVE_CODE3,
1777 			START_DATE4,
1778 			START_DATE_OVERRIDE4,
1779 			FINISH_DATE4,
1780 			DURATION4,
1781 			TASK_STATUS4,
1782 			PROGRESS_STATUS_WEIGHT4,
1783 			PROGRESS_OVERRIDE4,
1784 			REMAINING_EFFORT4,
1785 			PERCENT_COMPLETE4,
1786 			PERCENT_OVERRIDE4,
1787 			TASK_WEIGHT4,
1788 			NUMBER_FIELD4,
1789 			ROLLUP_NODE4,
1790 			DIRTY_FLAG4,
1791 			ETC_Cost4,
1792 			PPL_ETC_COST4,
1793 			EQPMT_ETC_COST4,
1794 			PPL_UNPLAND_EFFORT4,
1795 			EQPMT_ETC_EFFORT4,
1796 			SUB_PRJ_ETC_COST4,
1797 			SUB_PRJ_PPL_ETC_COST4,
1798 			SUB_PRJ_EQPMT_ETC_COST4,
1799 			SUB_PRJ_PPL_ETC_EFFORT4,
1800 			SUB_PRJ_EQPMT_ETC_EFFORT4,
1801 			EARNED_VALUE4,
1802 			BAC_VALUE4,
1803 			PERC_COMP_DERIVATIVE_CODE4,
1804 			START_DATE5,
1805 			START_DATE_OVERRIDE5,
1806 			FINISH_DATE5,
1807 			DURATION5,
1808 			TASK_STATUS5,
1809 			PROGRESS_STATUS_WEIGHT5,
1810 			PROGRESS_OVERRIDE5,
1811 			REMAINING_EFFORT5,
1812 			PERCENT_COMPLETE5,
1813 			PERCENT_OVERRIDE5,
1814 			TASK_WEIGHT5,
1815 			NUMBER_FIELD5,
1816 			ROLLUP_NODE5,
1817 			DIRTY_FLAG5,
1818 			ETC_Cost5,
1819 			PPL_ETC_COST5,
1820 			EQPMT_ETC_COST5,
1821 			PPL_UNPLAND_EFFORT5,
1822 			EQPMT_ETC_EFFORT5,
1823 			SUB_PRJ_ETC_COST5,
1824 			SUB_PRJ_PPL_ETC_COST5,
1825 			SUB_PRJ_EQPMT_ETC_COST5,
1826 			SUB_PRJ_PPL_ETC_EFFORT5,
1827 			SUB_PRJ_EQPMT_ETC_EFFORT5,
1828 			EARNED_VALUE5,
1829 			BAC_VALUE5,
1830 			PERC_COMP_DERIVATIVE_CODE5,
1831 			START_DATE6,
1832 			START_DATE_OVERRIDE6,
1833 			FINISH_DATE6,
1834 			DURATION6,
1835 			TASK_STATUS6,
1836 			PROGRESS_STATUS_WEIGHT6,
1837 			PROGRESS_OVERRIDE6,
1838 			REMAINING_EFFORT6,
1839 			PERCENT_COMPLETE6,
1840 			PERCENT_OVERRIDE6,
1841 			TASK_WEIGHT6,
1842 			NUMBER_FIELD6,
1843 			ROLLUP_NODE6,
1844 			DIRTY_FLAG6,
1845 			ETC_Cost6,
1846 			PPL_ETC_COST6,
1847 			EQPMT_ETC_COST6,
1848 			PPL_UNPLAND_EFFORT6,
1849 			EQPMT_ETC_EFFORT6,
1850 			SUB_PRJ_ETC_COST6,
1851 			SUB_PRJ_PPL_ETC_COST6,
1852 			SUB_PRJ_EQPMT_ETC_COST6,
1853 			SUB_PRJ_PPL_ETC_EFFORT6,
1854 			SUB_PRJ_EQPMT_ETC_EFFORT6,
1855 			EARNED_VALUE6,
1856 			BAC_VALUE6,
1857 			PERC_COMP_DERIVATIVE_CODE6,
1858 			SUMMARY_OBJECT_FLAG -- 4370746
1859 		      ) VALUES (
1860 			l_process_number,
1861 			l_OBJECT_TYPE(i),
1862 			l_OBJECT_ID(i),
1863 			l_PARENT_OBJECT_TYPE(i),
1864 			l_PARENT_OBJECT_ID(i),
1865 			l_CALENDAR_ID(i),
1866 			l_CONSTRAINT_TYPE_CODE(i),
1867 			l_CONSTRAINT_DATE(i),
1868 			l_WBS_LEVEL(i),
1869 			l_START_DATE1(i),
1870 			l_START_DATE_OVERRIDE1(i),
1871 			l_FINISH_DATE1(i),
1872 			l_DURATION1(i),
1873 			l_TASK_STATUS1(i),
1874 			l_PROGRESS_STATUS_WEIGHT1(i),
1875 			l_PROGRESS_OVERRIDE1(i),
1876 			l_REMAINING_EFFORT1(i),
1877 			l_PERCENT_COMPLETE1(i),
1878 			l_PERCENT_OVERRIDE1(i),
1879 			l_TASK_WEIGHT1(i),
1880 			l_NUMBER_FIELD1(i),
1881 			l_ROLLUP_NODE1(i),
1882 			l_DIRTY_FLAG1(i),
1883 			l_Etc_Cost1(i),
1884 			l_PPL_ETC_Cost1(i),
1885 			l_EQPMT_ETC_COST1(i),
1886 			l_PPL_UNPLAND_EFFORT1(i),
1887 			l_EQPMT_ETC_EFFORT1(i),
1888 			l_SUB_PRJ_ETC_COST1(i),
1889 			l_SUB_PRJ_PPL_ETC_COST1(i),
1890 			l_SUB_PRJ_EQPMT_ETC_COST1(i),
1891 			l_SUB_PRJ_PPL_ETC_EFFORT1(i),
1892 			l_SUB_PRJ_EQPMT_ETC_EFFORT1(i),
1893 			l_EARNED_VALUE1(i),
1894 			l_BAC_VALUE1(i),
1895 			l_Perc_Comp_Deriv_Code1(i),
1896 			l_START_DATE2(i),
1897 			l_START_DATE_OVERRIDE2(i),
1898 			l_FINISH_DATE2(i),
1899 			l_DURATION2(i),
1900 			l_TASK_STATUS2(i),
1901 			l_PROGRESS_STATUS_WEIGHT2(i),
1902 			l_PROGRESS_OVERRIDE2(i),
1903 			l_REMAINING_EFFORT2(i),
1904 			l_PERCENT_COMPLETE2(i),
1905 			l_PERCENT_OVERRIDE2(i),
1906 			l_TASK_WEIGHT2(i),
1907 			l_NUMBER_FIELD2(i),
1908 			l_ROLLUP_NODE2(i),
1909 			l_DIRTY_FLAG2(i),
1910 			l_Etc_Cost2(i),
1911 			l_PPL_ETC_Cost2(i),
1912 			l_EQPMT_ETC_COST2(i),
1913 			l_PPL_UNPLAND_EFFORT2(i),
1914 			l_EQPMT_ETC_EFFORT2(i),
1915 			l_SUB_PRJ_ETC_COST2(i),
1916 			l_SUB_PRJ_PPL_ETC_COST2(i),
1917 			l_SUB_PRJ_EQPMT_ETC_COST2(i),
1918 			l_SUB_PRJ_PPL_ETC_EFFORT2(i),
1919 			l_SUB_PRJ_EQPMT_ETC_EFFORT2(i),
1920 			l_EARNED_VALUE2(i),
1921 			l_BAC_VALUE2(i),
1922 			l_Perc_Comp_Deriv_Code2(i),
1923 			l_START_DATE3(i),
1924 			l_START_DATE_OVERRIDE3(i),
1925 			l_FINISH_DATE3(i),
1926 			l_DURATION3(i),
1927 			l_TASK_STATUS3(i),
1928 			l_PROGRESS_STATUS_WEIGHT3(i),
1929 			l_PROGRESS_OVERRIDE3(i),
1930 			l_REMAINING_EFFORT3(i),
1931 			l_PERCENT_COMPLETE3(i),
1932 			l_PERCENT_OVERRIDE3(i),
1933 			l_TASK_WEIGHT3(i),
1934 			l_NUMBER_FIELD3(i),
1935 			l_ROLLUP_NODE3(i),
1936 			l_DIRTY_FLAG3(i),
1937 			l_Etc_Cost3(i),
1938 			l_PPL_ETC_Cost3(i),
1939 			l_EQPMT_ETC_COST3(i),
1940 			l_PPL_UNPLAND_EFFORT3(i),
1941 			l_EQPMT_ETC_EFFORT3(i),
1942 			l_SUB_PRJ_ETC_COST3(i),
1943 			l_SUB_PRJ_PPL_ETC_COST3(i),
1944 			l_SUB_PRJ_EQPMT_ETC_COST3(i),
1945 			l_SUB_PRJ_PPL_ETC_EFFORT3(i),
1946 			l_SUB_PRJ_EQPMT_ETC_EFFORT3(i),
1947 			l_EARNED_VALUE3(i),
1948 			l_BAC_VALUE3(i),
1949 			l_Perc_Comp_Deriv_Code3(i),
1950 			l_START_DATE4(i),
1951 			l_START_DATE_OVERRIDE4(i),
1952 			l_FINISH_DATE4(i),
1953 			l_DURATION4(i),
1954 			l_TASK_STATUS4(i),
1955 			l_PROGRESS_STATUS_WEIGHT4(i),
1956 			l_PROGRESS_OVERRIDE4(i),
1957 			l_REMAINING_EFFORT4(i),
1958 			l_PERCENT_COMPLETE4(i),
1959 			l_PERCENT_OVERRIDE4(i),
1960 			l_TASK_WEIGHT4(i),
1961 			l_NUMBER_FIELD4(i),
1962 			l_ROLLUP_NODE4(i),
1963 			l_DIRTY_FLAG4(i),
1964 			l_Etc_Cost4(i),
1965 			l_PPL_ETC_Cost4(i),
1966 			l_EQPMT_ETC_COST4(i),
1967 			l_PPL_UNPLAND_EFFORT4(i),
1968 			l_EQPMT_ETC_EFFORT4(i),
1969 			l_SUB_PRJ_ETC_COST4(i),
1970 			l_SUB_PRJ_PPL_ETC_COST4(i),
1971 			l_SUB_PRJ_EQPMT_ETC_COST4(i),
1972 			l_SUB_PRJ_PPL_ETC_EFFORT4(i),
1973 			l_SUB_PRJ_EQPMT_ETC_EFFORT4(i),
1974 			l_EARNED_VALUE4(i),
1975 			l_BAC_VALUE4(i),
1976 			l_Perc_Comp_Deriv_Code4(i),
1977 			l_START_DATE5(i),
1978 			l_START_DATE_OVERRIDE5(i),
1979 			l_FINISH_DATE5(i),
1980 			l_DURATION5(i),
1981 			l_TASK_STATUS5(i),
1982 			l_PROGRESS_STATUS_WEIGHT5(i),
1983 			l_PROGRESS_OVERRIDE5(i),
1984 			l_REMAINING_EFFORT5(i),
1985 			l_PERCENT_COMPLETE5(i),
1986 			l_PERCENT_OVERRIDE5(i),
1987 			l_TASK_WEIGHT5(i),
1988 			l_NUMBER_FIELD5(i),
1989 			l_ROLLUP_NODE5(i),
1990 			l_DIRTY_FLAG5(i),
1991 			l_Etc_Cost5(i),
1992 			l_PPL_ETC_Cost5(i),
1993 			l_EQPMT_ETC_COST5(i),
1994 			l_PPL_UNPLAND_EFFORT5(i),
1995 			l_EQPMT_ETC_EFFORT5(i),
1996 			l_SUB_PRJ_ETC_COST5(i),
1997 			l_SUB_PRJ_PPL_ETC_COST5(i),
1998 			l_SUB_PRJ_EQPMT_ETC_COST5(i),
1999 			l_SUB_PRJ_PPL_ETC_EFFORT5(i),
2000 			l_SUB_PRJ_EQPMT_ETC_EFFORT5(i),
2001 			l_EARNED_VALUE5(i),
2002 			l_BAC_VALUE5(i),
2003 			l_Perc_Comp_Deriv_Code5(i),
2004 			l_START_DATE6(i),
2005 			l_START_DATE_OVERRIDE6(i),
2006 			l_FINISH_DATE6(i),
2007 			l_DURATION6(i),
2008 			l_TASK_STATUS6(i),
2009 			l_PROGRESS_STATUS_WEIGHT6(i),
2010 			l_PROGRESS_OVERRIDE6(i),
2011 			l_REMAINING_EFFORT6(i),
2012 			l_PERCENT_COMPLETE6(i),
2013 			l_PERCENT_OVERRIDE6(i),
2014 			l_TASK_WEIGHT6(i),
2015 			l_NUMBER_FIELD6(i),
2016 			l_ROLLUP_NODE6(i),
2017 			l_DIRTY_FLAG6(i),
2018 			l_Etc_Cost6(i),
2019 			l_PPL_ETC_Cost6(i),
2020 			l_EQPMT_ETC_COST6(i),
2021 			l_PPL_UNPLAND_EFFORT6(i),
2022 			l_EQPMT_ETC_EFFORT6(i),
2023 			l_SUB_PRJ_ETC_COST6(i),
2024 			l_SUB_PRJ_PPL_ETC_COST6(i),
2025 			l_SUB_PRJ_EQPMT_ETC_COST6(i),
2026 			l_SUB_PRJ_PPL_ETC_EFFORT6(i),
2027 			l_SUB_PRJ_EQPMT_ETC_EFFORT6(i),
2028 			l_EARNED_VALUE6(i),
2029 			l_BAC_VALUE6(i),
2030 			l_Perc_Comp_Deriv_Code6(i),
2031 			l_SUMMARY_OBJECT_FLAG(i) -- 4370746
2032 		      );
2033 
2034 	IF g1_debug_mode  = 'Y' THEN
2035                 pa_debug.write(x_Module=>'PA_SCHEDULE_OBJECTS_PVT.GENERATE_SCHEDULE', x_Msg => 'After insertion into table', x_Log_Level=> 3);
2036                 pa_debug.write(x_Module=>'PA_SCHEDULE_OBJECTS_PVT.GENERATE_SCHEDULE', x_Msg => 'Before dirty processing', x_Log_Level=> 3);
2037         END IF;
2038 
2039 	-- p_process_flag1  to 6 to decide whether to process anything or not....
2040 	-- p_process_rollup_flag1 to 6 determine whether the following processing is required
2041 
2042 
2043 	-- ********* DIRTY PROCESSING BEGIN **********
2044 
2045 	IF ((p_process_flag1 = 'Y' OR p_process_flag2 = 'Y' OR p_process_flag3 = 'Y' OR p_process_flag4 = 'Y'
2046 		OR p_process_flag5 = 'Y' OR p_process_flag6 = 'Y')
2047 		AND(p_process_rollup_flag1 = 'Y' OR p_process_rollup_flag2 = 'Y' OR p_process_rollup_flag3 = 'Y'
2048 		OR p_process_rollup_flag4 = 'Y' OR p_process_rollup_flag5 = 'Y' OR p_process_rollup_flag6 = 'Y')
2049 		AND(p_partial_process_flag1 = 'Y' OR p_partial_process_flag2 = 'Y'  OR p_partial_process_flag3 = 'Y'
2050 		    OR p_partial_process_flag4 = 'Y' OR p_partial_process_flag5 = 'Y' OR p_partial_process_flag6 = 'Y' ))
2051 	THEN
2052 		l_temp_object_ids_tab.delete;
2053 		l_temp_object_types_tab.delete;
2054 		l_temp_dirty_flag_tab1.delete;
2055 		l_temp_dirty_flag_tab2.delete;
2056 		l_temp_dirty_flag_tab3.delete;
2057 		l_temp_dirty_flag_tab4.delete;
2058 		l_temp_dirty_flag_tab5.delete;
2059 		l_temp_dirty_flag_tab6.delete;
2060 		l_object_ids_tab.delete;
2061 		l_object_types_tab.delete;
2062 		l_dirty_flag_tab1.delete;
2063 		l_dirty_flag_tab2.delete;
2064 		l_dirty_flag_tab3.delete;
2065 		l_dirty_flag_tab4.delete;
2066 		l_dirty_flag_tab5.delete;
2067 		l_dirty_flag_tab6.delete;
2068 
2069 		OPEN all_dirty_object_list_summary;
2070 		FETCH all_dirty_object_list_summary BULK COLLECT INTO l_temp_object_ids_tab, l_temp_object_types_tab
2071 		, l_temp_dirty_flag_tab1, l_temp_dirty_flag_tab2, l_temp_dirty_flag_tab3, l_temp_dirty_flag_tab4
2072 		, l_temp_dirty_flag_tab5, l_temp_dirty_flag_tab6;
2073 		CLOSE all_dirty_object_list_summary;
2074 
2075 		FOR i IN 1..l_temp_object_ids_tab.count LOOP
2076 			l_int_object_ids_tab.delete;
2077 			l_int_object_types_tab.delete;
2078 			l_int_dirty_flag_tab1.delete;
2079 			l_int_dirty_flag_tab2.delete;
2080 			l_int_dirty_flag_tab3.delete;
2081 			l_int_dirty_flag_tab4.delete;
2082 			l_int_dirty_flag_tab5.delete;
2083 			l_int_dirty_flag_tab6.delete;
2084 			l_int_ref_dirty_flag_tab1.delete;
2085 			l_int_ref_dirty_flag_tab2.delete;
2086 			l_int_ref_dirty_flag_tab3.delete;
2087 			l_int_ref_dirty_flag_tab4.delete;
2088 			l_int_ref_dirty_flag_tab5.delete;
2089 			l_int_ref_dirty_flag_tab6.delete;
2090 
2091 			OPEN all_Parent_Dirty_Object_List(l_temp_object_ids_tab(i)
2092 					,l_temp_dirty_flag_tab1(i), l_temp_dirty_flag_tab2(i)
2093 					, l_temp_dirty_flag_tab3(i), l_temp_dirty_flag_tab4(i)
2094 					, l_temp_dirty_flag_tab4(i), l_temp_dirty_flag_tab6(i)) ;
2095 			FETCH all_Parent_Dirty_Object_List
2096 			BULK COLLECT INTO
2097 				l_int_object_ids_tab, l_int_object_types_tab
2098 				, l_int_dirty_flag_tab1, l_int_dirty_flag_tab2, l_int_dirty_flag_tab3
2099 				, l_int_dirty_flag_tab4, l_int_dirty_flag_tab5, l_int_dirty_flag_tab6
2100 				, l_int_ref_dirty_flag_tab1, l_int_ref_dirty_flag_tab2
2101 				, l_int_ref_dirty_flag_tab3, l_int_ref_dirty_flag_tab4, l_int_ref_dirty_flag_tab5
2102 				, l_int_ref_dirty_flag_tab6 ;
2103 			CLOSE all_Parent_Dirty_Object_List;
2104 
2105 
2106 			FOR j IN 1..l_int_object_ids_tab.count LOOP
2107 				l_object_ids_tab.extend;
2108 				l_object_types_tab.extend;
2109 				l_dirty_flag_tab1.extend;
2110 				l_dirty_flag_tab2.extend;
2111 				l_dirty_flag_tab3.extend;
2112 				l_dirty_flag_tab4.extend;
2113 				l_dirty_flag_tab5.extend;
2114 				l_dirty_flag_tab6.extend;
2115 				l_object_ids_tab(l_object_ids_tab.count) := l_int_object_ids_tab(j);
2116 				l_object_types_tab(l_object_types_tab.count) := l_int_object_types_tab(j);
2117 
2118 				IF p_process_flag1 = 'Y' AND p_process_rollup_flag1 = 'Y' AND p_partial_process_flag1 = 'Y' THEN
2119 					IF l_int_ref_dirty_flag_tab1(j) = 'Y' THEN
2120 						l_dirty_flag_tab1(l_dirty_flag_tab1.count) := 'Y';
2121 					ELSE
2122 						l_dirty_flag_tab1(l_dirty_flag_tab1.count) := l_int_dirty_flag_tab1(j);
2123 					END IF;
2124 				ELSE
2125 					l_dirty_flag_tab1(l_dirty_flag_tab1.count) := l_int_dirty_flag_tab1(j);
2126 				END IF;
2127 				IF p_process_flag2 = 'Y' AND p_process_rollup_flag2 = 'Y' AND p_partial_process_flag2 = 'Y' THEN
2128 					IF l_int_ref_dirty_flag_tab2(j) = 'Y' THEN
2129 						l_dirty_flag_tab2(l_dirty_flag_tab2.count) := 'Y';
2130 					ELSE
2131 						l_dirty_flag_tab2(l_dirty_flag_tab2.count) := l_int_dirty_flag_tab2(j);
2132 					END IF;
2133 				ELSE
2134 					l_dirty_flag_tab2(l_dirty_flag_tab2.count) := l_int_dirty_flag_tab2(j);
2135 				END IF;
2136 				IF p_process_flag3 = 'Y' AND p_process_rollup_flag3 = 'Y' AND p_partial_process_flag3 = 'Y' THEN
2137 					IF l_int_ref_dirty_flag_tab3(j) = 'Y' THEN
2138 						l_dirty_flag_tab3(l_dirty_flag_tab3.count) := 'Y';
2139 					ELSE
2140 						l_dirty_flag_tab3(l_dirty_flag_tab3.count) := l_int_dirty_flag_tab3(j);
2141 					END IF;
2142 				ELSE
2143 					l_dirty_flag_tab3(l_dirty_flag_tab3.count) := l_int_dirty_flag_tab3(j);
2144 				END IF;
2145 				IF p_process_flag4 = 'Y' AND p_process_rollup_flag4 = 'Y' AND p_partial_process_flag4 = 'Y' THEN
2146 					IF l_int_ref_dirty_flag_tab4(j) = 'Y' THEN
2147 						l_dirty_flag_tab4(l_dirty_flag_tab4.count) := 'Y';
2148 					ELSE
2149 						l_dirty_flag_tab4(l_dirty_flag_tab4.count) := l_int_dirty_flag_tab4(j);
2150 					END IF;
2151 				ELSE
2152 					l_dirty_flag_tab4(l_dirty_flag_tab4.count) := l_int_dirty_flag_tab4(j);
2153 				END IF;
2154 				IF p_process_flag5 = 'Y' AND p_process_rollup_flag5 = 'Y' AND p_partial_process_flag5 = 'Y' THEN
2155 					IF l_int_ref_dirty_flag_tab5(j) = 'Y' THEN
2156 						l_dirty_flag_tab5(l_dirty_flag_tab5.count) := 'Y';
2157 					ELSE
2158 						l_dirty_flag_tab5(l_dirty_flag_tab5.count) := l_int_dirty_flag_tab5(j);
2159 					END IF;
2160 				ELSE
2161 					l_dirty_flag_tab5(l_dirty_flag_tab5.count) := l_int_dirty_flag_tab5(j);
2162 				END IF;
2163 				IF p_process_flag6 = 'Y' AND p_process_rollup_flag6 = 'Y' AND p_partial_process_flag6 = 'Y' THEN
2164 					IF l_int_ref_dirty_flag_tab6(j) = 'Y' THEN
2165 						l_dirty_flag_tab6(l_dirty_flag_tab6.count) := 'Y';
2166 					ELSE
2167 						l_dirty_flag_tab6(l_dirty_flag_tab6.count) := l_int_dirty_flag_tab6(j);
2168 					END IF;
2169 				ELSE
2170 					l_dirty_flag_tab6(l_dirty_flag_tab6.count) := l_int_dirty_flag_tab6(j);
2171 				END IF;
2172 			END LOOP; -- FOR j IN 1..l_int_object_ids_tab.count LOOP
2173 		END LOOP; -- FOR i IN 1..l_temp_object_ids_tab.count LOOP
2174 
2175 
2176 	        FORALL i in 1..l_object_ids_tab.count
2177 	      /* Added the hint to force the unique index for bug#6185523 */
2178 		     UPDATE  /*+ INDEX( T1 PA_PROJ_ROLLUP_BULK_TEMP_U1) */ PA_PROJ_ROLLUP_BULK_TEMP T1
2179 			SET    T1.DIRTY_FLAG1=l_dirty_flag_tab1(i)
2180 			, T1.DIRTY_FLAG2=l_dirty_flag_tab2(i)
2181 			, T1.DIRTY_FLAG3=l_dirty_flag_tab3(i)
2182 			, T1.DIRTY_FLAG4=l_dirty_flag_tab4(i)
2183 			, T1.DIRTY_FLAG5=l_dirty_flag_tab5(i)
2184 			, T1.DIRTY_FLAG6=l_dirty_flag_tab6(i)
2185 		       WHERE T1.object_id = l_object_ids_tab(i)
2186 			 AND T1.object_type = l_object_types_tab(i)
2187    		        AND process_number = l_Process_Number
2188 		      ;
2189 
2190 		-- Lowest tasks Processing
2191 		l_temp_object_ids_tab.delete;
2192 		l_temp_object_types_tab.delete;
2193 		l_temp_dirty_flag_tab1.delete;
2194 		l_temp_dirty_flag_tab2.delete;
2195 		l_temp_dirty_flag_tab3.delete;
2196 		l_temp_dirty_flag_tab4.delete;
2197 		l_temp_dirty_flag_tab5.delete;
2198 		l_temp_dirty_flag_tab6.delete;
2199 		l_object_ids_tab.delete;
2200 		l_object_types_tab.delete;
2201 		l_dirty_flag_tab1.delete;
2202 		l_dirty_flag_tab2.delete;
2203 		l_dirty_flag_tab3.delete;
2204 		l_dirty_flag_tab4.delete;
2205 		l_dirty_flag_tab5.delete;
2206 		l_dirty_flag_tab6.delete;
2207 
2208 
2209 		OPEN all_dirty_object_list_lowest;
2210 		FETCH all_dirty_object_list_lowest BULK COLLECT INTO l_temp_object_ids_tab, l_temp_object_types_tab
2211 		, l_temp_dirty_flag_tab1, l_temp_dirty_flag_tab2, l_temp_dirty_flag_tab3, l_temp_dirty_flag_tab4
2212 		, l_temp_dirty_flag_tab5, l_temp_dirty_flag_tab6;
2213 		CLOSE all_dirty_object_list_lowest;
2214 
2215 		FOR i IN 1..l_temp_object_ids_tab.count LOOP
2216 			l_int_object_ids_tab.delete;
2217 			l_int_object_types_tab.delete;
2218 			l_int_dirty_flag_tab1.delete;
2219 			l_int_dirty_flag_tab2.delete;
2220 			l_int_dirty_flag_tab3.delete;
2221 			l_int_dirty_flag_tab4.delete;
2222 			l_int_dirty_flag_tab5.delete;
2223 			l_int_dirty_flag_tab6.delete;
2224 			l_int_ref_dirty_flag_tab1.delete;
2225 			l_int_ref_dirty_flag_tab2.delete;
2226 			l_int_ref_dirty_flag_tab3.delete;
2227 			l_int_ref_dirty_flag_tab4.delete;
2228 			l_int_ref_dirty_flag_tab5.delete;
2229 			l_int_ref_dirty_flag_tab6.delete;
2230 
2231 			OPEN all_child_Dirty_Object_List(l_temp_object_ids_tab(i)
2232 					,l_temp_dirty_flag_tab1(i), l_temp_dirty_flag_tab2(i)
2233 					, l_temp_dirty_flag_tab3(i), l_temp_dirty_flag_tab4(i)
2234 					, l_temp_dirty_flag_tab4(i), l_temp_dirty_flag_tab6(i)) ;
2235 			FETCH all_child_Dirty_Object_List
2236 			BULK COLLECT INTO
2237 				l_int_object_ids_tab, l_int_object_types_tab
2238 				, l_int_dirty_flag_tab1, l_int_dirty_flag_tab2, l_int_dirty_flag_tab3
2239 				, l_int_dirty_flag_tab4, l_int_dirty_flag_tab5, l_int_dirty_flag_tab6
2240 				, l_int_ref_dirty_flag_tab1, l_int_ref_dirty_flag_tab2
2241 				, l_int_ref_dirty_flag_tab3, l_int_ref_dirty_flag_tab4, l_int_ref_dirty_flag_tab5
2242 				, l_int_ref_dirty_flag_tab6 ;
2243 			CLOSE all_child_Dirty_Object_List;
2244 
2245 			FOR j IN 1..l_int_object_ids_tab.count LOOP
2246 				l_object_ids_tab.extend;
2247 				l_object_types_tab.extend;
2248 				l_dirty_flag_tab1.extend;
2249 				l_dirty_flag_tab2.extend;
2250 				l_dirty_flag_tab3.extend;
2251 				l_dirty_flag_tab4.extend;
2252 				l_dirty_flag_tab5.extend;
2253 				l_dirty_flag_tab6.extend;
2254 				l_object_ids_tab(l_object_ids_tab.count) := l_int_object_ids_tab(j);
2255 				l_object_types_tab(l_object_types_tab.count) := l_int_object_types_tab(j);
2256 				IF p_process_flag1 = 'Y' AND p_process_rollup_flag1 = 'Y' AND p_partial_process_flag1 = 'Y' THEN
2257 					IF l_int_ref_dirty_flag_tab1(j) = 'Y' THEN
2258 						l_dirty_flag_tab1(l_dirty_flag_tab1.count) := 'Y';
2259 					ELSE
2260 						l_dirty_flag_tab1(l_dirty_flag_tab1.count) := l_int_dirty_flag_tab1(j);
2261 					END IF;
2262 				ELSE
2263 					l_dirty_flag_tab1(l_dirty_flag_tab1.count) := l_int_dirty_flag_tab1(j);
2264 				END IF;
2265 				IF p_process_flag2 = 'Y' AND p_process_rollup_flag2 = 'Y' AND p_partial_process_flag2 = 'Y' THEN
2266 					IF l_int_ref_dirty_flag_tab2(j) = 'Y' THEN
2267 						l_dirty_flag_tab2(l_dirty_flag_tab2.count) := 'Y';
2268 					ELSE
2269 						l_dirty_flag_tab2(l_dirty_flag_tab2.count) := l_int_dirty_flag_tab2(j);
2270 					END IF;
2271 				ELSE
2272 					l_dirty_flag_tab2(l_dirty_flag_tab2.count) := l_int_dirty_flag_tab2(j);
2273 				END IF;
2274 				IF p_process_flag3 = 'Y' AND p_process_rollup_flag3 = 'Y' AND p_partial_process_flag3 = 'Y' THEN
2275 					IF l_int_ref_dirty_flag_tab3(j) = 'Y' THEN
2276 						l_dirty_flag_tab3(l_dirty_flag_tab3.count) := 'Y';
2277 					ELSE
2278 						l_dirty_flag_tab3(l_dirty_flag_tab3.count) := l_int_dirty_flag_tab3(j);
2279 					END IF;
2280 				ELSE
2281 					l_dirty_flag_tab3(l_dirty_flag_tab3.count) := l_int_dirty_flag_tab3(j);
2282 				END IF;
2283 				IF p_process_flag4 = 'Y' AND p_process_rollup_flag4 = 'Y' AND p_partial_process_flag4 = 'Y' THEN
2284 					IF l_int_ref_dirty_flag_tab4(j) = 'Y' THEN
2285 						l_dirty_flag_tab4(l_dirty_flag_tab4.count) := 'Y';
2286 					ELSE
2287 						l_dirty_flag_tab4(l_dirty_flag_tab4.count) := l_int_dirty_flag_tab4(j);
2288 					END IF;
2289 				ELSE
2290 					l_dirty_flag_tab4(l_dirty_flag_tab4.count) := l_int_dirty_flag_tab4(j);
2291 				END IF;
2292 				IF p_process_flag5 = 'Y' AND p_process_rollup_flag5 = 'Y' AND p_partial_process_flag5 = 'Y' THEN
2293 					IF l_int_ref_dirty_flag_tab5(j) = 'Y' THEN
2294 						l_dirty_flag_tab5(l_dirty_flag_tab5.count) := 'Y';
2295 					ELSE
2296 						l_dirty_flag_tab5(l_dirty_flag_tab5.count) := l_int_dirty_flag_tab5(j);
2297 					END IF;
2298 				ELSE
2299 					l_dirty_flag_tab5(l_dirty_flag_tab5.count) := l_int_dirty_flag_tab5(j);
2300 				END IF;
2301 				IF p_process_flag6 = 'Y' AND p_process_rollup_flag6 = 'Y' AND p_partial_process_flag6 = 'Y' THEN
2302 					IF l_int_ref_dirty_flag_tab6(j) = 'Y' THEN
2303 						l_dirty_flag_tab6(l_dirty_flag_tab6.count) := 'Y';
2304 					ELSE
2305 						l_dirty_flag_tab6(l_dirty_flag_tab6.count) := l_int_dirty_flag_tab6(j);
2306 					END IF;
2307 				ELSE
2308 					l_dirty_flag_tab6(l_dirty_flag_tab6.count) := l_int_dirty_flag_tab6(j);
2309 				END IF;
2310 			END LOOP; -- FOR j IN 1..l_int_object_ids_tab.count LOOP
2311 		END LOOP; -- FOR i IN 1..l_temp_object_ids_tab.count LOOP
2312 
2313 	        FORALL i in 1..l_object_ids_tab.count
2314 	      /* Added the hint to force the unique index for bug#6185523 */
2315 		     UPDATE  /*+ INDEX( T1 PA_PROJ_ROLLUP_BULK_TEMP_U1) */ PA_PROJ_ROLLUP_BULK_TEMP T1
2316 			SET    T1.DIRTY_FLAG1=l_dirty_flag_tab1(i)
2317 			, T1.DIRTY_FLAG2=l_dirty_flag_tab2(i)
2318 			, T1.DIRTY_FLAG3=l_dirty_flag_tab3(i)
2319 			, T1.DIRTY_FLAG4=l_dirty_flag_tab4(i)
2320 			, T1.DIRTY_FLAG5=l_dirty_flag_tab5(i)
2321 			, T1.DIRTY_FLAG6=l_dirty_flag_tab6(i)
2322 		       WHERE T1.object_id = l_object_ids_tab(i)
2323 			 AND T1.object_type = l_object_types_tab(i)
2324    		        AND process_number = l_Process_Number
2325 		      ;
2326 	END IF; -- ((p_process_flag1 = 'Y' OR p_process_flag2 = 'Y' OR p_process_flag3 = 'Y' OR p_process_flag4 = 'Y'
2327 
2328 	-- ********* DIRTY PROCESSING END ***********
2329 
2330 	IF g1_debug_mode  = 'Y' THEN
2331                 pa_debug.write(x_Module=>'PA_SCHEDULE_OBJECTS_PVT.GENERATE_SCHEDULE', x_Msg => 'After dirty processing', x_Log_Level=> 3);
2332                 pa_debug.write(x_Module=>'PA_SCHEDULE_OBJECTS_PVT.GENERATE_SCHEDULE', x_Msg => 'Before Date processing', x_Log_Level=> 3);
2333         END IF;
2334 
2335 	-- ********* NEW DATES PROCESSING BEGIN **********
2336 
2337 	OPEN dirty_all_List;
2338 	FETCH dirty_all_List BULK COLLECT INTO
2339 	l_parent_object_ids_tab
2340 	, l_parent_object_types_tab
2341 	, l_parent_start_date_tab1
2342 	, l_parent_start_date_tab2
2343 	, l_parent_start_date_tab3
2344 	, l_parent_start_date_tab4
2345 	, l_parent_start_date_tab5
2346 	, l_parent_start_date_tab6
2347 	, l_parent_finish_date_tab1
2348 	, l_parent_finish_date_tab2
2349 	, l_parent_finish_date_tab3
2350 	, l_parent_finish_date_tab4
2351 	, l_parent_finish_date_tab5
2352 	, l_parent_finish_date_tab6
2353 	, l_parent_duration_tab1
2354 	, l_parent_duration_tab2
2355 	, l_parent_duration_tab3
2356 	, l_parent_duration_tab4
2357 	, l_parent_duration_tab5
2358 	, l_parent_duration_tab6
2359 	, l_parent_dirty_flag_tab1
2360 	, l_parent_dirty_flag_tab2
2361 	, l_parent_dirty_flag_tab3
2362 	, l_parent_dirty_flag_tab4
2363 	, l_parent_dirty_flag_tab5
2364 	, l_parent_dirty_flag_tab6
2365 	, l_parent_start_date_or_tab1
2366 	, l_parent_start_date_or_tab2
2367 	, l_parent_start_date_or_tab3
2368 	, l_parent_start_date_or_tab4
2369 	, l_parent_start_date_or_tab5
2370 	, l_parent_start_date_or_tab6
2371 	, l_update_date_flag_tab1
2372 	, l_update_date_flag_tab2
2373 	, l_update_date_flag_tab3
2374 	, l_update_date_flag_tab4
2375 	, l_update_date_flag_tab5
2376 	, l_update_date_flag_tab6
2377 	, l_update_requ_flag_tab1
2378 	, l_update_requ_flag_tab2
2379 	, l_update_requ_flag_tab3
2380 	, l_update_requ_flag_tab4
2381 	, l_update_requ_flag_tab5
2382 	, l_update_requ_flag_tab6
2383 	;
2384 	CLOSE dirty_all_List;
2385 
2386 	l_count1 := 0;
2387 	l_count2 := 0;
2388 	l_count3 := 0;
2389 	l_count4 := 0;
2390 	l_count5 := 0;
2391 	l_count6 := 0;
2392 
2393 
2394 	IF p_process_flag1 <> 'Y' AND p_process_rollup_flag1 <> 'Y' THEN
2395 		l_count1 := 1;
2396 	END IF;
2397 	IF p_process_flag2 <> 'Y' AND p_process_rollup_flag2 <> 'Y' THEN
2398 		l_count2 := 1;
2399 	END IF;
2400 	IF p_process_flag3 <> 'Y' AND p_process_rollup_flag3 <> 'Y' THEN
2401 		l_count3 := 1;
2402 	END IF;
2403 	IF p_process_flag4 <> 'Y' AND p_process_rollup_flag4 <> 'Y' THEN
2404 		l_count4 := 1;
2405 	END IF;
2406 	IF p_process_flag5 <> 'Y' AND p_process_rollup_flag5 <> 'Y' THEN
2407 		l_count5 := 1;
2408 	END IF;
2409 	IF p_process_flag6 <> 'Y' AND p_process_rollup_flag6 <> 'Y' THEN
2410 		l_count6 := 1;
2411 	END IF;
2412 
2413 
2414 	For j IN 1..l_parent_object_ids_tab.count LOOP
2415 		BEGIN
2416 			l_parent_update_required := 'N';
2417 			l_lowest_task := 'N';
2418 			l_task_flag := 0;
2419 			l_task_count1 := 0;
2420 			l_task_count2 := 0;
2421 			l_task_count3 := 0;
2422 			l_task_count4 := 0;
2423 			l_task_count5 := 0;
2424 			l_task_count6 := 0;
2425 			l_null_flag1 := 0;
2426 			l_null_flag2 := 0;
2427 			l_null_flag3 := 0;
2428 			l_null_flag4 := 0;
2429 			l_null_flag5 := 0;
2430 			l_null_flag6 := 0;
2431 			l_new_start_date1 := null;
2432 			l_new_start_date2 := null;
2433 			l_new_start_date3 := null;
2434 			l_new_start_date4 := null;
2435 			l_new_start_date5 := null;
2436 			l_new_start_date6 := null;
2437 			l_new_completion_date1 := null;
2438 			l_new_completion_date2 := null;
2439 			l_new_completion_date3 := null;
2440 			l_new_completion_date4 := null;
2441 			l_new_completion_date5 := null;
2442 			l_new_completion_date6 := null;
2443 			/* Starts added for bug# 6185523 */
2444 
2445 			l_parent_start_date1_tmp := null;
2446 			l_parent_finish_date1_tmp := null;
2447 			l_parent_duration1_tmp	 := null;
2448 			l_parent_start_date2_tmp := null;
2449 			l_parent_finish_date2_tmp := null;
2450 			l_parent_duration2_tmp	 := null;
2451 			l_parent_start_date3_tmp := null;
2452 			l_parent_finish_date3_tmp := null;
2453 			l_parent_duration3_tmp	 := null;
2454 			l_parent_start_date4_tmp := null;
2455 			l_parent_finish_date4_tmp := null;
2456 			l_parent_duration4_tmp	 := null;
2457 			l_parent_start_date5_tmp := null;
2458 			l_parent_finish_date5_tmp := null;
2459 			l_parent_duration5_tmp	 := null;
2460 			l_parent_start_date6_tmp := null;
2461 			l_parent_finish_date6_tmp := null;
2462 			l_parent_duration6_tmp	 := null;
2463 			dirty_flag1_tmp	 := null;
2464 			dirty_flag2_tmp	 := null;
2465 			dirty_flag3_tmp	 := null;
2466 			dirty_flag4_tmp	 := null;
2467 			dirty_flag5_tmp	 := null;
2468 			dirty_flag6_tmp := null;
2469 
2470 			/* Ends added for bug# 6185523 */
2471 
2472 			IF l_partial_rollup1 OR l_partial_rollup2 OR l_partial_rollup3
2473 				   OR l_partial_rollup4 OR l_partial_rollup5 OR l_partial_rollup6
2474 			THEN
2475 				SELECT
2476 					MIN(decode(p_partial_dates_flag1, 'Y', decode(rollup_node1, 'Y', start_date1, null), start_date1))
2477 					, MAX(decode(p_partial_dates_flag1, 'Y', decode(rollup_node1, 'Y', finish_date1, null), finish_date1))
2478 					, MAX(decode(p_partial_dates_flag1, 'Y', decode(rollup_node1, 'Y', DECODE(finish_date1,NULL,1,0), 0), 0))
2479 					, MAX(decode(p_partial_dates_flag1, 'Y', decode(rollup_node1, 'Y', 1, 0), 1))
2480 					, MIN(decode(p_partial_dates_flag2, 'Y', decode(rollup_node2, 'Y', start_date2, null), start_date2))
2481 					, MAX(decode(p_partial_dates_flag2, 'Y', decode(rollup_node2, 'Y', finish_date2, null), finish_date2))
2482 					, MAX(decode(p_partial_dates_flag2, 'Y', decode(rollup_node2, 'Y', DECODE(finish_date2,NULL,1,0), 0), 0))
2483 					, MAX(decode(p_partial_dates_flag2, 'Y', decode(rollup_node2, 'Y', 1, 0), 1))
2484 					, MIN(decode(p_partial_dates_flag3, 'Y', decode(rollup_node3, 'Y', start_date3, null), start_date3))
2485 					, MAX(decode(p_partial_dates_flag3, 'Y', decode(rollup_node3, 'Y', finish_date3, null), finish_date3))
2486 					, MAX(decode(p_partial_dates_flag3, 'Y', decode(rollup_node3, 'Y', DECODE(finish_date3,NULL,1,0), 0), 0))
2487 					, MAX(decode(p_partial_dates_flag3, 'Y', decode(rollup_node3, 'Y', 1, 0), 1))
2488 					, MIN(decode(p_partial_dates_flag4, 'Y', decode(rollup_node4, 'Y', start_date4, null), start_date4))
2489 					, MAX(decode(p_partial_dates_flag4, 'Y', decode(rollup_node4, 'Y', finish_date4, null), finish_date4))
2490 					, MAX(decode(p_partial_dates_flag4, 'Y', decode(rollup_node4, 'Y', DECODE(finish_date4,NULL,1,0), 0), 0))
2491 					, MAX(decode(p_partial_dates_flag4, 'Y', decode(rollup_node4, 'Y', 1, 0), 1))
2492 					, MIN(decode(p_partial_dates_flag5, 'Y', decode(rollup_node5, 'Y', start_date5, null), start_date5))
2493 					, MAX(decode(p_partial_dates_flag5, 'Y', decode(rollup_node5, 'Y', finish_date5, null), finish_date5))
2494 					, MAX(decode(p_partial_dates_flag5, 'Y', decode(rollup_node5, 'Y', DECODE(finish_date5,NULL,1,0), 0), 0))
2495 					, MAX(decode(p_partial_dates_flag5, 'Y', decode(rollup_node5, 'Y', 1, 0), 1))
2496 					, MIN(decode(p_partial_dates_flag6, 'Y', decode(rollup_node6, 'Y', start_date6, null), start_date6))
2497 					, MAX(decode(p_partial_dates_flag6, 'Y', decode(rollup_node6, 'Y', finish_date6, null), finish_date6))
2498 					, MAX(decode(p_partial_dates_flag6, 'Y', decode(rollup_node6, 'Y', DECODE(finish_date6,NULL,1,0), 0), 0))
2499 					, MAX(decode(p_partial_dates_flag6, 'Y', decode(rollup_node6, 'Y', 1, 0), 1))
2500 					, MAX(DECODE(OBJECT_TYPE,'PA_TASKS',1,0))
2501 				INTO
2502 					l_new_start_date1
2503 					, l_new_completion_date1
2504 					, l_null_flag1
2505 					, l_task_count1
2506 					, l_new_start_date2
2507 					, l_new_completion_date2
2508 					, l_null_flag2
2509 					, l_task_count2
2510 					, l_new_start_date3
2511 					, l_new_completion_date3
2512 					, l_null_flag3
2513 					, l_task_count3
2514 					, l_new_start_date4
2515 					, l_new_completion_date4
2516 					, l_null_flag4
2517 					, l_task_count4
2518 					, l_new_start_date5
2519 					, l_new_completion_date5
2520 					, l_null_flag5
2521 					, l_task_count5
2522 					, l_new_start_date6
2523 					, l_new_completion_date6
2524 					, l_null_flag6
2525 					, l_task_count6
2526 					, l_task_flag
2527 				FROM PA_PROJ_ROLLUP_BULK_TEMP
2528 				WHERE PROCESS_NUMBER = l_process_number
2529 				AND parent_object_id = l_parent_object_ids_tab(j)
2530 				AND parent_object_type IN ('PA_STRUCTURES','PA_TASKS') -- Bug 4450587
2531 				;
2532 			ELSE
2533 				SELECT
2534 					MIN(start_date1)
2535 					, MAX(finish_date1)
2536 					, MAX(DECODE(finish_date1,NULL,1,0))
2537 					, MAX(1)
2538 					, MIN(start_date2)
2539 					, MAX(finish_date2)
2540 					, MAX(DECODE(finish_date2,NULL,1,0))
2541 					, MAX(1)
2542 					, MIN(start_date3)
2543 					, MAX(finish_date3)
2544 					, MAX(DECODE(finish_date3,NULL,1,0))
2545 					, MAX(1)
2546 					, MIN(start_date4)
2547 					, MAX(finish_date4)
2548 					, MAX(DECODE(finish_date4,NULL,1,0))
2549 					, MAX(1)
2550 					, MIN(start_date5)
2551 					, MAX(finish_date5)
2552 					, MAX(DECODE(finish_date5,NULL,1,0))
2553 					, MAX(1)
2554 					, MIN(start_date6)
2555 					, MAX(finish_date6)
2556 					, MAX(DECODE(finish_date6,NULL,1,0))
2557 					, MAX(1)
2558 					, MAX(DECODE(OBJECT_TYPE,'PA_TASKS',1,0))
2559 				INTO
2560 					l_new_start_date1
2561 					, l_new_completion_date1
2562 					, l_null_flag1
2563 					, l_task_count1
2564 					, l_new_start_date2
2565 					, l_new_completion_date2
2566 					, l_null_flag2
2567 					, l_task_count2
2568 					, l_new_start_date3
2569 					, l_new_completion_date3
2570 					, l_null_flag3
2571 					, l_task_count3
2572 					, l_new_start_date4
2573 					, l_new_completion_date4
2574 					, l_null_flag4
2575 					, l_task_count4
2576 					, l_new_start_date5
2577 					, l_new_completion_date5
2578 					, l_null_flag5
2579 					, l_task_count5
2580 					, l_new_start_date6
2581 					, l_new_completion_date6
2582 					, l_null_flag6
2583 					, l_task_count6
2584 					, l_task_flag
2585 				FROM PA_PROJ_ROLLUP_BULK_TEMP
2586 				WHERE PROCESS_NUMBER = l_process_number
2587 				AND parent_object_id = l_parent_object_ids_tab(j)
2588 				AND parent_object_type IN ('PA_STRUCTURES','PA_TASKS') -- Bug 4450587
2589 				;
2590 			END IF;
2591 		EXCEPTION
2592 			WHEN NO_DATA_FOUND THEN
2593 				l_lowest_task := 'Y';
2594 				l_task_count1 := 1;
2595 				l_task_count2 := 1;
2596 				l_task_count3 := 1;
2597 				l_task_count4 := 1;
2598 				l_task_count5 := 1;
2599 				l_task_count6 := 1;
2600 			WHEN OTHERS THEN
2601 				l_task_flag := 0;
2602 				l_task_count1 := 0;
2603 				l_task_count2 := 0;
2604 				l_task_count3 := 0;
2605 				l_task_count4 := 0;
2606 				l_task_count5 := 0;
2607 				l_task_count6 := 0;
2608 		END;
2609 
2610 		IF l_count1= 1 OR l_task_count1 = 0 THEN
2611 			l_update_requ_flag_tab1(j) := 'N';
2612 		ELSE
2613 			IF l_lowest_task = 'Y' THEN
2614 				IF l_parent_dirty_flag_tab1(j) <> 'Y' THEN
2615 					l_update_requ_flag_tab1(j) := 'N';
2616 				ELSE
2617 					l_parent_update_required := 'Y';
2618 					l_update_requ_flag_tab1(j) := 'Y';
2619 					IF P_Derived_Field1 = 'DURATION' THEN
2620 						IF((l_parent_start_date_tab1(j) IS NULL) OR (l_parent_finish_date_tab1(j) IS NULL))
2621 						THEN
2622 							l_update_date_flag_tab1(j) := 'N';
2623 						ELSE
2624 							l_update_date_flag_tab1(j) := 'Y';
2625 							l_parent_duration_tab1(j) := l_parent_finish_date_tab1(j) - l_parent_start_date_tab1(j) +1;
2626 						END IF;
2627 					ELSIF P_Derived_Field1 = 'START' THEN
2628 						IF((l_parent_duration_tab1(j) IS NULL) OR (l_parent_finish_date_tab1(j) IS NULL))
2629 						THEN
2630 							l_update_date_flag_tab1(j) := 'N';
2631 						ELSE
2632 							l_update_date_flag_tab1(j) := 'Y';
2633 							l_parent_start_date_tab1(j) := l_parent_finish_date_tab1(j) - l_parent_duration_tab1(j) +1;
2634 						END IF;
2635 					ELSIF P_Derived_Field1 = 'FINISH' THEN
2636 						IF((l_parent_duration_tab1(j) IS NULL) OR (l_parent_start_date_tab1(j) IS NULL))
2637 						THEN
2638 							l_update_date_flag_tab1(j) := 'Y';
2639 						ELSE
2640 							l_update_date_flag_tab1(j) := 'Y';
2641 							l_parent_finish_date_tab1(j) := l_parent_start_date_tab1(j) + l_parent_duration_tab1(j)-1;
2642 						END IF;
2643 					END IF; -- P_Derived_Field1 = 'DURATION'
2644 				END IF;
2645 			ELSE
2646 				IF l_parent_dirty_flag_tab1(j) <> 'Y' THEN
2647 					l_update_requ_flag_tab1(j) := 'N';
2648 				ELSE
2649 					l_parent_update_required := 'Y';
2650 					l_update_requ_flag_tab1(j) := 'Y';
2651 
2652 					IF l_null_flag1 = 1 THEN
2653 						l_new_completion_date1 := null;
2654 					END IF;
2655 					l_new_start_date1 := NVL(l_parent_start_date_or_tab1(j), l_new_start_date1);
2656 					l_parent_start_date_tab1(j) := l_new_start_date1;
2657 					l_parent_finish_date_tab1(j) := l_new_completion_date1;
2658 					IF l_new_start_date1 IS NULL AND l_new_completion_date1 IS NULL THEN
2659 						l_parent_duration_tab1(j) := null;
2660 					ELSE
2661 						l_parent_duration_tab1(j) := l_new_completion_date1 - l_new_start_date1 +1;
2662 					END IF;
2663 
2664 					IF l_task_flag = 1 THEN
2665 						l_update_date_flag_tab1(j) :='Y';
2666 					ELSE
2667 						IF l_new_start_date1 IS NULL AND l_new_completion_date1 IS NULL THEN
2668 							l_update_date_flag_tab1(j) :='N';
2669 						ELSE
2670 							l_update_date_flag_tab1(j) :='Y';
2671 						END IF;
2672 					END IF;
2673 				END IF;
2674 			END IF; -- l_lowest_task = 'Y'
2675 		END IF; -- l_count1= 1 OR l_task_count1 = 0
2676 		IF l_count2= 1 OR l_task_count2 = 0 THEN
2677 			l_update_requ_flag_tab2(j) := 'N';
2678 		ELSE
2679 			IF l_lowest_task = 'Y' THEN
2680 				IF l_parent_dirty_flag_tab2(j) <> 'Y' THEN
2681 					l_update_requ_flag_tab2(j) := 'N';
2682 				ELSE
2683 					l_parent_update_required := 'Y';
2684 					l_update_requ_flag_tab2(j) := 'Y';
2685 					IF P_Derived_Field2 = 'DURATION' THEN
2686 						IF((l_parent_start_date_tab2(j) IS NULL) OR (l_parent_finish_date_tab2(j) IS NULL))
2687 						THEN
2688 							l_update_date_flag_tab2(j) := 'N';
2689 						ELSE
2690 							l_update_date_flag_tab2(j) := 'Y';
2691 							l_parent_duration_tab2(j) := l_parent_finish_date_tab2(j) - l_parent_start_date_tab2(j) +1;
2692 						END IF;
2693 					ELSIF P_Derived_Field2 = 'START' THEN
2694 						IF((l_parent_duration_tab2(j) IS NULL) OR (l_parent_finish_date_tab2(j) IS NULL))
2695 						THEN
2696 							l_update_date_flag_tab2(j) := 'N';
2697 						ELSE
2698 							l_update_date_flag_tab2(j) := 'Y';
2699 							l_parent_start_date_tab2(j) := l_parent_finish_date_tab2(j) - l_parent_duration_tab2(j) +1;
2700 						END IF;
2701 					ELSIF P_Derived_Field2 = 'FINISH' THEN
2702 						IF((l_parent_duration_tab2(j) IS NULL) OR (l_parent_start_date_tab2(j) IS NULL))
2703 						THEN
2704 							l_update_date_flag_tab2(j) := 'Y';
2705 						ELSE
2706 							l_update_date_flag_tab2(j) := 'Y';
2707 							l_parent_finish_date_tab2(j) := l_parent_start_date_tab2(j) + l_parent_duration_tab2(j)-1;
2708 						END IF;
2709 					END IF; -- P_Derived_Field2 = 'DURATION'
2710 				END IF;
2711 			ELSE
2712 				IF l_parent_dirty_flag_tab2(j) <> 'Y' THEN
2713 					l_update_requ_flag_tab2(j) := 'N';
2714 				ELSE
2715 					l_parent_update_required := 'Y';
2716 					l_update_requ_flag_tab2(j) := 'Y';
2717 
2718 					IF l_null_flag2 = 1 THEN
2719 						l_new_completion_date2 := null;
2720 					END IF;
2721 					l_new_start_date2 := NVL(l_parent_start_date_or_tab2(j), l_new_start_date2);
2722 					l_parent_start_date_tab2(j) := l_new_start_date2;
2723 					l_parent_finish_date_tab2(j) := l_new_completion_date2;
2724 					IF l_new_start_date2 IS NULL AND l_new_completion_date2 IS NULL THEN
2725 						l_parent_duration_tab2(j) := null;
2726 					ELSE
2727 						l_parent_duration_tab2(j) := l_new_completion_date2 - l_new_start_date2 +1;
2728 					END IF;
2729 
2730 					IF l_task_flag = 1 THEN
2731 						l_update_date_flag_tab2(j) :='Y';
2732 					ELSE
2733 						IF l_new_start_date2 IS NULL AND l_new_completion_date2 IS NULL THEN
2734 							l_update_date_flag_tab2(j) :='N';
2735 						ELSE
2736 							l_update_date_flag_tab2(j) :='Y';
2737 						END IF;
2738 					END IF;
2739 				END IF;
2740 			END IF; -- l_lowest_task = 'Y'
2741 		END IF; -- l_count2= 1 OR l_task_count2 = 0
2742 		IF l_count3= 1 OR l_task_count3 = 0 THEN
2743 			l_update_requ_flag_tab3(j) := 'N';
2744 		ELSE
2745 			IF l_lowest_task = 'Y' THEN
2746 				IF l_parent_dirty_flag_tab3(j) <> 'Y' THEN
2747 					l_update_requ_flag_tab3(j) := 'N';
2748 				ELSE
2749 					l_parent_update_required := 'Y';
2750 					l_update_requ_flag_tab3(j) := 'Y';
2751 					IF P_Derived_Field3 = 'DURATION' THEN
2752 						IF((l_parent_start_date_tab3(j) IS NULL) OR (l_parent_finish_date_tab3(j) IS NULL))
2753 						THEN
2754 							l_update_date_flag_tab3(j) := 'N';
2755 						ELSE
2756 							l_update_date_flag_tab3(j) := 'Y';
2757 							l_parent_duration_tab3(j) := l_parent_finish_date_tab3(j) - l_parent_start_date_tab3(j) +1;
2758 						END IF;
2759 					ELSIF P_Derived_Field3 = 'START' THEN
2760 						IF((l_parent_duration_tab3(j) IS NULL) OR (l_parent_finish_date_tab3(j) IS NULL))
2761 						THEN
2762 							l_update_date_flag_tab3(j) := 'N';
2763 						ELSE
2764 							l_update_date_flag_tab3(j) := 'Y';
2765 							l_parent_start_date_tab3(j) := l_parent_finish_date_tab3(j) - l_parent_duration_tab3(j) +1;
2766 						END IF;
2767 					ELSIF P_Derived_Field3 = 'FINISH' THEN
2768 						IF((l_parent_duration_tab3(j) IS NULL) OR (l_parent_start_date_tab3(j) IS NULL))
2769 						THEN
2770 							l_update_date_flag_tab3(j) := 'Y';
2771 						ELSE
2772 							l_update_date_flag_tab3(j) := 'Y';
2773 							l_parent_finish_date_tab3(j) := l_parent_start_date_tab3(j) + l_parent_duration_tab3(j)-1;
2774 						END IF;
2775 					END IF; -- P_Derived_Field3 = 'DURATION'
2776 				END IF;
2777 			ELSE
2778 				IF l_parent_dirty_flag_tab3(j) <> 'Y' THEN
2779 					l_update_requ_flag_tab3(j) := 'N';
2780 				ELSE
2781 					l_parent_update_required := 'Y';
2782 					l_update_requ_flag_tab3(j) := 'Y';
2783 
2784 					IF l_null_flag3 = 1 THEN
2785 						l_new_completion_date3 := null;
2786 					END IF;
2787 					l_new_start_date3 := NVL(l_parent_start_date_or_tab3(j), l_new_start_date3);
2788 					l_parent_start_date_tab3(j) := l_new_start_date3;
2789 					l_parent_finish_date_tab3(j) := l_new_completion_date3;
2790 					IF l_new_start_date3 IS NULL AND l_new_completion_date3 IS NULL THEN
2791 						l_parent_duration_tab3(j) := null;
2792 					ELSE
2793 						l_parent_duration_tab3(j) := l_new_completion_date3 - l_new_start_date3 +1;
2794 					END IF;
2795 
2796 					IF l_task_flag = 1 THEN
2797 						l_update_date_flag_tab3(j) :='Y';
2798 					ELSE
2799 						IF l_new_start_date3 IS NULL AND l_new_completion_date3 IS NULL THEN
2800 							l_update_date_flag_tab3(j) :='N';
2801 						ELSE
2802 							l_update_date_flag_tab3(j) :='Y';
2803 						END IF;
2804 					END IF;
2805 				END IF;
2806 			END IF; -- l_lowest_task = 'Y'
2807 		END IF; -- l_count3= 1 OR l_task_count3 = 0
2808 		IF l_count4= 1 OR l_task_count4 = 0 THEN
2809 			l_update_requ_flag_tab4(j) := 'N';
2810 		ELSE
2811 			IF l_lowest_task = 'Y' THEN
2812 				IF l_parent_dirty_flag_tab4(j) <> 'Y' THEN
2813 					l_update_requ_flag_tab4(j) := 'N';
2814 				ELSE
2815 					l_parent_update_required := 'Y';
2816 					l_update_requ_flag_tab4(j) := 'Y';
2817 					IF P_Derived_Field4 = 'DURATION' THEN
2818 						IF((l_parent_start_date_tab4(j) IS NULL) OR (l_parent_finish_date_tab4(j) IS NULL))
2819 						THEN
2820 							l_update_date_flag_tab4(j) := 'N';
2821 						ELSE
2822 							l_update_date_flag_tab4(j) := 'Y';
2823 							l_parent_duration_tab4(j) := l_parent_finish_date_tab4(j) - l_parent_start_date_tab4(j) +1;
2824 						END IF;
2825 					ELSIF P_Derived_Field4 = 'START' THEN
2826 						IF((l_parent_duration_tab4(j) IS NULL) OR (l_parent_finish_date_tab4(j) IS NULL))
2827 						THEN
2828 							l_update_date_flag_tab4(j) := 'N';
2829 						ELSE
2830 							l_update_date_flag_tab4(j) := 'Y';
2831 							l_parent_start_date_tab4(j) := l_parent_finish_date_tab4(j) - l_parent_duration_tab4(j) +1;
2832 						END IF;
2833 					ELSIF P_Derived_Field4 = 'FINISH' THEN
2834 						IF((l_parent_duration_tab4(j) IS NULL) OR (l_parent_start_date_tab4(j) IS NULL))
2835 						THEN
2836 							l_update_date_flag_tab4(j) := 'Y';
2837 						ELSE
2838 							l_update_date_flag_tab4(j) := 'Y';
2839 							l_parent_finish_date_tab4(j) := l_parent_start_date_tab4(j) + l_parent_duration_tab4(j)-1;
2840 						END IF;
2841 					END IF; -- P_Derived_Field4 = 'DURATION'
2842 				END IF;
2843 			ELSE
2844 				IF l_parent_dirty_flag_tab4(j) <> 'Y' THEN
2845 					l_update_requ_flag_tab4(j) := 'N';
2846 				ELSE
2847 					l_parent_update_required := 'Y';
2848 					l_update_requ_flag_tab4(j) := 'Y';
2849 
2850 					IF l_null_flag4 = 1 THEN
2851 						l_new_completion_date4 := null;
2852 					END IF;
2853 					l_new_start_date4 := NVL(l_parent_start_date_or_tab4(j), l_new_start_date4);
2854 					l_parent_start_date_tab4(j) := l_new_start_date4;
2855 					l_parent_finish_date_tab4(j) := l_new_completion_date4;
2856 					IF l_new_start_date4 IS NULL AND l_new_completion_date4 IS NULL THEN
2857 						l_parent_duration_tab4(j) := null;
2858 					ELSE
2859 						l_parent_duration_tab4(j) := l_new_completion_date4 - l_new_start_date4 +1;
2860 					END IF;
2861 
2862 					IF l_task_flag = 1 THEN
2863 						l_update_date_flag_tab4(j) :='Y';
2864 					ELSE
2865 						IF l_new_start_date4 IS NULL AND l_new_completion_date4 IS NULL THEN
2866 							l_update_date_flag_tab4(j) :='N';
2867 						ELSE
2868 							l_update_date_flag_tab4(j) :='Y';
2869 						END IF;
2870 					END IF;
2871 				END IF;
2872 			END IF; -- l_lowest_task = 'Y'
2873 		END IF; -- l_count4= 1 OR l_task_count4 = 0
2874 		IF l_count5= 1 OR l_task_count5 = 0 THEN
2875 			l_update_requ_flag_tab5(j) := 'N';
2876 		ELSE
2877 			IF l_lowest_task = 'Y' THEN
2878 				IF l_parent_dirty_flag_tab5(j) <> 'Y' THEN
2879 					l_update_requ_flag_tab5(j) := 'N';
2880 				ELSE
2881 					l_parent_update_required := 'Y';
2882 					l_update_requ_flag_tab5(j) := 'Y';
2883 					IF P_Derived_Field5 = 'DURATION' THEN
2884 						IF((l_parent_start_date_tab5(j) IS NULL) OR (l_parent_finish_date_tab5(j) IS NULL))
2885 						THEN
2886 							l_update_date_flag_tab5(j) := 'N';
2887 						ELSE
2888 							l_update_date_flag_tab5(j) := 'Y';
2889 							l_parent_duration_tab5(j) := l_parent_finish_date_tab5(j) - l_parent_start_date_tab5(j) +1;
2890 						END IF;
2891 					ELSIF P_Derived_Field5 = 'START' THEN
2892 						IF((l_parent_duration_tab5(j) IS NULL) OR (l_parent_finish_date_tab5(j) IS NULL))
2893 						THEN
2894 							l_update_date_flag_tab5(j) := 'N';
2895 						ELSE
2896 							l_update_date_flag_tab5(j) := 'Y';
2897 							l_parent_start_date_tab5(j) := l_parent_finish_date_tab5(j) - l_parent_duration_tab5(j) +1;
2898 						END IF;
2899 					ELSIF P_Derived_Field5 = 'FINISH' THEN
2900 						IF((l_parent_duration_tab5(j) IS NULL) OR (l_parent_start_date_tab5(j) IS NULL))
2901 						THEN
2902 							l_update_date_flag_tab5(j) := 'Y';
2903 						ELSE
2904 							l_update_date_flag_tab5(j) := 'Y';
2905 							l_parent_finish_date_tab5(j) := l_parent_start_date_tab5(j) + l_parent_duration_tab5(j)-1;
2906 						END IF;
2907 					END IF; -- P_Derived_Field5 = 'DURATION'
2908 				END IF;
2909 			ELSE
2910 				IF l_parent_dirty_flag_tab5(j) <> 'Y' THEN
2911 					l_update_requ_flag_tab5(j) := 'N';
2912 				ELSE
2913 					l_parent_update_required := 'Y';
2914 					l_update_requ_flag_tab5(j) := 'Y';
2915 
2916 					IF l_null_flag5 = 1 THEN
2917 						l_new_completion_date5 := null;
2918 					END IF;
2919 					l_new_start_date5 := NVL(l_parent_start_date_or_tab5(j), l_new_start_date5);
2920 					l_parent_start_date_tab5(j) := l_new_start_date5;
2921 					l_parent_finish_date_tab5(j) := l_new_completion_date5;
2922 					IF l_new_start_date5 IS NULL AND l_new_completion_date5 IS NULL THEN
2923 						l_parent_duration_tab5(j) := null;
2924 					ELSE
2925 						l_parent_duration_tab5(j) := l_new_completion_date5 - l_new_start_date5 +1;
2926 					END IF;
2927 
2928 					IF l_task_flag = 1 THEN
2929 						l_update_date_flag_tab5(j) :='Y';
2930 					ELSE
2931 						IF l_new_start_date5 IS NULL AND l_new_completion_date5 IS NULL THEN
2932 							l_update_date_flag_tab5(j) :='N';
2933 						ELSE
2934 							l_update_date_flag_tab5(j) :='Y';
2935 						END IF;
2936 					END IF;
2937 				END IF;
2938 			END IF; -- l_lowest_task = 'Y'
2939 		END IF; -- l_count5= 1 OR l_task_count5 = 0
2940 		IF l_count6= 1 OR l_task_count6 = 0 THEN
2941 			l_update_requ_flag_tab6(j) := 'N';
2942 		ELSE
2943 			IF l_lowest_task = 'Y' THEN
2944 				IF l_parent_dirty_flag_tab6(j) <> 'Y' THEN
2945 					l_update_requ_flag_tab6(j) := 'N';
2946 				ELSE
2947 					l_parent_update_required := 'Y';
2948 					l_update_requ_flag_tab6(j) := 'Y';
2949 					IF P_Derived_Field6 = 'DURATION' THEN
2950 						IF((l_parent_start_date_tab6(j) IS NULL) OR (l_parent_finish_date_tab6(j) IS NULL))
2951 						THEN
2952 							l_update_date_flag_tab6(j) := 'N';
2953 						ELSE
2954 							l_update_date_flag_tab6(j) := 'Y';
2955 							l_parent_duration_tab6(j) := l_parent_finish_date_tab6(j) - l_parent_start_date_tab6(j) +1;
2956 						END IF;
2957 					ELSIF P_Derived_Field6 = 'START' THEN
2958 						IF((l_parent_duration_tab6(j) IS NULL) OR (l_parent_finish_date_tab6(j) IS NULL))
2959 						THEN
2960 							l_update_date_flag_tab6(j) := 'N';
2961 						ELSE
2962 							l_update_date_flag_tab6(j) := 'Y';
2963 							l_parent_start_date_tab6(j) := l_parent_finish_date_tab6(j) - l_parent_duration_tab6(j) +1;
2964 						END IF;
2965 					ELSIF P_Derived_Field6 = 'FINISH' THEN
2966 						IF((l_parent_duration_tab6(j) IS NULL) OR (l_parent_start_date_tab6(j) IS NULL))
2967 						THEN
2968 							l_update_date_flag_tab6(j) := 'Y';
2969 						ELSE
2970 							l_update_date_flag_tab6(j) := 'Y';
2971 							l_parent_finish_date_tab6(j) := l_parent_start_date_tab6(j) + l_parent_duration_tab6(j)-1;
2972 						END IF;
2973 					END IF; -- P_Derived_Field6 = 'DURATION'
2974 				END IF;
2975 			ELSE
2976 				IF l_parent_dirty_flag_tab6(j) <> 'Y' THEN
2977 					l_update_requ_flag_tab6(j) := 'N';
2978 				ELSE
2979 					l_parent_update_required := 'Y';
2980 					l_update_requ_flag_tab6(j) := 'Y';
2981 
2982 					IF l_null_flag6 = 1 THEN
2983 						l_new_completion_date6 := null;
2984 					END IF;
2985 					l_new_start_date6 := NVL(l_parent_start_date_or_tab6(j), l_new_start_date6);
2986 					l_parent_start_date_tab6(j) := l_new_start_date6;
2987 					l_parent_finish_date_tab6(j) := l_new_completion_date6;
2988 					IF l_new_start_date6 IS NULL AND l_new_completion_date6 IS NULL THEN
2989 						l_parent_duration_tab6(j) := null;
2990 					ELSE
2991 						l_parent_duration_tab6(j) := l_new_completion_date6 - l_new_start_date6 +1;
2992 					END IF;
2993 
2994 					IF l_task_flag = 1 THEN
2995 						l_update_date_flag_tab6(j) :='Y';
2996 					ELSE
2997 						IF l_new_start_date6 IS NULL AND l_new_completion_date6 IS NULL THEN
2998 							l_update_date_flag_tab6(j) :='N';
2999 						ELSE
3000 							l_update_date_flag_tab6(j) :='Y';
3001 						END IF;
3002 					END IF;
3003 				END IF;
3004 			END IF; -- l_lowest_task = 'Y'
3005 		END IF; -- l_count6= 1 OR l_task_count6 = 0
3006 
3007 		/* Starts Added the following logic for bug#6185523 */
3008 	IF (l_update_requ_flag_tab1(j) = 'Y') THEN
3009 	   IF (l_update_date_flag_tab1(j) = 'Y') THEN
3010 	      l_parent_start_date1_tmp  := l_parent_start_date_tab1(j);
3011 	      l_parent_finish_date1_tmp := l_parent_finish_date_tab1(j);
3012               l_parent_duration1_tmp	:= l_parent_duration_tab1(j);
3013            END IF;
3014 	   dirty_flag1_tmp := 'N';
3015         END IF;
3016 
3017 	IF (l_update_requ_flag_tab2(j) = 'Y') THEN
3018 	   IF (l_update_date_flag_tab2(j) = 'Y') THEN
3019 	      l_parent_start_date2_tmp  := l_parent_start_date_tab2(j);
3020 	      l_parent_finish_date2_tmp := l_parent_finish_date_tab2(j);
3021               l_parent_duration2_tmp	:= l_parent_duration_tab2(j);
3022            END IF;
3023 	   dirty_flag2_tmp := 'N';
3024         END IF;
3025 
3026 	IF (l_update_requ_flag_tab3(j) = 'Y') THEN
3027 	   IF (l_update_date_flag_tab3(j) = 'Y') THEN
3028 	      l_parent_start_date3_tmp  := l_parent_start_date_tab3(j);
3029 	      l_parent_finish_date3_tmp := l_parent_finish_date_tab3(j);
3030               l_parent_duration3_tmp	:= l_parent_duration_tab3(j);
3031            END IF;
3032 	   dirty_flag3_tmp := 'N';
3033         END IF;
3034 
3035 	IF (l_update_requ_flag_tab4(j) = 'Y') THEN
3036 	   IF (l_update_date_flag_tab4(j) = 'Y') THEN
3037 	      l_parent_start_date4_tmp  := l_parent_start_date_tab4(j);
3038 	      l_parent_finish_date4_tmp := l_parent_finish_date_tab4(j);
3039               l_parent_duration4_tmp	:= l_parent_duration_tab4(j);
3040            END IF;
3041 	   dirty_flag4_tmp := 'N';
3042         END IF;
3043 
3044 	IF (l_update_requ_flag_tab5(j) = 'Y') THEN
3045 	   IF (l_update_date_flag_tab5(j) = 'Y') THEN
3046 	      l_parent_start_date5_tmp  := l_parent_start_date_tab5(j);
3047 	      l_parent_finish_date5_tmp := l_parent_finish_date_tab5(j);
3048               l_parent_duration5_tmp	:= l_parent_duration_tab5(j);
3049            END IF;
3050 	   dirty_flag5_tmp := 'N';
3051         END IF;
3052 
3053 	IF (l_update_requ_flag_tab6(j) = 'Y') THEN
3054 	   IF (l_update_date_flag_tab6(j) = 'Y') THEN
3055 	      l_parent_start_date6_tmp  := l_parent_start_date_tab6(j);
3056 	      l_parent_finish_date6_tmp := l_parent_finish_date_tab6(j);
3057               l_parent_duration6_tmp	:= l_parent_duration_tab6(j);
3058            END IF;
3059 	   dirty_flag6_tmp := 'N';
3060         END IF;
3061 
3062         /* Ends Added the following logic for bug#6185523 */
3063 
3064 		IF l_parent_update_required = 'Y' THEN
3065 		/* Commented the following update statement and introduced a new one for bug#6185523
3066 			UPDATE  + INDEX( SchTmp PA_PROJ_ROLLUP_BULK_TEMP_U1)   PA_PROJ_ROLLUP_BULK_TEMP SchTmp SET
3067 			start_date1  = decode(l_update_requ_flag_tab1(j), 'Y', decode(l_update_date_flag_tab1(j), 'Y', l_parent_start_date_tab1(j), start_date1), start_date1)
3068 			, finish_date1 = decode(l_update_requ_flag_tab1(j), 'Y', decode(l_update_date_flag_tab1(j), 'Y', l_parent_finish_date_tab1(j),finish_date1),finish_date1)
3069 			, duration1    = decode(l_update_requ_flag_tab1(j), 'Y', decode(l_update_date_flag_tab1(j), 'Y', l_parent_duration_tab1(j), duration1), duration1)
3070 			, start_date2  = decode(l_update_requ_flag_tab2(j), 'Y', decode(l_update_date_flag_tab2(j), 'Y', l_parent_start_date_tab2(j), start_date2), start_date2)
3071 			, finish_date2 = decode(l_update_requ_flag_tab2(j), 'Y', decode(l_update_date_flag_tab2(j), 'Y', l_parent_finish_date_tab2(j), finish_date2), finish_date2)
3072 			, duration2    = decode(l_update_requ_flag_tab2(j), 'Y', decode(l_update_date_flag_tab2(j), 'Y', l_parent_duration_tab2(j), duration2), duration2)
3073 			, start_date3  = decode(l_update_requ_flag_tab3(j), 'Y', decode(l_update_date_flag_tab3(j), 'Y', l_parent_start_date_tab3(j), start_date3), start_date3)
3074 			, finish_date3 = decode(l_update_requ_flag_tab3(j), 'Y', decode(l_update_date_flag_tab3(j), 'Y', l_parent_finish_date_tab3(j), finish_date3), finish_date3)
3075 			, duration3    = decode(l_update_requ_flag_tab3(j), 'Y', decode(l_update_date_flag_tab3(j), 'Y', l_parent_duration_tab3(j), duration3), duration3)
3076 			, start_date4  = decode(l_update_requ_flag_tab4(j), 'Y', decode(l_update_date_flag_tab4(j), 'Y', l_parent_start_date_tab4(j), start_date4), start_date4)
3077 			, finish_date4 = decode(l_update_requ_flag_tab4(j), 'Y', decode(l_update_date_flag_tab4(j), 'Y', l_parent_finish_date_tab4(j), finish_date4), finish_date4)
3078 			, duration4    = decode(l_update_requ_flag_tab4(j), 'Y', decode(l_update_date_flag_tab4(j), 'Y', l_parent_duration_tab4(j), duration4), duration4)
3079 			, start_date5  = decode(l_update_requ_flag_tab5(j), 'Y', decode(l_update_date_flag_tab5(j), 'Y', l_parent_start_date_tab5(j), start_date5), start_date5)
3080 			, finish_date5 = decode(l_update_requ_flag_tab5(j), 'Y', decode(l_update_date_flag_tab5(j), 'Y', l_parent_finish_date_tab5(j), finish_date5), finish_date5)
3081 			, duration5    = decode(l_update_requ_flag_tab5(j), 'Y', decode(l_update_date_flag_tab5(j), 'Y', l_parent_duration_tab5(j), duration5), duration5)
3082 			, start_date6  = decode(l_update_requ_flag_tab6(j), 'Y', decode(l_update_date_flag_tab6(j), 'Y', l_parent_start_date_tab6(j), start_date6), start_date6)
3083 			, finish_date6 = decode(l_update_requ_flag_tab6(j), 'Y', decode(l_update_date_flag_tab6(j), 'Y', l_parent_finish_date_tab6(j), finish_date6), finish_date6)
3084 			, duration6    = decode(l_update_requ_flag_tab6(j), 'Y', decode(l_update_date_flag_tab6(j), 'Y', l_parent_duration_tab6(j), duration6), duration6)
3085 			, dirty_flag1  = decode(l_update_requ_flag_tab1(j), 'Y', 'N',dirty_flag1)
3086 			, dirty_flag2  = decode(l_update_requ_flag_tab2(j), 'Y', 'N',dirty_flag2)
3087 			, dirty_flag3  = decode(l_update_requ_flag_tab3(j), 'Y', 'N',dirty_flag3)
3088 			, dirty_flag4  = decode(l_update_requ_flag_tab4(j), 'Y', 'N',dirty_flag4)
3089 			, dirty_flag5  = decode(l_update_requ_flag_tab5(j), 'Y', 'N',dirty_flag5)
3090 			, dirty_flag6  = decode(l_update_requ_flag_tab6(j), 'Y', 'N',dirty_flag6)
3091 			WHERE object_id = l_parent_object_ids_tab(j)
3092 			AND object_type = l_parent_object_types_tab(j)
3093 			and process_number = l_process_number;
3094 			Ends commented code for bug#6185523 And added the below update*/
3095 
3096 			UPDATE  /*+ INDEX( SchTmp PA_PROJ_ROLLUP_BULK_TEMP_U1) */  PA_PROJ_ROLLUP_BULK_TEMP SchTmp SET
3097 			  start_date1  = nvl(l_parent_start_date1_tmp, start_date1)
3098 			, finish_date1 = nvl(l_parent_finish_date1_tmp, finish_date1)
3099 			, duration1    = nvl(l_parent_duration1_tmp, duration1)
3100 			, start_date2  = nvl(l_parent_start_date2_tmp, start_date2)
3101 			, finish_date2 = nvl(l_parent_finish_date2_tmp, finish_date2)
3102 			, duration2    = nvl(l_parent_duration2_tmp, duration2)
3103 			, start_date3  = nvl(l_parent_start_date3_tmp, start_date3)
3104 			, finish_date3 = nvl(l_parent_finish_date3_tmp, finish_date3)
3105 			, duration3    = nvl(l_parent_duration3_tmp, duration3)
3106 			, start_date4  = nvl(l_parent_start_date4_tmp, start_date4)
3107 			, finish_date4 = nvl(l_parent_finish_date4_tmp, finish_date4)
3108 			, duration4    = nvl(l_parent_duration4_tmp, duration4)
3109 			, start_date5  = nvl(l_parent_start_date5_tmp, start_date5)
3110 			, finish_date5 = nvl(l_parent_finish_date5_tmp, finish_date5)
3111 			, duration5    = nvl(l_parent_duration5_tmp, duration5)
3112 			, start_date6  = nvl(l_parent_start_date6_tmp, start_date6)
3113 			, finish_date6 = nvl(l_parent_finish_date6_tmp, finish_date6)
3114 			, duration6    = nvl(l_parent_duration6_tmp, duration6)
3115 			, dirty_flag1  = nvl(dirty_flag1_tmp, dirty_flag1)
3116 			, dirty_flag2  = nvl(dirty_flag2_tmp, dirty_flag2)
3117 			, dirty_flag3  = nvl(dirty_flag3_tmp, dirty_flag3)
3118 			, dirty_flag4  = nvl(dirty_flag4_tmp, dirty_flag4)
3119 			, dirty_flag5  = nvl(dirty_flag5_tmp, dirty_flag5)
3120 			, dirty_flag6  = nvl(dirty_flag6_tmp, dirty_flag6)
3121 			WHERE object_id = l_parent_object_ids_tab(j)
3122 			AND object_type = l_parent_object_types_tab(j)
3123 			and process_number = l_process_number;
3124 
3125 
3126 
3127 		END IF;
3128 	END LOOP;
3129 
3130 	-- ********* NEW DATES PROCESSING END **********
3131 /*
3132 	-- ********* DATES PROCESSING BEGIN **********
3133 
3134 	IF ((p_process_flag1 = 'Y' OR p_process_flag2 = 'Y' OR p_process_flag3 = 'Y' OR p_process_flag4 = 'Y'
3135 		OR p_process_flag5 = 'Y' OR p_process_flag6 = 'Y')
3136 		AND(p_process_rollup_flag1 = 'Y' OR p_process_rollup_flag2 = 'Y' OR p_process_rollup_flag3 = 'Y'
3137 		OR p_process_rollup_flag4 = 'Y' OR p_process_rollup_flag5 = 'Y' OR p_process_rollup_flag6 = 'Y'))
3138 	THEN
3139 		l_child_update_required := 'N';
3140 
3141 		OPEN lowest_dirty_object_list_dates;
3142 		FETCH lowest_dirty_object_list_dates BULK COLLECT INTO
3143 		l_child_object_ids_tab
3144 		, l_child_object_types_tab
3145 		, l_child_start_date_tab1
3146 		, l_child_start_date_tab2
3147 		, l_child_start_date_tab3
3148 		, l_child_start_date_tab4
3149 		, l_child_start_date_tab5
3150 		, l_child_start_date_tab6
3151 		, l_child_finish_date_tab1
3152 		, l_child_finish_date_tab2
3153 		, l_child_finish_date_tab3
3154 		, l_child_finish_date_tab4
3155 		, l_child_finish_date_tab5
3156 		, l_child_finish_date_tab6
3157 		, l_child_duration_tab1
3158 		, l_child_duration_tab2
3159 		, l_child_duration_tab3
3160 		, l_child_duration_tab4
3161 		, l_child_duration_tab5
3162 		, l_child_duration_tab6
3163 		, l_child_dirty_flag_tab1
3164 		, l_child_dirty_flag_tab2
3165 		, l_child_dirty_flag_tab3
3166 		, l_child_dirty_flag_tab4
3167 		, l_child_dirty_flag_tab5
3168 		, l_child_dirty_flag_tab6
3169 		, l_child_upd_req_flag_tab1
3170 		, l_child_upd_req_flag_tab2
3171 		, l_child_upd_req_flag_tab3
3172 		, l_child_upd_req_flag_tab4
3173 		, l_child_upd_req_flag_tab5
3174 		, l_child_upd_req_flag_tab6
3175 		;
3176 		CLOSE lowest_dirty_object_list_dates;
3177 
3178 		IF(P_Process_Dependency_flag1 = 'Y' AND P_Process_Dependency_flag2 = 'Y'
3179 			AND P_Process_Dependency_flag3 = 'Y' AND P_Process_Dependency_flag4 = 'Y'
3180 			AND P_Process_Dependency_flag5 = 'Y' AND P_Process_Dependency_flag6 = 'Y')
3181 		THEN
3182 			l_child_update_required := 'N';
3183 		END IF;
3184 
3185 
3186 		FOR i IN 1..l_child_object_ids_tab.count LOOP
3187 			IF l_child_dirty_flag_tab1(i) = 'Y' AND P_Process_Dependency_flag1 <> 'Y'
3188 				AND p_process_flag1 = 'Y' AND p_process_rollup_flag1 = 'Y'
3189 			THEN
3190 				IF P_Derived_Field1 = 'DURATION'
3191 				THEN
3192 					l_child_update_required := 'Y';
3193 					IF((l_child_start_date_tab1(i) IS NULL) OR (l_child_finish_date_tab1(i) IS NULL))
3194 					THEN
3195 						l_child_upd_req_flag_tab1(i) := 'Y';
3196 					ELSE
3197 						l_child_upd_req_flag_tab1(i) := 'Y';
3198 						l_child_duration_tab1(i) := l_child_finish_date_tab1(i) - l_child_start_date_tab1(i) +1;
3199 					END IF;
3200 				ELSIF P_Derived_Field1 = 'START'
3201 				THEN
3202 					l_child_update_required := 'Y';
3203 					IF((l_child_duration_tab1(i) IS NULL) OR (l_child_finish_date_tab1(i) IS NULL))
3204 					THEN
3205 						l_child_upd_req_flag_tab1(i) := 'Y';
3206 					ELSE
3207 						l_child_upd_req_flag_tab1(i) := 'Y';
3208 						l_child_start_date_tab1(i) := l_child_finish_date_tab1(i) - l_child_duration_tab1(i) +1;
3209 					END IF;
3210 				ELSIF P_Derived_Field1 = 'FINISH'
3211 				THEN
3212 					l_child_update_required := 'Y';
3213 					IF((l_child_duration_tab1(i) IS NULL) OR (l_child_start_date_tab1(i) IS NULL))
3214 					THEN
3215 						l_child_upd_req_flag_tab1(i) := 'Y';
3216 					ELSE
3217 						l_child_upd_req_flag_tab1(i) := 'Y';
3218 						l_child_finish_date_tab1(i) := l_child_start_date_tab1(i) + l_child_duration_tab1(i)-1;
3219 					END IF;
3220 				END IF; -- P_Derived_Field1 = 'DURATION'
3221 			END IF; -- l_child_dirty_flag_tab1(i) AND  THEN
3222 			IF l_child_dirty_flag_tab2(i) = 'Y' AND P_Process_Dependency_flag2 <> 'Y'
3223 				AND p_process_flag2 = 'Y' AND p_process_rollup_flag2 = 'Y'
3224 			THEN
3225 				IF P_Derived_Field2 = 'DURATION'
3226 				THEN
3227 					l_child_update_required := 'Y';
3228 					IF((l_child_start_date_tab2(i) IS NULL) OR (l_child_finish_date_tab2(i) IS NULL))
3229 					THEN
3230 						l_child_upd_req_flag_tab2(i) := 'Y';
3231 					ELSE
3232 						l_child_upd_req_flag_tab2(i) := 'Y';
3233 						l_child_duration_tab2(i) := l_child_finish_date_tab2(i) - l_child_start_date_tab2(i) +1;
3234 					END IF;
3235 				ELSIF P_Derived_Field2 = 'START'
3236 				THEN
3237 					l_child_update_required := 'Y';
3238 					IF((l_child_duration_tab2(i) IS NULL) OR (l_child_finish_date_tab2(i) IS NULL))
3239 					THEN
3240 						l_child_upd_req_flag_tab2(i) := 'Y';
3241 					ELSE
3242 						l_child_upd_req_flag_tab2(i) := 'Y';
3243 						l_child_start_date_tab2(i) := l_child_finish_date_tab2(i) - l_child_duration_tab2(i) +1;
3244 					END IF;
3245 				ELSIF P_Derived_Field2 = 'FINISH'
3246 				THEN
3247 					l_child_update_required := 'Y';
3248 					IF((l_child_duration_tab2(i) IS NULL) OR (l_child_start_date_tab2(i) IS NULL))
3249 					THEN
3250 						l_child_upd_req_flag_tab2(i) := 'Y';
3251 					ELSE
3252 						l_child_upd_req_flag_tab2(i) := 'Y';
3253 						l_child_finish_date_tab2(i) := l_child_start_date_tab2(i) + l_child_duration_tab2(i)-1;
3254 					END IF;
3255 				END IF; -- P_Derived_Field2 = 'DURATION'
3256 			END IF; -- l_child_dirty_flag_tab2(i) AND  THEN
3257 			IF l_child_dirty_flag_tab3(i) = 'Y' AND P_Process_Dependency_flag3 <> 'Y'
3258 				AND p_process_flag3 = 'Y' AND p_process_rollup_flag3 = 'Y'
3259 			THEN
3260 				IF P_Derived_Field3 = 'DURATION'
3261 				THEN
3262 					l_child_update_required := 'Y';
3263 					IF((l_child_start_date_tab3(i) IS NULL) OR (l_child_finish_date_tab3(i) IS NULL))
3264 					THEN
3265 						l_child_upd_req_flag_tab3(i) := 'Y';
3266 					ELSE
3267 						l_child_upd_req_flag_tab3(i) := 'Y';
3268 						l_child_duration_tab3(i) := l_child_finish_date_tab3(i) - l_child_start_date_tab3(i) +1;
3269 					END IF;
3270 				ELSIF P_Derived_Field3 = 'START'
3271 				THEN
3272 					l_child_update_required := 'Y';
3273 					IF((l_child_duration_tab3(i) IS NULL) OR (l_child_finish_date_tab3(i) IS NULL))
3274 					THEN
3275 						l_child_upd_req_flag_tab3(i) := 'Y';
3276 					ELSE
3277 						l_child_upd_req_flag_tab3(i) := 'Y';
3278 						l_child_start_date_tab3(i) := l_child_finish_date_tab3(i) - l_child_duration_tab3(i) +1;
3279 					END IF;
3280 				ELSIF P_Derived_Field3 = 'FINISH'
3281 				THEN
3282 					l_child_update_required := 'Y';
3283 					IF((l_child_duration_tab3(i) IS NULL) OR (l_child_start_date_tab3(i) IS NULL))
3284 					THEN
3285 						l_child_upd_req_flag_tab3(i) := 'Y';
3286 					ELSE
3287 						l_child_upd_req_flag_tab3(i) := 'Y';
3288 						l_child_finish_date_tab3(i) := l_child_start_date_tab3(i) + l_child_duration_tab3(i)-1;
3289 					END IF;
3290 				END IF; -- P_Derived_Field3 = 'DURATION'
3291 			END IF; -- l_child_dirty_flag_tab3(i) AND  THEN
3292 			IF l_child_dirty_flag_tab4(i) = 'Y' AND P_Process_Dependency_flag4 <> 'Y'
3293 				AND p_process_flag4 = 'Y' AND p_process_rollup_flag4 = 'Y'
3294 			THEN
3295 				IF P_Derived_Field4 = 'DURATION'
3296 				THEN
3297 					l_child_update_required := 'Y';
3298 					IF((l_child_start_date_tab4(i) IS NULL) OR (l_child_finish_date_tab4(i) IS NULL))
3299 					THEN
3300 						l_child_upd_req_flag_tab4(i) := 'Y';
3301 					ELSE
3302 						l_child_upd_req_flag_tab4(i) := 'Y';
3303 						l_child_duration_tab4(i) := l_child_finish_date_tab4(i) - l_child_start_date_tab4(i) +1;
3304 					END IF;
3305 				ELSIF P_Derived_Field4 = 'START'
3306 				THEN
3307 					l_child_update_required := 'Y';
3308 					IF((l_child_duration_tab4(i) IS NULL) OR (l_child_finish_date_tab4(i) IS NULL))
3309 					THEN
3310 						l_child_upd_req_flag_tab4(i) := 'Y';
3311 					ELSE
3312 						l_child_upd_req_flag_tab4(i) := 'Y';
3313 						l_child_start_date_tab4(i) := l_child_finish_date_tab4(i) - l_child_duration_tab4(i) +1;
3314 					END IF;
3315 				ELSIF P_Derived_Field4 = 'FINISH'
3316 				THEN
3317 					l_child_update_required := 'Y';
3318 					IF((l_child_duration_tab4(i) IS NULL) OR (l_child_start_date_tab4(i) IS NULL))
3319 					THEN
3320 						l_child_upd_req_flag_tab4(i) := 'Y';
3321 					ELSE
3322 						l_child_upd_req_flag_tab4(i) := 'Y';
3323 						l_child_finish_date_tab4(i) := l_child_start_date_tab4(i) + l_child_duration_tab4(i)-1;
3324 					END IF;
3325 				END IF; -- P_Derived_Field4 = 'DURATION'
3326 			END IF; -- l_child_dirty_flag_tab4(i) AND  THEN
3327 			IF l_child_dirty_flag_tab5(i) = 'Y' AND P_Process_Dependency_flag5 <> 'Y'
3328 				AND p_process_flag5 = 'Y' AND p_process_rollup_flag5 = 'Y'
3329 			THEN
3330 				IF P_Derived_Field5 = 'DURATION'
3331 				THEN
3332 					l_child_update_required := 'Y';
3333 					IF((l_child_start_date_tab5(i) IS NULL) OR (l_child_finish_date_tab5(i) IS NULL))
3334 					THEN
3335 						l_child_upd_req_flag_tab5(i) := 'Y';
3336 					ELSE
3337 						l_child_upd_req_flag_tab5(i) := 'Y';
3338 						l_child_duration_tab5(i) := l_child_finish_date_tab5(i) - l_child_start_date_tab5(i) +1;
3339 					END IF;
3340 				ELSIF P_Derived_Field5 = 'START'
3341 				THEN
3342 					l_child_update_required := 'Y';
3343 					IF((l_child_duration_tab5(i) IS NULL) OR (l_child_finish_date_tab5(i) IS NULL))
3344 					THEN
3345 						l_child_upd_req_flag_tab5(i) := 'Y';
3346 					ELSE
3347 						l_child_upd_req_flag_tab5(i) := 'Y';
3348 						l_child_start_date_tab5(i) := l_child_finish_date_tab5(i) - l_child_duration_tab5(i) +1;
3349 					END IF;
3350 				ELSIF P_Derived_Field5 = 'FINISH'
3351 				THEN
3352 					l_child_update_required := 'Y';
3353 					IF((l_child_duration_tab5(i) IS NULL) OR (l_child_start_date_tab5(i) IS NULL))
3354 					THEN
3355 						l_child_upd_req_flag_tab5(i) := 'Y';
3356 					ELSE
3357 						l_child_upd_req_flag_tab5(i) := 'Y';
3358 						l_child_finish_date_tab5(i) := l_child_start_date_tab5(i) + l_child_duration_tab5(i)-1;
3359 					END IF;
3360 				END IF; -- P_Derived_Field5 = 'DURATION'
3361 			END IF; -- l_child_dirty_flag_tab5(i) AND  THEN
3362 			IF l_child_dirty_flag_tab6(i) = 'Y' AND P_Process_Dependency_flag6 <> 'Y'
3363 				AND p_process_flag6 = 'Y' AND p_process_rollup_flag6 = 'Y'
3364 			THEN
3365 				IF P_Derived_Field6 = 'DURATION'
3366 				THEN
3367 					l_child_update_required := 'Y';
3368 					IF((l_child_start_date_tab6(i) IS NULL) OR (l_child_finish_date_tab6(i) IS NULL))
3369 					THEN
3370 						l_child_upd_req_flag_tab6(i) := 'Y';
3371 					ELSE
3372 						l_child_upd_req_flag_tab6(i) := 'Y';
3373 						l_child_duration_tab6(i) := l_child_finish_date_tab6(i) - l_child_start_date_tab6(i) +1;
3374 					END IF;
3375 				ELSIF P_Derived_Field6 = 'START'
3376 				THEN
3377 					l_child_update_required := 'Y';
3378 					IF((l_child_duration_tab6(i) IS NULL) OR (l_child_finish_date_tab6(i) IS NULL))
3379 					THEN
3380 						l_child_upd_req_flag_tab6(i) := 'Y';
3381 					ELSE
3382 						l_child_upd_req_flag_tab6(i) := 'Y';
3383 						l_child_start_date_tab6(i) := l_child_finish_date_tab6(i) - l_child_duration_tab6(i) +1;
3384 					END IF;
3385 				ELSIF P_Derived_Field6 = 'FINISH'
3386 				THEN
3387 					l_child_update_required := 'Y';
3388 					IF((l_child_duration_tab6(i) IS NULL) OR (l_child_start_date_tab6(i) IS NULL))
3389 					THEN
3390 						l_child_upd_req_flag_tab6(i) := 'Y';
3391 					ELSE
3392 						l_child_upd_req_flag_tab6(i) := 'Y';
3393 						l_child_finish_date_tab6(i) := l_child_start_date_tab6(i) + l_child_duration_tab6(i)-1;
3394 					END IF;
3395 				END IF; -- P_Derived_Field6 = 'DURATION'
3396 			END IF; -- l_child_dirty_flag_tab6(i) AND  THEN
3397 		END LOOP; -- FOR i IN 1..l_child_object_ids_tab.count LOOP
3398 
3399 		IF l_child_update_required = 'Y' THEN
3400 			FORALL i in 1..l_child_object_ids_tab.count
3401 			     UPDATE PA_PROJ_ROLLUP_BULK_TEMP T1
3402 				SET    T1.start_date1=decode(l_child_upd_req_flag_tab1(i), 'Y', l_child_start_date_tab1(i), T1.start_date1)
3403 				, T1.start_date2=decode(l_child_upd_req_flag_tab2(i), 'Y', l_child_start_date_tab2(i), T1.start_date2)
3404 				, T1.start_date3=decode(l_child_upd_req_flag_tab3(i), 'Y', l_child_start_date_tab3(i), T1.start_date3)
3405 				, T1.start_date4=decode(l_child_upd_req_flag_tab4(i), 'Y', l_child_start_date_tab4(i), T1.start_date4)
3406 				, T1.start_date5=decode(l_child_upd_req_flag_tab5(i), 'Y', l_child_start_date_tab5(i), T1.start_date5)
3407 				, T1.start_date6=decode(l_child_upd_req_flag_tab6(i), 'Y', l_child_start_date_tab6(i), T1.start_date6)
3408 				, T1.finish_date1=decode(l_child_upd_req_flag_tab1(i), 'Y', l_child_finish_date_tab1(i), T1.finish_date1)
3409 				, T1.finish_date2=decode(l_child_upd_req_flag_tab2(i), 'Y', l_child_finish_date_tab2(i), T1.finish_date2)
3410 				, T1.finish_date3=decode(l_child_upd_req_flag_tab3(i), 'Y', l_child_finish_date_tab3(i), T1.finish_date3)
3411 				, T1.finish_date4=decode(l_child_upd_req_flag_tab4(i), 'Y', l_child_finish_date_tab4(i), T1.finish_date4)
3412 				, T1.finish_date5=decode(l_child_upd_req_flag_tab5(i), 'Y', l_child_finish_date_tab5(i), T1.finish_date5)
3413 				, T1.finish_date6=decode(l_child_upd_req_flag_tab6(i), 'Y', l_child_finish_date_tab6(i), T1.finish_date6)
3414 				, T1.duration1=decode(l_child_upd_req_flag_tab1(i), 'Y', l_child_duration_tab1(i), T1.duration1)
3415 				, T1.duration2=decode(l_child_upd_req_flag_tab2(i), 'Y', l_child_duration_tab2(i), T1.duration2)
3416 				, T1.duration3=decode(l_child_upd_req_flag_tab3(i), 'Y', l_child_duration_tab3(i), T1.duration3)
3417 				, T1.duration4=decode(l_child_upd_req_flag_tab4(i), 'Y', l_child_duration_tab4(i), T1.duration4)
3418 				, T1.duration5=decode(l_child_upd_req_flag_tab5(i), 'Y', l_child_duration_tab5(i), T1.duration5)
3419 				, T1.duration6=decode(l_child_upd_req_flag_tab6(i), 'Y', l_child_duration_tab6(i), T1.duration6)
3420 				, T1.DIRTY_FLAG1=decode(l_child_upd_req_flag_tab1(i), 'Y', 'N', T1.DIRTY_FLAG1)
3421 				, T1.DIRTY_FLAG2=decode(l_child_upd_req_flag_tab2(i), 'Y', 'N', T1.DIRTY_FLAG2)
3422 				, T1.DIRTY_FLAG3=decode(l_child_upd_req_flag_tab3(i), 'Y', 'N', T1.DIRTY_FLAG3)
3423 				, T1.DIRTY_FLAG4=decode(l_child_upd_req_flag_tab4(i), 'Y', 'N', T1.DIRTY_FLAG4)
3424 				, T1.DIRTY_FLAG5=decode(l_child_upd_req_flag_tab5(i), 'Y', 'N', T1.DIRTY_FLAG5)
3425 				, T1.DIRTY_FLAG6=decode(l_child_upd_req_flag_tab6(i), 'Y', 'N', T1.DIRTY_FLAG6)
3426 			       WHERE T1.object_id = l_child_object_ids_tab(i)
3427 				 AND T1.object_type = l_child_object_types_tab(i)
3428 				AND process_number = l_Process_Number;
3429 		END IF;
3430 
3431 		l_object_ids_tab.delete;
3432 		l_object_types_tab.delete;
3433 
3434 		FOR i IN 1..l_child_object_ids_tab.count LOOP
3435 			l_parent_object_ids_tab.delete;
3436 			l_parent_object_types_tab.delete;
3437 			l_parent_start_date_tab1.delete;
3438 			l_parent_start_date_tab2.delete;
3439 			l_parent_start_date_tab3.delete;
3440 			l_parent_start_date_tab4.delete;
3441 			l_parent_start_date_tab5.delete;
3442 			l_parent_start_date_tab6.delete;
3443 			l_parent_finish_date_tab1.delete;
3444 			l_parent_finish_date_tab2.delete;
3445 			l_parent_finish_date_tab3.delete;
3446 			l_parent_finish_date_tab4.delete;
3447 			l_parent_finish_date_tab5.delete;
3448 			l_parent_finish_date_tab6.delete;
3449 			l_parent_duration_tab1.delete;
3450 			l_parent_duration_tab2.delete;
3451 			l_parent_duration_tab3.delete;
3452 			l_parent_duration_tab4.delete;
3453 			l_parent_duration_tab5.delete;
3454 			l_parent_duration_tab6.delete;
3455 			l_parent_dirty_flag_tab1.delete;
3456 			l_parent_dirty_flag_tab2.delete;
3457 			l_parent_dirty_flag_tab3.delete;
3458 			l_parent_dirty_flag_tab4.delete;
3459 			l_parent_dirty_flag_tab5.delete;
3460 			l_parent_dirty_flag_tab6.delete;
3461 			l_parent_start_date_or_tab1.delete;
3462 			l_parent_start_date_or_tab2.delete;
3463 			l_parent_start_date_or_tab3.delete;
3464                         l_parent_start_date_or_tab4.delete;
3465 			l_parent_start_date_or_tab5.delete;
3466 			l_parent_start_date_or_tab6.delete;
3467 
3468 
3469 			OPEN dirty_Parent_List(l_child_object_ids_tab(i));
3470 			FETCH dirty_Parent_List BULK COLLECT INTO
3471 			l_parent_object_ids_tab
3472 			, l_parent_object_types_tab
3473 			, l_parent_start_date_tab1
3474 			, l_parent_start_date_tab2
3475 			, l_parent_start_date_tab3
3476 			, l_parent_start_date_tab4
3477 			, l_parent_start_date_tab5
3478 			, l_parent_start_date_tab6
3479 			, l_parent_finish_date_tab1
3480 			, l_parent_finish_date_tab2
3481 			, l_parent_finish_date_tab3
3482 			, l_parent_finish_date_tab4
3483 			, l_parent_finish_date_tab5
3484 			, l_parent_finish_date_tab6
3485 			, l_parent_duration_tab1
3486 			, l_parent_duration_tab2
3487 			, l_parent_duration_tab3
3488 			, l_parent_duration_tab4
3489 			, l_parent_duration_tab5
3490 			, l_parent_duration_tab6
3491 			, l_parent_dirty_flag_tab1
3492 			, l_parent_dirty_flag_tab2
3493 			, l_parent_dirty_flag_tab3
3494 			, l_parent_dirty_flag_tab4
3495 			, l_parent_dirty_flag_tab5
3496 			, l_parent_dirty_flag_tab6
3497 			, l_parent_start_date_or_tab1
3498 			, l_parent_start_date_or_tab2
3499 			, l_parent_start_date_or_tab3
3500                         , l_parent_start_date_or_tab4
3501 			, l_parent_start_date_or_tab5
3502 			, l_parent_start_date_or_tab6;
3503 			CLOSE dirty_Parent_List;
3504 
3505 			-- We have two approached to update dates at parent level
3506 			-- 1. Do FORALL Bulk Update. But this will require to do Connect BY at each node to drill down all its child, grand child ...
3507 			-- Currently it is just looking its childs and not grand ones
3508 			-- 2. Update at each node level in database and do not do bulk update.
3509 			-- Currently implementing this approach as it seems more performant.
3510 
3511 			For j IN 1..l_parent_object_ids_tab.count LOOP
3512 				BEGIN
3513 					l_count1 := 1;
3514 					l_count2 := 1;
3515 					l_count3 := 1;
3516 					l_count4 := 1;
3517 					l_count5 := 1;
3518 					l_count6 := 1;
3519 
3520 					SELECT MAX(decode(p_partial_dates_flag1, 'Y',decode(rollup_node1, 'Y', decode(dirty_flag1,'Y',1,0), 0),decode(dirty_flag1,'Y',1,0)))
3521 					, MAX(decode(p_partial_dates_flag2, 'Y',decode(rollup_node2, 'Y', decode(dirty_flag2,'Y',1,0), 0),decode(dirty_flag2,'Y',1,0)))
3522 					, MAX(decode(p_partial_dates_flag3, 'Y',decode(rollup_node3, 'Y', decode(dirty_flag3,'Y',1,0), 0),decode(dirty_flag3,'Y',1,0)))
3523 					, MAX(decode(p_partial_dates_flag4, 'Y',decode(rollup_node4, 'Y', decode(dirty_flag4,'Y',1,0), 0),decode(dirty_flag4,'Y',1,0)))
3524 					, MAX(decode(p_partial_dates_flag5, 'Y',decode(rollup_node5, 'Y', decode(dirty_flag5,'Y',1,0), 0),decode(dirty_flag5,'Y',1,0)))
3525 					, MAX(decode(p_partial_dates_flag6, 'Y',decode(rollup_node6, 'Y', decode(dirty_flag6,'Y',1,0), 0),decode(dirty_flag6,'Y',1,0)))
3526 					INTO l_count1, l_count2, l_count3, l_count4, l_count5, l_count6
3527 					FROM PA_PROJ_ROLLUP_BULK_TEMP
3528 					WHERE PROCESS_NUMBER = l_process_number
3529 					AND parent_object_id = l_parent_object_ids_tab(j)
3530 					AND (DIRTY_FLAG1 = 'Y' OR DIRTY_FLAG2 = 'Y'  OR DIRTY_FLAG3 = 'Y'
3531 						OR DIRTY_FLAG4 = 'Y' OR DIRTY_FLAG5 = 'Y' OR DIRTY_FLAG6 = 'Y')
3532 						;
3533 				EXCEPTION
3534 					WHEN OTHERS THEN
3535 						l_count1 := 0;
3536 						l_count2 := 0;
3537 						l_count3 := 0;
3538 						l_count4 := 0;
3539 						l_count5 := 0;
3540 						l_count6 := 0;
3541 				End;
3542 
3543 				IF p_process_flag1 <> 'Y' AND p_process_rollup_flag1 <> 'Y' THEN
3544 					l_count1 := 1;
3545 				END IF;
3546 				IF p_process_flag2 <> 'Y' AND p_process_rollup_flag2 <> 'Y' THEN
3547 					l_count2 := 1;
3548 				END IF;
3549 				IF p_process_flag3 <> 'Y' AND p_process_rollup_flag3 <> 'Y' THEN
3550 					l_count3 := 1;
3551 				END IF;
3552 				IF p_process_flag4 <> 'Y' AND p_process_rollup_flag4 <> 'Y' THEN
3553 					l_count4 := 1;
3554 				END IF;
3555 				IF p_process_flag5 <> 'Y' AND p_process_rollup_flag5 <> 'Y' THEN
3556 					l_count5 := 1;
3557 				END IF;
3558 				IF p_process_flag6 <> 'Y' AND p_process_rollup_flag6 <> 'Y' THEN
3559 					l_count6 := 1;
3560 				END IF;
3561 
3562 				IF l_count1 <> 0 AND l_count2 <> 0 AND l_count3 <> 0 AND l_count4 <> 0
3563 					AND l_count5 <> 0 AND l_count6 <> 0
3564 				THEN
3565 					EXIT;
3566 				ELSE
3567 					-- There is extra tables created here.
3568 					-- We could have used the parent tables itself.
3569 					-- This is kept as it is so in future if want to move to FOR ALL BULK UPDATE
3570 
3571 					l_object_ids_tab.extend(1);
3572 					l_object_types_tab.extend(1);
3573 					l_update_date_flag_tab1.extend(1);
3574 					l_update_date_flag_tab2.extend(1);
3575 					l_update_date_flag_tab3.extend(1);
3576 					l_update_date_flag_tab4.extend(1);
3577 					l_update_date_flag_tab5.extend(1);
3578 					l_update_date_flag_tab6.extend(1);
3579 					l_new_start_date1.extend(1);
3580 					l_new_start_date2.extend(1);
3581 					l_new_start_date3.extend(1);
3582 					l_new_start_date4.extend(1);
3583 					l_new_start_date5.extend(1);
3584 					l_new_start_date6.extend(1);
3585 					l_new_completion_date1.extend(1);
3586 					l_new_completion_date2.extend(1);
3587 					l_new_completion_date3.extend(1);
3588 					l_new_completion_date4.extend(1);
3589 					l_new_completion_date5.extend(1);
3590 					l_new_completion_date6.extend(1);
3591 					l_new_duration1.extend(1);
3592 					l_new_duration2.extend(1);
3593 					l_new_duration3.extend(1);
3594 					l_new_duration4.extend(1);
3595 					l_new_duration5.extend(1);
3596 					l_new_duration6.extend(1);
3597 					l_update_requ_flag_tab1.extend(1);
3598 					l_update_requ_flag_tab2.extend(1);
3599 					l_update_requ_flag_tab3.extend(1);
3600 					l_update_requ_flag_tab4.extend(1);
3601 					l_update_requ_flag_tab5.extend(1);
3602 					l_update_requ_flag_tab6.extend(1);
3603 					l_counter := l_object_ids_tab.count;
3604 					l_object_ids_tab(l_counter) := l_parent_object_ids_tab(j);
3605 					l_object_types_tab(l_counter) := l_parent_object_types_tab(j);
3606 					l_new_start_date1(l_counter) := l_parent_start_date_tab1(j);
3607 					l_new_start_date2(l_counter) := l_parent_start_date_tab2(j);
3608 					l_new_start_date3(l_counter) := l_parent_start_date_tab3(j);
3609 					l_new_start_date4(l_counter) := l_parent_start_date_tab4(j);
3610 					l_new_start_date5(l_counter) := l_parent_start_date_tab5(j);
3611 					l_new_start_date6(l_counter) := l_parent_start_date_tab6(j);
3612 					l_new_completion_date1(l_counter) := l_parent_finish_date_tab1(j);
3613 					l_new_completion_date2(l_counter) := l_parent_finish_date_tab2(j);
3614 					l_new_completion_date3(l_counter) := l_parent_finish_date_tab3(j);
3615 					l_new_completion_date4(l_counter) := l_parent_finish_date_tab4(j);
3616 					l_new_completion_date5(l_counter) := l_parent_finish_date_tab5(j);
3617 					l_new_completion_date6(l_counter) := l_parent_finish_date_tab6(j);
3618 					l_new_duration1(l_counter) := l_parent_duration_tab1(j);
3619 					l_new_duration2(l_counter) := l_parent_duration_tab2(j);
3620 					l_new_duration3(l_counter) := l_parent_duration_tab3(j);
3621 					l_new_duration4(l_counter) := l_parent_duration_tab4(j);
3622 					l_new_duration5(l_counter) := l_parent_duration_tab5(j);
3623 					l_new_duration6(l_counter) := l_parent_duration_tab6(j);
3624 					l_parent_update_required := 'N';
3625 
3626 					BEGIN
3627 						l_task_flag := 0;
3628 						l_task_count1 := 0;
3629 						l_task_count2 := 0;
3630 						l_task_count3 := 0;
3631 						l_task_count4 := 0;
3632 						l_task_count5 := 0;
3633 						l_task_count6 := 0;
3634 						l_null_flag1 := 0;
3635 						l_null_flag2 := 0;
3636 						l_null_flag3 := 0;
3637 						l_null_flag4 := 0;
3638 						l_null_flag5 := 0;
3639 						l_null_flag6 := 0;
3640 
3641 						SELECT
3642 							MIN(decode(p_partial_dates_flag1, 'Y', decode(rollup_node1, 'Y', start_date1, null), start_date1))
3643 							, MAX(decode(p_partial_dates_flag1, 'Y', decode(rollup_node1, 'Y', finish_date1, null), finish_date1))
3644 							, MAX(decode(p_partial_dates_flag1, 'Y', decode(rollup_node1, 'Y', DECODE(finish_date1,NULL,1,0), 0), 0))
3645 							, MAX(decode(p_partial_dates_flag1, 'Y', decode(rollup_node1, 'Y', 1, 0), 1))
3646 							, MIN(decode(p_partial_dates_flag2, 'Y', decode(rollup_node2, 'Y', start_date2, null), null))
3647 							, MAX(decode(p_partial_dates_flag2, 'Y', decode(rollup_node2, 'Y', finish_date2, null), null))
3648 							, MAX(decode(p_partial_dates_flag2, 'Y', decode(rollup_node2, 'Y', DECODE(finish_date2,NULL,1,0), 0), 0))
3649 							, MAX(decode(p_partial_dates_flag2, 'Y', decode(rollup_node2, 'Y', 1, 0), 1))
3650 							, MIN(decode(p_partial_dates_flag3, 'Y', decode(rollup_node3, 'Y', start_date3, null), null))
3651 							, MAX(decode(p_partial_dates_flag3, 'Y', decode(rollup_node3, 'Y', finish_date3, null), null))
3652 							, MAX(decode(p_partial_dates_flag3, 'Y', decode(rollup_node3, 'Y', DECODE(finish_date3,NULL,1,0), 0), 0))
3653 							, MAX(decode(p_partial_dates_flag3, 'Y', decode(rollup_node3, 'Y', 1, 0), 1))
3654 							, MIN(decode(p_partial_dates_flag4, 'Y', decode(rollup_node4, 'Y', start_date4, null), null))
3655 							, MAX(decode(p_partial_dates_flag4, 'Y', decode(rollup_node4, 'Y', finish_date4, null), null))
3656 							, MAX(decode(p_partial_dates_flag4, 'Y', decode(rollup_node4, 'Y', DECODE(finish_date4,NULL,1,0), 0), 0))
3657 							, MAX(decode(p_partial_dates_flag4, 'Y', decode(rollup_node4, 'Y', 1, 0), 1))
3658 							, MIN(decode(p_partial_dates_flag5, 'Y', decode(rollup_node5, 'Y', start_date5, null), null))
3659 							, MAX(decode(p_partial_dates_flag5, 'Y', decode(rollup_node5, 'Y', finish_date5, null), null))
3660 							, MAX(decode(p_partial_dates_flag5, 'Y', decode(rollup_node5, 'Y', DECODE(finish_date5,NULL,1,0), 0), 0))
3661 							, MAX(decode(p_partial_dates_flag5, 'Y', decode(rollup_node5, 'Y', 1, 0), 1))
3662 							, MIN(decode(p_partial_dates_flag6, 'Y', decode(rollup_node6, 'Y', start_date6, null), null))
3663 							, MAX(decode(p_partial_dates_flag6, 'Y', decode(rollup_node6, 'Y', finish_date6, null), null))
3664 							, MAX(decode(p_partial_dates_flag6, 'Y', decode(rollup_node6, 'Y', DECODE(finish_date6,NULL,1,0), 0), 0))
3665 							, MAX(decode(p_partial_dates_flag6, 'Y', decode(rollup_node6, 'Y', 1, 0), 1))
3666 							, MAX(DECODE(OBJECT_TYPE,'PA_TASKS',1,0))
3667 
3668 						INTO
3669 							l_new_start_date1(l_counter)
3670 							, l_new_completion_date1(l_counter)
3671 							, l_null_flag1
3672 							, l_task_count1
3673 							, l_new_start_date2(l_counter)
3674 							, l_new_completion_date2(l_counter)
3675 							, l_null_flag2
3676 							, l_task_count2
3677 							, l_new_start_date3(l_counter)
3678 							, l_new_completion_date3(l_counter)
3679 							, l_null_flag3
3680 							, l_task_count3
3681 							, l_new_start_date4(l_counter)
3682 							, l_new_completion_date4(l_counter)
3683 							, l_null_flag4
3684 							, l_task_count4
3685 							, l_new_start_date5(l_counter)
3686 							, l_new_completion_date5(l_counter)
3687 							, l_null_flag5
3688 							, l_task_count5
3689 							, l_new_start_date6(l_counter)
3690 							, l_new_completion_date6(l_counter)
3691 							, l_null_flag6
3692 							, l_task_count6
3693 							, l_task_flag
3694 						FROM PA_PROJ_ROLLUP_BULK_TEMP
3695 						WHERE PROCESS_NUMBER = l_process_number
3696 						AND parent_object_id = l_parent_object_ids_tab(j);
3697 					EXCEPTION
3698 						WHEN OTHERS THEN
3699 							l_task_flag := 0;
3700 							l_task_count1 := 0;
3701 							l_task_count2 := 0;
3702 							l_task_count3 := 0;
3703 							l_task_count4 := 0;
3704 							l_task_count5 := 0;
3705 							l_task_count6 := 0;
3706 					END;
3707 				END IF; -- l_count1= 0 AND l_count2 = 0 AND l_count3 = 0 AND l_count4 = 0
3708 
3709 				IF l_count1= 1 OR l_task_count1 = 0 THEN
3710 					l_update_requ_flag_tab1(l_counter) := 'N';
3711 				ELSE
3712 					IF l_null_flag1 = 1 THEN
3713 						l_new_completion_date1(l_counter) := null;
3714 					END IF;
3715 					l_new_start_date1(l_counter) := NVL(l_parent_start_date_or_tab1(j), l_new_start_date1(l_counter));
3716 
3717 					IF l_new_start_date1(l_counter) IS NULL AND l_new_completion_date1(l_counter) IS NULL THEN
3718 						l_new_duration1(l_counter) := null;
3719 					ELSE
3720 						l_new_duration1(l_counter) := l_new_completion_date1(l_counter) - l_new_start_date1(l_counter) +1;
3721 					END IF;
3722 
3723 					IF l_task_flag = 1 THEN
3724 						l_update_date_flag_tab1(l_counter) :='Y';
3725 					ELSE
3726 						IF l_new_start_date1(l_counter) IS NULL AND l_new_completion_date1(l_counter) IS NULL THEN
3727 							l_update_date_flag_tab1(l_counter) :='N';
3728 						ELSE
3729 							l_update_date_flag_tab1(l_counter) :='Y';
3730 						END IF;
3731 					END IF;
3732 
3733 					IF l_child_dirty_flag_tab1(i) <> 'Y' OR l_parent_dirty_flag_tab1(j) <> 'Y' THEN
3734 						l_update_requ_flag_tab1(l_counter) := 'N';
3735 					ELSE
3736 						l_update_requ_flag_tab1(l_counter) := 'Y';
3737 						l_parent_update_required := 'Y';
3738 					END IF;
3739 				END IF; -- l_task_count1 = 0
3740 				IF l_count2= 1 OR l_task_count2 = 0 THEN
3741 					l_update_requ_flag_tab2(l_counter) := 'N';
3742 				ELSE
3743 					IF l_null_flag2 = 1 THEN
3744 						l_new_completion_date2(l_counter) := null;
3745 					END IF;
3746 					l_new_start_date2(l_counter) := NVL(l_parent_start_date_or_tab2(j), l_new_start_date2(l_counter));
3747 
3748 					IF l_new_start_date2(l_counter) IS NULL AND l_new_completion_date2(l_counter) IS NULL THEN
3749 						l_new_duration2(l_counter) := null;
3750 					ELSE
3751 						l_new_duration2(l_counter) := l_new_completion_date2(l_counter) - l_new_start_date2(l_counter)+1;
3752 					END IF;
3753 
3754 					IF l_task_flag = 1 THEN
3755 						l_update_date_flag_tab2(l_counter) :='Y';
3756 					ELSE
3757 						IF l_new_start_date2(l_counter) IS NULL AND l_new_completion_date2(l_counter) IS NULL THEN
3758 							l_update_date_flag_tab2(l_counter) :='N';
3759 						ELSE
3760 							l_update_date_flag_tab2(l_counter) :='Y';
3761 						END IF;
3762 					END IF;
3763 
3764 					IF l_child_dirty_flag_tab2(i) <> 'Y' OR l_parent_dirty_flag_tab2(j) <> 'Y' THEN
3765 						l_update_requ_flag_tab2(l_counter) := 'N';
3766 					ELSE
3767 						l_update_requ_flag_tab2(l_counter) := 'Y';
3768 						l_parent_update_required := 'Y';
3769 					END IF;
3770 				END IF; -- l_task_count2 = 0
3771 				IF l_count3= 1 OR l_task_count3 = 0 THEN
3772 					l_update_requ_flag_tab3(l_counter) := 'N';
3773 				ELSE
3774 					IF l_null_flag3 = 1 THEN
3775 						l_new_completion_date3(l_counter) := null;
3776 					END IF;
3777 					l_new_start_date3(l_counter) := NVL(l_parent_start_date_or_tab3(j), l_new_start_date3(l_counter));
3778 
3779 					IF l_new_start_date3(l_counter) IS NULL AND l_new_completion_date3(l_counter) IS NULL THEN
3780 						l_new_duration3(l_counter) := null;
3781 					ELSE
3782 						l_new_duration3(l_counter) := l_new_completion_date3(l_counter) - l_new_start_date3(l_counter)+1;
3783 					END IF;
3784 
3785 					IF l_task_flag = 1 THEN
3786 						l_update_date_flag_tab3(l_counter) :='Y';
3787 					ELSE
3788 						IF l_new_start_date3(l_counter) IS NULL AND l_new_completion_date3(l_counter) IS NULL THEN
3789 							l_update_date_flag_tab3(l_counter) :='N';
3790 						ELSE
3791 							l_update_date_flag_tab3(l_counter) :='Y';
3792 						END IF;
3793 					END IF;
3794 
3795 					IF l_child_dirty_flag_tab3(i) <> 'Y' OR l_parent_dirty_flag_tab3(j) <> 'Y' THEN
3796 						l_update_requ_flag_tab3(l_counter) := 'N';
3797 					ELSE
3798 						l_update_requ_flag_tab3(l_counter) := 'Y';
3799 						l_parent_update_required := 'Y';
3800 					END IF;
3801 				END IF; -- l_task_count3 = 0
3802 				IF l_count4 = 1 OR l_task_count4 = 0 THEN
3803 					l_update_requ_flag_tab4(l_counter) := 'N';
3804 				ELSE
3805 					IF l_null_flag4 = 1 THEN
3806 						l_new_completion_date4(l_counter) := null;
3807 					END IF;
3808 					l_new_start_date4(l_counter) := NVL(l_parent_start_date_or_tab4(j), l_new_start_date4(l_counter));
3809 
3810 					IF l_new_start_date4(l_counter) IS NULL AND l_new_completion_date4(l_counter) IS NULL THEN
3811 						l_new_duration4(l_counter) := null;
3812 					ELSE
3813 						l_new_duration4(l_counter) := l_new_completion_date4(l_counter) - l_new_start_date4(l_counter)+1;
3814 					END IF;
3815 
3816 					IF l_task_flag = 1 THEN
3817 						l_update_date_flag_tab4(l_counter) :='Y';
3818 					ELSE
3819 						IF l_new_start_date4(l_counter) IS NULL AND l_new_completion_date4(l_counter) IS NULL THEN
3820 							l_update_date_flag_tab4(l_counter) :='N';
3821 						ELSE
3822 							l_update_date_flag_tab4(l_counter) :='Y';
3823 						END IF;
3824 					END IF;
3825 
3826 					IF l_child_dirty_flag_tab4(i) <> 'Y' OR l_parent_dirty_flag_tab4(j) <> 'Y' THEN
3827 						l_update_requ_flag_tab4(l_counter) := 'N';
3828 					ELSE
3829 						l_update_requ_flag_tab4(l_counter) := 'Y';
3830 						l_parent_update_required := 'Y';
3831 					END IF;
3832 				END IF; -- l_task_count4 = 0
3833 				IF l_count5 = 1 OR l_task_count5 = 0 THEN
3834 					l_update_requ_flag_tab5(l_counter) := 'N';
3835 				ELSE
3836 					IF l_null_flag5 = 1 THEN
3837 						l_new_completion_date5(l_counter) := null;
3838 					END IF;
3839 					l_new_start_date5(l_counter) := NVL(l_parent_start_date_or_tab5(j), l_new_start_date5(l_counter));
3840 
3841 					IF l_new_start_date5(l_counter) IS NULL AND l_new_completion_date5(l_counter) IS NULL THEN
3842 						l_new_duration5(l_counter) := null;
3843 					ELSE
3844 						l_new_duration5(l_counter) := l_new_completion_date5(l_counter) - l_new_start_date5(l_counter)+1;
3845 					END IF;
3846 
3847 					IF l_task_flag = 1 THEN
3848 						l_update_date_flag_tab5(l_counter) :='Y';
3849 					ELSE
3850 						IF l_new_start_date5(l_counter) IS NULL AND l_new_completion_date5(l_counter) IS NULL THEN
3851 							l_update_date_flag_tab5(l_counter) :='N';
3852 						ELSE
3853 							l_update_date_flag_tab5(l_counter) :='Y';
3854 						END IF;
3855 					END IF;
3856 
3857 					IF l_child_dirty_flag_tab5(i) <> 'Y' OR l_parent_dirty_flag_tab5(j) <> 'Y' THEN
3858 						l_update_requ_flag_tab5(l_counter) := 'N';
3859 					ELSE
3860 						l_update_requ_flag_tab5(l_counter) := 'Y';
3861 						l_parent_update_required := 'Y';
3862 					END IF;
3863 				END IF; -- l_task_count5 = 0
3864 				IF l_count6 = 1 OR l_task_count6 = 0 THEN
3865 					l_update_requ_flag_tab6(l_counter) := 'N';
3866 				ELSE
3867 					IF l_null_flag6 = 1 THEN
3868 						l_new_completion_date6(l_counter) := null;
3869 					END IF;
3870 					l_new_start_date6(l_counter) := NVL(l_parent_start_date_or_tab6(j), l_new_start_date6(l_counter));
3871 
3872 					IF l_new_start_date6(l_counter) IS NULL AND l_new_completion_date6(l_counter) IS NULL THEN
3873 						l_new_duration6(l_counter) := null;
3874 					ELSE
3875 						l_new_duration6(l_counter) := l_new_completion_date6(l_counter) - l_new_start_date6(l_counter)+1;
3876 					END IF;
3877 
3878 					IF l_task_flag = 1 THEN
3879 						l_update_date_flag_tab6(l_counter) :='Y';
3880 					ELSE
3881 						IF l_new_start_date6(l_counter) IS NULL AND l_new_completion_date6(l_counter) IS NULL THEN
3882 							l_update_date_flag_tab6(l_counter) :='N';
3883 						ELSE
3884 							l_update_date_flag_tab6(l_counter) :='Y';
3885 						END IF;
3886 					END IF;
3887 
3888 					IF l_child_dirty_flag_tab6(i) <> 'Y' OR l_parent_dirty_flag_tab6(j) <> 'Y' THEN
3889 						l_update_requ_flag_tab6(l_counter) := 'N';
3890 					ELSE
3891 						l_update_requ_flag_tab6(l_counter) := 'Y';
3892 						l_parent_update_required := 'Y';
3893 					END IF;
3894 				END IF; -- l_task_count6 = 0
3895 				-- We have two approached to update dates at parent level
3896 				-- 1. Do FORALL Bulk Update. But this will require to do Connect BY at each node to drill down all its child, grand child ...
3897 				-- Currently it is just looking its childs and not grand ones
3898 				-- 2. Update at each node level in database and do not do bulk update.
3899 				-- Currently implementing this approach as it seems more performant.
3900 
3901 				IF l_parent_update_required = 'Y' THEN
3902 					UPDATE PA_PROJ_ROLLUP_BULK_TEMP SET
3903 					start_date1  = decode(l_update_requ_flag_tab1(l_counter), 'Y', decode(l_update_date_flag_tab1(l_counter), 'Y', l_new_start_date1(l_counter), start_date1),start_date1)
3904 					, finish_date1 = decode(l_update_requ_flag_tab1(l_counter), 'Y', decode(l_update_date_flag_tab1(l_counter), 'Y', l_new_completion_date1(l_counter),finish_date1),finish_date1)
3905 					, duration1    = decode(l_update_requ_flag_tab1(l_counter), 'Y', decode(l_update_date_flag_tab1(l_counter), 'Y', l_new_duration1(l_counter), duration1), duration1)
3906 					, start_date2  = decode(l_update_requ_flag_tab2(l_counter), 'Y', decode(l_update_date_flag_tab2(l_counter), 'Y', l_new_start_date2(l_counter), start_date2), start_date2)
3907 					, finish_date2 = decode(l_update_requ_flag_tab2(l_counter), 'Y', decode(l_update_date_flag_tab2(l_counter), 'Y', l_new_completion_date2(l_counter), finish_date2), finish_date2)
3908 					, duration2    = decode(l_update_requ_flag_tab2(l_counter), 'Y', decode(l_update_date_flag_tab2(l_counter), 'Y', l_new_duration2(l_counter), duration2), duration2)
3909 					, start_date3  = decode(l_update_requ_flag_tab3(l_counter), 'Y', decode(l_update_date_flag_tab3(l_counter), 'Y', l_new_start_date3(l_counter), start_date3), start_date3)
3910 					, finish_date3 = decode(l_update_requ_flag_tab3(l_counter), 'Y', decode(l_update_date_flag_tab3(l_counter), 'Y', l_new_completion_date3(l_counter), finish_date3), finish_date3)
3911 					, duration3    = decode(l_update_requ_flag_tab3(l_counter), 'Y', decode(l_update_date_flag_tab3(l_counter), 'Y', l_new_duration3(l_counter), duration3), duration3)
3912 					, start_date4  = decode(l_update_requ_flag_tab4(l_counter), 'Y', decode(l_update_date_flag_tab4(l_counter), 'Y', l_new_start_date4(l_counter), start_date4), start_date4)
3913 					, finish_date4 = decode(l_update_requ_flag_tab4(l_counter), 'Y', decode(l_update_date_flag_tab4(l_counter), 'Y', l_new_completion_date4(l_counter), finish_date4), finish_date4)
3914 					, duration4    = decode(l_update_requ_flag_tab4(l_counter), 'Y', decode(l_update_date_flag_tab4(l_counter), 'Y', l_new_duration4(l_counter), duration4), duration4)
3915 					, start_date5  = decode(l_update_requ_flag_tab5(l_counter), 'Y', decode(l_update_date_flag_tab5(l_counter), 'Y', l_new_start_date5(l_counter), start_date5), start_date5)
3916 					, finish_date5 = decode(l_update_requ_flag_tab5(l_counter), 'Y', decode(l_update_date_flag_tab5(l_counter), 'Y', l_new_completion_date5(l_counter), finish_date5), finish_date5)
3917 					, duration5    = decode(l_update_requ_flag_tab5(l_counter), 'Y', decode(l_update_date_flag_tab5(l_counter), 'Y', l_new_duration5(l_counter), duration5), duration5)
3918 					, start_date6  = decode(l_update_requ_flag_tab6(l_counter), 'Y', decode(l_update_date_flag_tab6(l_counter), 'Y', l_new_start_date6(l_counter), start_date6), start_date6)
3919 					, finish_date6 = decode(l_update_requ_flag_tab6(l_counter), 'Y', decode(l_update_date_flag_tab6(l_counter), 'Y', l_new_completion_date6(l_counter), finish_date6), finish_date6)
3920 					, duration6    = decode(l_update_requ_flag_tab6(l_counter), 'Y', decode(l_update_date_flag_tab6(l_counter), 'Y', l_new_duration6(l_counter), duration6), duration6)
3921 					, dirty_flag1  = decode(l_update_requ_flag_tab1(l_counter), 'Y', 'N', dirty_flag1)
3922 					, dirty_flag2  = decode(l_update_requ_flag_tab2(l_counter), 'Y', 'N', dirty_flag2)
3923 					, dirty_flag3  = decode(l_update_requ_flag_tab3(l_counter), 'Y', 'N', dirty_flag3)
3924 					, dirty_flag4  = decode(l_update_requ_flag_tab4(l_counter), 'Y', 'N', dirty_flag4)
3925 					, dirty_flag5  = decode(l_update_requ_flag_tab5(l_counter), 'Y', 'N', dirty_flag5)
3926 					, dirty_flag6  = decode(l_update_requ_flag_tab6(l_counter), 'Y', 'N', dirty_flag6)
3927 					WHERE object_id = l_object_ids_tab(l_counter)
3928 					AND object_type = l_object_types_tab(l_counter)
3929 					and process_number = l_process_number;
3930 				END IF;
3931 			END LOOP; -- For j IN 1..l_parent_object_ids_tab.count LOOP
3932 		END LOOP; -- FOR i IN 1..l_child_object_ids_tab.count LOOP
3933 
3934 		-- We have two approached to update dates at parent level
3935 		-- 1. Do FORALL Bulk Update. But this will require to do Connect BY at each node to drill down all its child, grand child ...
3936 		-- Currently it is just looking its childs and not grand ones
3937 		-- 2. Update at each node level in database and do not do bulk update.
3938 		-- Currently implementing this approach as it seems more performant.
3939 		/* Do not remove
3940 		IF l_parent_update_required = 'Y' THEN
3941                 FORALL k in 1..l_object_ids_tab.count
3942 			UPDATE PA_PROJ_ROLLUP_BULK_TEMP SET
3943 			start_date1  = decode(l_update_requ_flag_tab1(k), 'Y', decode(l_update_date_flag_tab1(k), 'Y', l_new_start_date1(k), start_date1),start_date1)
3944 			, finish_date1 = decode(l_update_requ_flag_tab1(k), 'Y', decode(l_update_date_flag_tab1(k), 'Y', l_new_completion_date1(k),finish_date1),finish_date1)
3945 			, duration1    = decode(l_update_requ_flag_tab1(k), 'Y', decode(l_update_date_flag_tab1(k), 'Y', l_new_duration1(k), duration1), duration1)
3946 			, start_date2  = decode(l_update_requ_flag_tab2(k), 'Y', decode(l_update_date_flag_tab2(k), 'Y', l_new_start_date2(k), start_date2), start_date2)
3947 			, finish_date2 = decode(l_update_requ_flag_tab2(k), 'Y', decode(l_update_date_flag_tab2(k), 'Y', l_new_completion_date2(k), finish_date2), finish_date2)
3948 			, duration2    = decode(l_update_requ_flag_tab2(k), 'Y', decode(l_update_date_flag_tab2(k), 'Y', l_new_duration2(k), duration2), duration2)
3949 			, start_date3  = decode(l_update_requ_flag_tab3(k), 'Y', decode(l_update_date_flag_tab3(k), 'Y', l_new_start_date3(k), start_date3), start_date3)
3950 			, finish_date3 = decode(l_update_requ_flag_tab3(k), 'Y', decode(l_update_date_flag_tab3(k), 'Y', l_new_completion_date3(k), finish_date3), finish_date3)
3951 			, duration3    = decode(l_update_requ_flag_tab3(k), 'Y', decode(l_update_date_flag_tab3(k), 'Y', l_new_duration3(k), duration3), duration3)
3952 			, start_date4  = decode(l_update_requ_flag_tab4(k), 'Y', decode(l_update_date_flag_tab4(k), 'Y', l_new_start_date4(k), start_date4), start_date4)
3953 			, finish_date4 = decode(l_update_requ_flag_tab4(k), 'Y', decode(l_update_date_flag_tab4(k), 'Y', l_new_completion_date4(k), finish_date4), finish_date4)
3954 			, duration4    = decode(l_update_requ_flag_tab4(k), 'Y', decode(l_update_date_flag_tab4(k), 'Y', l_new_duration4(k), duration4), duration4)
3955 			, start_date5  = decode(l_update_requ_flag_tab5(k), 'Y', decode(l_update_date_flag_tab5(k), 'Y', l_new_start_date5(k), start_date5), start_date5)
3956 			, finish_date5 = decode(l_update_requ_flag_tab5(k), 'Y', decode(l_update_date_flag_tab5(k), 'Y', l_new_completion_date5(k), finish_date5), finish_date5)
3957 			, duration5    = decode(l_update_requ_flag_tab5(k), 'Y', decode(l_update_date_flag_tab5(k), 'Y', l_new_duration5(k), duration5), duration5)
3958 			, start_date6  = decode(l_update_requ_flag_tab6(k), 'Y', decode(l_update_date_flag_tab6(k), 'Y', l_new_start_date6(k), start_date6), start_date6)
3959 			, finish_date6 = decode(l_update_requ_flag_tab6(k), 'Y', decode(l_update_date_flag_tab6(k), 'Y', l_new_completion_date6(k), finish_date6), finish_date6)
3960 			, duration6    = decode(l_update_requ_flag_tab6(k), 'Y', decode(l_update_date_flag_tab6(k), 'Y', l_new_duration6(k), duration6), duration6)
3961 			, dirty_flag1  = decode(l_update_requ_flag_tab1(k), 'Y', 'N', dirty_flag1)
3962 			, dirty_flag2  = decode(l_update_requ_flag_tab2(k), 'Y', 'N', dirty_flag2)
3963 			, dirty_flag3  = decode(l_update_requ_flag_tab3(k), 'Y', 'N', dirty_flag3)
3964 			, dirty_flag4  = decode(l_update_requ_flag_tab4(k), 'Y', 'N', dirty_flag4)
3965 			, dirty_flag5  = decode(l_update_requ_flag_tab5(k), 'Y', 'N', dirty_flag5)
3966 			, dirty_flag6  = decode(l_update_requ_flag_tab6(k), 'Y', 'N', dirty_flag6)
3967 			WHERE object_id = l_object_ids_tab(k)
3968 			AND object_type = l_object_types_tab(k)
3969 			and process_number = l_process_number;
3970 		END IF; -- l_parent_update_required = 'Y'
3971 
3972 	END IF; -- ((p_process_flag1 = 'Y' OR p_process_flag2 = 'Y' OR p_process_flag3 = 'Y' OR p_process_flag4 = 'Y'
3973 
3974 	-- ********* DATES PROCESSING END ***********
3975 		*/
3976 	IF g1_debug_mode  = 'Y' THEN
3977                 pa_debug.write(x_Module=>'PA_SCHEDULE_OBJECTS_PVT.GENERATE_SCHEDULE', x_Msg => 'After Date processing', x_Log_Level=> 3);
3978         END IF;
3979 
3980 
3981 	-- ********* EFFORT PROCESSING BEGIN **********
3982 	-- Bug 4218507 : Effort Processing has been merged with ETC Cost processing
3983 	-- ********* EFFORT PROCESSING END ***********
3984 
3985 
3986 	-- ********* PROGRESS STATUS PROCESSING BEGIN ***********
3987 
3988 	IF g1_debug_mode  = 'Y' THEN
3989                 pa_debug.write(x_Module=>'PA_SCHEDULE_OBJECTS_PVT.GENERATE_SCHEDULE', x_Msg => 'Before Progress Status processing', x_Log_Level=> 3);
3990         END IF;
3991 
3992 
3993 	IF ((p_process_flag1 = 'Y' OR p_process_flag2 = 'Y' OR p_process_flag3 = 'Y' OR p_process_flag4 = 'Y'
3994 		OR p_process_flag5 = 'Y' OR p_process_flag6 = 'Y')
3995 		AND(p_process_progress_flag1 = 'Y' OR p_process_progress_flag2 = 'Y' OR p_process_progress_flag3 = 'Y'
3996 		OR p_process_progress_flag4 = 'Y' OR p_process_progress_flag5 = 'Y' OR p_process_progress_flag6 = 'Y'))
3997 	THEN
3998 		l_object_ids_tab.delete;
3999 		l_object_types_tab.delete;
4000 		l_sum_tab1.delete;
4001 		l_sum_tab2.delete;
4002 		l_sum_tab3.delete;
4003 		l_sum_tab4.delete;
4004 		l_sum_tab5.delete;
4005 		l_sum_tab6.delete;
4006 		l_update_required := 'N';
4007 
4008 
4009  	        IF g1_debug_mode  = 'Y' THEN
4010 			pa_debug.write(x_Module=>'PA_SCHEDULE_OBJECTS_PVT.GENERATE_SCHEDULE', x_Msg => 'Before data fetch', x_Log_Level=> 3);
4011 		END IF;
4012 
4013 		OPEN Parent_Objects_List_prog_sts;
4014 		FETCH Parent_Objects_List_prog_sts BULK COLLECT INTO l_object_ids_tab, l_object_types_tab
4015 		, l_sum_tab1, l_sum_tab2, l_sum_tab3, l_sum_tab4, l_sum_tab5, l_sum_tab6;
4016 		CLOSE Parent_Objects_List_prog_sts;
4017 
4018 		IF g1_debug_mode  = 'Y' THEN
4019 			pa_debug.write(x_Module=>'PA_SCHEDULE_OBJECTS_PVT.GENERATE_SCHEDULE', x_Msg => 'Afetr data fetch', x_Log_Level=> 3);
4020 		END IF;
4021 
4022 		FOR i IN 1..l_object_ids_tab.count LOOP
4023 			l_Weight1 := null;
4024 			l_Weight2 := null;
4025 			l_Weight3 := null;
4026 			l_Weight4 := null;
4027 			l_Weight5 := null;
4028 			l_Weight6 := null;
4029 			l_Count := 0;
4030 
4031 			BEGIN
4032 				IF l_partial_rollup1 OR l_partial_rollup2 OR l_partial_rollup3
4033 				   OR l_partial_rollup4 OR l_partial_rollup5 OR l_partial_rollup6
4034 				THEN
4035 					SELECT MAX(decode(rollup_node1, 'Y', nvl(PROGRESS_OVERRIDE1, nvl(PROGRESS_STATUS_WEIGHT1, -99)), -99))
4036 						, MAX(decode(rollup_node2, 'Y', nvl(PROGRESS_OVERRIDE2, nvl(PROGRESS_STATUS_WEIGHT2, -99)), -99))
4037 						, MAX(decode(rollup_node3, 'Y', nvl(PROGRESS_OVERRIDE3, nvl(PROGRESS_STATUS_WEIGHT3, -99)), -99))
4038 						, MAX(decode(rollup_node4, 'Y', nvl(PROGRESS_OVERRIDE4, nvl(PROGRESS_STATUS_WEIGHT4, -99)), -99))
4039 						, MAX(decode(rollup_node5, 'Y', nvl(PROGRESS_OVERRIDE5, nvl(PROGRESS_STATUS_WEIGHT5, -99)), -99))
4040 						, MAX(decode(rollup_node6, 'Y', nvl(PROGRESS_OVERRIDE6, nvl(PROGRESS_STATUS_WEIGHT6, -99)), -99))
4041 						, count(*)
4042 					INTO   l_weight1, l_weight2, l_weight3, l_weight4, l_weight5, l_weight6, l_count
4043 					FROM   PA_PROJ_ROLLUP_BULK_TEMP
4044 					WHERE  PROCESS_NUMBER   = l_process_number
4045 					AND    Parent_Object_ID = l_object_ids_tab(i)
4046 					--AND    OBJECT_TYPE IN ('PA_TASKS', 'PA_STRUCTURES', 'PA_DELIVERABLES', 'PA_SUBPROJECTS')
4047 					-- 4366733 : Deliverable Progress Status should not rollup
4048 					AND    OBJECT_TYPE IN ('PA_TASKS', 'PA_STRUCTURES', 'PA_SUBPROJECTS')
4049 					;
4050 				ELSE
4051 					SELECT MAX(nvl(PROGRESS_OVERRIDE1, nvl(PROGRESS_STATUS_WEIGHT1, -99)))
4052 						, MAX(nvl(PROGRESS_OVERRIDE2, nvl(PROGRESS_STATUS_WEIGHT2, -99)))
4053 						, MAX(nvl(PROGRESS_OVERRIDE3, nvl(PROGRESS_STATUS_WEIGHT3, -99)))
4054 						, MAX(nvl(PROGRESS_OVERRIDE4, nvl(PROGRESS_STATUS_WEIGHT4, -99)))
4055 						, MAX(nvl(PROGRESS_OVERRIDE5, nvl(PROGRESS_STATUS_WEIGHT5, -99)))
4056 						, MAX(nvl(PROGRESS_OVERRIDE6, nvl(PROGRESS_STATUS_WEIGHT6, -99)))
4057 						, count(*)
4058 					INTO   l_weight1, l_weight2, l_weight3, l_weight4, l_weight5, l_weight6, l_count
4059 					FROM   PA_PROJ_ROLLUP_BULK_TEMP
4060 					WHERE  PROCESS_NUMBER   = l_process_number
4061 					AND    Parent_Object_ID = l_object_ids_tab(i)
4062 					--AND    OBJECT_TYPE IN ('PA_TASKS', 'PA_STRUCTURES', 'PA_DELIVERABLES','PA_SUBPROJECTS')
4063 					-- 4366733 : Deliverable Progress Status should not rollup
4064 					AND    OBJECT_TYPE IN ('PA_TASKS', 'PA_STRUCTURES', 'PA_SUBPROJECTS')
4065 					;
4066 				END IF; -- l_partial_rollup1 OR ..
4067 
4068 			EXCEPTION
4069 				WHEN OTHERS THEN
4070 					l_Weight1 := null;
4071 					l_Weight2 := null;
4072 					l_Weight3 := null;
4073 					l_Weight4 := null;
4074 					l_Weight5 := null;
4075 					l_Weight6 := null;
4076 					l_Count := 0;
4077 			END;
4078 
4079 			IF l_Count = 0 THEN
4080 				null;
4081 			ELSE
4082 				IF(l_weight1 = -99) Then
4083 					l_weight1 := null;
4084 				END IF;
4085 
4086 				IF(l_weight2 = -99) Then
4087 					l_weight2 := null;
4088 				END IF;
4089 
4090 				IF(l_weight3 = -99) Then
4091 					l_weight3 := null;
4092 				END IF;
4093 
4094 				IF(l_weight4 = -99) Then
4095 					l_weight4 := null;
4096 				END IF;
4097 
4098 				IF(l_weight5 = -99) Then
4099 					l_weight5 := null;
4100 				END IF;
4101 
4102 				IF(l_weight6 = -99) Then
4103 					l_weight6 := null;
4104 				END IF;
4105 
4106 				l_update_required := 'Y';
4107 
4108 				IF p_process_flag1 = 'Y' and p_process_progress_flag1 = 'Y' THEN
4109 					l_sum_tab1(i) := l_Weight1;
4110 				END IF;
4111 				IF p_process_flag2 = 'Y' and p_process_progress_flag2 = 'Y' THEN
4112 					l_sum_tab2(i) := l_Weight2;
4113 				END IF;
4114 				IF p_process_flag3 = 'Y' and p_process_progress_flag3 = 'Y' THEN
4115 					l_sum_tab3(i) := l_Weight3;
4116 				END IF;
4117 				IF p_process_flag4 = 'Y' and p_process_progress_flag4 = 'Y' THEN
4118 					l_sum_tab4(i) := l_Weight4;
4119 				END IF;
4120 				IF p_process_flag5 = 'Y' and p_process_progress_flag5 = 'Y' THEN
4121 					l_sum_tab5(i) := l_Weight5;
4122 				END IF;
4123 				IF p_process_flag6 = 'Y' and p_process_progress_flag6 = 'Y' THEN
4124 					l_sum_tab6(i) := l_Weight6;
4125 				END IF;
4126 			END IF;
4127 			IF l_update_required = 'Y' THEN
4128 	      /* Added the hint to force the unique index for bug#6185523 */
4129 		   		UPDATE  /*+ INDEX( T1 PA_PROJ_ROLLUP_BULK_TEMP_U1) */ PA_PROJ_ROLLUP_BULK_TEMP T1
4130 				SET    T1.PROGRESS_STATUS_WEIGHT1=l_sum_tab1(i)
4131 				, T1.PROGRESS_STATUS_WEIGHT2=l_sum_tab2(i)
4132 				, T1.PROGRESS_STATUS_WEIGHT3=l_sum_tab3(i)
4133 				, T1.PROGRESS_STATUS_WEIGHT4=l_sum_tab4(i)
4134 				, T1.PROGRESS_STATUS_WEIGHT5=l_sum_tab5(i)
4135 				, T1.PROGRESS_STATUS_WEIGHT6=l_sum_tab6(i)
4136 			       WHERE T1.Process_Number = l_Process_Number
4137 				 AND T1.object_id = l_object_ids_tab(i)
4138 				 AND T1.object_type = l_object_types_tab(i)
4139 				;
4140 			END IF;
4141 		END LOOP; -- i IN 1..l_object_ids_tab.count LOOP
4142 		-- Note that Bulk Update is not implemented due to the reasons mentioned in Date Rollup section
4143 		/* Please Do no remove
4144 		IF l_update_required = 'Y' THEN
4145 		   FORALL i in 1..l_object_ids_tab.count
4146 		     UPDATE PA_PROJ_ROLLUP_BULK_TEMP T1
4147 			SET    T1.PROGRESS_STATUS_WEIGHT1=l_sum_tab1(i)
4148 			, T1.PROGRESS_STATUS_WEIGHT2=l_sum_tab2(i)
4149 			, T1.PROGRESS_STATUS_WEIGHT3=l_sum_tab3(i)
4150 			, T1.PROGRESS_STATUS_WEIGHT4=l_sum_tab4(i)
4151 			, T1.PROGRESS_STATUS_WEIGHT5=l_sum_tab5(i)
4152 			, T1.PROGRESS_STATUS_WEIGHT6=l_sum_tab6(i)
4153 		       WHERE T1.Process_Number = l_Process_Number
4154 			 AND T1.object_id = l_object_ids_tab(i)
4155 			 AND T1.object_type = l_object_types_tab(i)
4156 		      ;
4157 		END IF; -- l_update_required = 'Y' THEN
4158 		*/
4159 	END IF; -- ((p_process_flag1 = 'Y' OR p_process_flag2 = 'Y' OR p_process_flag3 = 'Y' OR p_process_flag4 = 'Y'
4160 
4161 	IF g1_debug_mode  = 'Y' THEN
4162                 pa_debug.write(x_Module=>'PA_SCHEDULE_OBJECTS_PVT.GENERATE_SCHEDULE', x_Msg => 'After Progress Status processing', x_Log_Level=> 3);
4163         END IF;
4164 
4165 	-- ********* PROGRESS STATUS PROCESSING END **************
4166 
4167 	-- ********* TASK STATUS PROCESSING BEGIN **************
4168 
4169 	IF g1_debug_mode  = 'Y' THEN
4170                 pa_debug.write(x_Module=>'PA_SCHEDULE_OBJECTS_PVT.GENERATE_SCHEDULE', x_Msg => 'Before Task Status processing', x_Log_Level=> 3);
4171         END IF;
4172 
4173 
4174 	IF ((p_process_flag1 = 'Y' OR p_process_flag2 = 'Y' OR p_process_flag3 = 'Y' OR p_process_flag4 = 'Y'
4175 		OR p_process_flag5 = 'Y' OR p_process_flag6 = 'Y')
4176 		AND(p_process_task_status_flag1 = 'Y' OR p_process_task_status_flag2 = 'Y' OR p_process_task_status_flag3 = 'Y'
4177 	        OR p_process_task_status_flag4 = 'Y' OR p_process_task_status_flag5 = 'Y' OR p_process_task_status_flag6 = 'Y'))
4178 	THEN
4179 		l_object_ids_tab.delete;
4180 		l_object_types_tab.delete;
4181 		l_sum_tab1.delete;
4182 		l_sum_tab2.delete;
4183 		l_sum_tab3.delete;
4184 		l_sum_tab4.delete;
4185 		l_sum_tab5.delete;
4186 		l_sum_tab6.delete;
4187 		l_update_required := 'N';
4188 
4189 		OPEN parent_objects_list_task_sts;
4190 		FETCH parent_objects_list_task_sts BULK COLLECT INTO
4191 			l_object_ids_tab, l_object_types_tab, l_sum_tab1
4192 			, l_sum_tab2, l_sum_tab3, l_sum_tab4, l_sum_tab5, l_sum_tab6;
4193 		CLOSE parent_objects_list_task_sts;
4194 
4195 		FOR i IN 1..l_object_ids_tab.count LOOP
4196 			l_update_required := 'N';
4197 			l_count       := 0;
4198 			l_task_status_tab1.delete;
4199 			l_task_status_tab2.delete;
4200 			l_task_status_tab3.delete;
4201 			l_task_status_tab4.delete;
4202 			l_task_status_tab5.delete;
4203 			l_task_status_tab6.delete;
4204 
4205 			IF l_partial_rollup1 OR l_partial_rollup2 OR l_partial_rollup3
4206 			   OR l_partial_rollup4 OR l_partial_rollup5 OR l_partial_rollup6
4207 			THEN
4208 				OPEN Child_Task_Status_partial(l_object_ids_tab(i));
4209 				FETCH Child_Task_Status_partial BULK COLLECT INTO l_task_status_tab1
4210 				,l_task_status_tab2, l_task_status_tab3
4211 				, l_task_status_tab4, l_task_status_tab5, l_task_status_tab6;
4212 				CLOSE Child_Task_Status_partial;
4213 			ELSE
4214 				OPEN Child_Task_Status_full(l_object_ids_tab(i));
4215 				FETCH Child_Task_Status_full BULK COLLECT INTO l_task_status_tab1
4216 				,l_task_status_tab2, l_task_status_tab3
4217 				, l_task_status_tab4, l_task_status_tab5, l_task_status_tab6;
4218 				CLOSE Child_Task_Status_full;
4219 			END IF; -- l_partial_rollup1 OR ..
4220 
4221 				l_not_started := 'N';
4222 				l_completed   := 'N';
4223 				l_in_progress := 'N';
4224 				l_on_hold     := 'N';
4225 
4226 				FOR j IN 1..l_task_status_tab1.count LOOP
4227 					IF (l_task_status_tab1(j) = '0') THEN
4228 						l_on_hold     := 'Y';
4229 					ELSIF (l_task_status_tab1(j) = '10') THEN
4230 						l_not_started := 'Y';
4231 					ELSIF (l_task_status_tab1(j) = '20') THEN
4232 						l_completed   := 'Y';
4233 					ELSIF (l_task_status_tab1(j) = '30') THEN
4234 						l_in_progress := 'Y';
4235 					END IF;
4236 				END LOOP;
4237 
4238 
4239 				IF p_process_flag1 = 'Y' AND p_process_task_status_flag1 = 'Y'
4240 					AND l_task_status_tab1.count > 0
4241 				THEN
4242 					l_update_required := 'Y';
4243 					l_weight := PA_SCHEDULE_OBJECTS_PVT.GET_PROGRESS_STATUS(
4244 						 p_not_started  		=> l_not_started
4245 						,p_completed  			=> l_completed
4246 						,p_in_progress 			=> l_in_progress
4247 						,p_on_hold  			=> l_on_hold);
4248 					l_sum_tab1(i) := l_weight;
4249 				END IF;
4250 
4251 
4252 				l_not_started := 'N';
4253 				l_completed   := 'N';
4254 				l_in_progress := 'N';
4255 				l_on_hold     := 'N';
4256 
4257 				FOR j IN 1..l_task_status_tab2.count LOOP
4258 					IF (l_task_status_tab2(j) = '0') THEN
4259 						l_on_hold     := 'Y';
4260 					ELSIF (l_task_status_tab2(j) = '10') THEN
4261 						l_not_started := 'Y';
4262 					ELSIF (l_task_status_tab2(j) = '20') THEN
4263 						l_completed   := 'Y';
4264 					ELSIF (l_task_status_tab2(j) = '30') THEN
4265 						l_in_progress := 'Y';
4266 					END IF;
4267 				END LOOP;
4268 
4269 				IF p_process_flag2 = 'Y' AND p_process_task_status_flag2 = 'Y'
4270 					AND l_task_status_tab2.count > 0
4271 				THEN
4272 					l_update_required := 'Y';
4273 					l_weight := PA_SCHEDULE_OBJECTS_PVT.GET_PROGRESS_STATUS(
4274 							 p_not_started  		=> l_not_started
4275 							,p_completed  			=> l_completed
4276 							,p_in_progress 			=> l_in_progress
4277 							,p_on_hold  			=> l_on_hold);
4278 					l_sum_tab2(i) := l_weight;
4279 				END IF;
4280 
4281 				l_not_started := 'N';
4282 				l_completed   := 'N';
4283 				l_in_progress := 'N';
4284 				l_on_hold     := 'N';
4285 
4286 				FOR j IN 1..l_task_status_tab3.count LOOP
4287 					IF (l_task_status_tab3(j) = '0') THEN
4288 						l_on_hold     := 'Y';
4289 					ELSIF (l_task_status_tab3(j) = '10') THEN
4290 						l_not_started := 'Y';
4291 					ELSIF (l_task_status_tab3(j) = '20') THEN
4292 						l_completed   := 'Y';
4293 					ELSIF (l_task_status_tab3(j) = '30') THEN
4294 						l_in_progress := 'Y';
4295 					END IF;
4296 				END LOOP;
4297 
4298 				IF p_process_flag3 = 'Y' AND p_process_task_status_flag3 = 'Y'
4299 					AND l_task_status_tab3.count > 0
4300 				THEN
4301 					l_update_required := 'Y';
4302 					l_weight := PA_SCHEDULE_OBJECTS_PVT.GET_PROGRESS_STATUS(
4303 							 p_not_started  		=> l_not_started
4304 							,p_completed  			=> l_completed
4305 							,p_in_progress 			=> l_in_progress
4306 							,p_on_hold  			=> l_on_hold);
4307 					l_sum_tab3(i) := l_weight;
4308 				END IF;
4309 
4310 				l_not_started := 'N';
4311 				l_completed   := 'N';
4312 				l_in_progress := 'N';
4313 				l_on_hold     := 'N';
4314 
4315 				FOR j IN 1..l_task_status_tab4.count LOOP
4316 					IF (l_task_status_tab4(j) = '0') THEN
4317 						l_on_hold     := 'Y';
4318 					ELSIF (l_task_status_tab4(j) = '10') THEN
4319 						l_not_started := 'Y';
4320 					ELSIF (l_task_status_tab4(j) = '20') THEN
4321 						l_completed   := 'Y';
4322 					ELSIF (l_task_status_tab4(j) = '30') THEN
4323 						l_in_progress := 'Y';
4324 					END IF;
4325 				END LOOP;
4326 
4327 				IF p_process_flag4 = 'Y' AND p_process_task_status_flag4 = 'Y'
4328 					AND l_task_status_tab4.count > 0
4329 				THEN
4330 					l_update_required := 'Y';
4331 					l_weight := PA_SCHEDULE_OBJECTS_PVT.GET_PROGRESS_STATUS(
4332 							 p_not_started  		=> l_not_started
4333 							,p_completed  			=> l_completed
4334 							,p_in_progress 			=> l_in_progress
4335 							,p_on_hold  			=> l_on_hold);
4336 					l_sum_tab4(i) := l_weight;
4337 				END IF;
4338 
4339 				l_not_started := 'N';
4340 				l_completed   := 'N';
4341 				l_in_progress := 'N';
4342 				l_on_hold     := 'N';
4343 
4344 				FOR j IN 1..l_task_status_tab5.count LOOP
4345 					IF (l_task_status_tab5(j) = '0') THEN
4346 						l_on_hold     := 'Y';
4347 					ELSIF (l_task_status_tab5(j) = '10') THEN
4348 						l_not_started := 'Y';
4349 					ELSIF (l_task_status_tab5(j) = '20') THEN
4350 						l_completed   := 'Y';
4351 					ELSIF (l_task_status_tab5(j) = '30') THEN
4352 						l_in_progress := 'Y';
4353 					END IF;
4354 				END LOOP;
4355 
4356 				IF p_process_flag5 = 'Y' AND p_process_task_status_flag5 = 'Y'
4357 					AND l_task_status_tab5.count > 0
4358 				THEN
4359 					l_update_required := 'Y';
4360 					l_weight := PA_SCHEDULE_OBJECTS_PVT.GET_PROGRESS_STATUS(
4361 							 p_not_started  		=> l_not_started
4362 							,p_completed  			=> l_completed
4363 							,p_in_progress 			=> l_in_progress
4364 							,p_on_hold  			=> l_on_hold);
4365 					l_sum_tab5(i) := l_weight;
4366 				END IF;
4367 
4368 				l_not_started := 'N';
4369 				l_completed   := 'N';
4370 				l_in_progress := 'N';
4371 				l_on_hold     := 'N';
4372 
4373 				FOR j IN 1..l_task_status_tab6.count LOOP
4374 					IF (l_task_status_tab6(j) = '0') THEN
4375 						l_on_hold     := 'Y';
4376 					ELSIF (l_task_status_tab6(j) = '10') THEN
4377 						l_not_started := 'Y';
4378 					ELSIF (l_task_status_tab6(j) = '20') THEN
4379 						l_completed   := 'Y';
4380 					ELSIF (l_task_status_tab6(j) = '30') THEN
4381 						l_in_progress := 'Y';
4382 					END IF;
4383 				END LOOP;
4384 
4385 				IF p_process_flag6 = 'Y' AND p_process_task_status_flag6 = 'Y'
4386 					AND l_task_status_tab6.count > 0
4387 				THEN
4388 					l_update_required := 'Y';
4389 					l_weight := PA_SCHEDULE_OBJECTS_PVT.GET_PROGRESS_STATUS(
4390 							 p_not_started  		=> l_not_started
4391 							,p_completed  			=> l_completed
4392 							,p_in_progress 			=> l_in_progress
4393 							,p_on_hold  			=> l_on_hold);
4394 					l_sum_tab6(i) := l_weight;
4395 				END IF;
4396 
4397 				IF l_update_required = 'Y' THEN
4398 				      /* Added the hint to force the unique index for bug#6185523 */
4399 					UPDATE /*+ INDEX( T1 PA_PROJ_ROLLUP_BULK_TEMP_U1) */ PA_PROJ_ROLLUP_BULK_TEMP T1
4400 					SET    T1.TASK_STATUS1= l_sum_tab1(i)
4401 					, T1.TASK_STATUS2=l_sum_tab2(i)
4402 					, T1.TASK_STATUS3=l_sum_tab3(i)
4403 					, T1.TASK_STATUS4=l_sum_tab4(i)
4404 					, T1.TASK_STATUS5=l_sum_tab5(i)
4405 					, T1.TASK_STATUS6=l_sum_tab6(i)
4406 					WHERE T1.Process_Number = l_Process_Number
4407 					AND T1.object_id = l_object_ids_tab(i)
4408 					AND T1.object_type = l_object_types_tab(i);
4409 				END IF;
4410 		END LOOP; -- i IN 1..l_object_ids_tab.count LOOP
4411 		-- Note that Bulk Update is not implemented due to the reasons mentioned in Date Rollup section
4412 		/* Please Do no remove
4413 		IF l_update_required = 'Y' THEN
4414 		   FORALL i in 1..l_object_ids_tab.count
4415 	             UPDATE PA_PROJ_ROLLUP_BULK_TEMP T1
4416 		        SET    T1.TASK_STATUS1= l_sum_tab1(i)
4417 			, T1.TASK_STATUS2=l_sum_tab2(i)
4418 			, T1.TASK_STATUS3=l_sum_tab3(i)
4419 			, T1.TASK_STATUS4=l_sum_tab4(i)
4420 			, T1.TASK_STATUS5=l_sum_tab5(i)
4421 			, T1.TASK_STATUS6=l_sum_tab6(i)
4422 	               WHERE T1.Process_Number = l_Process_Number
4423 	                 AND T1.object_id = l_object_ids_tab(i)
4424 	                 AND T1.object_type = l_object_types_tab(i)
4425 		      ;
4426 		END IF; -- l_update_required = 'Y' THEN
4427 		*/
4428 	END IF; -- ((p_process_flag1 = 'Y' OR p_process_flag2 = 'Y' OR p_process_flag3 = 'Y' OR p_process_flag4 = 'Y'
4429 
4430 	IF g1_debug_mode  = 'Y' THEN
4431                 pa_debug.write(x_Module=>'PA_SCHEDULE_OBJECTS_PVT.GENERATE_SCHEDULE', x_Msg => 'After Task Status processing', x_Log_Level=> 3);
4432         END IF;
4433 
4434 
4435 	-- ********* TASK STATUS PROCESSING END  **************
4436 
4437 	-- ********* PERCENT COMPLETE PROCESSING BEGIN ***********
4438 
4439 	IF g1_debug_mode  = 'Y' THEN
4440                 pa_debug.write(x_Module=>'PA_SCHEDULE_OBJECTS_PVT.GENERATE_SCHEDULE', x_Msg => 'Before % Complete processing', x_Log_Level=> 3);
4441         END IF;
4442 
4443 	IF ((p_process_flag1 = 'Y' OR p_process_flag2 = 'Y' OR p_process_flag3 = 'Y' OR p_process_flag4 = 'Y'
4444 		OR p_process_flag5 = 'Y' OR p_process_flag6 = 'Y')
4445 	     AND(p_process_percent_flag1 = 'Y' OR p_process_percent_flag2 = 'Y' OR p_process_percent_flag3 = 'Y'
4446 	         OR p_process_percent_flag4 = 'Y' OR p_process_percent_flag5 = 'Y' OR p_process_percent_flag6 = 'Y'))
4447 	THEN
4448 		l_object_ids_tab.delete;
4449 		l_object_types_tab.delete;
4450 		l_perc_comp_deriv_code_tab.delete;
4451 		l_bac_value_tab1.delete;
4452 		l_bac_value_tab2.delete;
4453 		l_bac_value_tab3.delete;
4454 		l_bac_value_tab4.delete;
4455 		l_bac_value_tab5.delete;
4456 		l_bac_value_tab6.delete;
4457 		l_percent_complete_tab1.delete;
4458 		l_percent_complete_tab2.delete;
4459 		l_percent_complete_tab3.delete;
4460 		l_percent_complete_tab4.delete;
4461 		l_percent_complete_tab5.delete;
4462 		l_percent_complete_tab6.delete;
4463 		l_percent_override_tab1.delete;
4464 		l_percent_override_tab2.delete;
4465 		l_percent_override_tab3.delete;
4466 		l_percent_override_tab4.delete;
4467 		l_percent_override_tab5.delete;
4468 		l_percent_override_tab6.delete;
4469 		l_earned_value_tab1.delete;
4470 		l_earned_value_tab2.delete;
4471 		l_earned_value_tab3.delete;
4472 		l_earned_value_tab4.delete;
4473 		l_earned_value_tab5.delete;
4474 		l_earned_value_tab6.delete;
4475 		l_update_required := 'N';
4476 
4477 		OPEN lowest_tasks_per_comp;
4478 		FETCH lowest_tasks_per_comp bulk collect into l_object_ids_tab, l_object_types_tab, l_perc_comp_deriv_code_tab
4479 		, l_bac_value_tab1, l_bac_value_tab2, l_bac_value_tab3, l_bac_value_tab4, l_bac_value_tab5, l_bac_value_tab6
4480 		, l_percent_complete_tab1, l_percent_complete_tab2, l_percent_complete_tab3, l_percent_complete_tab4
4481 		, l_percent_complete_tab5, l_percent_complete_tab6, l_percent_override_tab1, l_percent_override_tab2
4482 		, l_percent_override_tab3, l_percent_override_tab4, l_percent_override_tab5, l_percent_override_tab6
4483 		, l_earned_value_tab1, l_earned_value_tab2, l_earned_value_tab3, l_earned_value_tab4, l_earned_value_tab5
4484 		, l_earned_value_tab6;
4485 		CLOSE lowest_tasks_per_comp;
4486 
4487 
4488 		FOR i IN 1..l_object_ids_tab.count LOOP
4489 			l_actual_duration1 := 0;
4490 			l_pc_duration1 := 0;
4491 			l_actual_duration2 := 0;
4492 			l_pc_duration2 := 0;
4493 			l_actual_duration3 := 0;
4494 			l_pc_duration3 := 0;
4495 			l_actual_duration4 := 0;
4496 			l_pc_duration4 := 0;
4497 			l_actual_duration5 := 0;
4498 			l_pc_duration5 := 0;
4499 			l_actual_duration6 := 0;
4500 			l_pc_duration6 := 0;
4501 			l_Count := 0;
4502 
4503 			IF (l_perc_comp_deriv_code_tab(i) = 'DELIVERABLE') THEN
4504 				BEGIN
4505 					-- Note that % complete calculation does not currently uses rollup_node feature
4506                         --  l_actual_duration is devided by 100, added by rtarway for bug 4216030
4507 					SELECT sum(nvl(percent_override1, nvl(percent_complete1, 0))*nvl(task_weight1, 0))/100,
4508 					  sum(nvl(task_weight1, 0)),
4509 					  sum(nvl(percent_override2, nvl(percent_complete2, 0))*nvl(task_weight2, 0))/100,
4510 					  sum(nvl(task_weight2, 0)),
4511 					  sum(nvl(percent_override3, nvl(percent_complete3, 0))*nvl(task_weight3, 0))/100,
4512 					  sum(nvl(task_weight3, 0)),
4513 					  sum(nvl(percent_override4, nvl(percent_complete4, 0))*nvl(task_weight4, 0))/100,
4514 					  sum(nvl(task_weight4, 0)),
4515 					  sum(nvl(percent_override5, nvl(percent_complete5, 0))*nvl(task_weight5, 0))/100,
4516 					  sum(nvl(task_weight5, 0)),
4517 					  sum(nvl(percent_override6, nvl(percent_complete6, 0))*nvl(task_weight6, 0))/100,
4518 					  sum(nvl(task_weight6, 0)),
4519 					  count(*)
4520 					INTO   l_actual_duration1, l_pc_duration1
4521 					, l_actual_duration2, l_pc_duration2
4522 					, l_actual_duration3, l_pc_duration3
4523 					, l_actual_duration4, l_pc_duration4
4524 					, l_actual_duration5, l_pc_duration5
4525 					, l_actual_duration6, l_pc_duration6
4526 					, l_count
4527 					FROM   PA_PROJ_ROLLUP_BULK_TEMP
4528 					WHERE  Process_Number    = l_Process_Number
4529 					AND    OBJECT_TYPE = 'PA_DELIVERABLES'
4530 					AND    Parent_Object_ID  = l_object_ids_tab(i)
4531 					AND    parent_object_type IN ('PA_STRUCTURES','PA_TASKS') -- Bug 4450587
4532 					;
4533 				EXCEPTION
4534 					WHEN OTHERS THEN
4535 					l_count := 0;
4536 				END;
4537 			ELSIF (l_perc_comp_deriv_code_tab(i)  IN ('COST','EFFORT')) THEN
4538 				BEGIN
4539 					select sum(nvl(earned_value1, 0)), sum(nvl(bac_value1, 0))
4540 					, sum(nvl(earned_value2, 0)), sum(nvl(bac_value2, 0))
4541 					, sum(nvl(earned_value3, 0)), sum(nvl(bac_value3, 0))
4542 					, sum(nvl(earned_value4, 0)), sum(nvl(bac_value4, 0))
4543 					, sum(nvl(earned_value5, 0)), sum(nvl(bac_value5, 0))
4544 					, sum(nvl(earned_value6, 0)), sum(nvl(bac_value6, 0))
4545 					,  count(*)
4546 					INTO   l_actual_duration1, l_pc_duration1
4547 					, l_actual_duration2, l_pc_duration2
4548 					, l_actual_duration3, l_pc_duration3
4549 					, l_actual_duration4, l_pc_duration4
4550 					, l_actual_duration5, l_pc_duration5
4551 					, l_actual_duration6, l_pc_duration6
4552 					, l_count
4553 					FROM   PA_PROJ_ROLLUP_BULK_TEMP
4554 					WHERE  Process_Number    = l_Process_Number
4555 					AND    OBJECT_TYPE IN ('PA_ASSIGNMENTS', 'PA_SUBPROJECTS')
4556 					AND    Parent_Object_ID  = l_object_ids_tab(i)
4557 					AND    parent_object_type IN ('PA_STRUCTURES','PA_TASKS') -- Bug 4450587
4558 					;
4559 				EXCEPTION
4560 					WHEN OTHERS THEN
4561 						l_count := 0;
4562 				END;
4563 			END IF;	-- (l_perc_comp_deriv_code_tab(i) = 'DELIVERABLE') THEN
4564 
4565 			IF (l_count > 0) THEN
4566 				-- 4579654 : For more accuracy, we will first derive the earned value and then
4567 				-- round the % complete.
4568 				IF p_process_flag1 = 'Y' and p_process_percent_flag1 = 'Y' THEN
4569 					l_update_required := 'Y';
4570 							IF (l_pc_duration1 = 0 AND l_actual_duration1 > 0) THEN
4571 					      l_percent_complete_tab1(i) := 100;  /* Added for bug 7409515 */
4572 					ELSIF
4573             (l_pc_duration1 = 0 OR (l_actual_duration1 < 0 and l_pc_duration1 > 0) OR (l_actual_duration1 > 0 and l_pc_duration1 < 0)) THEN --OR added for BUG 4346107 --5463690
4574 						l_percent_complete_tab1(i) := 0;
4575 					ELSE
4576 						--l_percent_complete_tab1(i) := round(100*l_actual_duration1/l_pc_duration1, p_number_digit);
4577 						l_percent_complete_tab1(i) := 100*l_actual_duration1/l_pc_duration1;
4578 						if l_percent_complete_tab1(i) > 100 then   --5726773
4579  	                                                    l_percent_complete_tab1(i) := 100;
4580  	                                        end if;
4581 					END IF;
4582 					l_earned_value_tab1(i) := nvl(l_bac_value_tab1(i), 0)*nvl(l_percent_override_tab1(i), l_percent_complete_tab1(i))/100;
4583 					l_percent_complete_tab1(i) := round(l_percent_complete_tab1(i), p_number_digit);
4584 				END IF;
4585 				IF p_process_flag2 = 'Y' and p_process_percent_flag2 = 'Y' THEN
4586 					l_update_required := 'Y';
4587 					IF(l_pc_duration2 = 0 OR (l_actual_duration2 < 0 and l_pc_duration2 > 0) OR (l_actual_duration2 > 0 and l_pc_duration2 < 0)) THEN --OR added for BUG 4346107 --5726773
4588 						l_percent_complete_tab2(i) := 0;
4589 					ELSE
4590 						--l_percent_complete_tab2(i) := round(100*l_actual_duration2/l_pc_duration2, p_number_digit);
4591 						l_percent_complete_tab2(i) := 100*l_actual_duration2/l_pc_duration2;
4592 						if l_percent_complete_tab2(i) > 100 then   --5726773
4593  	                                                    l_percent_complete_tab2(i) := 100;
4594  	                                        end if;
4595 					END IF;
4596 					l_earned_value_tab2(i) := nvl(l_bac_value_tab2(i), 0)*nvl(l_percent_override_tab2(i), l_percent_complete_tab2(i))/100;
4597 					l_percent_complete_tab2(i) := round(l_percent_complete_tab2(i), p_number_digit);
4598 				END IF;
4599 				IF p_process_flag3 = 'Y' and p_process_percent_flag3 = 'Y' THEN
4600 					l_update_required := 'Y';
4601 					IF(l_pc_duration3 = 0 OR (l_actual_duration3 < 0 and l_pc_duration3 > 0) OR (l_actual_duration3 > 0 and l_pc_duration3 < 0)) THEN --OR added for BUG 4346107 --5726773
4602 						l_percent_complete_tab3(i) := 0;
4603 					ELSE
4604 						--l_percent_complete_tab3(i) := round(100*l_actual_duration3/l_pc_duration3, p_number_digit);
4605 						l_percent_complete_tab3(i) := 100*l_actual_duration3/l_pc_duration3;
4606 						if l_percent_complete_tab3(i) > 100 then   --5726773
4607  	                                                    l_percent_complete_tab3(i) := 100;
4608  	                                        end if;
4609 					END IF;
4610 					l_earned_value_tab3(i) := nvl(l_bac_value_tab3(i), 0)*nvl(l_percent_override_tab3(i), l_percent_complete_tab3(i))/100;
4611 					l_percent_complete_tab3(i) := round(l_percent_complete_tab3(i), p_number_digit);
4612 				END IF;
4613 				IF p_process_flag4 = 'Y' and p_process_percent_flag4 = 'Y' THEN
4614 					l_update_required := 'Y';
4615 					IF(l_pc_duration4 = 0 OR (l_actual_duration4 < 0 and l_pc_duration4 > 0) OR (l_actual_duration4 > 0 and l_pc_duration4 < 0)) THEN --OR added for BUG 4346107 --5726773
4616 						l_percent_complete_tab4(i) := 0;
4617 					ELSE
4618 						--l_percent_complete_tab4(i) := round(100*l_actual_duration4/l_pc_duration4, p_number_digit);
4619 						l_percent_complete_tab4(i) := 100*l_actual_duration4/l_pc_duration4;
4620 						if l_percent_complete_tab4(i) > 100 then   --5726773
4621  	                                                    l_percent_complete_tab4(i) := 100;
4622  	                                        end if;
4623 					END IF;
4624 					l_earned_value_tab4(i) := nvl(l_bac_value_tab4(i), 0)*nvl(l_percent_override_tab4(i), l_percent_complete_tab4(i))/100;
4625 					l_percent_complete_tab4(i) := round(l_percent_complete_tab4(i), p_number_digit);
4626 				END IF;
4627 				IF p_process_flag5 = 'Y' and p_process_percent_flag5 = 'Y' THEN
4628 					l_update_required := 'Y';
4629 					IF(l_pc_duration5 = 0 OR (l_actual_duration5 < 0 and l_pc_duration5 > 0) OR (l_actual_duration5 > 0 and l_pc_duration5 < 0)) THEN --OR added for BUG 4346107 --5726773
4630 						l_percent_complete_tab5(i) := 0;
4631 					ELSE
4632 						--l_percent_complete_tab5(i) := round(100*l_actual_duration5/l_pc_duration5, p_number_digit);
4633 						l_percent_complete_tab5(i) := 100*l_actual_duration5/l_pc_duration5;
4634 						if l_percent_complete_tab5(i) > 100 then   --5726773
4635  	                                                    l_percent_complete_tab5(i) := 100;
4636  	                                        end if;
4637 					END IF;
4638 					l_earned_value_tab5(i) := nvl(l_bac_value_tab5(i), 0)*nvl(l_percent_override_tab5(i), l_percent_complete_tab5(i))/100;
4639 					l_percent_complete_tab5(i) := round(l_percent_complete_tab5(i), p_number_digit);
4640 				END IF;
4641 				IF p_process_flag6 = 'Y' and p_process_percent_flag6 = 'Y' THEN
4642 					l_update_required := 'Y';
4643 					IF(l_pc_duration6 = 0 OR (l_actual_duration6 < 0 and l_pc_duration6 > 0) OR (l_actual_duration6 > 0 and l_pc_duration6 < 0)) THEN --OR added for BUG 4346107 --5726773
4644 						l_percent_complete_tab6(i) := 0;
4645 					ELSE
4646 						--l_percent_complete_tab6(i) := round(100*l_actual_duration6/l_pc_duration6, p_number_digit);
4647 						l_percent_complete_tab6(i) := 100*l_actual_duration6/l_pc_duration6;
4648 						if l_percent_complete_tab6(i) > 100 then   --5726773
4649  	                                                    l_percent_complete_tab6(i) := 100;
4650  	                                        end if;
4651 					END IF;
4652 					l_earned_value_tab6(i) := nvl(l_bac_value_tab6(i), 0)*nvl(l_percent_override_tab6(i), l_percent_complete_tab6(i))/100;
4653 					l_percent_complete_tab6(i) := round(l_percent_complete_tab6(i), p_number_digit);
4654 				END IF;
4655 			ELSE -- IF l_count > 0
4656 				IF p_process_flag1 = 'Y' and p_process_percent_flag1 = 'Y' THEN
4657 					l_update_required := 'Y';
4658 					l_earned_value_tab1(i) := nvl(l_bac_value_tab1(i), 0)*nvl(l_percent_override_tab1(i), nvl(l_percent_complete_tab1(i),0))/100;
4659 				END IF;
4660 				IF p_process_flag2 = 'Y' and p_process_percent_flag2 = 'Y' THEN
4661 					l_update_required := 'Y';
4662 					l_earned_value_tab2(i) := nvl(l_bac_value_tab2(i), 0)*nvl(l_percent_override_tab2(i), nvl(l_percent_complete_tab2(i),0))/100;
4663 				END IF;
4664 				IF p_process_flag3 = 'Y' and p_process_percent_flag3 = 'Y' THEN
4665 					l_update_required := 'Y';
4666 					l_earned_value_tab3(i) := nvl(l_bac_value_tab3(i), 0)*nvl(l_percent_override_tab3(i), nvl(l_percent_complete_tab3(i),0))/100;
4667 				END IF;
4668 				IF p_process_flag4 = 'Y' and p_process_percent_flag4 = 'Y' THEN
4669 					l_update_required := 'Y';
4670 					l_earned_value_tab4(i) := nvl(l_bac_value_tab4(i), 0)*nvl(l_percent_override_tab4(i), nvl(l_percent_complete_tab4(i),0))/100;
4671 				END IF;
4672 				IF p_process_flag5 = 'Y' and p_process_percent_flag5 = 'Y' THEN
4673 					l_update_required := 'Y';
4674 					l_earned_value_tab5(i) := nvl(l_bac_value_tab5(i), 0)*nvl(l_percent_override_tab5(i), nvl(l_percent_complete_tab5(i),0))/100;
4675 				END IF;
4676 				IF p_process_flag6 = 'Y' and p_process_percent_flag6 = 'Y' THEN
4677 					l_update_required := 'Y';
4678 					l_earned_value_tab6(i) := nvl(l_bac_value_tab6(i), 0)*nvl(l_percent_override_tab6(i), nvl(l_percent_complete_tab6(i),0))/100;
4679 				END IF;
4680 			END IF; -- (l_count > 0) THEN
4681 		END LOOP; -- i IN 1..l_object_ids_tab.count LOOP
4682 
4683 		IF l_update_required = 'Y' THEN
4684 			FORALL i in 1..l_object_ids_tab.count
4685 	      /* Added the hint to force the unique index for bug#6185523 */
4686 			UPDATE  /*+ INDEX( T1 PA_PROJ_ROLLUP_BULK_TEMP_U1) */ PA_PROJ_ROLLUP_BULK_TEMP T1
4687 			SET    t1.percent_complete1=l_percent_complete_tab1(i)
4688 			, t1.percent_complete2=l_percent_complete_tab2(i)
4689 			, t1.percent_complete3=l_percent_complete_tab3(i)
4690 			, t1.percent_complete4=l_percent_complete_tab4(i)
4691 			, t1.percent_complete5=l_percent_complete_tab5(i)
4692 			, t1.percent_complete6=l_percent_complete_tab6(i)
4693 			, t1.earned_value1=l_earned_value_tab1(i)
4694 			, t1.earned_value2=l_earned_value_tab2(i)
4695 			, t1.earned_value3=l_earned_value_tab3(i)
4696 			, t1.earned_value4=l_earned_value_tab4(i)
4697 			, t1.earned_value5=l_earned_value_tab5(i)
4698 			, t1.earned_value6=l_earned_value_tab6(i)
4699 		       WHERE T1.Process_Number = l_Process_Number
4700 			 AND T1.object_id = l_object_ids_tab(i)
4701 			 AND T1.object_type = l_object_types_tab(i)
4702 		      ;
4703 		END IF; -- l_update_required = 'Y' THEN
4704 
4705 
4706 		-- Parent Tasks(Summary Tasks)
4707 
4708 		l_object_ids_tab.delete;
4709 		l_object_types_tab.delete;
4710 		l_perc_comp_deriv_code_tab.delete;
4711 		l_bac_value_tab1.delete;
4712 		l_bac_value_tab2.delete;
4713 		l_bac_value_tab3.delete;
4714 		l_bac_value_tab4.delete;
4715 		l_bac_value_tab5.delete;
4716 		l_bac_value_tab6.delete;
4717 		l_percent_complete_tab1.delete;
4718 		l_percent_complete_tab2.delete;
4719 		l_percent_complete_tab3.delete;
4720 		l_percent_complete_tab4.delete;
4721 		l_percent_complete_tab5.delete;
4722 		l_percent_complete_tab6.delete;
4723 		l_percent_override_tab1.delete;
4724 		l_percent_override_tab2.delete;
4725 		l_percent_override_tab3.delete;
4726 		l_percent_override_tab4.delete;
4727 		l_percent_override_tab5.delete;
4728 		l_percent_override_tab6.delete;
4729 		l_earned_value_tab1.delete;
4730 		l_earned_value_tab2.delete;
4731 		l_earned_value_tab3.delete;
4732 		l_earned_value_tab4.delete;
4733 		l_earned_value_tab5.delete;
4734 		l_earned_value_tab6.delete;
4735 		l_summ_obj_flag_tab.delete; -- 4587517
4736 		l_update_required := 'N';
4737 
4738 		OPEN parent_objects_list_per_comp;
4739 		FETCH parent_objects_list_per_comp BULK COLLECT INTO l_object_ids_tab, l_object_types_tab, l_perc_comp_deriv_code_tab
4740 		, l_bac_value_tab1, l_bac_value_tab2, l_bac_value_tab3, l_bac_value_tab4, l_bac_value_tab5, l_bac_value_tab6
4741 		, l_percent_complete_tab1, l_percent_complete_tab2, l_percent_complete_tab3, l_percent_complete_tab4
4742 		, l_percent_complete_tab5, l_percent_complete_tab6, l_percent_override_tab1, l_percent_override_tab2
4743 		, l_percent_override_tab3, l_percent_override_tab4, l_percent_override_tab5, l_percent_override_tab6
4744 		, l_earned_value_tab1, l_earned_value_tab2, l_earned_value_tab3, l_earned_value_tab4, l_earned_value_tab5
4745 		, l_earned_value_tab6
4746 		, l_summ_obj_flag_tab -- 4587517
4747 		;
4748 		CLOSE parent_objects_list_per_comp;
4749 
4750 
4751 		FOR i IN 1..l_object_ids_tab.count LOOP
4752 			l_update_required := 'N';
4753 			l_actual_duration1 := 0;
4754 			l_pc_duration1 := 0;
4755 			l_actual_duration2 := 0;
4756 			l_pc_duration2 := 0;
4757 			l_actual_duration3 := 0;
4758 			l_pc_duration3 := 0;
4759 			l_actual_duration4 := 0;
4760 			l_pc_duration4 := 0;
4761 			l_actual_duration5 := 0;
4762 			l_pc_duration5 := 0;
4763 			l_actual_duration6 := 0;
4764 			l_pc_duration6 := 0;
4765 			l_Count := 0;
4766 			l_Count1 := 0;
4767 
4768 			IF (l_perc_comp_deriv_code_tab(i) = 'DELIVERABLE') THEN
4769 				BEGIN
4770                          --  l_actual_duration is devided by 100, added by rtarway for bug 4216030
4771                          SELECT sum(nvl(percent_override1, nvl(percent_complete1, 0))*nvl(task_weight1, 0))/100,
4772 					  sum(nvl(task_weight1, 0)),
4773 					  sum(nvl(percent_override2, nvl(percent_complete2, 0))*nvl(task_weight2, 0))/100,
4774 					  sum(nvl(task_weight2, 0)),
4775 					  sum(nvl(percent_override3, nvl(percent_complete3, 0))*nvl(task_weight3, 0))/100,
4776 					  sum(nvl(task_weight3, 0)),
4777 					  sum(nvl(percent_override4, nvl(percent_complete4, 0))*nvl(task_weight4, 0))/100,
4778 					  sum(nvl(task_weight4, 0)),
4779 					  sum(nvl(percent_override5, nvl(percent_complete5, 0))*nvl(task_weight5, 0))/100,
4780 					  sum(nvl(task_weight5, 0)),
4781 					  sum(nvl(percent_override6, nvl(percent_complete6, 0))*nvl(task_weight6, 0))/100,
4782 					  sum(nvl(task_weight6, 0)),
4783 					  count(*)
4784 					INTO   l_actual_duration1, l_pc_duration1
4785 					, l_actual_duration2, l_pc_duration2
4786 					, l_actual_duration3, l_pc_duration3
4787 					, l_actual_duration4, l_pc_duration4
4788 					, l_actual_duration5, l_pc_duration5
4789 					, l_actual_duration6, l_pc_duration6
4790 					, l_count
4791 					FROM   PA_PROJ_ROLLUP_BULK_TEMP
4792 					WHERE  Process_Number    = l_Process_Number
4793 					AND    OBJECT_TYPE = 'PA_DELIVERABLES'
4794 					AND    Parent_Object_ID  = l_object_ids_tab(i)
4795 					AND    parent_object_type IN ('PA_STRUCTURES','PA_TASKS') -- Bug 4450587
4796 					;
4797 				EXCEPTION
4798 					WHEN OTHERS THEN
4799 						l_count := 0;
4800 				END;
4801 			-- 4587517 : For Deliverable and Work Quantity, Sub project do not contribute in % complete
4802 			-- Added ELSIF for Work Quantity
4803 			ELSIF l_perc_comp_deriv_code_tab(i) = 'WQ_DERIVED' AND nvl(l_summ_obj_flag_tab(i),'N') = 'L' THEN
4804 				l_count := 0;
4805 			-- 4587367 : Seprate processing for link task for manual duration rollup
4806 			-- Moved existing ('MANUAL','DURATION') condition below
4807 			-- Added new condition "OR"  in COST, EFFORT
4808 			ELSIF P_Rollup_Method IN ('COST','EFFORT') OR (P_Rollup_Method IN ('MANUAL','DURATION') AND nvl(l_summ_obj_flag_tab(i),'N') = 'L')THEN
4809 				IF nvl(l_summ_obj_flag_tab(i),'N') = 'L' THEN -- 4586449 : For link task separate processing
4810 					l_actual_duration1_a := 0;
4811 					l_actual_duration2_a := 0;
4812 					l_actual_duration3_a := 0;
4813 					l_actual_duration4_a := 0;
4814 					l_actual_duration5_a := 0;
4815 					l_actual_duration6_a := 0;
4816 					l_duration1_a := 0;
4817 					l_duration2_a := 0;
4818 					l_duration3_a := 0;
4819 					l_duration4_a := 0;
4820 					l_duration5_a := 0;
4821 					l_duration6_a := 0;
4822 					l_actual_duration1_t := 0;
4823 					l_actual_duration2_t := 0;
4824 					l_actual_duration3_t := 0;
4825 					l_actual_duration4_t := 0;
4826 					l_actual_duration5_t := 0;
4827 					l_actual_duration6_t := 0;
4828 					l_duration1_t := 0;
4829 					l_duration2_t := 0;
4830 					l_duration3_t := 0;
4831 					l_duration4_t := 0;
4832 					l_duration5_t := 0;
4833 					l_duration6_t := 0;
4834 					l_temp_percent1 := 0;
4835 					l_temp_percent2 := 0;
4836 					l_temp_percent3 := 0;
4837 					l_temp_percent4 := 0;
4838 					l_temp_percent5 := 0;
4839 					l_temp_percent6 := 0;
4840 
4841 					BEGIN
4842 						SELECT sum(nvl(earned_value1, 0)), sum(nvl(bac_value1, 0))
4843 						, sum(nvl(earned_value2, 0)), sum(nvl(bac_value2, 0))
4844 						, sum(nvl(earned_value3, 0)), sum(nvl(bac_value3, 0))
4845 						, sum(nvl(earned_value4, 0)), sum(nvl(bac_value4, 0))
4846 						, sum(nvl(earned_value5, 0)), sum(nvl(bac_value5, 0))
4847 						, sum(nvl(earned_value6, 0)), sum(nvl(bac_value6, 0))
4848 						,  count(*)
4849 						INTO   l_actual_duration1_a, l_duration1_a
4850 						, l_actual_duration2_a, l_duration2_a
4851 						, l_actual_duration3_a, l_duration3_a
4852 						, l_actual_duration4_a, l_duration4_a
4853 						, l_actual_duration5_a, l_duration5_a
4854 						, l_actual_duration6_a, l_duration6_a
4855 						, l_count
4856 						FROM   PA_PROJ_ROLLUP_BULK_TEMP
4857 						WHERE  Process_Number = l_Process_Number
4858 						AND    OBJECT_TYPE = 'PA_ASSIGNMENTS'
4859 						AND    Parent_Object_ID  = l_object_ids_tab(i)
4860 						AND    parent_object_type = 'PA_TASKS'
4861 						;
4862 
4863 					EXCEPTION
4864 						WHEN OTHERS THEN
4865 							l_count := 0;
4866 					END;
4867 					-- 4579654 : For more accuracy, we will not round the temp % complete here.
4868 					IF (l_count > 0) THEN
4869 						IF(l_duration1_a = 0 OR (l_actual_duration1_a < 0 and l_duration1_a > 0) OR (l_actual_duration1_a > 0 and l_duration1_a < 0)) THEN --OR added for BUG 4346107 --5726773
4870 							l_temp_percent1 := 0;
4871 						ELSE
4872 							--l_temp_percent1 := ROUND(100*l_actual_duration1_a/l_duration1_a, p_number_digit);
4873 							l_temp_percent1 := 100*l_actual_duration1_a/l_duration1_a;
4874 							if l_temp_percent1 > 100 then   --5726773
4875  	                                                    l_temp_percent1 := 100;
4876  	                                                end if;
4877 						END IF;
4878 						IF(l_duration2_a = 0 OR (l_actual_duration2_a < 0 and l_duration2_a > 0) OR (l_actual_duration2_a > 0 and l_duration2_a < 0)) THEN --OR added for BUG 4346107 --5726773
4879 							l_temp_percent2 := 0;
4880 						ELSE
4881 							--l_temp_percent2 := ROUND(100*l_actual_duration2_a/l_duration2_a, p_number_digit);
4882 							l_temp_percent2 := 100*l_actual_duration2_a/l_duration2_a;
4883 							if l_temp_percent2 > 100 then   --5726773
4884  	                                                            l_temp_percent2 := 100;
4885  	                                                end if;
4886 						END IF;
4887 						IF(l_duration3_a = 0 OR (l_actual_duration3_a < 0 and l_duration3_a > 0) OR (l_actual_duration3_a > 0 and l_duration3_a < 0)) THEN --OR added for BUG 4346107 --5726773
4888 							l_temp_percent3 := 0;
4889 						ELSE
4890 							--l_temp_percent3 := ROUND(100*l_actual_duration3_a/l_duration3_a, p_number_digit);
4891 							l_temp_percent3 := 100*l_actual_duration3_a/l_duration3_a;
4892 							if l_temp_percent3 > 100 then   --5726773
4893  	                                                            l_temp_percent3 := 100;
4894  	                                               end if;
4895 						END IF;
4896 						IF(l_duration4_a = 0 OR (l_actual_duration4_a < 0 and l_duration4_a > 0) OR (l_actual_duration4_a > 0 and l_duration4_a < 0)) THEN --OR added for BUG 4346107 --5726773
4897 							l_temp_percent4 := 0;
4898 						ELSE
4899 							--l_temp_percent4 := ROUND(100*l_actual_duration4_a/l_duration4_a, p_number_digit);
4900 							l_temp_percent4 := 100*l_actual_duration4_a/l_duration4_a;
4901 							if l_temp_percent4 > 100 then   --5726773
4902  	                                                            l_temp_percent4 := 100;
4903  	                                                end if;
4904 						END IF;
4905 						IF(l_duration5_a = 0 OR (l_actual_duration5_a < 0 and l_duration5_a > 0) OR (l_actual_duration5_a > 0 and l_duration5_a < 0)) THEN --OR added for BUG 4346107 --5726773
4906 							l_temp_percent5 := 0;
4907 						ELSE
4908 							--l_temp_percent5 := ROUND(100*l_actual_duration5_a/l_duration5_a, p_number_digit);
4909 							l_temp_percent5 := 100*l_actual_duration5_a/l_duration5_a;
4910 							if l_temp_percent5 > 100 then   --5726773
4911  	                                                            l_temp_percent5 := 100;
4912  	                                                end if;
4913 						END IF;
4914 						IF(l_duration6_a = 0 OR (l_actual_duration6_a < 0 and l_duration6_a > 0) OR (l_actual_duration6_a > 0 and l_duration6_a < 0)) THEN --OR added for BUG 4346107 --5726773
4915 							l_temp_percent6 := 0;
4916 						ELSE
4917 							--l_temp_percent6 := ROUND(100*l_actual_duration6_a/l_duration6_a, p_number_digit);
4918 							l_temp_percent6 := 100*l_actual_duration6_a/l_duration6_a;
4919 							if l_temp_percent6 > 100 then   --5726773
4920  	                                                            l_temp_percent6 := 100;
4921  	                                               end if;
4922 						END IF;
4923 					ELSE
4924 						l_temp_percent1 := 0;
4925 						l_temp_percent2 := 0;
4926 						l_temp_percent3 := 0;
4927 						l_temp_percent4 := 0;
4928 						l_temp_percent5 := 0;
4929 						l_temp_percent6 := 0;
4930 					END IF;
4931 
4932 					BEGIN
4933 						SELECT sum(nvl(percent_override1, nvl(percent_complete1, 0))*nvl(bac_value1, 0)/100)
4934 						, sum(nvl(bac_value1, 0))
4935 						, sum(nvl(percent_override2, nvl(percent_complete2, 0))*nvl(bac_value2, 0)/100)
4936 						, sum(nvl(bac_value2, 0))
4937 						, sum(nvl(percent_override3, nvl(percent_complete3, 0))*nvl(bac_value3, 0)/100)
4938 						, sum(nvl(bac_value3, 0))
4939 						, sum(nvl(percent_override4, nvl(percent_complete4, 0))*nvl(bac_value4, 0)/100)
4940 						, sum(nvl(bac_value4, 0))
4941 						, sum(nvl(percent_override5, nvl(percent_complete5, 0))*nvl(bac_value5, 0)/100)
4942 						, sum(nvl(bac_value5, 0))
4943 						, sum(nvl(percent_override6, nvl(percent_complete6, 0))*nvl(bac_value6, 0)/100)
4944 						, sum(nvl(bac_value6, 0))
4945 						,  count(*)
4946 						INTO   l_actual_duration1_t, l_duration1_t
4947 						, l_actual_duration2_t, l_duration2_t
4948 						, l_actual_duration3_t, l_duration3_t
4949 						, l_actual_duration4_t, l_duration4_t
4950 						, l_actual_duration5_t, l_duration5_t
4951 						, l_actual_duration6_t, l_duration6_t
4952 						, l_count1
4953 						FROM   PA_PROJ_ROLLUP_BULK_TEMP
4954 						WHERE  Process_Number    = l_Process_Number
4955 						AND    OBJECT_TYPE = 'PA_SUBPROJECTS'
4956 						AND    Parent_Object_ID  = l_object_ids_tab(i)
4957 						AND    parent_object_type = 'PA_TASKS'
4958 						;
4959 					EXCEPTION
4960 						WHEN OTHERS THEN
4961 							l_count1 := 0;
4962 					END;
4963 
4964 					IF l_count = 0 and l_count1 = 0 THEN
4965 						l_count := 0;
4966 					ELSE
4967 						l_count := 1;
4968 					END IF;
4969 					-- Bug 4601473 : Added nvl's here
4970 					-- Here l_earned_value_tab is actually storing BAC value in task derivation method
4971 					l_pc_duration1 := nvl(l_earned_value_tab1(i),0);
4972 					l_actual_duration1:= nvl(l_actual_duration1_t,0) + (nvl(l_earned_value_tab1(i),0)-nvl(l_duration1_t,0))*nvl(l_temp_percent1,0)/100;
4973 					l_pc_duration2 := nvl(l_earned_value_tab2(i),0);
4974 					l_actual_duration2:= nvl(l_actual_duration2_t,0) + (nvl(l_earned_value_tab2(i),0)-nvl(l_duration2_t,0))*nvl(l_temp_percent2,0)/100;
4975 					l_pc_duration3 := nvl(l_earned_value_tab3(i),0);
4976 					l_actual_duration3:= nvl(l_actual_duration3_t,0) + (nvl(l_earned_value_tab3(i),0)-nvl(l_duration3_t,0))*nvl(l_temp_percent3,0)/100;
4977 					l_pc_duration4 := nvl(l_earned_value_tab4(i),0);
4978 					l_actual_duration4:= nvl(l_actual_duration4_t,0) + (nvl(l_earned_value_tab4(i),0)-nvl(l_duration4_t,0))*nvl(l_temp_percent4,0)/100;
4979 					l_pc_duration5 := nvl(l_earned_value_tab5(i),0);
4980 					l_actual_duration5:= nvl(l_actual_duration5_t,0) + (nvl(l_earned_value_tab5(i),0)-nvl(l_duration5_t,0))*nvl(l_temp_percent5,0)/100;
4981 					l_pc_duration6 := nvl(l_earned_value_tab6(i),0);
4982 					l_actual_duration6:= nvl(l_actual_duration6_t,0) + (nvl(l_earned_value_tab6(i),0)-nvl(l_duration6_t,0))*nvl(l_temp_percent6,0)/100;
4983 
4984 				ELSE -- 4586449 nvl(l_summ_obj_flag_tab(i),'N') = 'L'
4985 					l_actual_duration1_a := 0;
4986 					l_actual_duration2_a := 0;
4987 					l_actual_duration3_a := 0;
4988 					l_actual_duration4_a := 0;
4989 					l_actual_duration5_a := 0;
4990 					l_actual_duration6_a := 0;
4991 					l_duration1_a := 0;
4992 					l_duration2_a := 0;
4993 					l_duration3_a := 0;
4994 					l_duration4_a := 0;
4995 					l_duration5_a := 0;
4996 					l_duration6_a := 0;
4997 					l_actual_duration1_t := 0;
4998 					l_actual_duration2_t := 0;
4999 					l_actual_duration3_t := 0;
5000 					l_actual_duration4_t := 0;
5001 					l_actual_duration5_t := 0;
5002 					l_actual_duration6_t := 0;
5003 					l_duration1_t := 0;
5004 					l_duration2_t := 0;
5005 					l_duration3_t := 0;
5006 					l_duration4_t := 0;
5007 					l_duration5_t := 0;
5008 					l_duration6_t := 0;
5009 					l_temp_percent1 := 0;
5010 					l_temp_percent2 := 0;
5011 					l_temp_percent3 := 0;
5012 					l_temp_percent4 := 0;
5013 					l_temp_percent5 := 0;
5014 					l_temp_percent6 := 0;
5015 
5016 					BEGIN
5017 						SELECT sum(nvl(earned_value1, 0)), sum(nvl(bac_value1, 0))
5018 						, sum(nvl(earned_value2, 0)), sum(nvl(bac_value2, 0))
5019 						, sum(nvl(earned_value3, 0)), sum(nvl(bac_value3, 0))
5020 						, sum(nvl(earned_value4, 0)), sum(nvl(bac_value4, 0))
5021 						, sum(nvl(earned_value5, 0)), sum(nvl(bac_value5, 0))
5022 						, sum(nvl(earned_value6, 0)), sum(nvl(bac_value6, 0))
5023 						,  count(*)
5024 						INTO   l_actual_duration1_a, l_duration1_a
5025 						, l_actual_duration2_a, l_duration2_a
5026 						, l_actual_duration3_a, l_duration3_a
5027 						, l_actual_duration4_a, l_duration4_a
5028 						, l_actual_duration5_a, l_duration5_a
5029 						, l_actual_duration6_a, l_duration6_a
5030 						, l_count
5031 						FROM   PA_PROJ_ROLLUP_BULK_TEMP
5032 						WHERE  Process_Number = l_Process_Number
5033 						AND    OBJECT_TYPE = 'PA_ASSIGNMENTS'
5034 						AND    Parent_Object_ID  = l_object_ids_tab(i)
5035 						AND    parent_object_type IN ('PA_STRUCTURES','PA_TASKS') -- Bug 4450587
5036 						;
5037 
5038 					EXCEPTION
5039 						WHEN OTHERS THEN
5040 							l_count := 0;
5041 					END;
5042 					-- 4579654 : For more accuracy, we will not round the temp % complete here.
5043 					IF (l_count > 0) THEN
5044 						IF(l_duration1_a = 0 OR (l_actual_duration1_a < 0 and l_duration1_a > 0) OR (l_actual_duration1_a > 0 and l_duration1_a < 0)) THEN --OR added for BUG 4346107 --5726773
5045 							l_temp_percent1 := 0;
5046 						ELSE
5047 							--l_temp_percent1 := ROUND(100*l_actual_duration1_a/l_duration1_a, p_number_digit);
5048 							l_temp_percent1 := 100*l_actual_duration1_a/l_duration1_a;
5049 							if l_temp_percent1 > 100 then   --5726773
5050  	                                                            l_temp_percent1 := 100;
5051  	                                                end if;
5052 						END IF;
5053 						IF(l_duration2_a = 0 OR (l_actual_duration2_a < 0 and l_duration2_a > 0) OR (l_actual_duration2_a > 0 and l_duration2_a < 0)) THEN --OR added for BUG 4346107 --5726773
5054 							l_temp_percent2 := 0;
5055 						ELSE
5056 							--l_temp_percent2 := ROUND(100*l_actual_duration2_a/l_duration2_a, p_number_digit);
5057 							l_temp_percent2 := 100*l_actual_duration2_a/l_duration2_a;
5058 							if l_temp_percent2 > 100 then   --5726773
5059  	                                                            l_temp_percent2 := 100;
5060  	                                                end if;
5061 						END IF;
5062 						IF(l_duration3_a = 0 OR (l_actual_duration3_a < 0 and l_duration3_a > 0) OR (l_actual_duration3_a > 0 and l_duration3_a < 0)) THEN --OR added for BUG 4346107 --5726773
5063 							l_temp_percent3 := 0;
5064 						ELSE
5065 							--l_temp_percent3 := ROUND(100*l_actual_duration3_a/l_duration3_a, p_number_digit);
5066 							l_temp_percent3 := 100*l_actual_duration3_a/l_duration3_a;
5067 							if l_temp_percent3 > 100 then   --5726773
5068  	                                                            l_temp_percent3 := 100;
5069  	                                               end if;
5070 						END IF;
5071 						IF(l_duration4_a = 0 OR (l_actual_duration4_a < 0 and l_duration4_a > 0) OR (l_actual_duration4_a > 0 and l_duration4_a < 0)) THEN --OR added for BUG 4346107 --5726773
5072 							l_temp_percent4 := 0;
5073 						ELSE
5074 							--l_temp_percent4 := ROUND(100*l_actual_duration4_a/l_duration4_a, p_number_digit);
5075 							l_temp_percent4 := 100*l_actual_duration4_a/l_duration4_a;
5076 							if l_temp_percent4 > 100 then   --5726773
5077  	                                                            l_temp_percent4 := 100;
5078  	                                                end if;
5079 						END IF;
5080 						IF(l_duration5_a = 0 OR (l_actual_duration5_a < 0 and l_duration5_a > 0) OR (l_actual_duration5_a > 0 and l_duration5_a < 0)) THEN --OR added for BUG 4346107 --5726773
5081 							l_temp_percent5 := 0;
5082 						ELSE
5083 							--l_temp_percent5 := ROUND(100*l_actual_duration5_a/l_duration5_a, p_number_digit);
5084 							l_temp_percent5 := 100*l_actual_duration5_a/l_duration5_a;
5085 							if l_temp_percent5 > 100 then   --5726773
5086  	                                                            l_temp_percent5 := 100;
5087  	                                               end if;
5088 						END IF;
5089 						IF(l_duration6_a = 0 OR (l_actual_duration6_a < 0 and l_duration6_a > 0) OR (l_actual_duration6_a > 0 and l_duration6_a < 0)) THEN --OR added for BUG 4346107 --5726773
5090 							l_temp_percent6 := 0;
5091 						ELSE
5092 							--l_temp_percent6 := ROUND(100*l_actual_duration6_a/l_duration6_a, p_number_digit);
5093 							l_temp_percent6 := 100*l_actual_duration6_a/l_duration6_a;
5094 							if l_temp_percent6 > 100 then   --5726773
5095  	                                                            l_temp_percent6 := 100;
5096  	                                                end if;
5097 						END IF;
5098 					ELSE
5099 						l_temp_percent1 := 0;
5100 						l_temp_percent2 := 0;
5101 						l_temp_percent3 := 0;
5102 						l_temp_percent4 := 0;
5103 						l_temp_percent5 := 0;
5104 						l_temp_percent6 := 0;
5105 					END IF;
5106 
5107 					BEGIN
5108 						SELECT sum(nvl(percent_override1, nvl(percent_complete1, 0))*nvl(bac_value1, 0)/100)
5109 						, sum(nvl(bac_value1, 0))
5110 						, sum(nvl(percent_override2, nvl(percent_complete2, 0))*nvl(bac_value2, 0)/100)
5111 						, sum(nvl(bac_value2, 0))
5112 						, sum(nvl(percent_override3, nvl(percent_complete3, 0))*nvl(bac_value3, 0)/100)
5113 						, sum(nvl(bac_value3, 0))
5114 						, sum(nvl(percent_override4, nvl(percent_complete4, 0))*nvl(bac_value4, 0)/100)
5115 						, sum(nvl(bac_value4, 0))
5116 						, sum(nvl(percent_override5, nvl(percent_complete5, 0))*nvl(bac_value5, 0)/100)
5117 						, sum(nvl(bac_value5, 0))
5118 						, sum(nvl(percent_override6, nvl(percent_complete6, 0))*nvl(bac_value6, 0)/100)
5119 						, sum(nvl(bac_value6, 0))
5120 						,  count(*) -- Bug 4343615
5121 						INTO   l_actual_duration1_t, l_duration1_t
5122 						, l_actual_duration2_t, l_duration2_t
5123 						, l_actual_duration3_t, l_duration3_t
5124 						, l_actual_duration4_t, l_duration4_t
5125 						, l_actual_duration5_t, l_duration5_t
5126 						, l_actual_duration6_t, l_duration6_t
5127 						, l_count1 -- Bug 4343615
5128 						FROM   PA_PROJ_ROLLUP_BULK_TEMP
5129 						WHERE  Process_Number    = l_Process_Number
5130 						--AND    OBJECT_TYPE = 'PA_TASKS' --4582956
5131 						AND    OBJECT_TYPE IN ('PA_TASKS','PA_SUBPROJECTS') --4582956 : Added PA_SUBPROJECTS
5132 						AND    Parent_Object_ID  = l_object_ids_tab(i)
5133 						AND    parent_object_type IN ('PA_STRUCTURES','PA_TASKS') -- Bug 4450587
5134 						;
5135 						--AND     rollup_node = 'Y';
5136 
5137 					EXCEPTION
5138 						WHEN OTHERS THEN
5139 							l_count1 := 0; -- Bug 4343615
5140 					END;
5141 
5142 					-- Bug 4343615 : Added following IF
5143 					IF l_count = 0 and l_count1 = 0 THEN
5144 						l_count := 0;
5145 					ELSE
5146 						l_count := 1;
5147 					END IF;
5148 					-- Bug 4601473 : Added nvl's here
5149 					l_pc_duration1 := nvl(l_BAC_VALUE_tab1(i),0);
5150 					l_actual_duration1:= nvl(l_actual_duration1_t,0) + (nvl(l_BAC_VALUE_tab1(i),0)-nvl(l_duration1_t,0))*nvl(l_temp_percent1,0)/100;
5151 					l_pc_duration2 := nvl(l_BAC_VALUE_tab2(i),0);
5152 					l_actual_duration2:= nvl(l_actual_duration2_t,0) + (nvl(l_BAC_VALUE_tab2(i),0)-nvl(l_duration2_t,0))*nvl(l_temp_percent2,0)/100;
5153 					l_pc_duration3 := nvl(l_BAC_VALUE_tab3(i),0);
5154 					l_actual_duration3:= nvl(l_actual_duration3_t,0) + (nvl(l_BAC_VALUE_tab3(i),0)-nvl(l_duration3_t,0))*nvl(l_temp_percent3,0)/100;
5155 					l_pc_duration4 := nvl(l_BAC_VALUE_tab4(i),0);
5156 					l_actual_duration4:= nvl(l_actual_duration4_t,0) + (nvl(l_BAC_VALUE_tab4(i),0)-nvl(l_duration4_t,0))*nvl(l_temp_percent4,0)/100;
5157 					l_pc_duration5 := nvl(l_BAC_VALUE_tab5(i),0);
5158 					l_actual_duration5:= nvl(l_actual_duration5_t,0) + (nvl(l_BAC_VALUE_tab5(i),0)-nvl(l_duration5_t,0))*nvl(l_temp_percent5,0)/100;
5159 					l_pc_duration6 := nvl(l_BAC_VALUE_tab6(i),0);
5160 					l_actual_duration6:= nvl(l_actual_duration6_t,0) + (nvl(l_BAC_VALUE_tab6(i),0)-nvl(l_duration6_t,0))*nvl(l_temp_percent6,0)/100;
5161 
5162 				END IF; -- 4586449 nvl(l_summ_obj_flag_tab(i),'N') = 'L'
5163 
5164 			ELSIF P_Rollup_Method IN ('MANUAL','DURATION') THEN
5165 				BEGIN
5166 					--  l_actual_duration is devided by 100, added by rtarway for bug 4216030
5167                          SELECT sum(nvl(percent_override1, nvl(percent_complete1, 0))*nvl(task_weight1, 0))/100
5168 					, sum(nvl(task_weight1, 0))
5169 					, sum(nvl(percent_override2, nvl(percent_complete2, 0))*nvl(task_weight2, 0))/100
5170 					, sum(nvl(task_weight2, 0))
5171 					, sum(nvl(percent_override3, nvl(percent_complete3, 0))*nvl(task_weight3, 0))/100
5172 					, sum(nvl(task_weight3, 0))
5173 					, sum(nvl(percent_override4, nvl(percent_complete4, 0))*nvl(task_weight4, 0))/100
5174 					, sum(nvl(task_weight4, 0))
5175 					, sum(nvl(percent_override5, nvl(percent_complete5, 0))*nvl(task_weight5, 0))/100
5176 					, sum(nvl(task_weight5, 0))
5177 					, sum(nvl(percent_override6, nvl(percent_complete6, 0))*nvl(task_weight6, 0))/100
5178 					, sum(nvl(task_weight6, 0))
5179 					,  count(*)
5180 					INTO   l_actual_duration1, l_pc_duration1
5181 					, l_actual_duration2, l_pc_duration2
5182 					, l_actual_duration3, l_pc_duration3
5183 					, l_actual_duration4, l_pc_duration4
5184 					, l_actual_duration5, l_pc_duration5
5185 					, l_actual_duration6, l_pc_duration6
5186 					, l_count
5187 					FROM   PA_PROJ_ROLLUP_BULK_TEMP
5188 					WHERE  Process_Number    = l_Process_Number
5189 					AND    OBJECT_TYPE = 'PA_TASKS'
5190 					AND    Parent_Object_ID  = l_object_ids_tab(i)
5191 					AND    parent_object_type IN ('PA_STRUCTURES','PA_TASKS') -- Bug 4450587
5192 					;
5193 					--AND Rollup_Node  = 'Y';
5194 				EXCEPTION
5195 					WHEN OTHERS THEN
5196 						l_count := 0;
5197 				END;
5198 			END IF;	-- (l_perc_comp_deriv_code_tab(i) = 'DELIVERABLE') THEN
5199 
5200 			-- Bug 4343615 : Added following IF
5201 			IF (l_count > 0) THEN
5202 				-- 4579654 : For more accuracy, we will first derive the earned value and then
5203 				-- round the % complete.
5204 				IF p_process_flag1 = 'Y' and p_process_percent_flag1 = 'Y' THEN
5205 					l_update_required := 'Y';
5206 					IF(l_pc_duration1 = 0 OR (l_actual_duration1 < 0 and l_pc_duration1 > 0) OR (l_actual_duration1 > 0 and l_pc_duration1 < 0)) THEN --OR added for BUG 4346107 --5726773
5207 						l_percent_complete_tab1(i) := 0;
5208 					ELSE
5209 						--l_percent_complete_tab1(i) := round(100*l_actual_duration1/l_pc_duration1, p_number_digit);
5210 						l_percent_complete_tab1(i) := 100*l_actual_duration1/l_pc_duration1;
5211 						if l_percent_complete_tab1(i) > 100 then   --5726773
5212  	                                                       l_percent_complete_tab1(i)  := 100;
5213  	                                        end if;
5214 					END IF;
5215 					l_earned_value_tab1(i) := nvl(l_bac_value_tab1(i), 0)*nvl(l_percent_override_tab1(i), l_percent_complete_tab1(i))/100;
5216 					l_percent_complete_tab1(i) := round(l_percent_complete_tab1(i), p_number_digit);
5217 				END IF;
5218 				IF p_process_flag2 = 'Y' and p_process_percent_flag2 = 'Y' THEN
5219 					l_update_required := 'Y';
5220 					IF(l_pc_duration2 = 0 OR (l_actual_duration2 < 0 and l_pc_duration2 > 0) OR (l_actual_duration2 > 0 and l_pc_duration2 < 0)) THEN --OR added for BUG 4346107 --5726773
5221 						l_percent_complete_tab2(i) := 0;
5222 					ELSE
5223 						--l_percent_complete_tab2(i) := round(100*l_actual_duration2/l_pc_duration2, p_number_digit);
5224 						l_percent_complete_tab2(i) := 100*l_actual_duration2/l_pc_duration2;
5225 						if l_percent_complete_tab2(i) > 100 then   --5726773
5226  	                                                       l_percent_complete_tab2(i)  := 100;
5227  	                                        end if;
5228 					END IF;
5229 					l_earned_value_tab2(i) := nvl(l_bac_value_tab2(i), 0)*nvl(l_percent_override_tab2(i), l_percent_complete_tab2(i))/100;
5230 					l_percent_complete_tab2(i) := round(l_percent_complete_tab2(i), p_number_digit);
5231 				END IF;
5232 				IF p_process_flag3 = 'Y' and p_process_percent_flag3 = 'Y' THEN
5233 					l_update_required := 'Y';
5234 					IF(l_pc_duration3 = 0 OR (l_actual_duration3 < 0 and l_pc_duration3 > 0) OR (l_actual_duration3 > 0 and l_pc_duration3 < 0)) THEN --OR added for BUG 4346107 --5726773
5235 						l_percent_complete_tab3(i) := 0;
5236 					ELSE
5237 						--l_percent_complete_tab3(i) := round(100*l_actual_duration3/l_pc_duration3, p_number_digit);
5238 						l_percent_complete_tab3(i) := 100*l_actual_duration3/l_pc_duration3;
5239 						if l_percent_complete_tab3(i) > 100 then   --5726773
5240  	                                                       l_percent_complete_tab3(i)  := 100;
5241  	                                       end if;
5242 					END IF;
5243 					l_earned_value_tab3(i) := nvl(l_bac_value_tab3(i), 0)*nvl(l_percent_override_tab3(i), l_percent_complete_tab3(i))/100;
5244 					l_percent_complete_tab3(i) := round(l_percent_complete_tab3(i), p_number_digit);
5245 				END IF;
5246 				IF p_process_flag4 = 'Y' and p_process_percent_flag4 = 'Y' THEN
5247 					l_update_required := 'Y';
5248 					IF(l_pc_duration4 = 0 OR (l_actual_duration4 < 0 and l_pc_duration4 > 0) OR (l_actual_duration4 > 0 and l_pc_duration4 < 0)) THEN --OR added for BUG 4346107 --5726773
5249 						l_percent_complete_tab4(i) := 0;
5250 					ELSE
5251 						--l_percent_complete_tab4(i) := round(100*l_actual_duration4/l_pc_duration4, p_number_digit);
5252 						l_percent_complete_tab4(i) := 100*l_actual_duration4/l_pc_duration4;
5253 						if l_percent_complete_tab4(i) > 100 then   --5726773
5254  	                                                       l_percent_complete_tab4(i)  := 100;
5255  	                                        end if;
5256 					END IF;
5257 					l_earned_value_tab4(i) := nvl(l_bac_value_tab4(i), 0)*nvl(l_percent_override_tab4(i), l_percent_complete_tab4(i))/100;
5258 					l_percent_complete_tab4(i) := round(l_percent_complete_tab4(i), p_number_digit);
5259 				END IF;
5260 				IF p_process_flag5 = 'Y' and p_process_percent_flag5 = 'Y' THEN
5261 					l_update_required := 'Y';
5262 					IF(l_pc_duration5 = 0 OR (l_actual_duration5 < 0 and l_pc_duration5 > 0) OR (l_actual_duration5 > 0 and l_pc_duration5 < 0)) THEN --OR added for BUG 4346107 --5726773
5263 						l_percent_complete_tab5(i) := 0;
5264 					ELSE
5265 						--l_percent_complete_tab5(i) := round(100*l_actual_duration5/l_pc_duration5, p_number_digit);
5266 						l_percent_complete_tab5(i) := 100*l_actual_duration5/l_pc_duration5;
5267 						if l_percent_complete_tab5(i) > 100 then   --5726773
5268  	                                                       l_percent_complete_tab5(i)  := 100;
5269  	                                        end if;
5270 					END IF;
5271 					l_earned_value_tab5(i) := nvl(l_bac_value_tab5(i), 0)*nvl(l_percent_override_tab5(i), l_percent_complete_tab5(i))/100;
5272 					l_percent_complete_tab5(i) := round(l_percent_complete_tab5(i), p_number_digit);
5273 				END IF;
5274 				IF p_process_flag6 = 'Y' and p_process_percent_flag6 = 'Y' THEN
5275 					l_update_required := 'Y';
5276 					IF(l_pc_duration6 = 0 OR (l_actual_duration6 < 0 and l_pc_duration6 > 0) OR (l_actual_duration6 > 0 and l_pc_duration6 < 0)) THEN --OR added for BUG 4346107 --5726773
5277 						l_percent_complete_tab6(i) := 0;
5278 					ELSE
5279 						--l_percent_complete_tab6(i) := round(100*l_actual_duration6/l_pc_duration6, p_number_digit);
5280 						l_percent_complete_tab6(i) := 100*l_actual_duration6/l_pc_duration6;
5281 						if l_percent_complete_tab6(i) > 100 then   --5726773
5282  	                                                       l_percent_complete_tab6(i)  := 100;
5283  	                                        end if;
5284 					END IF;
5285 					l_earned_value_tab6(i) := nvl(l_bac_value_tab6(i), 0)*nvl(l_percent_override_tab6(i), l_percent_complete_tab6(i))/100;
5286 					l_percent_complete_tab6(i) := round(l_percent_complete_tab6(i), p_number_digit);
5287 				END IF;
5288 			ELSE -- l_count > 0 -- Bug 4343615 : Added following ELSE and code in ELSE part
5289 				IF p_process_flag1 = 'Y' and p_process_percent_flag1 = 'Y' THEN
5290 					l_update_required := 'Y';
5291 					l_earned_value_tab1(i) := nvl(l_bac_value_tab1(i), 0)*nvl(l_percent_override_tab1(i), l_percent_complete_tab1(i))/100;
5292 				END IF;
5293 				IF p_process_flag2 = 'Y' and p_process_percent_flag2 = 'Y' THEN
5294 					l_update_required := 'Y';
5295 					l_earned_value_tab2(i) := nvl(l_bac_value_tab2(i), 0)*nvl(l_percent_override_tab2(i), l_percent_complete_tab2(i))/100;
5296 				END IF;
5297 				IF p_process_flag3 = 'Y' and p_process_percent_flag3 = 'Y' THEN
5298 					l_update_required := 'Y';
5299 					l_earned_value_tab3(i) := nvl(l_bac_value_tab3(i), 0)*nvl(l_percent_override_tab3(i), l_percent_complete_tab3(i))/100;
5300 				END IF;
5301 				IF p_process_flag4 = 'Y' and p_process_percent_flag4 = 'Y' THEN
5302 					l_update_required := 'Y';
5303 					l_earned_value_tab4(i) := nvl(l_bac_value_tab4(i), 0)*nvl(l_percent_override_tab4(i), l_percent_complete_tab4(i))/100;
5304 				END IF;
5305 				IF p_process_flag5 = 'Y' and p_process_percent_flag5 = 'Y' THEN
5306 					l_update_required := 'Y';
5307 					l_earned_value_tab5(i) := nvl(l_bac_value_tab5(i), 0)*nvl(l_percent_override_tab5(i), l_percent_complete_tab5(i))/100;
5308 				END IF;
5309 				IF p_process_flag6 = 'Y' and p_process_percent_flag6 = 'Y' THEN
5310 					l_update_required := 'Y';
5311 					l_earned_value_tab6(i) := nvl(l_bac_value_tab6(i), 0)*nvl(l_percent_override_tab6(i), l_percent_complete_tab6(i))/100;
5312 				END IF;
5313 			END IF; -- l_count > 0
5314 
5315 			IF l_update_required = 'Y' THEN
5316 	      /* Added the hint to force the unique index for bug#6185523 */
5317 				UPDATE  /*+ INDEX( T1 PA_PROJ_ROLLUP_BULK_TEMP_U1) */ PA_PROJ_ROLLUP_BULK_TEMP T1
5318 				SET    T1.PERCENT_COMPLETE1=l_PERCENT_COMPLETE_tab1(i)
5319 					, T1.PERCENT_COMPLETE2=l_PERCENT_COMPLETE_tab2(i)
5320 					, T1.PERCENT_COMPLETE3=l_PERCENT_COMPLETE_tab3(i)
5321 					, T1.PERCENT_COMPLETE4=l_PERCENT_COMPLETE_tab4(i)
5322 					, T1.PERCENT_COMPLETE5=l_PERCENT_COMPLETE_tab5(i)
5323 					, T1.PERCENT_COMPLETE6=l_PERCENT_COMPLETE_tab6(i)
5324 					, T1.EARNED_VALUE1=l_EARNED_VALUE_tab1(i)
5325 					, T1.EARNED_VALUE2=l_EARNED_VALUE_tab2(i)
5326 					, T1.EARNED_VALUE3=l_EARNED_VALUE_tab3(i)
5327 					, T1.EARNED_VALUE4=l_EARNED_VALUE_tab4(i)
5328 					, T1.EARNED_VALUE5=l_EARNED_VALUE_tab5(i)
5329 					, T1.EARNED_VALUE6=l_EARNED_VALUE_tab6(i)
5330 				WHERE T1.Process_Number = l_Process_Number
5331 				AND T1.object_id = l_object_ids_tab(i)
5332 				AND T1.object_type = l_object_types_tab(i)
5333 				;
5334 			END IF;
5335 		END LOOP; -- i IN 1..l_object_ids_tab.count LOOP
5336 		-- Note that Bulk Update is not implemnted due to reason mentioned in Dates Rollup section
5337 		/* Please do not remove
5338 		IF l_update_required = 'Y' THEN
5339 			FORALL i in 1..l_object_ids_tab.count
5340 			     UPDATE PA_PROJ_ROLLUP_BULK_TEMP T1
5341 				SET    T1.PERCENT_COMPLETE1=l_PERCENT_COMPLETE_tab1(i)
5342 				, T1.PERCENT_COMPLETE2=l_PERCENT_COMPLETE_tab2(i)
5343 				, T1.PERCENT_COMPLETE3=l_PERCENT_COMPLETE_tab3(i)
5344 				, T1.PERCENT_COMPLETE4=l_PERCENT_COMPLETE_tab4(i)
5345 				, T1.PERCENT_COMPLETE5=l_PERCENT_COMPLETE_tab5(i)
5346 				, T1.PERCENT_COMPLETE6=l_PERCENT_COMPLETE_tab6(i)
5347 				, T1.EARNED_VALUE1=l_EARNED_VALUE_tab1(i)
5348 				, T1.EARNED_VALUE2=l_EARNED_VALUE_tab2(i)
5349 				, T1.EARNED_VALUE3=l_EARNED_VALUE_tab3(i)
5350 				, T1.EARNED_VALUE4=l_EARNED_VALUE_tab4(i)
5351 				, T1.EARNED_VALUE5=l_EARNED_VALUE_tab5(i)
5352 				, T1.EARNED_VALUE6=l_EARNED_VALUE_tab6(i)
5353 			       WHERE T1.Process_Number = l_Process_Number
5354 				 AND T1.object_id = l_object_ids_tab(i)
5355 				 AND T1.object_type = l_object_types_tab(i)
5356 				;
5357 		END IF; -- l_update_required = 'Y' THEN
5358 		*/
5359 	END IF; -- ((p_process_flag1 = 'Y' OR p_process_flag2 = 'Y' OR p_process_flag3 = 'Y' OR p_process_flag4 = 'Y'
5360 
5361 	IF g1_debug_mode  = 'Y' THEN
5362                 pa_debug.write(x_Module=>'PA_SCHEDULE_OBJECTS_PVT.GENERATE_SCHEDULE', x_Msg => 'After % Complete processing', x_Log_Level=> 3);
5363         END IF;
5364 
5365 	-- ********* PERCENT COMPLETE  PROCESSING END ******************
5366 
5367 	 -- ********* ETC COST ROLLUP BEGIN ****************
5368 	IF g1_debug_mode  = 'Y' THEN
5369                 pa_debug.write(x_Module=>'PA_SCHEDULE_OBJECTS_PVT.GENERATE_SCHEDULE', x_Msg => 'Before ETC Cost processing', x_Log_Level=> 3);
5370         END IF;
5371 
5372 
5373 	-- Bug 4218507 : To do effort or ETC processing, atleast one of the flags p_process_ETC_Flag1 or p_process_effort_flag1
5374 	-- should be passed as Y
5375 	IF ((p_process_flag1 = 'Y' OR p_process_flag2 = 'Y' OR p_process_flag3 = 'Y' OR p_process_flag4 = 'Y'
5376 	        OR p_process_flag5 = 'Y' OR p_process_flag6 = 'Y')
5377 	     AND((p_process_ETC_Flag1 = 'Y' OR p_process_ETC_Flag2 = 'Y' OR p_process_ETC_Flag3 = 'Y'
5378 		 OR p_process_ETC_Flag4 = 'Y' OR p_process_ETC_Flag5 = 'Y' OR p_process_ETC_Flag6 = 'Y')
5379 		 OR (p_process_effort_flag1 = 'Y' OR p_process_effort_flag2 = 'Y' OR p_process_effort_flag3 = 'Y'
5380 		OR p_process_effort_flag4 = 'Y' OR p_process_effort_flag5 = 'Y' OR p_process_effort_flag6 = 'Y')
5381 		 ))
5382 	THEN
5383 		l_object_ids_tab.delete;
5384 		l_object_types_tab.delete;
5385 		l_update_required := 'N';
5386 		-- Bug 4218507 : Merged Effort Processing with ETC Cost processing
5387                 l_sum_tab1.delete;
5388                 l_sum_tab2.delete;
5389                 l_sum_tab3.delete;
5390                 l_sum_tab4.delete;
5391                 l_sum_tab5.delete;
5392                 l_sum_tab6.delete;
5393 
5394 
5395 		OPEN Parent_Objects_List_ETC_COST;
5396 		FETCH Parent_Objects_List_ETC_COST
5397 		BULK COLLECT INTO l_object_ids_tab, l_object_types_tab
5398 		, l_ETC_Cost_tab1, l_ETC_Cost_tab2, l_ETC_Cost_tab3, l_ETC_Cost_tab4, l_ETC_Cost_tab5, l_ETC_Cost_tab6
5399 		, l_PPL_ETC_COST_tab1, l_PPL_ETC_COST_tab2, l_PPL_ETC_COST_tab3, l_PPL_ETC_COST_tab4, l_PPL_ETC_COST_tab5, l_PPL_ETC_COST_tab6
5400 		, l_EQPMT_ETC_COST_tab1, l_EQPMT_ETC_COST_tab2, l_EQPMT_ETC_COST_tab3, l_EQPMT_ETC_COST_tab4, l_EQPMT_ETC_COST_tab5, l_EQPMT_ETC_COST_tab6
5401 		, l_PPL_UNPLAND_EFFORT_tab1, l_PPL_UNPLAND_EFFORT_tab2, l_PPL_UNPLAND_EFFORT_tab3, l_PPL_UNPLAND_EFFORT_tab4, l_PPL_UNPLAND_EFFORT_tab5, l_PPL_UNPLAND_EFFORT_tab6
5402 		, l_EQPMT_ETC_EFFORT_tab1, l_EQPMT_ETC_EFFORT_tab2, l_EQPMT_ETC_EFFORT_tab3, l_EQPMT_ETC_EFFORT_tab4, l_EQPMT_ETC_EFFORT_tab5, l_EQPMT_ETC_EFFORT_tab6
5403 		, l_SUB_PRJ_ETC_COST_tab1, l_SUB_PRJ_ETC_COST_tab2, l_SUB_PRJ_ETC_COST_tab3, l_SUB_PRJ_ETC_COST_tab4, l_SUB_PRJ_ETC_COST_tab5, l_SUB_PRJ_ETC_COST_tab6
5404 		, l_SUB_PRJ_PPL_ETC_COST_tab1, l_SUB_PRJ_PPL_ETC_COST_tab2, l_SUB_PRJ_PPL_ETC_COST_tab3, l_SUB_PRJ_PPL_ETC_COST_tab4, l_SUB_PRJ_PPL_ETC_COST_tab5, l_SUB_PRJ_PPL_ETC_COST_tab6
5405 		, l_SUB_PRJ_EQPMT_ETC_COST_tab1, l_SUB_PRJ_EQPMT_ETC_COST_tab2, l_SUB_PRJ_EQPMT_ETC_COST_tab3, l_SUB_PRJ_EQPMT_ETC_COST_tab4, l_SUB_PRJ_EQPMT_ETC_COST_tab5, l_SUB_PRJ_EQPMT_ETC_COST_tab6
5406 		, l_SUB_PRJ_PPL_ETC_EFFORT_tab1, l_SUB_PRJ_PPL_ETC_EFFORT_tab2, l_SUB_PRJ_PPL_ETC_EFFORT_tab3, l_SUB_PRJ_PPL_ETC_EFFORT_tab4, l_SUB_PRJ_PPL_ETC_EFFORT_tab5, l_SUB_PRJ_PPL_ETC_EFFORT_tab6
5407 		, L_SP_EQPMT_ETC_EFFORT_TAB1, L_SP_EQPMT_ETC_EFFORT_TAB2, L_SP_EQPMT_ETC_EFFORT_TAB3, L_SP_EQPMT_ETC_EFFORT_TAB4, L_SP_EQPMT_ETC_EFFORT_TAB5, L_SP_EQPMT_ETC_EFFORT_TAB6
5408 		, l_sum_tab1, l_sum_tab2, l_sum_tab3, l_sum_tab4, l_sum_tab5, l_sum_tab6;
5409 		CLOSE Parent_Objects_List_ETC_COST;
5410 
5411 		FOR i IN 1..l_object_ids_tab.count LOOP
5412 			l_Count := 0;
5413 			l_update_required := 'N';
5414 			BEGIN
5415 
5416 				IF l_partial_rollup1 OR l_partial_rollup2 OR l_partial_rollup3
5417 				   OR l_partial_rollup4 OR l_partial_rollup5 OR l_partial_rollup6
5418 				THEN
5419 					SELECT Sum(decode(rollup_node1, 'Y', NVL(ETC_Cost1,0),0)),
5420 					     Sum(decode(rollup_node2, 'Y', NVL(ETC_Cost2,0),0)),
5421 					     Sum(decode(rollup_node3, 'Y', NVL(ETC_Cost3,0),0)),
5422 					     Sum(decode(rollup_node4, 'Y', NVL(ETC_Cost4,0),0)),
5423 					     Sum(decode(rollup_node5, 'Y', NVL(ETC_Cost5,0),0)),
5424 					     Sum(decode(rollup_node6, 'Y', NVL(ETC_Cost6,0),0)),
5425 					     Sum(decode(rollup_node1, 'Y', NVL(PPL_ETC_COST1,0),0)),
5426 					     Sum(decode(rollup_node2, 'Y', NVL(PPL_ETC_COST2,0),0)),
5427 					     Sum(decode(rollup_node3, 'Y', NVL(PPL_ETC_COST3,0),0)),
5428 					     Sum(decode(rollup_node4, 'Y', NVL(PPL_ETC_COST4,0),0)),
5429 					     Sum(decode(rollup_node5, 'Y', NVL(PPL_ETC_COST5,0),0)),
5430 					     Sum(decode(rollup_node6, 'Y', NVL(PPL_ETC_COST6,0),0)),
5431 					     Sum(decode(rollup_node1, 'Y', NVL(EQPMT_ETC_COST1,0),0)),
5432 					     Sum(decode(rollup_node2, 'Y', NVL(EQPMT_ETC_COST2,0),0)),
5433 					     Sum(decode(rollup_node3, 'Y', NVL(EQPMT_ETC_COST3,0),0)),
5434 					     Sum(decode(rollup_node4, 'Y', NVL(EQPMT_ETC_COST4,0),0)),
5435 					     Sum(decode(rollup_node5, 'Y', NVL(EQPMT_ETC_COST5,0),0)),
5436 					     Sum(decode(rollup_node6, 'Y', NVL(EQPMT_ETC_COST6,0),0)),
5437 					     Sum(decode(rollup_node1, 'Y', NVL(PPL_UNPLAND_EFFORT1,0),0)),
5438 					     Sum(decode(rollup_node2, 'Y', NVL(PPL_UNPLAND_EFFORT2,0),0)),
5439 					     Sum(decode(rollup_node3, 'Y', NVL(PPL_UNPLAND_EFFORT3,0),0)),
5440 					     Sum(decode(rollup_node4, 'Y', NVL(PPL_UNPLAND_EFFORT4,0),0)),
5441 					     Sum(decode(rollup_node5, 'Y', NVL(PPL_UNPLAND_EFFORT5,0),0)),
5442 					     Sum(decode(rollup_node6, 'Y', NVL(PPL_UNPLAND_EFFORT6,0),0)),
5443 					     Sum(decode(rollup_node1, 'Y', NVL(EQPMT_ETC_EFFORT1,0),0)),
5444 					     Sum(decode(rollup_node2, 'Y', NVL(EQPMT_ETC_EFFORT2,0),0)),
5445 					     Sum(decode(rollup_node3, 'Y', NVL(EQPMT_ETC_EFFORT3,0),0)),
5446 					     Sum(decode(rollup_node4, 'Y', NVL(EQPMT_ETC_EFFORT4,0),0)),
5447 					     Sum(decode(rollup_node5, 'Y', NVL(EQPMT_ETC_EFFORT5,0),0)),
5448 					     Sum(decode(rollup_node6, 'Y', NVL(EQPMT_ETC_EFFORT6,0),0)),
5449 					     Sum(decode(rollup_node1, 'Y', NVL(SUB_PRJ_ETC_COST1,0),0)),
5450 					     Sum(decode(rollup_node2, 'Y', NVL(SUB_PRJ_ETC_COST2,0),0)),
5451 					     Sum(decode(rollup_node3, 'Y', NVL(SUB_PRJ_ETC_COST3,0),0)),
5452 					     Sum(decode(rollup_node4, 'Y', NVL(SUB_PRJ_ETC_COST4,0),0)),
5453 					     Sum(decode(rollup_node5, 'Y', NVL(SUB_PRJ_ETC_COST5,0),0)),
5454 					     Sum(decode(rollup_node6, 'Y', NVL(SUB_PRJ_ETC_COST6,0),0)),
5455 					     Sum(decode(rollup_node1, 'Y', NVL(SUB_PRJ_PPL_ETC_COST1,0),0)),
5456 					     Sum(decode(rollup_node2, 'Y', NVL(SUB_PRJ_PPL_ETC_COST2,0),0)),
5457 					     Sum(decode(rollup_node3, 'Y', NVL(SUB_PRJ_PPL_ETC_COST3,0),0)),
5458 					     Sum(decode(rollup_node4, 'Y', NVL(SUB_PRJ_PPL_ETC_COST4,0),0)),
5459 					     Sum(decode(rollup_node5, 'Y', NVL(SUB_PRJ_PPL_ETC_COST5,0),0)),
5460 					     Sum(decode(rollup_node6, 'Y', NVL(SUB_PRJ_PPL_ETC_COST6,0),0)),
5461 					     Sum(decode(rollup_node1, 'Y', NVL(SUB_PRJ_EQPMT_ETC_COST1,0),0)),
5462 					     Sum(decode(rollup_node2, 'Y', NVL(SUB_PRJ_EQPMT_ETC_COST2,0),0)),
5463 					     Sum(decode(rollup_node3, 'Y', NVL(SUB_PRJ_EQPMT_ETC_COST3,0),0)),
5464 					     Sum(decode(rollup_node4, 'Y', NVL(SUB_PRJ_EQPMT_ETC_COST4,0),0)),
5465 					     Sum(decode(rollup_node5, 'Y', NVL(SUB_PRJ_EQPMT_ETC_COST5,0),0)),
5466 					     Sum(decode(rollup_node6, 'Y', NVL(SUB_PRJ_EQPMT_ETC_COST6,0),0)),
5467 					     Sum(decode(rollup_node1, 'Y', NVL(SUB_PRJ_PPL_ETC_EFFORT1,0),0)),
5468 					     Sum(decode(rollup_node2, 'Y', NVL(SUB_PRJ_PPL_ETC_EFFORT2,0),0)),
5469 					     Sum(decode(rollup_node3, 'Y', NVL(SUB_PRJ_PPL_ETC_EFFORT3,0),0)),
5470 					     Sum(decode(rollup_node4, 'Y', NVL(SUB_PRJ_PPL_ETC_EFFORT4,0),0)),
5471 					     Sum(decode(rollup_node5, 'Y', NVL(SUB_PRJ_PPL_ETC_EFFORT5,0),0)),
5472 					     Sum(decode(rollup_node6, 'Y', NVL(SUB_PRJ_PPL_ETC_EFFORT6,0),0)),
5473 					     Sum(decode(rollup_node1, 'Y', NVL(SUB_PRJ_EQPMT_ETC_EFFORT1,0),0)),
5474 					     Sum(decode(rollup_node2, 'Y', NVL(SUB_PRJ_EQPMT_ETC_EFFORT2,0),0)),
5475 					     Sum(decode(rollup_node3, 'Y', NVL(SUB_PRJ_EQPMT_ETC_EFFORT3,0),0)),
5476 					     Sum(decode(rollup_node4, 'Y', NVL(SUB_PRJ_EQPMT_ETC_EFFORT4,0),0)),
5477 					     Sum(decode(rollup_node5, 'Y', NVL(SUB_PRJ_EQPMT_ETC_EFFORT5,0),0)),
5478 					     Sum(decode(rollup_node6, 'Y', NVL(SUB_PRJ_EQPMT_ETC_EFFORT6,0),0)),
5479 					     Sum(decode(rollup_node1, 'Y', NVL(REMAINING_EFFORT1,0),0)),
5480 					     Sum(decode(rollup_node2, 'Y', NVL(REMAINING_EFFORT2,0),0)),
5481 					     Sum(decode(rollup_node3, 'Y', NVL(REMAINING_EFFORT3,0),0)),
5482 					     Sum(decode(rollup_node4, 'Y', NVL(REMAINING_EFFORT4,0),0)),
5483 					     Sum(decode(rollup_node5, 'Y', NVL(REMAINING_EFFORT5,0),0)),
5484 					     Sum(decode(rollup_node6, 'Y', NVL(REMAINING_EFFORT6,0),0)),
5485 					     Count(*)
5486 				      INTO   l_ETC_Cost_tab1(i),
5487 					     l_ETC_Cost_tab2(i),
5488 					     l_ETC_Cost_tab3(i),
5489 					     l_ETC_Cost_tab4(i),
5490 					     l_ETC_Cost_tab5(i),
5491 					     l_ETC_Cost_tab6(i),
5492 					     l_PPL_ETC_COST_tab1(i),
5493 					     l_PPL_ETC_COST_tab2(i),
5494 					     l_PPL_ETC_COST_tab3(i),
5495 					     l_PPL_ETC_COST_tab4(i),
5496 					     l_PPL_ETC_COST_tab5(i),
5497 					     l_PPL_ETC_COST_tab6(i),
5498 					     l_EQPMT_ETC_COST_tab1(i),
5499 					     l_EQPMT_ETC_COST_tab2(i),
5500 					     l_EQPMT_ETC_COST_tab3(i),
5501 					     l_EQPMT_ETC_COST_tab4(i),
5502 					     l_EQPMT_ETC_COST_tab5(i),
5503 					     l_EQPMT_ETC_COST_tab6(i),
5504 					     l_PPL_UNPLAND_EFFORT_tab1(i),
5505 					     l_PPL_UNPLAND_EFFORT_tab2(i),
5506 					     l_PPL_UNPLAND_EFFORT_tab3(i),
5507 					     l_PPL_UNPLAND_EFFORT_tab4(i),
5508 					     l_PPL_UNPLAND_EFFORT_tab5(i),
5509 					     l_PPL_UNPLAND_EFFORT_tab6(i),
5510 					     l_EQPMT_ETC_EFFORT_tab1(i),
5511 					     l_EQPMT_ETC_EFFORT_tab2(i),
5512 					     l_EQPMT_ETC_EFFORT_tab3(i),
5513 					     l_EQPMT_ETC_EFFORT_tab4(i),
5514 					     l_EQPMT_ETC_EFFORT_tab5(i),
5515 					     l_EQPMT_ETC_EFFORT_tab6(i),
5516 					     l_SUB_PRJ_ETC_COST_tab1(i),
5517 					     l_SUB_PRJ_ETC_COST_tab2(i),
5518 					     l_SUB_PRJ_ETC_COST_tab3(i),
5519 					     l_SUB_PRJ_ETC_COST_tab4(i),
5520 					     l_SUB_PRJ_ETC_COST_tab5(i),
5521 					     l_SUB_PRJ_ETC_COST_tab6(i),
5522 					      l_SUB_PRJ_PPL_ETC_COST_tab1(i),
5523 					      l_SUB_PRJ_PPL_ETC_COST_tab2(i),
5524 					      l_SUB_PRJ_PPL_ETC_COST_tab3(i),
5525 					      l_SUB_PRJ_PPL_ETC_COST_tab4(i),
5526 					      l_SUB_PRJ_PPL_ETC_COST_tab5(i),
5527 					      l_SUB_PRJ_PPL_ETC_COST_tab6(i),
5528 					      l_SUB_PRJ_EQPMT_ETC_COST_tab1(i),
5529 					      l_SUB_PRJ_EQPMT_ETC_COST_tab2(i),
5530 					      l_SUB_PRJ_EQPMT_ETC_COST_tab3(i),
5531 					      l_SUB_PRJ_EQPMT_ETC_COST_tab4(i),
5532 					      l_SUB_PRJ_EQPMT_ETC_COST_tab5(i),
5533 					      l_SUB_PRJ_EQPMT_ETC_COST_tab6(i),
5534 					      l_SUB_PRJ_PPL_ETC_EFFORT_tab1(i),
5535 					      l_SUB_PRJ_PPL_ETC_EFFORT_tab2(i),
5536 					      l_SUB_PRJ_PPL_ETC_EFFORT_tab3(i),
5537 					      l_SUB_PRJ_PPL_ETC_EFFORT_tab4(i),
5538 					      l_SUB_PRJ_PPL_ETC_EFFORT_tab5(i),
5539 					      l_SUB_PRJ_PPL_ETC_EFFORT_tab6(i),
5540 					      L_SP_EQPMT_ETC_EFFORT_TAB1(i),
5541 					      L_SP_EQPMT_ETC_EFFORT_TAB2(i),
5542 					      L_SP_EQPMT_ETC_EFFORT_TAB3(i),
5543 					      L_SP_EQPMT_ETC_EFFORT_TAB4(i),
5544 					      L_SP_EQPMT_ETC_EFFORT_TAB5(i),
5545 					      L_SP_EQPMT_ETC_EFFORT_TAB6(i),
5546                                               l_sum_tab1(i),
5547                                               l_sum_tab2(i),
5548                                               l_sum_tab3(i),
5549                                               l_sum_tab4(i),
5550                                               l_sum_tab5(i),
5551                                               l_sum_tab6(i),
5552 					     l_Count
5553 				      FROM   PA_PROJ_ROLLUP_BULK_TEMP
5554 				      WHERE  Process_Number    = l_Process_Number
5555 				      AND    OBJECT_TYPE <> 'PA_DELIVERABLES'
5556 				      AND    Parent_Object_ID  =l_object_ids_tab(i)
5557     				      AND    parent_object_type IN ('PA_STRUCTURES','PA_TASKS') -- Bug 4450587
5558 				      ;
5559 				ELSE
5560 					SELECT Sum(NVL(ETC_Cost1,0)),
5561 					     Sum(NVL(ETC_Cost2,0)),
5562 					     Sum(NVL(ETC_Cost3,0)),
5563 					     Sum(NVL(ETC_Cost4,0)),
5564 					     Sum(NVL(ETC_Cost5,0)),
5565 					     Sum(NVL(ETC_Cost6,0)),
5566 					     Sum(NVL(PPL_ETC_COST1,0)),
5567 					     Sum(NVL(PPL_ETC_COST2,0)),
5568 					     Sum(NVL(PPL_ETC_COST3,0)),
5569 					     Sum(NVL(PPL_ETC_COST4,0)),
5570 					     Sum(NVL(PPL_ETC_COST5,0)),
5571 					     Sum(NVL(PPL_ETC_COST6,0)),
5572 					     Sum(NVL(EQPMT_ETC_COST1,0)),
5573 					     Sum(NVL(EQPMT_ETC_COST2,0)),
5574 					     Sum(NVL(EQPMT_ETC_COST3,0)),
5575 					     Sum(NVL(EQPMT_ETC_COST4,0)),
5576 					     Sum(NVL(EQPMT_ETC_COST5,0)),
5577 					     Sum(NVL(EQPMT_ETC_COST6,0)),
5578 					     Sum(NVL(PPL_UNPLAND_EFFORT1,0)),
5579 					     Sum(NVL(PPL_UNPLAND_EFFORT2,0)),
5580 					     Sum(NVL(PPL_UNPLAND_EFFORT3,0)),
5581 					     Sum(NVL(PPL_UNPLAND_EFFORT4,0)),
5582 					     Sum(NVL(PPL_UNPLAND_EFFORT5,0)),
5583 					     Sum(NVL(PPL_UNPLAND_EFFORT6,0)),
5584 					     Sum(NVL(EQPMT_ETC_EFFORT1,0)),
5585 					     Sum(NVL(EQPMT_ETC_EFFORT2,0)),
5586 					     Sum(NVL(EQPMT_ETC_EFFORT3,0)),
5587 					     Sum(NVL(EQPMT_ETC_EFFORT4,0)),
5588 					     Sum(NVL(EQPMT_ETC_EFFORT5,0)),
5589 					     Sum(NVL(EQPMT_ETC_EFFORT6,0)),
5590 					     Sum(NVL(SUB_PRJ_ETC_COST1,0)),
5591 					     Sum(NVL(SUB_PRJ_ETC_COST2,0)),
5592 					     Sum(NVL(SUB_PRJ_ETC_COST3,0)),
5593 					     Sum(NVL(SUB_PRJ_ETC_COST4,0)),
5594 					     Sum(NVL(SUB_PRJ_ETC_COST5,0)),
5595 					     Sum(NVL(SUB_PRJ_ETC_COST6,0)),
5596 					     Sum(NVL(SUB_PRJ_PPL_ETC_COST1,0)),
5597 					     Sum(NVL(SUB_PRJ_PPL_ETC_COST2,0)),
5598 					     Sum(NVL(SUB_PRJ_PPL_ETC_COST3,0)),
5599 					     Sum(NVL(SUB_PRJ_PPL_ETC_COST4,0)),
5600 					     Sum(NVL(SUB_PRJ_PPL_ETC_COST5,0)),
5601 					     Sum(NVL(SUB_PRJ_PPL_ETC_COST6,0)),
5602 					     Sum(NVL(SUB_PRJ_EQPMT_ETC_COST1,0)),
5603 					     Sum(NVL(SUB_PRJ_EQPMT_ETC_COST2,0)),
5604 					     Sum(NVL(SUB_PRJ_EQPMT_ETC_COST3,0)),
5605 					     Sum(NVL(SUB_PRJ_EQPMT_ETC_COST4,0)),
5606 					     Sum(NVL(SUB_PRJ_EQPMT_ETC_COST5,0)),
5607 					     Sum(NVL(SUB_PRJ_EQPMT_ETC_COST6,0)),
5608 					     Sum(NVL(SUB_PRJ_PPL_ETC_EFFORT1,0)),
5609 					     Sum(NVL(SUB_PRJ_PPL_ETC_EFFORT2,0)),
5610 					     Sum(NVL(SUB_PRJ_PPL_ETC_EFFORT3,0)),
5611 					     Sum(NVL(SUB_PRJ_PPL_ETC_EFFORT4,0)),
5612 					     Sum(NVL(SUB_PRJ_PPL_ETC_EFFORT5,0)),
5613 					     Sum(NVL(SUB_PRJ_PPL_ETC_EFFORT6,0)),
5614 					     Sum(NVL(SUB_PRJ_EQPMT_ETC_EFFORT1,0)),
5615 					     Sum(NVL(SUB_PRJ_EQPMT_ETC_EFFORT2,0)),
5616 					     Sum(NVL(SUB_PRJ_EQPMT_ETC_EFFORT3,0)),
5617 					     Sum(NVL(SUB_PRJ_EQPMT_ETC_EFFORT4,0)),
5618 					     Sum(NVL(SUB_PRJ_EQPMT_ETC_EFFORT5,0)),
5619 					     Sum(NVL(SUB_PRJ_EQPMT_ETC_EFFORT6,0)),
5620 					     Sum(NVL(REMAINING_EFFORT1,0)),
5621 					     Sum(NVL(REMAINING_EFFORT2,0)),
5622 					     Sum(NVL(REMAINING_EFFORT3,0)),
5623 					     Sum(NVL(REMAINING_EFFORT4,0)),
5624 					     Sum(NVL(REMAINING_EFFORT5,0)),
5625 					     Sum(NVL(REMAINING_EFFORT6,0)),
5626 					     Count(*)
5627 				      INTO   l_ETC_Cost_tab1(i),
5628 					     l_ETC_Cost_tab2(i),
5629 					     l_ETC_Cost_tab3(i),
5630 					     l_ETC_Cost_tab4(i),
5631 					     l_ETC_Cost_tab5(i),
5632 					     l_ETC_Cost_tab6(i),
5633 					     l_PPL_ETC_COST_tab1(i),
5634 					     l_PPL_ETC_COST_tab2(i),
5635 					     l_PPL_ETC_COST_tab3(i),
5636 					     l_PPL_ETC_COST_tab4(i),
5637 					     l_PPL_ETC_COST_tab5(i),
5638 					     l_PPL_ETC_COST_tab6(i),
5639 					     l_EQPMT_ETC_COST_tab1(i),
5640 					     l_EQPMT_ETC_COST_tab2(i),
5641 					     l_EQPMT_ETC_COST_tab3(i),
5642 					     l_EQPMT_ETC_COST_tab4(i),
5643 					     l_EQPMT_ETC_COST_tab5(i),
5644 					     l_EQPMT_ETC_COST_tab6(i),
5645 					     l_PPL_UNPLAND_EFFORT_tab1(i),
5646 					     l_PPL_UNPLAND_EFFORT_tab2(i),
5647 					     l_PPL_UNPLAND_EFFORT_tab3(i),
5648 					     l_PPL_UNPLAND_EFFORT_tab4(i),
5649 					     l_PPL_UNPLAND_EFFORT_tab5(i),
5650 					     l_PPL_UNPLAND_EFFORT_tab6(i),
5651 					     l_EQPMT_ETC_EFFORT_tab1(i),
5652 					     l_EQPMT_ETC_EFFORT_tab2(i),
5653 					     l_EQPMT_ETC_EFFORT_tab3(i),
5654 					     l_EQPMT_ETC_EFFORT_tab4(i),
5655 					     l_EQPMT_ETC_EFFORT_tab5(i),
5656 					     l_EQPMT_ETC_EFFORT_tab6(i),
5657 					     l_SUB_PRJ_ETC_COST_tab1(i),
5658 					     l_SUB_PRJ_ETC_COST_tab2(i),
5659 					     l_SUB_PRJ_ETC_COST_tab3(i),
5660 					     l_SUB_PRJ_ETC_COST_tab4(i),
5661 					     l_SUB_PRJ_ETC_COST_tab5(i),
5662 					     l_SUB_PRJ_ETC_COST_tab6(i),
5663 					      l_SUB_PRJ_PPL_ETC_COST_tab1(i),
5664 					      l_SUB_PRJ_PPL_ETC_COST_tab2(i),
5665 					      l_SUB_PRJ_PPL_ETC_COST_tab3(i),
5666 					      l_SUB_PRJ_PPL_ETC_COST_tab4(i),
5667 					      l_SUB_PRJ_PPL_ETC_COST_tab5(i),
5668 					      l_SUB_PRJ_PPL_ETC_COST_tab6(i),
5669 					      l_SUB_PRJ_EQPMT_ETC_COST_tab1(i),
5670 					      l_SUB_PRJ_EQPMT_ETC_COST_tab2(i),
5671 					      l_SUB_PRJ_EQPMT_ETC_COST_tab3(i),
5672 					      l_SUB_PRJ_EQPMT_ETC_COST_tab4(i),
5673 					      l_SUB_PRJ_EQPMT_ETC_COST_tab5(i),
5674 					      l_SUB_PRJ_EQPMT_ETC_COST_tab6(i),
5675 					      l_SUB_PRJ_PPL_ETC_EFFORT_tab1(i),
5676 					      l_SUB_PRJ_PPL_ETC_EFFORT_tab2(i),
5677 					      l_SUB_PRJ_PPL_ETC_EFFORT_tab3(i),
5678 					      l_SUB_PRJ_PPL_ETC_EFFORT_tab4(i),
5679 					      l_SUB_PRJ_PPL_ETC_EFFORT_tab5(i),
5680 					      l_SUB_PRJ_PPL_ETC_EFFORT_tab6(i),
5681 					      L_SP_EQPMT_ETC_EFFORT_TAB1(i),
5682 					      L_SP_EQPMT_ETC_EFFORT_TAB2(i),
5683 					      L_SP_EQPMT_ETC_EFFORT_TAB3(i),
5684 					      L_SP_EQPMT_ETC_EFFORT_TAB4(i),
5685 					      L_SP_EQPMT_ETC_EFFORT_TAB5(i),
5686 					      L_SP_EQPMT_ETC_EFFORT_TAB6(i),
5687                                               l_sum_tab1(i),
5688                                               l_sum_tab2(i),
5689                                               l_sum_tab3(i),
5690                                               l_sum_tab4(i),
5691                                               l_sum_tab5(i),
5692                                               l_sum_tab6(i),
5693 					     l_Count
5694 				      FROM   PA_PROJ_ROLLUP_BULK_TEMP
5695 				      WHERE  Process_Number    = l_Process_Number
5696 				      AND    OBJECT_TYPE <> 'PA_DELIVERABLES'
5697 				      AND    Parent_Object_ID  =l_object_ids_tab(i)
5698     				      AND    parent_object_type IN ('PA_STRUCTURES','PA_TASKS') -- Bug 4450587
5699 				      ;
5700 				END IF; -- l_partial_rollup1 ...
5701 			EXCEPTION
5702 				WHEN OTHERS THEN
5703 				l_count := 0;
5704 			END;
5705 			IF (l_count > 0) THEN
5706 				l_update_required := 'Y';
5707 	      /* Added the hint to force the unique index for bug#6185523 */
5708 				UPDATE  /*+ INDEX( T1 PA_PROJ_ROLLUP_BULK_TEMP_U1) */ PA_PROJ_ROLLUP_BULK_TEMP T1
5709 				SET    T1.ETC_Cost1=l_ETC_Cost_tab1(i)
5710 				, T1.ETC_Cost2=l_ETC_Cost_tab2(i)
5711 				, T1.ETC_Cost3=l_ETC_Cost_tab3(i)
5712 				, T1.ETC_Cost4=l_ETC_Cost_tab4(i)
5713 				, T1.ETC_Cost5=l_ETC_Cost_tab5(i)
5714 				, T1.ETC_Cost6=l_ETC_Cost_tab6(i)
5715 				, T1.PPL_ETC_COST1=l_PPL_ETC_COST_tab1(i)
5716 				, T1.PPL_ETC_COST2=l_PPL_ETC_COST_tab2(i)
5717 				, T1.PPL_ETC_COST3=l_PPL_ETC_COST_tab3(i)
5718 				, T1.PPL_ETC_COST4=l_PPL_ETC_COST_tab4(i)
5719 				, T1.PPL_ETC_COST5=l_PPL_ETC_COST_tab5(i)
5720 				, T1.PPL_ETC_COST6=l_PPL_ETC_COST_tab6(i)
5721 				, T1.EQPMT_ETC_COST1=l_EQPMT_ETC_COST_tab1(i)
5722 				, T1.EQPMT_ETC_COST2=l_EQPMT_ETC_COST_tab2(i)
5723 				, T1.EQPMT_ETC_COST3=l_EQPMT_ETC_COST_tab3(i)
5724 				, T1.EQPMT_ETC_COST4=l_EQPMT_ETC_COST_tab4(i)
5725 				, T1.EQPMT_ETC_COST5=l_EQPMT_ETC_COST_tab5(i)
5726 				, T1.EQPMT_ETC_COST6=l_EQPMT_ETC_COST_tab6(i)
5727 				, T1.PPL_UNPLAND_EFFORT1=l_PPL_UNPLAND_EFFORT_tab1(i)
5728 				, T1.PPL_UNPLAND_EFFORT2=l_PPL_UNPLAND_EFFORT_tab2(i)
5729 				, T1.PPL_UNPLAND_EFFORT3=l_PPL_UNPLAND_EFFORT_tab3(i)
5730 				, T1.PPL_UNPLAND_EFFORT4=l_PPL_UNPLAND_EFFORT_tab4(i)
5731 				, T1.PPL_UNPLAND_EFFORT5=l_PPL_UNPLAND_EFFORT_tab5(i)
5732 				, T1.PPL_UNPLAND_EFFORT6=l_PPL_UNPLAND_EFFORT_tab6(i)
5733 				, T1.EQPMT_ETC_EFFORT1=l_EQPMT_ETC_EFFORT_tab1(i)
5734 				, T1.EQPMT_ETC_EFFORT2=l_EQPMT_ETC_EFFORT_tab2(i)
5735 				, T1.EQPMT_ETC_EFFORT3=l_EQPMT_ETC_EFFORT_tab3(i)
5736 				, T1.EQPMT_ETC_EFFORT4=l_EQPMT_ETC_EFFORT_tab4(i)
5737 				, T1.EQPMT_ETC_EFFORT5=l_EQPMT_ETC_EFFORT_tab5(i)
5738 				, T1.EQPMT_ETC_EFFORT6=l_EQPMT_ETC_EFFORT_tab6(i)
5739 				, T1.SUB_PRJ_ETC_COST1=l_SUB_PRJ_ETC_COST_tab1(i)
5740 				, T1.SUB_PRJ_ETC_COST2=l_SUB_PRJ_ETC_COST_tab2(i)
5741 				, T1.SUB_PRJ_ETC_COST3=l_SUB_PRJ_ETC_COST_tab3(i)
5742 				, T1.SUB_PRJ_ETC_COST4=l_SUB_PRJ_ETC_COST_tab4(i)
5743 				, T1.SUB_PRJ_ETC_COST5=l_SUB_PRJ_ETC_COST_tab5(i)
5744 				, T1.SUB_PRJ_ETC_COST6=l_SUB_PRJ_ETC_COST_tab6(i)
5745 				, T1.SUB_PRJ_PPL_ETC_COST1=l_SUB_PRJ_PPL_ETC_COST_tab1(i)
5746 				, T1.SUB_PRJ_PPL_ETC_COST2=l_SUB_PRJ_PPL_ETC_COST_tab2(i)
5747 				, T1.SUB_PRJ_PPL_ETC_COST3=l_SUB_PRJ_PPL_ETC_COST_tab3(i)
5748 				, T1.SUB_PRJ_PPL_ETC_COST4=l_SUB_PRJ_PPL_ETC_COST_tab4(i)
5749 				, T1.SUB_PRJ_PPL_ETC_COST5=l_SUB_PRJ_PPL_ETC_COST_tab5(i)
5750 				, T1.SUB_PRJ_PPL_ETC_COST6=l_SUB_PRJ_PPL_ETC_COST_tab6(i)
5751 				, T1.SUB_PRJ_EQPMT_ETC_COST1=l_SUB_PRJ_EQPMT_ETC_COST_tab1(i)
5752 				, T1.SUB_PRJ_EQPMT_ETC_COST2=l_SUB_PRJ_EQPMT_ETC_COST_tab2(i)
5753 				, T1.SUB_PRJ_EQPMT_ETC_COST3=l_SUB_PRJ_EQPMT_ETC_COST_tab3(i)
5754 				, T1.SUB_PRJ_EQPMT_ETC_COST4=l_SUB_PRJ_EQPMT_ETC_COST_tab4(i)
5755 				, T1.SUB_PRJ_EQPMT_ETC_COST5=l_SUB_PRJ_EQPMT_ETC_COST_tab5(i)
5756 				, T1.SUB_PRJ_EQPMT_ETC_COST6=l_SUB_PRJ_EQPMT_ETC_COST_tab6(i)
5757 				, T1.SUB_PRJ_PPL_ETC_EFFORT1=l_SUB_PRJ_PPL_ETC_EFFORT_tab1(i)
5758 				, T1.SUB_PRJ_PPL_ETC_EFFORT2=l_SUB_PRJ_PPL_ETC_EFFORT_tab2(i)
5759 				, T1.SUB_PRJ_PPL_ETC_EFFORT3=l_SUB_PRJ_PPL_ETC_EFFORT_tab3(i)
5760 				, T1.SUB_PRJ_PPL_ETC_EFFORT4=l_SUB_PRJ_PPL_ETC_EFFORT_tab4(i)
5761 				, T1.SUB_PRJ_PPL_ETC_EFFORT5=l_SUB_PRJ_PPL_ETC_EFFORT_tab5(i)
5762 				, T1.SUB_PRJ_PPL_ETC_EFFORT6=l_SUB_PRJ_PPL_ETC_EFFORT_tab6(i)
5763 				, T1.SUB_PRJ_EQPMT_ETC_EFFORT1=L_SP_EQPMT_ETC_EFFORT_TAB1(i)
5764 				, T1.SUB_PRJ_EQPMT_ETC_EFFORT2=L_SP_EQPMT_ETC_EFFORT_TAB2(i)
5765 				, T1.SUB_PRJ_EQPMT_ETC_EFFORT3=L_SP_EQPMT_ETC_EFFORT_TAB3(i)
5766 				, T1.SUB_PRJ_EQPMT_ETC_EFFORT4=L_SP_EQPMT_ETC_EFFORT_TAB4(i)
5767 				, T1.SUB_PRJ_EQPMT_ETC_EFFORT5=L_SP_EQPMT_ETC_EFFORT_TAB5(i)
5768 				, T1.SUB_PRJ_EQPMT_ETC_EFFORT6=L_SP_EQPMT_ETC_EFFORT_TAB6(i)
5769                                 , T1.REMAINING_EFFORT1 = l_sum_tab1(i)
5770                                 , T1.REMAINING_EFFORT2 = l_sum_tab2(i)
5771                                 , T1.REMAINING_EFFORT3 = l_sum_tab3(i)
5772                                 , T1.REMAINING_EFFORT4 = l_sum_tab4(i)
5773                                 , T1.REMAINING_EFFORT5 = l_sum_tab5(i)
5774                                 , T1.REMAINING_EFFORT6 = l_sum_tab6(i)
5775 			       WHERE T1.Process_Number = l_Process_Number
5776 				 AND T1.object_id = l_object_ids_tab(i)
5777 				 AND T1.object_type = l_object_types_tab(i)
5778 			      ;
5779 			END IF; -- (l_count > 0) THEN
5780 		END LOOP;
5781 		-- NOte that Bulk Update is not done due to problem mentioned in Dates Rollup Section
5782 		/* Please do not remove
5783 		IF l_update_required = 'Y' THEN
5784 			FORALL i in 1..l_object_ids_tab.count
5785 			UPDATE PA_PROJ_ROLLUP_BULK_TEMP T1
5786 			SET    T1.ETC_Cost1=l_ETC_Cost_tab1(i)
5787 			, T1.ETC_Cost2=l_ETC_Cost_tab2(i)
5788 			, T1.ETC_Cost3=l_ETC_Cost_tab3(i)
5789 			, T1.ETC_Cost4=l_ETC_Cost_tab4(i)
5790 			, T1.ETC_Cost5=l_ETC_Cost_tab5(i)
5791 			, T1.ETC_Cost6=l_ETC_Cost_tab6(i)
5792 			, T1.PPL_ETC_COST1=l_PPL_ETC_COST_tab1(i)
5793 			, T1.PPL_ETC_COST2=l_PPL_ETC_COST_tab2(i)
5794 			, T1.PPL_ETC_COST3=l_PPL_ETC_COST_tab3(i)
5795 			, T1.PPL_ETC_COST4=l_PPL_ETC_COST_tab4(i)
5796 			, T1.PPL_ETC_COST5=l_PPL_ETC_COST_tab5(i)
5797 			, T1.PPL_ETC_COST6=l_PPL_ETC_COST_tab6(i)
5798 			, T1.EQPMT_ETC_COST1=l_EQPMT_ETC_COST_tab1(i)
5799 			, T1.EQPMT_ETC_COST2=l_EQPMT_ETC_COST_tab2(i)
5800 			, T1.EQPMT_ETC_COST3=l_EQPMT_ETC_COST_tab3(i)
5801 			, T1.EQPMT_ETC_COST4=l_EQPMT_ETC_COST_tab4(i)
5802 			, T1.EQPMT_ETC_COST5=l_EQPMT_ETC_COST_tab5(i)
5803 			, T1.EQPMT_ETC_COST6=l_EQPMT_ETC_COST_tab6(i)
5804 			, T1.PPL_UNPLAND_EFFORT1=l_PPL_UNPLAND_EFFORT_tab1(i)
5805 			, T1.PPL_UNPLAND_EFFORT2=l_PPL_UNPLAND_EFFORT_tab2(i)
5806 			, T1.PPL_UNPLAND_EFFORT3=l_PPL_UNPLAND_EFFORT_tab3(i)
5807 			, T1.PPL_UNPLAND_EFFORT4=l_PPL_UNPLAND_EFFORT_tab4(i)
5808 			, T1.PPL_UNPLAND_EFFORT5=l_PPL_UNPLAND_EFFORT_tab5(i)
5809 			, T1.PPL_UNPLAND_EFFORT6=l_PPL_UNPLAND_EFFORT_tab6(i)
5810 			, T1.EQPMT_ETC_EFFORT1=l_EQPMT_ETC_EFFORT_tab1(i)
5811 			, T1.EQPMT_ETC_EFFORT2=l_EQPMT_ETC_EFFORT_tab2(i)
5812 			, T1.EQPMT_ETC_EFFORT3=l_EQPMT_ETC_EFFORT_tab3(i)
5813 			, T1.EQPMT_ETC_EFFORT4=l_EQPMT_ETC_EFFORT_tab4(i)
5814 			, T1.EQPMT_ETC_EFFORT5=l_EQPMT_ETC_EFFORT_tab5(i)
5815 			, T1.EQPMT_ETC_EFFORT6=l_EQPMT_ETC_EFFORT_tab6(i)
5816 			, T1.SUB_PRJ_ETC_COST1=l_SUB_PRJ_ETC_COST_tab1(i)
5817 			, T1.SUB_PRJ_ETC_COST2=l_SUB_PRJ_ETC_COST_tab2(i)
5818 			, T1.SUB_PRJ_ETC_COST3=l_SUB_PRJ_ETC_COST_tab3(i)
5819 			, T1.SUB_PRJ_ETC_COST4=l_SUB_PRJ_ETC_COST_tab4(i)
5820 			, T1.SUB_PRJ_ETC_COST5=l_SUB_PRJ_ETC_COST_tab5(i)
5821 			, T1.SUB_PRJ_ETC_COST6=l_SUB_PRJ_ETC_COST_tab6(i)
5822 			, T1.SUB_PRJ_PPL_ETC_COST1=l_SUB_PRJ_PPL_ETC_COST_tab1(i)
5823 			, T1.SUB_PRJ_PPL_ETC_COST2=l_SUB_PRJ_PPL_ETC_COST_tab2(i)
5824 			, T1.SUB_PRJ_PPL_ETC_COST3=l_SUB_PRJ_PPL_ETC_COST_tab3(i)
5825 			, T1.SUB_PRJ_PPL_ETC_COST4=l_SUB_PRJ_PPL_ETC_COST_tab4(i)
5826 			, T1.SUB_PRJ_PPL_ETC_COST5=l_SUB_PRJ_PPL_ETC_COST_tab5(i)
5827 			, T1.SUB_PRJ_PPL_ETC_COST6=l_SUB_PRJ_PPL_ETC_COST_tab6(i)
5828 			, T1.SUB_PRJ_EQPMT_ETC_COST1=l_SUB_PRJ_EQPMT_ETC_COST_tab1(i)
5829 			, T1.SUB_PRJ_EQPMT_ETC_COST2=l_SUB_PRJ_EQPMT_ETC_COST_tab2(i)
5830 			, T1.SUB_PRJ_EQPMT_ETC_COST3=l_SUB_PRJ_EQPMT_ETC_COST_tab3(i)
5831 			, T1.SUB_PRJ_EQPMT_ETC_COST4=l_SUB_PRJ_EQPMT_ETC_COST_tab4(i)
5832 			, T1.SUB_PRJ_EQPMT_ETC_COST5=l_SUB_PRJ_EQPMT_ETC_COST_tab5(i)
5833 			, T1.SUB_PRJ_EQPMT_ETC_COST6=l_SUB_PRJ_EQPMT_ETC_COST_tab6(i)
5834 			, T1.SUB_PRJ_PPL_ETC_EFFORT1=l_SUB_PRJ_PPL_ETC_EFFORT_tab1(i)
5835 			, T1.SUB_PRJ_PPL_ETC_EFFORT2=l_SUB_PRJ_PPL_ETC_EFFORT_tab2(i)
5836 			, T1.SUB_PRJ_PPL_ETC_EFFORT3=l_SUB_PRJ_PPL_ETC_EFFORT_tab3(i)
5837 			, T1.SUB_PRJ_PPL_ETC_EFFORT4=l_SUB_PRJ_PPL_ETC_EFFORT_tab4(i)
5838 			, T1.SUB_PRJ_PPL_ETC_EFFORT5=l_SUB_PRJ_PPL_ETC_EFFORT_tab5(i)
5839 			, T1.SUB_PRJ_PPL_ETC_EFFORT6=l_SUB_PRJ_PPL_ETC_EFFORT_tab6(i)
5840 			, T1.SUB_PRJ_EQPMT_ETC_EFFORT1=L_SP_EQPMT_ETC_EFFORT_TAB1(i)
5841 			, T1.SUB_PRJ_EQPMT_ETC_EFFORT2=L_SP_EQPMT_ETC_EFFORT_TAB2(i)
5842 			, T1.SUB_PRJ_EQPMT_ETC_EFFORT3=L_SP_EQPMT_ETC_EFFORT_TAB3(i)
5843 			, T1.SUB_PRJ_EQPMT_ETC_EFFORT4=L_SP_EQPMT_ETC_EFFORT_TAB4(i)
5844 			, T1.SUB_PRJ_EQPMT_ETC_EFFORT5=L_SP_EQPMT_ETC_EFFORT_TAB5(i)
5845 			, T1.SUB_PRJ_EQPMT_ETC_EFFORT6=L_SP_EQPMT_ETC_EFFORT_TAB6(i)
5846 		       WHERE T1.Process_Number = l_Process_Number
5847 			 AND T1.object_id = l_object_ids_tab(i)
5848 			 AND T1.object_type = l_object_types_tab(i)
5849 		      ;
5850 		END IF; -- l_update_required = 'Y' THEN
5851 		*/
5852 	END IF; -- ((p_process_flag1 = 'Y' OR p_process_flag2 = 'Y' OR p_process_flag3 = 'Y' OR p_process_flag4 = 'Y'
5853 
5854 	IF g1_debug_mode  = 'Y' THEN
5855                 pa_debug.write(x_Module=>'PA_SCHEDULE_OBJECTS_PVT.GENERATE_SCHEDULE', x_Msg => 'After ETC Cost processing', x_Log_Level=> 3);
5856         END IF;
5857 
5858 	-- ********* ETC COST ROLLUP END  *************
5859 
5860 
5861 
5862 	IF g1_debug_mode  = 'Y' THEN
5863                 pa_debug.write(x_Module=>'PA_SCHEDULE_OBJECTS_PVT.GENERATE_SCHEDULE', x_Msg => 'Before Assigning data back to plsql table', x_Log_Level=> 3);
5864         END IF;
5865 
5866 	l_data_count := 1;
5867 
5868 	IF p_calling_module = 'ROLLUP_API' THEN -- Bug 4218507 : Added IF
5869 		OPEN processed_data_structure_rol(l_process_number);
5870 		LOOP
5871 		  FETCH processed_data_structure_rol INTO l_data_record;
5872 		  EXIT WHEN processed_data_structure_rol%NOTFOUND;
5873 		  p_data_structure(l_data_count) := l_data_record;
5874 		  l_data_count := l_data_count + 1;
5875 		END LOOP;
5876 		CLOSE processed_data_structure_rol;
5877 	ELSE
5878 		OPEN processed_data_structure(l_process_number);
5879 		LOOP
5880 		  FETCH processed_data_structure INTO l_data_record;
5881 		  EXIT WHEN processed_data_structure%NOTFOUND;
5882 		  p_data_structure(l_data_count) := l_data_record;
5883 		  l_data_count := l_data_count + 1;
5884 		END LOOP;
5885 		CLOSE processed_data_structure;
5886 	END IF;
5887 
5888 	IF g1_debug_mode  = 'Y' THEN
5889                 pa_debug.write(x_Module=>'PA_SCHEDULE_OBJECTS_PVT.GENERATE_SCHEDULE', x_Msg => 'After Assigning data back to plsql table', x_Log_Level=> 3);
5890         END IF;
5891 
5892 	-- Bug 4289748 : removed rollback, used delete instead
5893         --ROLLBACK TO SAVEPOINT GENERATE_SCHEDULE_SP;
5894 	delete from PA_PROJ_ROLLUP_BULK_TEMP where process_number = l_process_number;
5895         --4538049 : No need to check for x_msg_count
5896         --x_msg_count :=  FND_MSG_PUB.Count_Msg;
5897 	--IF x_msg_count = 1 THEN
5898 	--	pa_interface_utils_pub.get_messages (
5899 	--	p_encoded       => FND_API.G_TRUE
5900 	--	,p_msg_index     => 1
5901 	--	,p_data          => x_msg_data
5902 	--	,p_msg_index_out => l_msg_index_out
5903 	--	);
5904 	--END IF;
5905 
5906 	--IF FND_MSG_PUB.Count_Msg > 0  THEN
5907 	--	x_return_status := FND_API.G_RET_STS_ERROR;
5908 	--END IF;
5909 
5910 	IF (p_debug_mode = 'Y') AND g1_debug_mode  = 'Y' THEN
5911 		pa_debug.debug('PA_SCHEDULE_OBJECTS_PVT.GENERATE_SCHEDULE END');
5912 	END IF;
5913 
5914   EXCEPTION
5915     WHEN API_ERROR THEN
5916       x_msg_count :=  FND_MSG_PUB.Count_Msg;
5917       ROLLBACK TO SAVEPOINT GENERATE_SCHEDULE_SP;
5918       IF x_msg_count = 1 THEN
5919          pa_interface_utils_pub.get_messages ( p_encoded       => FND_API.G_TRUE
5920                                          ,p_msg_index     => 1
5921                                          ,p_data          => x_msg_data
5922                                          ,p_msg_index_out => l_msg_index_out
5923                                         );
5924       END IF;
5925       x_return_status := FND_API.G_RET_STS_ERROR;
5926     WHEN OTHERS THEN
5927       ROLLBACK TO SAVEPOINT GENERATE_SCHEDULE_SP;
5928       FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_SCHEDULE_OBJECTS_PVT'
5929                                 ,p_procedure_name => 'GENERATE_SCHEDULE'
5930 			        , p_error_text     => SUBSTRB(SQLERRM,1,120));
5931       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5932       x_msg_data := substr(sqlerrm, 1, 120);
5933   END GENERATE_SCHEDULE;
5934 
5935   FUNCTION GET_PROGRESS_STATUS
5936   (
5937 	 p_not_started IN VARCHAR2 default 'N'
5938 	,p_completed IN VARCHAR2 default 'N'
5939 	,p_in_progress IN VARCHAR2 default 'N'
5940 	,p_on_hold IN VARCHAR2 default 'N'
5941   ) RETURN VARCHAR2
5942   IS
5943     l_text 			       VARCHAR2(1000);
5944 
5945   BEGIN
5946     IF(p_not_started = 'Y' AND p_completed = 'Y' AND p_in_progress = 'Y' AND p_on_hold = 'Y') THEN
5947 	return '30';
5948     ELSIF(p_not_started = 'Y' AND p_completed = 'Y' AND p_in_progress = 'Y' AND p_on_hold = 'N') THEN
5949 	return '30';
5950     ELSIF(p_not_started = 'Y' AND p_completed = 'Y' AND p_in_progress = 'N' AND p_on_hold = 'N') THEN
5951 	return '30';
5952     ELSIF(p_not_started = 'Y' AND p_completed = 'Y' AND p_in_progress = 'N' AND p_on_hold = 'Y') THEN
5953 	return '30';
5954     ELSIF(p_not_started = 'Y' AND p_completed = 'N' AND p_in_progress = 'Y' AND p_on_hold = 'N') THEN
5955 	return '30';
5956     ELSIF(p_not_started = 'Y' AND p_completed = 'N' AND p_in_progress = 'Y' AND p_on_hold = 'Y') THEN
5957 	return '30';
5958     ELSIF(p_not_started = 'Y' AND p_completed = 'N' AND p_in_progress = 'N' AND p_on_hold = 'Y') THEN
5959 	return NULL;
5960     ELSIF(p_not_started = 'Y' AND p_completed = 'N' AND p_in_progress = 'N' AND p_on_hold = 'N') THEN
5961 	return '10';
5962     ELSIF(p_not_started = 'N' AND p_completed = 'Y' AND p_in_progress = 'Y' AND p_on_hold = 'Y') THEN
5963 	return '30';
5964     ELSIF(p_not_started = 'N' AND p_completed = 'Y' AND p_in_progress = 'Y' AND p_on_hold = 'N') THEN
5965 	return '30';
5966     ELSIF(p_not_started = 'N' AND p_completed = 'Y' AND p_in_progress = 'N' AND p_on_hold = 'N') THEN
5967 	return '20';
5968     ELSIF(p_not_started = 'N' AND p_completed = 'Y' AND p_in_progress = 'N' AND p_on_hold = 'Y') THEN
5969 	return '30';
5970     ELSIF(p_not_started = 'N' AND p_completed = 'N' AND p_in_progress = 'Y' AND p_on_hold = 'N') THEN
5971 	return '30';
5972     ELSIF(p_not_started = 'N' AND p_completed = 'N' AND p_in_progress = 'Y' AND p_on_hold = 'Y') THEN
5973 	return '30';
5974     ELSIF(p_not_started = 'N' AND p_completed = 'N' AND p_in_progress = 'N' AND p_on_hold = 'Y') THEN
5975 	return NULL;
5976     ELSIF(p_not_started = 'N' AND p_completed = 'N' AND p_in_progress = 'N' AND p_on_hold = 'N') THEN
5977 	return NULL;
5978     ELSE
5979 	return NULL;
5980     END IF;
5981 
5982   END GET_PROGRESS_STATUS;
5983 
5984 End PA_SCHEDULE_OBJECTS_PVT;