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