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